Jump to content
  • 0

BLOOD burning death for monsters


JohnCook1994

Question

Hello guys,

 

I need help on how to make monsters burn from a flare gun or a flamethrower, I've copied and pasted the GenericHumanBurn from Aeod's Data PK3 and copied the burning sprites from Aeod's main PK3. I want to make my zombieman run, burn, and die, so it could look fun. I have this copied down, this:

Spoiler

Actor GenericHumanBurn
{
    -SOLID
    -COUNTKILL
    +DONTSPLASH
    +FLOORCLIP
    Radius 20
    Height 56
    Speed 10
    PainChance 0
    DamageType Fire
    HitObituary "%o melted."
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(160,"Burn2")
        TNT1 A 0 A_SpawnItemEx("GenericHumanBurn1",0,0,0,0,0,0,0,32)
        Stop
    Burn2:
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN A 3 Bright A_PlaySound("bcultist/burned")
        TNT1 A 0 A_Explode(8,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN B 3 Bright
        TNT1 A 0 A_Explode(8,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN C 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN D 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN E 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN F 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN G 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN H 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN I 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN J 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN K 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN L 3 Bright
        TNT1 A 0 A_Explode(7,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN M 3 Bright
        TNT1 A 0 A_Explode(6,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        BURN N 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(20,55),0,0,frandom(0.5,3.0),0,32)
        BURN O 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(20,45),0,0,frandom(0.5,3.0),0,32)
        BURN P 3 Bright
        TNT1 A 0 A_Explode(4,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(20,45),0,0,frandom(0.5,3.0),0,32)
        BURN Q 3 Bright
        TNT1 A 0 A_Explode(3,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(10,35),0,0,frandom(0.5,3.0),0,32)
        BURN R 3 Bright
        TNT1 A 0 A_Explode(3,32)
        TNT1 A 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(10,35),0,0,frandom(0.5,3.0),0,32)
        BURN S 3 Bright
        TNT1 A 0 A_Explode(2,32)
        TNT1 A 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(10,35),0,0,frandom(0.5,3.0),0,32)
        BURN T 3 BrighT
        TNT1 A 0 A_Explode(2,32)
        TNT1 A 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(10,25),0,0,frandom(0.5,3.0),0,32)
        BURN U 3 BrighT
        TNT1 A 0 A_Explode(2,32)

        BURN V -1
        Stop
    }
}    

Actor GenericHumanBurn1
{
    -SOLID
    -COUNTKILL
    +DONTSPLASH
    +FLOORCLIP
    Radius 20
    Height 56
    Speed 10
    PainChance 0
    Scale 0.45
    DamageType Fire
    HitObituary "%o melted."
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_PlaySound("formundead/burned")

        TNT1 A 0 A_JumpIfInventory("Counter",5,"ScreamandDecide")
        E16W A 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
//        TNT1 A 0 A_SpawnItemEx("BurnMiniFlame",random(20,-20),random(20,-20),random(30,50),0,0,frandom(1.0,3.0),0,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W A 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W B 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W B 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W C 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W C 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W D 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W D 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W E 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W E 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W F 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16W F 2 Bright A_Wander
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        TNT1 A 0 A_GiveInventory("Counter",1)
        Goto Spawn+2

    ScreamandDecide:
        TNT1 A 0 A_Jump(200,"Burn1Fallen")
        TNT1 A 0 A_TakeInventory("Counter",255)
        Goto Spawn+2

    Burn1Fallen:
        E16D A 2 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16D A 2 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16D B 2 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)
        E16D B 2 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(20,-20),random(20,-20),random(45,55),0,0,frandom(0.5,3.0),0,32)

        E16D C 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D D 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D E 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D F 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D G 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D H 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)

        TNT1 A 0 A_Jump(90,"Burn1End")
        E16D C 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D D 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D E 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D F 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D G 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D H 3 Bright
        TNT1 A 0 A_Explode(5,32)
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(15,-15),random(15,-15),random(20,25),0,0,frandom(0.5,3.0),0,32)
        Goto Burn1Fallen+16    //was 12
    Burn1End:
        E16D I 3
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(10,-10),random(10,-10),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D J 3
        TNT1 AA 0 A_SpawnItemEx("BurnSmoke",random(10,-10),random(10,-10),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D K 3 Bright
        TNT1 A 0 A_SpawnItemEx("BurnSmoke",random(10,-10),random(10,-10),random(20,25),0,0,frandom(0.5,3.0),0,32)
        E16D L 4
        E16D M -1
        Stop
    }
}

//Burning State//

 

 

I may sound confusing to everyone, but heres that. Please reply to me, most appreciated

JohnCook1994 (CookAGK9000)

Share this post


Link to post

15 answers to this question

Recommended Posts

  • 0

From a quick look at that code, it looks like that actor is meant to spawn at the exact moment the calling actor dies by fire, in this case, a Zombieman. How to actually tell if it dies by fire, I'm not sure. But I do know this actor needs to be spawned in the appropriate death state for the Zombieman.

Share this post


Link to post
  • 0

Having not looked at the ode, but having read what Nevander said, I'd suggest that you give the Zombieman a Death.Fire state, and have that state summon the burning human actor, and then immediately stop existing, so it is replaced by that burning man.

Share this post


Link to post
  • 0
Spoiler

