Enemy bug attack

dantedevil

Well-known member
Recently since I used weapons, I found a rare bug in the common attacks of the enemies.

Here an example:

SLICER with the normal attacks:
Code:
health	60
speed	10
type	enemy
risetime -200 -200 
gfxshadow  1
aggression -30
falldie 2
projectilehit   enemy obstacle
hmap 1 5
fmap 2
noquake 1

aimove Avoidz
aimove chasex

weapons  none SLICER2 none none SLICER

icon	data/chars/gang1/slicer/icon.png 1

#diesound  data/sounds/m3death.wav

takedamagescript data/scripts/storing.c
animationscript data/scripts/escript.h 


palette data/chars/gang1/slicer/idle0.png
alternatepal data/chars/gang1/slicer/map.png
alternatepal data/chars/gang1/slicer/map2.png 
alternatepal data/chars/gang1/slicer/map3.png 
alternatepal data/chars/gang1/slicer/map4.png 
alternatepal data/chars/gang1/slicer/map5.png 
alternatepal data/chars/gang1/slicer/map6.png 
alternatepal data/chars/gang1/slicer/map7.png 


ondeathscript data/scripts/death3.c  

defense normal4 0

load    slicer_bp



anim idle
	loop	1
	delay	20
	offset	82 177
	bbox	58 80 42 99
        @cmd    clearL
	frame	data/chars/gang1/slicer/idle0.png
	frame	data/chars/gang1/slicer/idle1.png
	delay	28
	frame	data/chars/gang1/slicer/idle2.png
	delay	20
	frame	data/chars/gang1/slicer/idle1.png


anim walk
	loop	1
	offset	82 177
	bbox	58 80 42 99
	delay   10
	frame	data/chars/gang1/slicer/w1.png
	frame	data/chars/gang1/slicer/w2.png
	frame	data/chars/gang1/slicer/w3.png
	frame	data/chars/gang1/slicer/w4.png
	frame	data/chars/gang1/slicer/w5.png
	frame	data/chars/gang1/slicer/w6.png
	frame	data/chars/gang1/slicer/w7.png
	frame	data/chars/gang1/slicer/w8.png
	frame	data/chars/gang1/slicer/w9.png	


anim walkoff
	loop	0
	delay	1
        landframe 2
	offset	82 155
	bbox	66 48 39 103
	frame	data/chars/gang1/slicer/j1.png
	delay	999
	frame	data/chars/gang1/slicer/j1.png
	delay	8
        offset	82 177
	bbox	63 95 35 85
	frame	data/chars/gang1/slicer/rise3.png

anim get
@script
    if(frame==1){
      void self = getlocalvar("self");
      int RilMHP = getentityvar(self, 8);
      int Dams = getentityvar(self, 9);

      changeentityproperty(self, "maxhealth", RilMHP);
      changeentityproperty(self, "health", RilMHP - Dams);
    }
@end_script
	loop	0
	offset	82 177
	delay   6
	frame	data/chars/gang1/slicer/rise3.png
	delay   25
	frame	data/chars/gang1/slicer/rise2.png
	delay   6
	frame	data/chars/gang1/slicer/rise3.png




anim attack1
	range	0 80
	loop	0
	delay	5
	offset	82 177
	bbox	58 80 42 99
	frame	data/chars/gang1/slicer/a1.png
        sound   data/sounds/m3at1.wav
	frame	data/chars/gang1/slicer/a2.png
        frame	data/chars/gang1/slicer/a3.png
        hitfx   data/sounds/beat3.wav
        attack  96 107 76 10 8 1 0 0 15
	frame	data/chars/gang1/slicer/a4.png
	attack  0 0 0 0 0 
	frame	data/chars/gang1/slicer/a4.png
	frame	data/chars/gang1/slicer/a3.png
	frame	data/chars/gang1/slicer/a2.png
	frame	data/chars/gang1/slicer/a1.png

#DASHER
anim attack2
	range	80 140
	loop	0
	delay	9
	offset	82 177
	bbox	76 108 35 80
	frame	data/chars/gang1/slicer/rise3.png
	delay	22
	bbox	74 126 33 58
	frame	data/chars/gang1/slicer/rise2b.png
	delay	4
	bbox	63 128 53 50
        @cmd    dasher 1 0 0
        sound   data/sounds/slide.wav
	frame	data/chars/gang1/slicer/slide1.png
        @cmd    dasher 2 0 0
	frame	data/chars/gang1/slicer/slide1.png
        hitfx   data/sounds/beat0.wav
	attack  106 158 57 22 10 1 0 0 5
        dropv      2 1 0
	bbox	55 134 63 47
        @cmd    dasher 4 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 6 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 4 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 2 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 1 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    stop
        attack  0 0 0 0
	delay	12
	frame	data/chars/gang1/slicer/slide2.png
	bbox	58 80 42 99
	frame	data/chars/gang1/slicer/slide1.png
	bbox	74 126 33 58
	frame	data/chars/gang1/slicer/rise2b.png
	bbox	76 108 35 80
	frame	data/chars/gang1/slicer/rise3.png



