
actor LizardGunner : ZBaseActor 19127
{
  obituary "%o was perforated by an Enforcer."
  health 120
  radius 20
  height 50
  mass 1000
  speed 7
  painchance 85
  painchance "FireBurning", 200
  Painchance "Shrinker", 256
  painchance "MightyBoot", 128
  painchance "BootStun", 256
  painchance "MicrowaveBlast", 256
  seesound "lizard/sight"
  attacksound "chaingun/shoot"
  painsound "lizard/pain"
  deathsound "lizard/death"
  activesound "lizard/active"
  dropitem "ChaingunAmmo" 128 50
  dropitem "Chaingun Cannon" 32
  dropitem "NVGPickup" 4
  MONSTER
  +FLOORCLIP
  scale 0.7
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  Species "Enforcers"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  states
  {
  Spawn:
    ENE3 A 0
    "####" "#" 0 Thing_ChangeTID(0,1000)
    ENE3 AA 10 A_Look
    loop
  See:
    "####" "#" 0 A_SetHeightOffset(0)
    ENE3 A 1
    "####" "#" 0 A_Gravity
    ENE3 AABBCCDD 3 A_ChaseD3D
    loop
  Missile:
    "####" "#" 0 A_Jump(48,"Spit","Lunge","Dump")
    "####" "#" 0 A_SetHeightOffset(-4)
    ENE3 Q 10 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    "####" "#" 0 A_PlaySound("chaingun/shoot", 1)
    ENE3 R 2 bright A_CustomMissile("EnemyProjectile", 30, 15, random[RIDMONSTERAT](-6, 6), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("50CaseSpawnLeft2", 26, 0, -60, 2, random[RIDFX](20, 55))
    ENE3 Q 3 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    "####" "#" 0 A_PlaySound("chaingun/shoot", 1)
    ENE3 R 2 bright A_CustomMissile("EnemyProjectile", 30, 15, random[RIDMONSTERAT](-6, 6), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("50CaseSpawnLeft2", 26, 0, -60, 2, random[RIDFX](20, 55))
    ENE3 Q 3 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    "####" "#" 0 A_PlaySound("chaingun/shoot", 1)
    ENE3 R 2 bright A_CustomMissile("EnemyProjectile", 30, 15, random[RIDMONSTERAT](-6, 6), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("50CaseSpawnLeft2", 26, 0, -60, 2, random[RIDFX](20, 55))
    ENE3 Q 3 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    "####" "#" 0 A_PlaySound("chaingun/shoot", 1)
    ENE3 R 2 bright A_CustomMissile("EnemyProjectile", 30, 15, random[RIDMONSTERAT](-6, 6), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("50CaseSpawnLeft2", 26, 0, -60, 2, random[RIDFX](20, 55))
    ENE3 Q 3 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    "####" "#" 0 A_PlaySound("chaingun/shoot", 1)
    ENE3 R 2 bright A_CustomMissile("EnemyProjectile", 30, 15, random[RIDMONSTERAT](-6, 6), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("50CaseSpawnLeft2", 26, 0, -60, 2, random[RIDFX](20, 55))
    ENE3 Q 3 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    "####" "#" 0 A_PlaySound("chaingun/shoot", 1)
    ENE3 R 2 bright A_CustomMissile("EnemyProjectile", 30, 15, random[RIDMONSTERAT](-6, 6), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("50CaseSpawnLeft2", 26, 0, -60, 2, random[RIDFX](20, 55))
    ENE3 Q 3 A_CPosRefire
    "####" "#" 0 A_Jump(128,"See")
    goto Missile+3
  Spit:
    "####" "#" 0 A_SetHeightOffset(-15)
    "####" "#" 0 A_PlayVoiceSoundPitch("","lizard/active",4)
    ENE3 EEEEFFGG 5 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    "####" "#" 0 A_CustomMissile("LizardSpit",32,0,0)
    goto See
  Lunge: 
    "####" "#" 0 A_JumpIfCloser(200,"Missile")
    "####" "#" 0 A_PlayVoiceSoundPitch("","lizard/active",4)
    "####" "#" 0 A_SetHeightOffset(-15)
    ENE3 E 7 A_FaceTarget
    "####" "#" 0 A_SetHeightOffset(20)
    "####" "#" 0 A_SetGravity(0.5)
    ENE3 H 3 ThrustThingZ(0,30,0,0)
    "####" "#" 0 A_SetHeightOffset(5)
    ENE3 I 8 ThrustThing(angle*256/360, 10, 0, 0)
    "####" "#" 0 A_SetHeightOffset(9)
    ENE3 J 12
    "####" "#" 0 A_SetHeightOffset(-15)
    ENE3 E 7 A_Gravity
    goto Missile+1
  Dump:
    "####" "#" 0 A_SetHeightOffset(-15)
    "####" "#" 0 A_PlayVoiceSoundPitch("","lizard/active",4)
    ENE3 EEEEFFGG 5 A_FaceTarget
    "####" "#" 0 A_SpawnItem("LizardDump",4)
    goto See
  Pain.BootStun:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_Jump(128,"Pain2BootStun")
    ENE3 K 9 A_PlayVoiceSoundPitch("Pain")
    ENE3 K 9
    goto See
  Pain2BootStun:
    ENE3 S 9 A_PlayVoiceSoundPitch("Pain")
    ENE3 S 9
    goto See
  Pain:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_Jump(128,"Pain2")
    ENE3 K 3
    ENE3 K 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain2:
    ENE3 S 3
    ENE3 S 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain.MicrowaveBlast:
    "####" "#" 0 A_SetHeightOffset(0)
    ENE3 K 1
    "####" "#" 0 A_CheckThump("Pain.BootStun")
    loop
  Death:
    ENE3 K 5 A_PlayVoiceSoundPitch("Death")
    ENE3 L 5
    ENE3 M 5 A_NoBlocking
    ENE3 NO 5
    ENE3 P 1 A_SpawnItemEx("DeadLizardGunner", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL|SXF_SETMASTER)
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    TNT1 A -1
    stop
  Pain.Shrinker:
    "####" "#" 0 A_PlaySound("shrinker/shrink")
    "####" "#" 0 A_InvulnerablePlus(1)
    ENE3 K 5 A_PlayVoiceSoundPitch("Pain")
    "####" "#" 0 A_CustomMissile("ShrinkEffect",8,0,0)
  Shrink:
    ENE3 K 2 {A_SetScale(ScaleX - 0.04, ScaleY - 0.04); A_SpawnItemEx("ShrunkBlur",0,0,0,0,0,0,angle,SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERSCALE|SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION|SXF_ABSOLUTEANGLE);}
    "####" "#" 0 A_JumpIf(ScaleX > 0.2 && ScaleY > 0.2, "Shrink")
    "####" "#" 0 A_Shrink
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    stop
  XDeath:
  Death.BossStomp:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.PlasmaGib:
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs1NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.Explosion:
  Death.RocketExplosion:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.ExplosiveShotgun:
  Death.ShellExplosion:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanHead1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Gib1:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib2:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB2 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB2 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib3:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB3 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB3 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib4:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB4 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB4 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    Stop
  Gib5:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB5 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 35 A_Gravity
    GIB5 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_FadeOut(0.1)
    stop
  Wound.Expander:
   "####" "#" 0 A_Die("Expander")
  Death.Expander:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_PlaySound("expander/expand")
    "####" "#" 0 {A_UnsetShootable; A_UnsetSolid;}
  Expand:
    ENE3 K 1 A_SetScale(ScaleX + 0.01, ScaleY + 0.01)
    "####" "#" 0 A_JumpIf(ScaleX < 1.15 && ScaleY < 1.15, "Expand")
    ENE3 KKKKK 1
    "####" "#" 0 A_SetScale(0.7, 0.7)
    "####" "#" 0 A_PlayVoiceSoundPitch("Death","",4)
    "####" "#" 0 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    goto Death.Explosion
  Wound.Ice:
    "####" "#" 0 A_Freeze("See")
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    TNT1 A 1
    stop
  Death.MonsterSlimer:
    ENE3 K 10 {A_PlayVoiceSoundPitch("Death"); A_SpawnItemEx("SlimerEatingMonster");}
    ENE3 KK 10
    stop
  Death.Headshot:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("LizmanHead1",TRUE, 1.0, 1.0)
    3NE3 K 15 A_NoBlocking
    3NE3 L 10
    3NE3 M 5
    3NE3 NO 5
    3NE3 P 1 A_SpawnItemEx("DeadLizardGunnerBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    stop
  Possessed:
    "####" "#" 0 A_ChangeFlag("NOPAIN", 1)
    ENE3 P 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    ENE3 O 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    ENE3 N 7 A_AdjustTics(1.0,1.0)
    ENE3 M 7 A_AdjustTics(1.0,1.0)
    ENE3 L 7 A_AdjustTics(1.0,1.0)
    ENE3 K 7 A_AdjustTics(0,1.0)
    "####" "#" 0 A_ChangeFlag("NOPAIN", 0)
    goto See
  }
}

actor LizardSpit : ZMissile
{
  Game Doom
  Radius 13
  Height 8
  Speed 25
  Damage (20)
  Projectile
  scale 0.3
  damagetype "LizardSpit"
  +THRUGHOST
  States
  {
  Spawn:
    EN3X A 0 bright NoDelay A_SpawnItemEx("LizardSpitTrail",-20,0,0,0,0,0,0,128,0)
    "####" "#" 0 bright A_SpawnItemEx("LizardSpitTrail",-15,0,0,0,0,0,0,128,0)
    "####" "#" 0 bright A_SpawnItemEx("LizardSpitTrail",-10,0,0,0,0,0,0,128,0)
    EN3X A 1 bright A_SpawnItemEx("LizardSpitTrail",-5,0,0,0,0,0,0,128,0)
    loop
  Death:
    TNT1 A 1
    stop
  }
}

actor LizardSpitTrail : ZMissile
{
  Game Doom
  Radius 0
  Height 0
  Speed 0
  Damage 0
  Projectile
  scale 0.3
  +THRUGHOST
  States
  {
  Spawn:
    EN3X A 2 bright
    stop
  }
}

ACTOR LizardDump : ZCustomInventory
{
  Inventory.PickupMessage "Shit happens."
  Inventory.MaxAmount 100
  Inventory.Amount 1
  +INVENTORY.AUTOACTIVATE 
  +INVENTORY.QUIET
  scale 0.35
  States
  {
  Spawn:
    EN3X B -1
    Stop
  Pickup:
    "####" "#" 0 A_D3DPlayDukeSound("duke/shithappens")
    TNT1 A 1
    stop
  Use:
    "####" "#" 0
    TNT1 A 1
    Stop
  }
}

actor DeadLizardGunner : DeadDukeNukemP 19128
{
  Radius 20
  Height 12
  scale 0.7
  States
  {
  Spawn:
    ENE3 P -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadLizardGunner", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    ENE3 P 5 A_GenericFreezeDeath
    ENE3 P 1 A_FreezeDeathChunks
    wait
  }
}

actor DeadLizardGunnerBehead : DeadDukeNukem
{
  Radius 20
  Height 12
  scale 0.7
  States
  {
  Spawn:
    3NE3 P -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadLizardGunnerBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    3NE3 P 5 A_GenericFreezeDeath
    3NE3 P 1 A_FreezeDeathChunks
    wait
  }
}