// Demon, type 1 (green, like D'Sparil's) ----------------------------------- ACTOR Demon1 { Game Hexen SpawnID 3 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 } } // Demon, type 1, mashed ---------------------------------------------------- ACTOR Demon1Mash : Demon1 { Game Hexen SpawnID 100 +NOBLOOD +BLASTED -TELESTOMP +NOICEDEATH RenderStyle Translucent Alpha 0.4 States { Death: XDeath: Ice: Stop } } // Demon chunk, base class -------------------------------------------------- ACTOR DemonChunk { Radius 5 Height 5 +NOBLOCKMAP +DROPOFF +MISSILE +CORPSE +FLOORCLIP +NOTELEPORT } // Demon, type 1, chunk 1 --------------------------------------------------- ACTOR Demon1Chunk1 : DemonChunk { States { Spawn: DEMA A 4 DEMA A 10 A_QueueCorpse DEMA A 20 Wait Death: DEMA A -1 Stop } } // Demon, type 1, chunk 2 --------------------------------------------------- ACTOR Demon1Chunk2 : DemonChunk { States { Spawn: DEMB A 4 DEMB A 10 A_QueueCorpse DEMB A 20 Wait Death: DEMB A -1 Stop } } ACTOR Demon1Chunk3 : DemonChunk { States { Spawn: DEMC A 4 DEMC A 10 A_QueueCorpse DEMC A 20 Wait Death: DEMC A -1 Stop } } // Demon, type 1, chunk 4 --------------------------------------------------- ACTOR Demon1Chunk4 : DemonChunk { States { Spawn: DEMD A 4 DEMD A 10 A_QueueCorpse DEMD A 20 Wait Death: DEMD A -1 Stop } } // Demon, type 1, chunk 5 --------------------------------------------------- ACTOR Demon1Chunk5 : DemonChunk { States { Spawn: DEME A 4 DEME A 10 A_QueueCorpse DEME A 20 Wait Death: DEME A -1 Stop } } // Demon, type 1, projectile ------------------------------------------------ ACTOR Demon1FX1 { Speed 15 Radius 10 Height 6 Damage 5 DamageType Fire Projectile +SPAWNSOUNDSOURCE RenderStyle Add SeeSound "DemonMissileFire" DeathSound "DemonMissileExplode" States { Spawn: DMFX ABC 4 Bright Loop Death: DMFX DE 4 Bright DMFX FGH 3 Bright Stop } } // Demon, type 2 (brown) ---------------------------------------------------- ACTOR Demon2 : Demon1 { Game Hexen Obituary "$OB_DEMON2" Species "Demon2" States { Spawn: DEM2 AA 10 A_Look Loop See: DEM2 ABCD 4 A_Chase Loop Pain: DEM2 E 4 DEM2 E 4 A_Pain Goto See Melee: DEM2 E 6 A_FaceTarget DEM2 F 8 A_FaceTarget DEM2 G 6 A_CustomMeleeAttack(random[DemonAttack1](1,8)*2) Goto See Missile: DEM2 E 5 A_FaceTarget DEM2 F 6 A_FaceTarget DEM2 G 5 A_CustomMissile("Demon2FX1", 62, 0) Goto See Death: DEM2 HI 6 DEM2 J 6 A_Scream DEM2 K 6 A_NoBlocking DEM2 L 6 A_QueueCorpse DEM2 MNO 6 DEM2 P -1 Stop XDeath: DEM2 H 6 DEM2 I 0 A_SpawnItemEx("Demon2Chunk1", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle+90), frandom[DemonChunks](1,4.984375)*sin(Angle+90), 8, 90, ChunkFlags) DEM2 I 0 A_SpawnItemEx("Demon2Chunk2", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) DEM2 I 0 A_SpawnItemEx("Demon2Chunk3", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) DEM2 I 0 A_SpawnItemEx("Demon2Chunk4", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) DEM2 I 6 A_SpawnItemEx("Demon2Chunk5", 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 } } // Demon, type 2, mashed ---------------------------------------------------- ACTOR Demon2Mash : Demon2 { Game Hexen SpawnID 101 +NOBLOOD +BLASTED -TELESTOMP +NOICEDEATH RenderStyle Translucent Alpha 0.4 States { Death: XDeath: Ice: Stop } } // Demon, type 2, chunk 1 --------------------------------------------------- ACTOR Demon2Chunk1 : DemonChunk { States { Spawn: DMBA A 4 DMBA A 10 A_QueueCorpse DMBA A 20 Wait Death: DMBA A -1 Stop } } // Demon, type 2, chunk 2 --------------------------------------------------- ACTOR Demon2Chunk2 : DemonChunk { States { Spawn: DMBB A 4 DMBB A 10 A_QueueCorpse DMBB A 20 Wait Death: DMBB A -1 Stop } } // Demon, type 2, chunk 3 --------------------------------------------------- ACTOR Demon2Chunk3 : DemonChunk { States { Spawn: DMBC A 4 DMBC A 10 A_QueueCorpse DMBC A 20 Wait Death: DMBC A -1 Stop } } // Demon, type 2, chunk 4 --------------------------------------------------- ACTOR Demon2Chunk4 : DemonChunk { States { Spawn: DMBD A 4 DMBD A 10 A_QueueCorpse DMBD A 20 Wait Death: DMBD A -1 Stop } } // Demon, type 2, chunk 5 --------------------------------------------------- ACTOR Demon2Chunk5 : DemonChunk { States { Spawn: DMBE A 4 DMBE A 10 A_QueueCorpse DMBE A 20 Wait Death: DMBE A -1 Stop } } // Demon, type 2, projectile ------------------------------------------------ ACTOR Demon2FX1 { Speed 15 Radius 10 Height 6 Damage 5 DamageType Fire Projectile +SPAWNSOUNDSOURCE RenderStyle Add SeeSound "DemonMissileFire" DeathSound "DemonMissileExplode" States { Spawn: D2FX ABCDEF 4 Bright Loop Death: D2FX GHIJ 4 Bright D2FX KL 3 Bright Stop } }