anim jumpattack
	range   140  170
	delay	10
	offset	82 155
	bbox	66 48 39 103
        sound   data/sounds/jump.wav
	frame	data/chars/gang1/slicer/j1.png
	bbox	63 49 48 69
        sound   data/sounds/m3at3.wav
	frame	data/chars/gang1/slicer/j2.png
	offset	82 125
	bbox	64 52 60 52
	frame	data/chars/gang1/slicer/j3.png
	delay   34
        hitfx   data/sounds/beat3.wav
        hitflash  flash2
	attack  112 102 51 19 10 1 0 0 20
	bbox	62 60 48 47
	frame	data/chars/gang1/slicer/j4.png
	attack  0 0 0 0 0 0
	delay   12
	bbox	64 52 60 52
	frame	data/chars/gang1/slicer/j3.png
	offset	82 155
	bbox	63 49 48 69
	frame	data/chars/gang1/slicer/j2.png
	bbox	66 48 39 103
	frame	data/chars/gang1/slicer/j1.png

And here SLICER2 (enemy wepon knife):
Code:
load knife2


typeshot      0
weaploss      0 
modelflag     1



icon	data/chars/gang1/slicer/icon.png 1


takedamagescript data/scripts/storing.c
animationscript data/scripts/escript.h 

palette data/chars/gang1/slicer/idle0.png
alternatepal data/chars/gang1/slicer/map.png
alternatepal data/chars/gang1/slicer/map2.png 
alternatepal data/chars/gang1/slicer/map3.png 
alternatepal data/chars/gang1/slicer/map4.png 
alternatepal data/chars/gang1/slicer/map5.png 
alternatepal data/chars/gang1/slicer/map6.png 
alternatepal data/chars/gang1/slicer/map7.png 


anim idle
	loop	1
	delay	20
	offset	82 177
	bbox	58 80 42 99
        @cmd    clearL
	frame	data/chars/gang1/slicer/idle0.png
	frame	data/chars/gang1/slicer/idle1.png
	delay	28
	frame	data/chars/gang1/slicer/idle2.png
	delay	20
	frame	data/chars/gang1/slicer/idle1.png


anim walk
	loop	1
	offset	82 177
	bbox	58 80 42 99
	delay   10
	frame	data/chars/gang1/slicer/w1.png
	frame	data/chars/gang1/slicer/w2.png
	frame	data/chars/gang1/slicer/w3.png
	frame	data/chars/gang1/slicer/w4.png
	frame	data/chars/gang1/slicer/w5.png
	frame	data/chars/gang1/slicer/w6.png
	frame	data/chars/gang1/slicer/w7.png
	frame	data/chars/gang1/slicer/w8.png


anim walkoff
	loop	0
	delay	1
        landframe 2
	offset	82 155
	bbox	66 48 39 103
	frame	data/chars/gang1/slicer/j1.png
	delay	999
	frame	data/chars/gang1/slicer/j1.png
	delay	8
        offset	82 177
	bbox	63 95 35 85
	frame	data/chars/gang1/slicer/rise3.png

anim get
	loop	0
	offset	82 177
	delay   25
	frame	data/chars/gang1/slicer/rise2.png
	delay   6
	frame	data/chars/gang1/slicer/rise3.png

anim attack1
	range	200 350
@script
    void self = getlocalvar("self");			//Caller.

    if(frame>=1){
      void vEntity;                                       //Target entity placeholder.
      int  iEntity;                                       //Entity enumeration holder.
      char iName;                                         //Entity Name.
      int  iMax      = openborvariant("count_entities");         //Entity count.
      int C = 0;

      //Enumerate and loop through entity collection.
      for(iEntity=0; iEntity<iMax; iEntity++){
        vEntity = getentity(iEntity);                 //Get target entity from current loop.
        iName   = getentityproperty(vEntity, "name"); //Get target name.

        if(iName == "Knife"){
          C = C + 1;
        }
      }

      if(C >= 3){
        performattack(self, openborconstant("ANI_FOLLOW2"));
      }
    }
@end_script
	loop	0
	delay	1
	offset	82 177
	bbox	58 80 42 99
	frame	data/chars/gang1/slicer/idle0.png
@script
	void vSelf = getlocalvar("self");
	int xpos = openborvariant("xpos");
	int rWidth = openborvariant("hResolution");
	int x = getentityproperty(vSelf, "x");

	if(! (x > xpos && x < xpos + rWidth)){
		setidle(vSelf);
	}
@end_script
	frame	data/chars/gang1/slicer/throwk01.png
	delay	20
        sound   data/sounds/sw1.wav
	frame	data/chars/gang1/slicer/throwk01.png
	delay	6
        sound   data/sounds/m3at0.wav
	frame	data/chars/gang1/slicer/throwk02.png
	frame	data/chars/gang1/slicer/throwk03.png
        @cmd    antiwall 40 -40 -1 
	frame	data/chars/gang1/slicer/throwk04.png
        sound   data/sounds/knife.wav
	delay	4
	@cmd    shooter2 "knife2" 50 85 -1 2.8 0 0
	frame	data/chars/gang1/slicer/throwk05.png
	delay	60
	frame	data/chars/gang1/slicer/throwk05.png

