Code: Select all
// FORMER HUMAN
//
ACTOR RLFormerHumanPistol : ZombieMan
{
DamageFactor "Crush", 10
CrushPainSound "rlmonsters/crush"
AttackSound ""
Obituary "%o was finished off by a Former Human."
DropItem "RLEnemyPistolPickup"
+AVOIDMELEE
Tag "Former Human"
States
{
Spawn:
ZHPI AB Random(9,10) A_Look
Loop
See:
TNT1 A 0 A_JumpIfInventory ("RLFormerHumanPistolShotCounter", 6, "RetreatReload")
ZHPI AABBCCDD 4 A_Chase
Loop
RetreatReload:
TNT1 A 0 A_ChangeFlag ("FRIGHTENED", 1)
ZHPI AA 3 A_Wander
TNT1 A 0 A_JumpIfCloser (180, 2)
TNT1 A 0 A_Jump (32, "Reload")
ZHPI BB 3 A_Wander
TNT1 A 0 A_JumpIfCloser (180, 2)
TNT1 A 0 A_Jump (32, "Reload")
ZHPI CC 3 A_Wander
TNT1 A 0 A_JumpIfCloser (180, 2)
TNT1 A 0 A_Jump (32, "Reload")
ZHPI DD 3 A_Wander
TNT1 A 0 A_JumpIfCloser (180, 2)
TNT1 A 0 A_Jump (32, "Reload")
TNT1 A 0
Goto RetreatReload+1
Missile:
TNT1 A 0 A_JumpIf(CallACS("DRPGCheck"), "DoorpegAuraFun")
MissileAuraCheckDone:
TNT1 A 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), "Duke2LaserCheck") // I'm Back Mode
ZHPI E 10 A_FaceTarget
TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "DoorpegShadowAuraAttack")
TNT1 A 0 A_JumpIfInventory ("RLFormerHumanPistolShotCounter", 6, "RetreatReload")
TNT1 A 0 A_GiveInventory ("RLFormerHumanPistolShotCounter", 1)
TNT1 A 0 A_PlaySound("rlmonsters/pistol", CHAN_WEAPON, 1, 0, 0.7)
TNT1 A 0 A_PlaySound("rlmonsters/pistol", CHAN_ITEM, 0.05, 0, 0.20)
TNT1 A 0 A_JumpIfInventory ("DRPGDRLASummonedMonsterToken", 1, "SummonMissile")
ZHPI F 4 Bright A_CustomBulletAttack (22.5, 0, 1, random(1,5) * 3, "RLEnemyBulletPuff", 0, CBAF_NORANDOM)
ZHPI E 12
Goto See
SummonMissile:
ZHPI F 4 Bright A_CustomBulletAttack (4, 0, 1, random(1,3) * 6, "RLEnemySummonBulletPuff", 0, CBAF_NORANDOM)
ZHPI E 12
Goto See
Reload:
ZHPI EE 4 A_FaceTarget
TNT1 A 0 A_PlaySound("rlmonsters/pistolreloadout", 7)
ZHPI EE 4 A_FaceTarget
TNT1 A 0 A_ChangeFlag ("FRIGHTENED", 0)
TNT1 A 0 A_PlaySound("rlmonsters/pistolreloadin", 7)
TNT1 A 0 A_TakeInventory ("RLFormerHumanPistolShotCounter", 6)
ZHPI EEEE 4 A_FaceTarget
ZHPI E 3 A_FaceTarget
TNT1 A 0 A_PlaySound("rlmonsters/pistolcock", 7)
ZHPI E 6 A_FaceTarget
Goto See
Pain:
ZHPI G 3
ZHPI G 3 A_Pain
Goto See
Death:
ZHPI H 5
ZHRF I 5 A_Scream
ZHRF J 5 A_NoBlocking
ZHRF K 5
TNT1 A 0 A_SpawnItem ("RLBodyThud", 0, 0, 0, 0)
ZHRF L -1
Stop
XDeath.MeleeKick:
XDeath.Melee:
TNT1 A 0 A_GiveToTarget ("RLBerserkerBloodlustBonusCheck", 1)
Goto XDeath
XDeath:
TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
ZHPI M 5
ZHRF N 5 A_XScream
ZHRF O 5 A_NoBlocking
ZHRF PQ 5
TNT1 A 0 A_SpawnItem ("RLGibThud", 0, 0, 0, 0)
ZHRF RST 5
ZHRF U -1
Stop
Raise:
TNT1 A 0 A_ChangeFlag ("NOBLOCKMAP", 0)
TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
ZHRF L 2
TNT1 A 0 A_JumpIfInventory ("RLNightmareResurrectionToken", 1, "NightmareRaise")
TNT1 A 0 A_JumpIfInventory ("RLCyberneticResurrectionToken", 1, "CyberneticRaise")
TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
RaiseContinue:
TNT1 A 0 A_JumpIfInventory ("RLCyberneticResurrectionToken", 1, 2)
TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
TNT1 A 0 A_ChangeFlag ("FRIGHTENED", 0)
TNT1 A 0 A_TakeInventory ("RLFormerHumanPistolShotCounter", 6)
ZHRF K 5
ZHRF J 5
ZHRF I 5
ZHPI H 5
Goto See
NightmareRaise:
TNT1 A 0 A_SpawnItemEx ("RLNightmareResurrectionFire", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
TNT1 A 0 A_ChangeFlag ("ALWAYSFAST", 1)
Goto RaiseContinue
CyberneticRaise:
TNT1 A 0 A_SpawnItemEx ("RLCyberneticResurrectionSparks", 0, 0, 20, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
TNT1 A 0 A_ChangeFlag ("SEEINVISIBLE", 1)
TNT1 A 0 A_ChangeFlag ("MISSILEMORE", 1)
Goto RaiseContinue
Crush:
TNT1 A 1 A_SpawnItem("RLCrushedSmall",0,0,0,0)
Stop
//==============================================================================
// -- Extra Stuff --
//==============================================================================
Death.Barrel:
TNT1 A 0 A_CheckRange (1500, "SimpleXDeath")
Goto Death
XDeath.Barrel:
TNT1 A 0 A_CheckRange (1500, "SimpleXDeath")
Goto XDeath
SimpleXDeath:
ZHPI M 5
ZHRF N 5 A_XScream
ZHRF O 5 A_NoBlocking
ZHRF PQ 5
ZHRF RST 5
ZHRF U -1
Stop
Death.Massacre:
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_Stop
TNT1 A 0 A_JumpIfInventory ("DRPGDRLASummonedMonsterToken", 1, 3)
TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
ZHRF L -1
Stop
TNT1 A 0 A_SpawnItemEx ("TeleportFog", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
Stop
Duke2LaserCheck:
TNT1 A 0 A_JumpIf(CallACS("DRLA_specialstarts") == 2, 1)
Goto Missile+2
Duke2LaserAttack:
ZHPI E 10 A_FaceTarget
ZHPI F 4 Bright A_CustomMissile ("RLDuke2EnemyBasicShot", 42, 2, frandom(-3,3), CMF_OFFSETPITCH, frandom(-3,3))
ZHPI E 12
Goto See
Pain.RigelBlast:
TNT1 A 0 A_PlaySound("weapons/dn2gunhit", CHAN_BODY)
D2F1 A 2 Bright
Goto See
Pain.NeuralStun:
D2F1 A 2 Bright
Goto See
Death.NeuralStun:
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_SpawnItemEx ("RLNeuralStunStars", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
TNT1 A 0 A_Stop
TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
CKD1 A -1
Stop
Death.RigelBlast:
TNT1 A 0 A_PlaySound("weapons/dn2gunexplosion", CHAN_BODY)
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_SpawnItemEx ("RLDuke2BasicEnemyExplosions", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
TNT1 A 35
Stop
XDeath.RigelBlast:
TNT1 A 0 A_JumpIf(CallACS("DRLA_Gibs"), 1)
Goto Death.RigelBlast
TNT1 A 0 A_PlaySound("weapons/dn2gungib", CHAN_BODY)
TNT1 A 0 A_NoBlocking
TNT1 A 0 A_SpawnItemEx ("RLDuke2BasicEnemyExplosions", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx ("RLDuke2RedGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION)
TNT1 A 35
Stop
//==============================================================================
// -- DRPG Compatibility Stuff --
//==============================================================================
DoorpegAuraFun:
TNT1 A 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
Goto MissileAuraCheckDone
//==============================================================================
// Check for Shadow Aura
DoorpegShadowAuraAttack:
TNT1 A 0 A_JumpIfInventory ("RLFormerHumanPistolShotCounter", 4, "Reload")
TNT1 A 0 A_GiveInventory ("RLFormerHumanPistolShotCounter", 1)
TNT1 A 0 A_PlaySound("rlmonsters/hppistol", CHAN_WEAPON, 1, 0, 0.6)
TNT1 A 0 A_PlaySound("rlmonsters/hppistol", CHAN_ITEM, 0.05, 0, 0.20)
ZHPI F 4 Bright A_CustomBulletAttack (11, 0, 1, random(1,7) * 5, "RLEnemyBulletPuff", 0, CBAF_NORANDOM)
ZHPI E 6
TNT1 A 0 A_MonsterRefire (0, "See")
Goto DoorpegShadowAuraAttack
}
}
Actor RLFormerHumanPistolShotCounter : Inventory
{
inventory.maxamount 6
}
ACTOR RLDRPGSummonedFormerHuman : RLFormerHumanPistol
{
-COUNTKILL
+AVOIDMELEE
+NOBLOCKMONST
+NOTELESTOMP
+NOFEAR
+SEEINVISIBLE
+DONTDRAIN
+ALWAYSFAST
+QUICKTORETALIATE
+MISSILEMORE
+THRUSPECIES
Species "Player"
States
{
Spawn:
TNT1 A 0 NoDelay ACS_NamedExecuteAlways("MonsterInit", 0)
TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
TNT1 A 0 A_GiveInventory ("DRPGDRLASummonedMonsterToken", 1)
Goto Super::Spawn
See:
TNT1 A 0 ACS_NamedExecuteAlways("MonsterInit", 0)
TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
TNT1 A 0 A_GiveInventory ("DRPGDRLASummonedMonsterToken", 1)
Goto Super::See
Raise:
Stop
}
}
ACTOR RLCCFormerHumanPistol : RLFormerHumanPistol
{
+TOUCHY
States
{
See:
ZHPI AABBCCDD 4
Loop
Missile:
ZHPI E 10
ZHPI F 4 Bright
ZHPI E 12
Goto See
Death:
ZHPI H 5
ZHRF I 5 A_Scream
ZHRF J 5 A_NoBlocking
ZHRF K 5
ZHRF L -1
Stop
}
}