ACTOR ZombieMan
{
  Health 20
  Radius 20
  Height 56
  Speed 8
  PainChance 200
  PainChance "Fire", 255
  Monster
  +FLOORCLIP
  SeeSound "grunt/sight"
  AttackSound "grunt/attack"
  PainSound "grunt/pain"
  DeathSound "grunt/death"
  ActiveSound "grunt/active"
  Obituary "$OB_ZOMBIE" // "%o was killed by a zombieman."
  DropItem "Clip"
  States
  {
  Spawn:
    POSS AB 10 A_Look
    Loop
  See:
    POSS AABBCCDD 4 A_Chase
    Loop
  Missile:
    POSS E 10 A_FaceTarget
    POSS F 8 A_PosAttack
    POSS E 8
    Goto See
  Pain:
    POSS G 3
    POSS G 3 A_Pain
    Goto See
  Death:
    POSS H 5
    POSS I 5 A_Scream
    POSS J 5 A_NoBlocking
    POSS K 5
    POSS L -1
    Stop
  XDeath:
    POSS M 5
    POSS N 5 A_XScream
    POSS O 5 A_NoBlocking
    POSS PQRST 5
    POSS U -1
    Stop
  Raise:
    POSS K 5
    POSS JIH 5
    Goto See
  Death.Fire:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("DefileCheck",1,"Death")
    TNT1 A 0 A_Fall
    TNT1 A 0 A_SpawnItemEx("GenericHumanBurn1",0,0,0,0,0,0,0,32)
        Stop
  }
}

 

Tried with UTNT Flamethrower. Zombieman only died regularly.

Share this post


Link to post
  • 0
44 minutes ago, JohnCook1994 said:
  Reveal hidden contents

ACTOR ZombieMan
{
  Health 20
  Radius 20
  Height 56
  Speed 8
  PainChance 200
  PainChance "Fire", 255
  Monster
  +FLOORCLIP
  SeeSound "grunt/sight"
  AttackSound "grunt/attack"
  PainSound "grunt/pain"
  DeathSound "grunt/death"
  ActiveSound "grunt/active"
  Obituary "$OB_ZOMBIE" // "%o was killed by a zombieman."
  DropItem "Clip"
  States
  {
  Spawn:
    POSS AB 10 A_Look
    Loop
  See:
    POSS AABBCCDD 4 A_Chase
    Loop
  Missile:
    POSS E 10 A_FaceTarget
    POSS F 8 A_PosAttack
    POSS E 8
    Goto See
  Pain:
    POSS G 3
    POSS G 3 A_Pain
    Goto See
  Death:
    POSS H 5
    POSS I 5 A_Scream
    POSS J 5 A_NoBlocking
    POSS K 5
    POSS L -1
    Stop
  XDeath:
    POSS M 5
    POSS N 5 A_XScream
    POSS O 5 A_NoBlocking
    POSS PQRST 5
    POSS U -1
    Stop
  Raise:
    POSS K 5
    POSS JIH 5
    Goto See
  Death.Fire:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("DefileCheck",1,"Death")
    TNT1 A 0 A_Fall
    TNT1 A 0 A_SpawnItemEx("GenericHumanBurn1",0,0,0,0,0,0,0,32)
        Stop
  }
}

 

Tried with UTNT Flamethrower. Zombieman only died regularly.

Look at the code for the Flamethrower.  Does it have DamageType Fire?  The Zombieman will only enter the Death.Fire state if killed by damage type fire.  Actually, if the weapon has DeathType Fire, what would work, too, but DeathType is not used as often.

Share this post


Link to post
  • 0

And the actor above is just a restatement. You should inherit and replace instead, like so:

 

ACTOR NewZombieman : Zombieman REPLACES Zombieman

Edited by Nevander
Im a dumbass

Share this post


Link to post
  • 0
12 hours ago, Nevander said:

And the actor above is just a restatement. You should inherit and replace instead, like so:

 

ACTOR Zombieman : Zombieman REPLACES Zombieman

That is almost right.  The new actor needs to have a different name, or you will get a "Trying to define Zombieman twice" error.  Zombieman2 is different enough, or maybe FireProneZombieman would be a more descriptive name.

Share this post


Link to post
  • 0
2 hours ago, Empyre said:

That is almost right.  The new actor needs to have a different name

Oh right. It's been a while since I did DECORATE. Slipped my mind.

Edited by Nevander

Share this post


Link to post
  • 0

The BurnEnd thing, it's kinda confusing on how may I let this former human extinguish by death. Is there a way for me to make this monster fall down after running in fire. When I did ignite him, he never dies, it's like him running around endlessly suffering

Share this post


Link to post
  • 0
7 hours ago, JohnCook1994 said:

The BurnEnd thing, it's kinda confusing on how may I let this former human extinguish by death. Is there a way for me to make this monster fall down after running in fire. When I did ignite him, he never dies, it's like him running around endlessly suffering

Oh, I see now.  There is no way to get to the Burn1End state.   Wait, I did find a way there in the Burn1Fallen state, but with only a 90 out of 255 chance.

 

Change this line:

TNT1 A 0 A_Jump(90,"Burn1End")

to

TNT1 A 0 A_Jump(160,"Burn1End")

 

Optionally, also do this: In the ScreamandDecide state, right before Goto Spawn+2, add this line:

TNT1 A 0 A_Jump(128,"Burn1End")

Share this post


Link to post
  • 0

Do you have the Counter actor defined?  If not, it would have the effect you are seeing.

 

This should do it:

ACTOR Counter : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 16384
	-INVBAR
}

 

Share this post


Link to post
  • 0

Now that you have the Counter actor defined, maybe you should undo the changes I suggested earlier, so the behavior would be what was originally intended.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...