anim follow2
	loop	0
@script
	void vSelf = getlocalvar("self");
	int xpos = openborvariant("xpos");
	int rWidth = openborvariant("hResolution");
	int x = getentityproperty(vSelf, "x");

	if(! (x > xpos && x < xpos + rWidth)){
		setidle(vSelf);
	}
@end_script
	delay	1
	offset	82 177
	bbox	58 80 42 99
	frame	data/chars/gang1/slicer/throwk01.png
        throwframe 6 1
        custknife eflash
	frame	data/chars/gang1/slicer/throwk01.png
	delay	20
        sound   data/sounds/sw1.wav
	frame	data/chars/gang1/slicer/throwk01.png
	delay	6
        sound   data/sounds/m3at0.wav
	frame	data/chars/gang1/slicer/throwk02.png
	frame	data/chars/gang1/slicer/throwk03.png
        @cmd    antiwall 40 -40 -1 
	frame	data/chars/gang1/slicer/throwk04.png
        sound   data/sounds/knife.wav
	delay	4
	@cmd    shooter2 "knife2" 50 85 -1 2.8 0 0
	frame	data/chars/gang1/slicer/throwk05.png
	delay	60
	frame	data/chars/gang1/slicer/throwk05.png


anim attack2
	range	0 80
	loop	0
	delay	5
	offset	82 177
	bbox	58 80 42 99
	frame	data/chars/gang1/slicer/a1.png
        sound   data/sounds/m3at1.wav
	frame	data/chars/gang1/slicer/a2.png
        frame	data/chars/gang1/slicer/a3.png
        hitfx   data/sounds/beat3.wav
        attack  96 107 76 10 8 1 0 0 15
	frame	data/chars/gang1/slicer/a4.png
	attack  0 0 0 0 0 
	frame	data/chars/gang1/slicer/a4.png
	frame	data/chars/gang1/slicer/a3.png
	frame	data/chars/gang1/slicer/a2.png
	frame	data/chars/gang1/slicer/a1.png

#DASHER
anim attack3
	range	80 140
	loop	0
	delay	9
	offset	82 177
	bbox	76 108 35 80
	frame	data/chars/gang1/slicer/rise3.png
	delay	22
	bbox	74 126 33 58
	frame	data/chars/gang1/slicer/rise2b.png
	delay	4
	bbox	63 128 53 50
        @cmd    dasher 1 0 0
        sound   data/sounds/slide.wav
	frame	data/chars/gang1/slicer/slide1.png
        @cmd    dasher 2 0 0
	frame	data/chars/gang1/slicer/slide1.png
        hitfx   data/sounds/beat0.wav
	attack  106 158 57 22 10 1 0 0 5
        dropv      2 1 0
	bbox	55 134 63 47
        @cmd    dasher 4 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 6 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 4 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 2 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    dasher 1 0 0
	frame	data/chars/gang1/slicer/slide2.png
        @cmd    stop
        attack  0 0 0 0
	delay	12
	frame	data/chars/gang1/slicer/slide2.png
	bbox	58 80 42 99
	frame	data/chars/gang1/slicer/slide1.png
	bbox	74 126 33 58
	frame	data/chars/gang1/slicer/rise2b.png
	bbox	76 108 35 80
	frame	data/chars/gang1/slicer/rise3.png

anim jumpattack
	range   130  170
	delay	10
	offset	82 155
	bbox	66 48 39 103
        sound   data/sounds/jump.wav
	frame	data/chars/gang1/slicer/j1.png
	bbox	63 49 48 69
        sound   data/sounds/m3at3.wav
	frame	data/chars/gang1/slicer/j2.png
	offset	82 125
	bbox	64 52 60 52
	frame	data/chars/gang1/slicer/j3.png
	delay   34
        hitfx   data/sounds/beat3.wav
        hitflash  flash2
	attack  112 102 51 19 10 1 0 0 20
	bbox	62 60 48 47
	frame	data/chars/gang1/slicer/j4.png
	attack  0 0 0 0 0 0
	delay   12
	bbox	64 52 60 52
	frame	data/chars/gang1/slicer/j3.png
	offset	82 155
	bbox	63 49 48 69
	frame	data/chars/gang1/slicer/j2.png
	bbox	66 48 39 103
	frame	data/chars/gang1/slicer/j1.png

Well, the problems comes with the DASHER attack, as you see both have this move.
Sometime the enemy make this move, but the @cmd dasher not work, I mean the enemy perfoms the attack withoy moving of his place. This happend in the SLICER and SLICER2 too.

At the beginning, in SLICER and SLICER2 I had the numbered attacks equal, but in the end I ended up changing them in SLICER 2, to see if it solved the problem, but it did not help,
 
msmalik681 said:
tested dasher on the latest build and it works as expected.  does dasher still work on other entities ?
Yes, the dasher works ok.

I see after some test,I see the problem is not exactly dasher, it seems that the problem comes when the enemies have weapons.

Ex: If SLICER2 only have one attack to throw kifes, all works ok. But if you add some of the other attacks of the original model, some attaks not work properly. The same happend with other enemies.
 
Back
Top Bottom