
actor KingCobra : ZBaseActor 19112
{
  obituary "%o was poisoned by the King Cobra."
  health 240
  radius 16
  height 70
  mass 1000
  speed 12
  painchance 85
  painchance "FireBurning", 200
  painchance "MightyBoot", 128
  painchance "BootStun", 256
  painchance "MicrowaveBlast", 256
  seesound "lizard/sight"
  painsound "lizard/pain"
  deathsound "lizard/death"
  activesound "lizard/active"
  MONSTER
  +FLOORCLIP
  scale 1.0
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  damagefactor "Shrinker", 0.0
  Damage (40)
  meleethreshold 64
  meleerange 56
  Species "Cobras"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  states
  {
  Spawn:
    KCOB A 0
    "####" "#" 0 Thing_ChangeTID(0,1000)
    KCOB AA 10 A_Look
    loop
  See:
    "####" "#" 0 A_SetHeightOffset(0)
    KCOB A 1
    "####" "#" 0 A_Gravity
    KCOB AABBCCDD 3 A_ChaseD3D
    loop
  Melee:
    KCOB EE 7 A_FaceTarget
    KCOB F 7 A_CustomMeleeAttack(random[RIDMONSTERAT](20,40),"lizard/spit","lizard/spit")
    goto See
  Missile:
    "####" "#" 0 A_Jump(48,"Lunge")
    "####" "#" 0 A_JumpIfCloser(300,"Missile2")
    KCOB E 10 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    KCOB F 2 bright A_CustomMissile("AlienBullet", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB E 3 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    KCOB F 2 bright A_CustomMissile("AlienBullet", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB E 3 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    KCOB F 2 bright A_CustomMissile("AlienBullet", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB E 3 A_CPosRefire
    "####" "#" 0 A_Jump(64,"See")
    goto Missile+3
  Missile2:
    KCOB E 10 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    "####" "#" 0 A_Jump(64,2)
    "####" "#" 0 A_CustomMissile("CobraSpit", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB F 2 bright A_CustomMissile("AlienBullet", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB E 3 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    "####" "#" 0 A_Jump(64,2)
    "####" "#" 0 A_CustomMissile("CobraSpit", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB F 2 bright A_CustomMissile("AlienBullet", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB E 3 A_FaceTarget
    "####" "#" 0 A_PlaySound("lizard/spit")
    "####" "#" 0 A_Jump(64,2)
    "####" "#" 0 A_CustomMissile("CobraSpit", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB F 2 bright A_CustomMissile("AlienBullet", 50, 0, random[RIDMONSTERAT](-12, 12), CMF_OFFSETPITCH, random[RIDMONSTERAT](-3, 3))
    KCOB E 3 A_CPosRefire
    "####" "#" 0 A_Jump(64,"See")
    "####" "#" 0 A_JumpIfCloser(300,2)
    "####" "#" 0 A_Jump(256,"See")
    "####" "#" 0
    goto Missile2+1
  Lunge: 
    "####" "#" 0 A_JumpIfCloser(200,"Missile")
    "####" "#" 0 A_PlayVoiceSoundPitch("","lizard/active",4)
    KCOB E 7 A_FaceTarget
    "####" "#" 0 A_SetHeightOffset(-16)
    "####" "#" 0 A_SetGravity(0.5)
    KCOB G 3 ThrustThingZ(0,30,0,0)
    KCOB G 8 ThrustThing(angle*256/360, 10, 0, 0)
    KCOB G 12
    "####" "#" 0 A_SetHeightOffset(0)
    KCOB E 7 A_Gravity
    goto Missile+1
  Pain.BootStun:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_Jump(128,"Pain2BootStun")
    KCOB M 9 A_PlayVoiceSoundPitch("Pain")
    KCOB M 9
    goto See
  Pain2BootStun:
    KCOB Q 9 A_PlayVoiceSoundPitch("Pain")
    KCOB Q 9
    goto See
  Pain:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_Jump(128,"Pain2")
    KCOB M 3
    KCOB M 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain2:
    KCOB Q 3
    KCOB Q 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain.MicrowaveBlast:
    "####" "#" 0 A_SetHeightOffset(0)
    KCOB M 1
    "####" "#" 0 A_CheckThump("Pain.BootStun")
    loop
  Death:
    KCOB K 5 A_PlayVoiceSoundPitch("Death")
    KCOB L 5
    KCOB M 5 A_NoBlocking
    KCOB NO 5
    KCOB P 1 A_SpawnItemEx("DeadKingCobra", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL|SXF_SETMASTER)
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    TNT1 A -1
    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_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_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_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_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:
    KCOB M 1 A_SetScale(ScaleX + 0.01, ScaleY + 0.01)
    "####" "#" 0 A_JumpIf(ScaleX < 1.15 && ScaleY < 1.15, "Expand")
    KCOB MMMMM 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.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)
    3COB K 15 A_NoBlocking
    3COB L 10
    3COB M 5
    3COB NO 5
    3COB P 1 A_SpawnItemEx("DeadKingCobraBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    stop
  Possessed:
    "####" "#" 0 A_ChangeFlag("NOPAIN", 1)
    KCOB P 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    KCOB N 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    KCOB O 7 A_AdjustTics(1.0,1.0)
    KCOB M 7 A_AdjustTics(1.0,1.0)
    KCOB L 7 A_AdjustTics(1.0,1.0)
    KCOB K 7 A_AdjustTics(0,1.0)
    "####" "#" 0 A_ChangeFlag("NOPAIN", 0)
    goto See
  }
}

actor CobraSpit : LizardSpit
{
  Speed 15
  -NOGRAVITY
  Gravity 0.1
}

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

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