Solved Various Random Attack

Question that is answered or resolved.

dantedevil

Well-known member
I have a boss with a lot of random attacks, this boss throws you different types of rolling drums, in different directions.
That's why I need he to act randomly when choosing which attack to use.
But until now I have not managed to make it work the way I want it to.

Here my try:
Code:
anim follow13
    loop    0
    offset    82 162
    bbox    0 0 0 0
        @cmd    layer -1
        fshadow 0
    delay    20
        @cmd    attack1 50 200 200 "ANI_FOLLOW14"
    frame    data/chars/gang3/truck/spawn1.png
@script
void self = getlocalvar("self"); //get calling entity
int random = (openborvariant("elapsed_time")/2)%6+1; //random number from 1 to 3
    if(frame == 2)
    {
      if(random == 1){  //if random number is 1
          changeentityproperty(self, "animation", openborconstant("ANI_FREESPECIAL")); //move to freespecial
      }else{ //if random number is not 1
          changeentityproperty(self, "animation", openborconstant("ANI_FREESPECIAL" + random)); //move to freespecial matching the random number
      }
    }
@end_script
    delay    1
    frame    data/chars/gang3/truck/spawn1.png
    frame    data/chars/gang3/truck/spawn1.png
    delay    200
    frame    data/chars/gang3/truck/spawn1.png



anim follow14
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
        fshadow 0
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL12" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03.png
    delay    20
    frame    data/chars/gang3/truck/throwd04.png
    delay    12
    frame    data/chars/gang3/truck/throwd05.png
    delay    8
    frame    data/chars/gang3/truck/throwd06.png
        @cmd    spawnAni "rollbdrum"  65 102 -1 "ANI_FOLLOW11" 0 0 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png

       

anim freespecial
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL10" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03.png
    delay    20
    frame    data/chars/gang3/truck/throwd04.png
    delay    12
    frame    data/chars/gang3/truck/throwd05.png
    delay    8
    frame    data/chars/gang3/truck/throwd06.png
        subentity rolldrum
        spawnframe 8 65 -1 102 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png

anim freespecial2
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL10" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03.png
    delay    20
    frame    data/chars/gang3/truck/throwd04.png
    delay    12
    frame    data/chars/gang3/truck/throwd05.png
    delay    8
    frame    data/chars/gang3/truck/throwd06.png
        @cmd    spawnAni "rolldrum"  65 102 -1 "ANI_FOLLOW10" 0 0 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png


anim freespecial3
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
        fshadow 0
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL11" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03b.png
    delay    20
    frame    data/chars/gang3/truck/throwd04b.png
    delay    12
    frame    data/chars/gang3/truck/throwd05b.png
    delay    8
    frame    data/chars/gang3/truck/throwd06b.png
        subentity rollhdrum
        spawnframe 8 65 -1 102 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png



anim freespecial4
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
        fshadow 0
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL11" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03b.png
    delay    20
    frame    data/chars/gang3/truck/throwd04b.png
    delay    12
    frame    data/chars/gang3/truck/throwd05b.png
    delay    8
    frame    data/chars/gang3/truck/throwd06b.png
        @cmd    spawnAni "rollhdrum"  65 102 -1 "ANI_FOLLOW10" 0 0 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png



anim freespecial5
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
        fshadow 0
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL12" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03.png
    delay    20
    frame    data/chars/gang3/truck/throwd04.png
    delay    12
    frame    data/chars/gang3/truck/throwd05.png
    delay    8
    frame    data/chars/gang3/truck/throwd06.png
        subentity rollbdrum
        spawnframe 8 65 -1 102 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png


anim freespecial6
    loop    0
    offset    84 162
    bbox    0 0 0 0
        @cmd    layer -1
        fshadow 0
    delay    4
        @cmd    spawnAni "drum"  -56 150 -2 "ANI_FREESPECIAL12" 0 0 0
    frame    data/chars/gang3/truck/throwd01.png
    delay    56
    frame    data/chars/gang3/truck/throwd01.png
    delay    12
    frame    data/chars/gang3/truck/throwd02.png
    frame    data/chars/gang3/truck/throwd03.png
    delay    20
    frame    data/chars/gang3/truck/throwd04.png
    delay    12
    frame    data/chars/gang3/truck/throwd05.png
    delay    8
    frame    data/chars/gang3/truck/throwd06.png
        @cmd    spawnAni "rollbdrum"  65 102 -1 "ANI_FOLLOW10" 0 0 0
    frame    data/chars/gang3/truck/throwd07.png
    delay    40
    frame    data/chars/gang3/truck/throwd08.png
    delay    12
    frame    data/chars/gang3/truck/throwd09.png
        @cmd    anichange "ANI_FOLLOW13" 0
    frame    data/chars/gang3/truck/throwd09.png
 
Last edited:
Solution
nsw25 said:
heres how to do it, can use technique to keep randomising more options.


Code:
anim	freespecial
@script
    if(frame==0){
      void self = getlocalvar("self");
      int r = rand()%30;

      if(r > 0){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
      }
    }
	@end_script	
	delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png
delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png


anim	follow1
@script
    if(frame==0){
      void self = getlocalvar("self");
      int r = rand()%30;

      if(r > 0){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW2"));
      }
    }
	@end_script	
	delay	20
		offset	202 430
	bbox	0 0 0 0
	frame...
nsw25 said:
heres how to do it, can use technique to keep randomising more options.


Code:
anim	freespecial
@script
    if(frame==0){
      void self = getlocalvar("self");
      int r = rand()%30;

      if(r > 0){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
      }
    }
	@end_script	
	delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png
delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png


anim	follow1
@script
    if(frame==0){
      void self = getlocalvar("self");
      int r = rand()%30;

      if(r > 0){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW2"));
      }
    }
	@end_script	
	delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png
delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png

anim	follow2
@script
    if(frame==0){
      void self = getlocalvar("self");
      int r = rand()%30;

      if(r > 0){
        changeentityproperty(self, "animation", openborconstant("ANI_FREEPECIAL"));
      }
    }
	@end_script	
	delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png
delay	20
		offset	202 430
	bbox	0 0 0 0
	frame	data/chars/example/1.png

Thanks my friend, but I know that method.
I prefer use something like my try, only one script with all animations and a random % to use one.

Finally I found the solution here:

http://www.chronocrash.com/forum/index.php?topic=1901.msg24874#msg24874
 
Solution
Dante, watch out for how you change the animation to attacks. When the animation is an attack, you need to use "performattack" instead of changing the animation. Peformattack, as far as I remember, will trigger internal flags (like "attacking") which ate triggered when you are executing an attack.

If you only change the animation, those flags won't be set. And this can cause strange behaviours, like the ai won't try to block those attacks - because it doesn't know that animation is an attack. And the engine won't try to block things which aren't attacks.
 
O Ilusionista said:
Dante, watch out for how you change the animation to attacks. When the animation is an attack, you need to use "performattack" instead of changing the animation. Peformattack, as far as I remember, will trigger internal flags (like "attacking") which ate triggered when you are executing an attack.

If you only change the animation, those flags won't be set. And this can cause strange behaviours, like the ai won't try to block those attacks - because it doesn't know that animation is an attack. And the engine won't try to block things which aren't attacks.

Thanks for this info my friend, but in this case I use your script for different anim follows for the new boss Truck.
He throw you different types of drums  in different directions, so with your script and a different anim follows, all works perfect.
 
Back
Top Bottom