Striking At Certain Amount of Damage Points After First Phase and On

maxman

Well-known member
I have a problem when I want to attack an object in a certain condition. I already adjust the object's health points along with its max for the damage percentage rate system. However, I have a problem when it shows one animation with particles every time I attack it.

Here's what I want and am trying to do in order.

  1. Object stays in its idle state and can play its pain anim until that certain amount of its health point reaches to 80%.
  2. When that object has already reached 80% as an initial attack, there should be particles showing, but it shouldn't show them right after hitting it the second time and so.
  3. One animation shows particles and the other animation doesn't.
  4. When it reaches 70%, it should switch to another pain animation which is a follow animation acting similar to anim pain. Also, it should show particles in another animation after the first strike of the second phase. The following should not show particles.
If switching animations is not a good way to do, what's the better way for the particles to show on its first run of each phase every time it's attacked?

Here're the codes for the main one and its child one.

C:
name    Car
type    obstacle
health    130
speed    10
facing    1
death    1
nomove    1
noatflash 1
nodieblink 3
antigrab 9999
nodieblink 3
load brokencar

anim idle #Normal
@script
    void self = getlocalvar("self");
    int maxhp = getentityproperty(self, "maxhealth");
    int hp = getentityproperty(self, "health");

    if(hp < maxhp*0.81){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
    }
@end_script
    delay 1
    offset 91 91
    frame    data/chars/bonus/car/0001.png
    frame    data/chars/bonus/car/0001.png

anim pain #Normal pain
@script
if(frame == 0){
 void self = getlocalvar("self");
 int hp = getentityproperty(self, "health");
 int maxhp = getentityproperty(self, "maxhealth");

 if(hp < maxhp*0.81){
  performattack(self, openborconstant("ANI_FOLLOW11"));
 }else if(hp < maxhp*0.71){
  performattack(self, openborconstant("ANI_FOLLOW12"));
 }else if(hp < maxhp*0.61){
  performattack(self, openborconstant("ANI_FOLLOW13"));
 }else if(hp < maxhp*0.51){
  performattack(self, openborconstant("ANI_FOLLOW14"));
 }else if(hp < maxhp*0.41){
  performattack(self, openborconstant("ANI_FOLLOW15"));
 }else if(hp < maxhp*0.31){
  performattack(self, openborconstant("ANI_FOLLOW16"));
 }else if(hp < maxhp*0.21){
  performattack(self, openborconstant("ANI_FOLLOW17"));
 }if(hp < maxhp*0.80){
  performattack(self, openborconstant("ANI_FOLLOW21"));
 }if(hp < maxhp*0.60){
  performattack(self, openborconstant("ANI_FOLLOW22"));
 }
}
@end_script
    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0002.png
    frame    data/chars/bonus/car/0003.png
    frame    data/chars/bonus/car/0002.png
    delay 2
    frame    data/chars/bonus/car/0001.png


anim follow1 #Damaged 1
@script
    void self = getlocalvar("self");
    int maxhp = getentityproperty(self, "maxhealth");
    int hp = getentityproperty(self, "health");

    if(hp < maxhp*0.71){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW2"));
    }if(hp < maxhp*0.80){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW21"));
    }
@end_script
    delay 1
    offset 91 91
@cmd spawnAni "brokencar" -33 23 0 openborconstant("ANI_IDLE") -2 4 0
@cmd spawnAni "brokencar" -21 46 0 openborconstant("ANI_FOLLOW1") -2 4 0
    frame    data/chars/bonus/car/0004.png
    frame    data/chars/bonus/car/0004.png

anim follow11 #pain 2
    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0005.png
    frame    data/chars/bonus/car/0006.png
    frame    data/chars/bonus/car/0005.png
    delay 2
    frame    data/chars/bonus/car/0004.png

anim follow2 #Damaged 2
@script
    void self = getlocalvar("self");
    int maxhp = getentityproperty(self, "maxhealth");
    int hp = getentityproperty(self, "health");

    if(hp < maxhp*0.61){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW3"));
    }
