ACTOR corrupt : GenericBoss
{
  Health 1
  Painchance 120
  Speed 5
  Renderstyle None
  Mass 0x7FFFFFFF
  +NOTIMEFREEZE
  +NOTELEFRAG
  +NODAMAGE
  +NOCLIP
  +BRIGHT
  +FORCERADIUSDMG
  +QUICKTORETALIATE
  -COUNTKILL
  +NOTARGET
  +NOINFIGHTING
  -SHOOTABLE
  SeeSound " "
  PainSound "Corrupt/Pain"
  Tag "corrupt"
  var int user_script;
  var int user_appear;
  var int user_runloop;
  var int user_attacktimer;
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_script == 1,3)
    TNT1 A 0 ACS_NamedExecuteAlways("CorruptScript")
	TNT1 A 0 A_SetUserVar("user_script",1)
	TNT1 A 0 A_JumpIf(user_appear == 1,"SpawnAppear")
    TNT1 A 1 A_Look
	Loop
  SpawnAppear:
	TNT1 A 0 A_PlaySound("Corrupt/NoiseActive",1,1.0,1)
	TNT1 A 0 A_SpawnItemEx("CorruptFlame",0,0,32)
	CORP A 1 Light("CorruptLight") A_Look
	Loop
  See:
	TNT1 A 0 A_JumpIf(user_appear == 1,"SeeAppear")
	TNT1 A 0 A_UnsetShootable
	TNT1 A 1 A_Chase("","",CHF_RESURRECT)
	Loop
  SeeAppear:
	TNT1 A 0 A_ChangeFlag("FRIGHTENED",0)
	TNT1 A 0 A_PlaySound("Corrupt/NoiseActive",1,1.0,1)
	TNT1 A 0 A_SetUserVar("user_attacktimer",user_attacktimer+1)
	TNT1 A 0 A_SpawnItemEx("CorruptFlame",0,0,32)
	TNT1 A 1 Light("CorruptLight") A_Chase("","Missile",CHF_RESURRECT)
	TNT1 A 0 A_Jump(12,"Rush")
	Loop
  Rush:
	TNT1 A 0 A_SetUserVar("user_attacktimer",user_attacktimer+1)
	TNT1 AAAAA 0 A_Chase("","")
	TNT1 A 1 Light("CorruptLight") A_SpawnItemEx("CorruptFlame",0,0,32)
	TNT1 A 0 A_JumpIfTargetInLOS("SeeAppear")
	Loop
  Missile:
	TNT1 A 0 A_JumpIf(user_attacktimer < 300,"SeeAppear")	
	TNT1 A 0 A_JumpIfCloser(600,"Attack")
	Goto SeeAppear
  Attack:
	TNT1 A 0 A_SetUserVar("user_attacktimer",0)
	TNT1 A 0 A_PlaySound("Corrupt/NoiseChase",1,1.0,1)
	TNT1 A 0 A_SpawnItemEx("RedCorruptFlame",0,0,32)
	CORP A 1 Light("RedCorruptLight") A_SkullAttack(30)
	TNT1 A 0 A_JumpIfCloser(100,"Attack2")
	Goto Attack+2
  Attack2:
	TNT1 A 0 A_RadiusGive("CorruptFuckery",120,RGF_PLAYERS|RGF_CORPSES)
	Goto RunAway
  Pain:
	TNT1 A 0 A_Pain
	CORP AAAAA 1 Light("RedCorruptLight") A_SpawnItemEx("RedCorruptFlame",0,0,32)
	Goto RunAway
  RunAway:
	TNT1 A 0 A_SetUserVar("user_runloop",0)
	TNT1 A 0 A_ChangeFlag("FRIGHTENED",1)
	TNT1 A 0 A_JumpIf(user_runloop >= 300,"SeeAppear")	 
	TNT1 A 0 A_SetUserVar("user_runloop",user_runloop+1)
	TNT1 AAAAA 0 A_Chase("","")
	TNT1 A 1 Light("RedCorruptLight") A_SpawnItemEx("RedCorruptFlame",0,0,32)
	Goto RunAway+2
  Heal:
	CORP A 1 Light("CorruptLight") A_SpawnItemEx("CorruptFlame",0,0,32)
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_SetUserVar("user_appear",1)
	TNT1 A 0 A_RadiusGive("CorruptResurrectFuckery",1000,RGF_MONSTERS)
	Goto See
  }
}

Actor CorruptResurrectFuckery : CustomInventory
{
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE
  States
  {
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_JumpIfInventory("IHaveAlreadyBeenCorruptedBitch",1,"Nope")
	TNT1 A 0 A_GiveInventory("IHaveAlreadyBeenCorruptedBitch")
	TNT1 A 0 ACS_NamedExecuteAlways("CorruptResurrect")
	Stop
  Nope:
	TNT1 A 0
	Stop
	}
}

Actor IHaveAlreadyBeenCorruptedBitch : Inventory { Inventory.MaxAmount 1 }

Actor CorruptFuckery : CustomInventory
{  
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE
  States
  {
  Pickup:
	TNT1 A 25 A_SetBlend("Black",1.0,80)
	TNT1 A 10
	TNT1 A 0 A_PlaySound("Corrupt/Hit",7,1.0,0,0.5)
	TNT1 A 0 Thing_Damage(0,random(200,400),0)
	TNT1 A 1
	Stop
	}
}

ACTOR CorruptFlame : AHellionSmoke
{
Scale 1.0
States
  {
  Spawn:
	FIW1 ABCDEFGHIJKL 2 Bright A_FadeOut(0.1,1)
	Stop
  }
}

ACTOR RedCorruptFlame : AHellionSmoke
{
Scale 1.0
States
  {
  Spawn:
	FIR1 ABCDEFGHIJKL 2 Bright A_FadeOut(0.1,1)
	Stop
  }
}