mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
409 lines
7.1 KiB
Text
409 lines
7.1 KiB
Text
|
|
||
|
// Demon, type 1 (green, like D'Sparil's) -----------------------------------
|
||
|
|
||
|
class Demon1 : Actor
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
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 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 ----------------------------------------------------
|
||
|
|
||
|
class Demon1Mash : Demon1
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
+NOBLOOD
|
||
|
+BLASTED
|
||
|
-TELESTOMP
|
||
|
+NOICEDEATH
|
||
|
RenderStyle "Translucent";
|
||
|
Alpha 0.4;
|
||
|
}
|
||
|
States
|
||
|
{
|
||
|
Death:
|
||
|
XDeath:
|
||
|
Ice:
|
||
|
Stop;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Demon chunk, base class --------------------------------------------------
|
||
|
|
||
|
class DemonChunk : Actor
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
Radius 5;
|
||
|
Height 5;
|
||
|
+NOBLOCKMAP
|
||
|
+DROPOFF
|
||
|
+MISSILE
|
||
|
+CORPSE
|
||
|
+FLOORCLIP
|
||
|
+NOTELEPORT
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Demon, type 1, chunk 1 ---------------------------------------------------
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class Demon1Chunk2 : DemonChunk
|
||
|
{
|
||
|
States
|
||
|
{
|
||
|
Spawn:
|
||
|
DEMB A 4;
|
||
|
DEMB A 10 A_QueueCorpse;
|
||
|
DEMB A 20;
|
||
|
Wait;
|
||
|
Death:
|
||
|
DEMB A -1;
|
||
|
Stop;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class 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 ------------------------------------------------
|
||
|
|
||
|
class Demon1FX1 : Actor
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
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) ----------------------------------------------------
|
||
|
|
||
|
class Demon2 : Demon1
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
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 ----------------------------------------------------
|
||
|
|
||
|
class Demon2Mash : Demon2
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
+NOBLOOD
|
||
|
+BLASTED
|
||
|
-TELESTOMP
|
||
|
+NOICEDEATH
|
||
|
RenderStyle "Translucent";
|
||
|
Alpha 0.4;
|
||
|
}
|
||
|
States
|
||
|
{
|
||
|
Death:
|
||
|
XDeath:
|
||
|
Ice:
|
||
|
Stop;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Demon, type 2, chunk 1 ---------------------------------------------------
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class 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 ---------------------------------------------------
|
||
|
|
||
|
class 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 ------------------------------------------------
|
||
|
|
||
|
class Demon2FX1 : Actor
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
|