
actor Psychobrain : Octobrain 19142
{
  +MISSILEMORE
  +MISSILEEVENMORE
  obituary "%o had his brain cooked by the Psychobrain."
  hitobituary "%o had his brain cooked by the Psychobrain."
  states
  {
  Spawn:
    PSYC A 0
    "####" "#" 0 ThrustThingZ(0, 50, 0, 1)
    "####" "#" 1
    "####" "#" 0 A_Stop
  Idle:
    "####" "#" 0 Thing_ChangeTID(0,1000)
    PSYC A 10 A_Look
    Loop
  See:
    "####" "#" 0 A_Jump(192,2)
    "####" "#" 0 A_Stop
    PSYC A 1
    "####" "#" 0
    PSYC ABCB 3 A_Chase
    loop
  Melee:
    "####" "#" 0 A_PlaySound("octobrain/melee")
    PSYC C 6 A_FaceTarget
    PSYC D 3 A_FaceTarget
    PSYC B 6 A_CustomMeleeAttack(random[RIDMONSTERAT](10,20),"alienz/miss","alienz/miss")
    PSYC A 6 A_FaceTarget
    goto See
  Missile:
    "####" "#" 0 A_PlayWeaponSound("octobrain/attack")
    PSYC D 10 A_FaceTarget
    PSYC E 10 bright A_CustomMissile("PsychobrainAttack",32,0,0)	
    PSYC D 10 A_FaceTarget
    goto See
  Pain.BootStun:
    "####" "#" 0 A_Jump(128,"Pain2BootStun")
    PSYC F 9 A_PlayVoiceSoundPitch("Pain")
    PSYC F 9
    goto See
  Pain2BootStun:
    PSYC L 9 A_PlayVoiceSoundPitch("Pain")
    PSYC L 9
    goto See
  Pain:
    "####" "#" 0 A_Jump(128,"Pain2")
    PSYC F 3
    PSYC F 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain2:
    PSYC L 3
    PSYC L 3 A_PlayVoiceSoundPitch("Pain")
    goto See
  Pain.MicrowaveBlast:
    PSYC F 1
    "####" "#" 0 A_CheckThump("Pain.BootStun")
    loop
  Death:
    PSYC F 1 A_ChangeFlag("FLOATBOB",0)
    "####" "#" 0 A_StopSound(2)
    PSYC F 4 A_PlayVoiceSoundPitch("Death","",4)
    PSYC G 5 A_NoBlocking
    PSYC H -1
    stop
  Crash:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking(false)
    PSYC HIJ 5 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    PSYC K 1 A_SpawnItemEx("DeadPsychobrain", 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_NoGravity
    "####" "#" 0 A_InvulnerablePlus(1)
    PSYC F 5 A_PlayVoiceSoundPitch("Pain")
    "####" "#" 0 A_CustomMissile("ShrinkEffect",8,0,0)
  Shrink:
    PSYC F 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("A","B","C","B")
    "####" "#" 0 A_Remove(AAPTR_DEFAULT)
    stop
  XDeath:
  Death.BossStomp:
  Crash.BossStomp:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_Gravity
    "####" "#" 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("PsychobrainLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.PlasmaGib:
  Crash.PlasmaGib:
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_Gravity
    "####" "#" 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("PsychobrainLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Crash.Explosion:
  Crash.RocketExplosion:
  Death.Explosion:
  Death.RocketExplosion:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_Gravity
    "####" "#" 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("PsychobrainLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5")
    TNT1 A 1
    Stop
  Death.ExplosiveShotgun:
  Death.ShellExplosion:
  Crash.ExplosiveShotgun:
  Crash.ShellExplosion:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_Gravity
    "####" "#" 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("PsychobrainLeg1",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 E 1 A_SpawnItemEx("Gib1DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib2:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB2 E 1 A_SpawnItemEx("Gib2DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib3:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB3 E 1 A_SpawnItemEx("Gib3DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib4:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB4 E 1 A_SpawnItemEx("Gib4DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib5:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB5 E 1 A_SpawnItemEx("Gib5DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Wound.Expander:
   "####" "#" 0 A_Die("Expander")
  Death.Expander:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_PlaySound("expander/expand")
    "####" "#" 0 A_NoGravity
    "####" "#" 0 {A_UnsetShootable; A_UnsetSolid;}
  Expand:
    PSYC F 1 A_SetScale(ScaleX + 0.01, ScaleY + 0.01)
    "####" "#" 0 A_JumpIf(ScaleX < 1.15 && ScaleY < 1.15, "Expand")
    PSYC FFFFF 1
    "####" "#" 0 A_SetScale(0.75, 0.75)
    "####" "#" 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_ChangeFlag("FLOATBOB",0)
    "####" "#" 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("PsychobrainLeg1",TRUE, 1.0, 1.0)
    3SYC F 5 A_NoBlocking
    3SYC G 5
    3SYC H -1
    stop
  Crash.Headshot:
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking(false)
    3SYC HIJ 5 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    3SYC K 1 A_SpawnItemEx("DeadPsychoBrainBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    stop
  Possessed:
    "####" "#" 0 A_ChangeFlag("NOPAIN", 1)
    PSYC K 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    PSYC J 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    PSYC IH 7 A_AdjustTics(1.0,1.0)
    PSYC G 7 {ThrustThingZ(0,5,0,1); A_AdjustTics(1.0,1.0);}
    PSYC F 7 A_AdjustTics(0,1.0)
    "####" "#" 0 A_Stop
    "####" "#" 0 A_ChangeFlag("NOPAIN", 0)
    goto See
  }
}

actor PsychobrainAttack : OctobrainAttack
{
  +SEEKERMISSILE
  States
  {
  Spawn:
    EN5X A 0 NoDelay A_JumpIfInventory("OctobrainAttackRange",4,"LastAttack")
    "####" "#" 0 A_GiveInventory("OctobrainAttackRange",1)
    EN5X ABCDE 1 Bright A_SpawnItem("WhiteFlare1",0,0)
    EN5X FGHI 1 Bright {A_SpawnItem("WhiteFlare1",0,0); A_SeekerMissile (5,5);}
    EN5X JKLMNO 1 Bright A_SpawnItem("WhiteFlare1",0,0)
    EN5X PQRST 1 Bright {A_SpawnItem("WhiteFlare1",0,0); A_SeekerMissile (5,5);}
    loop
  }
}

actor DeadPsychobrain : DeadDukeNukemP 19143
{
  Radius 31
  Height 20
  scale 0.75
  States
  {
  Spawn:
    PSYC K -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadPsychobrain", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    PSYC K 5 A_GenericFreezeDeath
    PSYC K 1 A_FreezeDeathChunks
    wait
  }
}

actor DeadPsychoBrainBehead : DeadDukeNukem
{
  Radius 31
  Height 35
  scale 0.75
  States
  {
  Spawn:
    3SYC K -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadPsychoBrainBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    3SYC K 5 A_GenericFreezeDeath
    3SYC K 1 A_FreezeDeathChunks
    wait
  }
}