Classes:Demon1

From ZDoom Wiki
Jump to navigation Jump to search
Note: Wait! Stop! You do not need to copy this actor's code into your project! Here's why:
  1. This actor is already defined in GZDoom, there's no reason to define it again.
  2. In fact, trying to define an actor with the same name will cause an error (because it already exists).
  3. If you want to make your own version of this actor, use inheritance.
  4. Definitions for existing actors are put on the wiki for reference purpose only.
Green chaos serpent
Actor type Monster Game MiniHexenLogoIcon.png (Hexen)
DoomEd Number 31 Class Name Demon1
Spawn ID 3 Identifier T_DEMON1


Classes: Demon1
 →Demon1Mash
 →Demon2
  →Demon2Mash

The green chaos serpent is a common foe in Hexen, appearing first in the Seven Portals. However, they are quite weak compared to the exceptional specimen of that breed that D'Sparil rode to battle in E3M8 of Heretic. They can spit fireballs and have a powerful bite attack. Even when they aren't gibbed, their body explode and not much is left of it when they die.

DECORATE definition

ACTOR Demon1
{
  Health 250
  PainChance 50
  Speed 13
  Radius 32
  Height 64
  Mass 220
  Monster
  +TELESTOMP
  +FLOORCLIP
  SeeSound "DemonSight"
  AttackSound "DemonAttack"
  PainSound "DemonPain"
  DeathSound "DemonDeath"
  ActiveSound "DemonActive"
  Obituary "$OB_DEMON1"
  const int ChunkFlags = SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEVELOCITY;
  States
  {
  Spawn:
    DEMN AA 10 A_Look
    Loop
  See:
    DEMN ABCD 4 A_Chase
    Loop
  Pain:
    DEMN E 4
    DEMN E 4 A_Pain
    Goto See
  Melee:
    DEMN E 6 A_FaceTarget
    DEMN F 8 A_FaceTarget
    DEMN G 6 A_CustomMeleeAttack(random[DemonAttack1](1, 8)*2)
    Goto See
  Missile:
    DEMN E 5 A_FaceTarget
    DEMN F 6 A_FaceTarget
    DEMN G 5 A_CustomMissile("Demon1FX1", 62, 0)
    Goto See
  Death:
    DEMN HI 6
    DEMN J 6 A_Scream
    DEMN K 6 A_NoBlocking
    DEMN L 6 A_QueueCorpse
    DEMN MNO 6
    DEMN P -1
    Stop
  XDeath:
    DEMN H 6
    DEMN I 0 A_SpawnItemEx("Demon1Chunk1", 0, 0, 45, frandom[DemonChunks](1, 4.984375)*cos(angle+90),
                           frandom[DemonChunks](1, 4.984375)*sin(angle+90), 8, 90, ChunkFlags)
    DEMN I 0 A_SpawnItemEx("Demon1Chunk2", 0, 0, 45, frandom[DemonChunks](1, 4.984375)*cos(angle-90),
                           frandom[DemonChunks](1, 4.984375)*sin(angle-90), 8, 270, ChunkFlags)
    DEMN I 0 A_SpawnItemEx("Demon1Chunk3", 0, 0, 45, frandom[DemonChunks](1, 4.984375)*cos(angle-90),
                           frandom[DemonChunks](1, 4.984375)*sin(angle-90), 8, 270, ChunkFlags)
    DEMN I 0 A_SpawnItemEx("Demon1Chunk4", 0, 0, 45, frandom[DemonChunks](1, 4.984375)*cos(angle-90),
                           frandom[DemonChunks](1, 4.984375)*sin(angle-90), 8, 270, ChunkFlags)
    DEMN I 6 A_SpawnItemEx("Demon1Chunk5", 0, 0, 45, frandom[DemonChunks](1, 4.984375)*cos(angle-90),
                           frandom[DemonChunks](1, 4.984375)*sin(angle-90), 8, 270, ChunkFlags)
    Goto Death+2
  Ice:
    DEMN Q 5 A_FreezeDeath
    DEMN Q 1 A_FreezeDeathChunks
    Wait
  }
}