gzdoom-gles/wadsrc/static/actors/hexen/serpent.txt
2016-03-01 09:47:10 -06:00

224 lines
3.9 KiB
Text

// Serpent ------------------------------------------------------------------
ACTOR Serpent
{
Health 90
PainChance 96
Speed 12
Radius 32
Height 70
Mass 0x7fffffff
Monster
-SHOOTABLE
+NOBLOOD
+CANTLEAVEFLOORPIC +NONSHOOTABLE
+STAYMORPHED +DONTBLAST +NOTELEOTHER
+INVISIBLE
SeeSound "SerpentSight"
AttackSound "SerpentAttack"
PainSound "SerpentPain"
DeathSound "SerpentDeath"
HitObituary "$OB_SERPENTHIT"
action native A_SerpentHumpDecide();
action native A_SerpentHide();
action native A_SerpentCheckForAttack();
action native A_SerpentSpawnGibs();
action native A_SerpentUnHide();
action native A_SerpentRaiseHump();
action native A_SerpentLowerHump();
action native A_SerpentChooseAttack();
action native A_SerpentMeleeAttack();
States
{
Spawn:
SSPT H 10 A_Look
Loop
See:
SSPT HH 1 A_Chase("Melee", "None", CHF_NIGHTMAREFAST|CHF_NOPLAYACTIVE)
SSPT H 2 A_SerpentHumpDecide
Loop
Pain:
SSPT L 5
SSPT L 5 A_Pain
Dive:
SSDV ABC 4
SSDV D 4 A_UnSetShootable
SSDV E 3 A_PlaySoundEx("SerpentActive", "Body")
SSDV F 3
SSDV GH 4
SSDV I 3
SSDV J 3 A_SerpentHide
Goto See
Melee:
SSPT A 1 A_UnHideThing
SSPT A 1 A_PlaySoundEx("SerpentBirth", "Voice")
SSPT B 3 A_SetShootable
SSPT C 3
SSPT D 4 A_SerpentCheckForAttack
Goto Dive
Death:
SSPT O 4
SSPT P 4 A_Scream
SSPT Q 4 A_NoBlocking
SSPT RSTUVWXYZ 4
Stop
XDeath:
SSXD A 4
SSXD B 4 A_SpawnItemEx("SerpentHead", 0, 0, 45)
SSXD C 4 A_NoBlocking
SSXD DE 4
SSXD FG 3
SSXD H 3 A_SerpentSpawnGibs
Stop
Ice:
SSPT [ 5 A_FreezeDeath
SSPT [ 1 A_FreezeDeathChunks
Wait
Walk:
SSPT IJI 5 A_Chase("Attack", "None", CHF_NIGHTMAREFAST)
SSPT J 5 A_SerpentCheckForAttack
Goto Dive
Hump:
SSPT H 3 A_SerpentUnHide
SSPT EFGEF 3 A_SerpentRaiseHump
SSPT GEF 3
SSPT GEFGE 3 A_SerpentLowerHump
SSPT F 3 A_SerpentHide
Goto See
Attack:
SSPT K 6 A_FaceTarget
SSPT L 5 A_SerpentChooseAttack
Goto MeleeAttack
MeleeAttack:
SSPT N 5 A_SerpentMeleeAttack
Goto Dive
}
}
// Serpent Leader -----------------------------------------------------------
ACTOR SerpentLeader : Serpent
{
Mass 200
Obituary "$OB_SERPENT"
States
{
Missile:
SSPT N 5 A_CustomMissile("SerpentFX", 32, 0)
Goto Dive
}
}
// Serpent Missile Ball -----------------------------------------------------
ACTOR SerpentFX
{
Speed 15
Radius 8
Height 10
Damage 4
Projectile
-ACTIVATEIMPACT -ACTIVATEPCROSS
RenderStyle Add
DeathSound "SerpentFXHit"
States
{
Spawn:
SSFX A 0
SSFX A 3 Bright A_PlaySoundEx("SerpentFXContinuous", "Body", 1)
SSFX BAB 3 Bright
Goto Spawn+1
Death:
SSFX C 4 Bright A_StopSoundEx("Body")
SSFX DEFGH 4 Bright
Stop
}
}
// Serpent Head -------------------------------------------------------------
ACTOR SerpentHead
{
Radius 5
Height 10
Gravity 0.125
+NOBLOCKMAP
action native A_SerpentHeadCheck();
States
{
Spawn:
SSXD IJKLMNOP 4 A_SerpentHeadCheck
Loop
Death:
SSXD S -1
Loop
}
}
// Serpent Gib 1 ------------------------------------------------------------
ACTOR SerpentGib1
{
Radius 3
Height 3
+NOBLOCKMAP +NOGRAVITY
action native A_FloatGib();
action native A_DelayGib();
action native A_SinkGib();
States
{
Spawn:
SSXD Q 6
SSXD Q 6 A_FloatGib
SSXD QQ 8 A_FloatGib
SSXD QQ 12 A_FloatGib
SSXD Q 232 A_DelayGib
SSXD QQ 12 A_SinkGib
SSXD QQQ 8 A_SinkGib
Stop
}
}
// Serpent Gib 2 ------------------------------------------------------------
ACTOR SerpentGib2 : SerpentGib1
{
States
{
Spawn:
SSXD R 6
SSXD R 6 A_FloatGib
SSXD RR 8 A_FloatGib
SSXD RR 12 A_FloatGib
SSXD R 232 A_DelayGib
SSXD RR 12 A_SinkGib
SSXD RRR 8 A_SinkGib
Stop
}
}
// Serpent Gib 3 ------------------------------------------------------------
ACTOR SerpentGib3 : SerpentGib1
{
States
{
Spawn:
SSXD T 6
SSXD T 6 A_FloatGib
SSXD TT 8 A_FloatGib
SSXD TT 12 A_FloatGib
SSXD T 232 A_DelayGib
SSXD TT 12 A_SinkGib
SSXD TTT 8 A_SinkGib
Stop
}
}