@end_script
    delay 1
    offset 91 91
    frame    data/chars/bonus/car/0007.png
    frame    data/chars/bonus/car/0007.png

anim follow12 #pain 3

    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0008.png
    frame    data/chars/bonus/car/0009.png
    frame    data/chars/bonus/car/0008.png
    delay 2
    frame    data/chars/bonus/car/0007.png

anim follow3 #Damaged 3

    offset 91 91
    delay 9
    frame    data/chars/bonus/car/0010.png

anim follow13 #pain 4

    delay 6
    frame    data/chars/bonus/car/0011.png
    frame    data/chars/bonus/car/0012.png
    frame    data/chars/bonus/car/0011.png
    delay 2
    frame    data/chars/bonus/car/0010.png

anim follow4 #Damaged 4

    loop 1
    delay 9
    offset 91 91
    frame    data/chars/bonus/car/0013.png

anim follow14 #pain 5

    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0014.png
    frame    data/chars/bonus/car/0015.png
    frame    data/chars/bonus/car/0014.png
    delay 2
    frame    data/chars/bonus/car/0013.png


anim follow5 #Damaged 5

    loop 1
    delay 9
    offset 91 91
    frame    data/chars/bonus/car/0016.png

anim follow15 #pain 6

    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0017.png
    frame    data/chars/bonus/car/0018.png
    frame    data/chars/bonus/car/0017.png
    delay 2
    frame    data/chars/bonus/car/0016.png

anim follow6 #Damaged 6

    loop 1
    delay 9
    offset 91 91
    frame    data/chars/bonus/car/0019.png

anim follow16 #pain 7

    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0020.png
    frame    data/chars/bonus/car/0021.png
    frame    data/chars/bonus/car/0020.png
    delay 2
    frame    data/chars/bonus/car/0019.png

anim follow7 #Damaged 7

    loop 1
    delay 9
    offset 91 91
    frame    data/chars/bonus/car/0022.png

anim follow17 #pain 8

    delay 6
    offset 91 91
    frame    data/chars/bonus/car/0023.png
    frame    data/chars/bonus/car/0024.png
    frame    data/chars/bonus/car/0023.png
    delay 2
    frame    data/chars/bonus/car/0022.png

anim follow21 #After 1st phase damage
@script
    void self = getlocalvar("self");
    int maxhp = getentityproperty(self, "maxhealth");
    int hp = getentityproperty(self, "health");

    if(hp < maxhp*0.61){
        changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW3"));
    }
@end_script
    delay 1
    offset 91 91
    frame    data/chars/bonus/car/0004.png
    frame    data/chars/bonus/car/0004.png

anim follow22 #After first hit of 2nd phase damage

    delay 1
    offset 91 91
    frame    data/chars/bonus/car/0007.png
    frame    data/chars/bonus/car/0007.png

anim death

    loop 1
    delay 34
    offset 91 91
    frame data/chars/bonus/car/0000.png
    frame data/chars/bonus/car/0000.png
    frame data/chars/bonus/car/0000.png
    frame data/chars/bonus/car/0000.png

Child/Summoned one:
Code:
name brokencar
type none
facing 1
palette none
animationscript data/scripts/script.c

anim idle #Side window and front light
offset 91 91
delay 3
loop 1 0 4
landframe 4
frame data/chars/bonus/car/0028.png
drawmethod rotate 90
frame data/chars/bonus/car/0028.png
drawmethod rotate 180
frame data/chars/bonus/car/0028.png
drawmethod rotate 270
frame data/chars/bonus/car/0028.png
@cmd suicide
frame none

anim follow1 #
offset 91 91
delay 3
landframe 4
loop 1 0 4
frame data/chars/bonus/car/0029.png
drawmethod rotate 90
frame data/chars/bonus/car/0029.png
drawmethod rotate 180
frame data/chars/bonus/car/0029.png
drawmethod rotate 270
frame data/chars/bonus/car/0029.png
@cmd suicide
frame none
 
Back
Top Bottom