Actor Ghorul : Ghoul //sprites found in Grosshive
{
 Damage (18)
 seesound "Ghorul/Sight"
  painsound "Ghorul/pain"
  deathsound "Ghorul/death"
  activesound "Ghorul/active"
  DropItem "BossLifeEssence" 180 25
  DropItem "PartialKakuhou" 112 1
  DropItem "PartialKakuhou" 112 1
  DropItem "PartialKakuhou" 112 1
  DropItem "HEMArmorBonusMax18" 150
  Species "Ghoul"
  meleesound "monster/vulhit"
  Obituary "%o's brains were taken by a Ghorul."
 Health 565
  States
   {
    Spawn:
	 TNT1 A 0 A_GiveInventory("GHOUL",1)
	 Spawn.Real:
   Idle:
    KAKJ A 1
	 KAKJ A 1 A_Look
	 Loop
	Wander:
	 TNT1 A 0 A_Gravity
	 KAKJ AAAA 1 A_Look
	 KAKJ A 0 A_Wander
	 KAKJ BBBB 1 A_Look
	 KAKJ B 0 A_Wander
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 KAKJ CCCC 1 A_Look
	 KAKJ C 0 A_Wander
	 KAKJ DDDD 1 A_Look
	 KAKJ D 0 A_Wander
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 Loop
	See:
	 TNT1 A 0 A_Gravity
	 KAKJ A 1 A_Chase
	 TNT1 A 0 A_Gravity
	 KAKJ AA 1 A_Chase("","")
	 TNT1 A 0 A_Gravity
	 KAKJ B 1 A_Chase
	 TNT1 A 0 A_Gravity
	 KAKJ BB 1 A_Chase("","")
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	KAKJ C 1 A_Chase
	 KAKJ CC 1 A_Chase("","")
	 KAKJ D 1 A_Chase
	 KAKJ DD 1 A_Chase("","")
	 TNT1 A 0 A_Gravity
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 KAKJ A 0 A_Jump(60,"Dodge")
	 Loop
	Pain.Mine:
	 Dodge:
	 KAKJ A 0
	 KAKJ A 0 A_Jump(255,"Strafe","FastChase")
	 GoTo See
	Strafe:
	 KAKJ A 0 A_Jump(255,"Right","Left","Back","BackLeftRange","BackRightRange")
	 GoTo See
	Right:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+64,30,0,0)
	 KAKJ A 5
	 GoTo See
	Left:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+192,30,0,0)
	 KAKJ A 5
	 GoTo See
	Back:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+128,30,0,0)
	 KAKJ A 5
	 GoTo See
	BackLeftRange:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+random(133,187),30,0,0)
	 KAKJ A 5
	 GoTo See
	BackRightRange:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+random(69,123),30,0,0)
	 KAKJ A 5
	 GoTo See
	FastChase:
	 KAKJ A 1 A_FastChase
	 KAKJ a 0 A_FastChase
	 KAKJ A 1 A_FastChase
	 KAKJ a 0 A_FastChase
	 KAKJ B 1 A_FastChase
	 KAKJ B 0 A_FastChase
	 KAKJ B 1 A_FastChase
	 KAKJ B 0 A_FastChase
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 KAKJ C 1 A_FastChase
	 KAKJ C 0 A_FastChase
	 KAKJ C 1 A_FastChase
	 KAKJ C 0 A_FastChase
	 KAKJ D 1 A_FastChase
	 KAKJ D 0 A_FastChase
	 KAKJ D 1 A_FastChase
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 KAKJ D 0 A_FastChase
	 KAKJ A 1 A_FastChase
	 KAKJ A 0 A_FastChase
	 KAKJ A 1 A_FastChase
	 KAKJ A 0 A_FastChase
	 KAKJ B 1 A_FastChase
	 KAKJ B 0 A_FastChase
	 KAKJ B 1 A_FastChase
	 KAKJ B 0 A_FastChase
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 KAKJ C 1 A_FastChase
	 KAKJ C 0 A_FastChase
	 KAKJ C 1 A_FastChase
	 KAKJ C 0 A_FastChase
	 KAKJ D 1 A_FastChase
	 KAKJ D 0 A_FastChase
	 KAKJ D 1 A_FastChase
	 KAKJ D 0 A_FastChase
	  TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
	 KAKJ A 0 A_Jump(30,"See")
	 Loop
	Melee:
	 KAKJ EEEFFF 1 A_FaceTarget(60,27)
	 KAKJ G 3 A_CustomMissile("GhorulAttack",30,0,Angle,CMF_ABSOLUTEPITCH|CMF_ABSOLUTEANGLE ,pitch)
	 KAKJ GG 2 A_JumpIfInventory("SuccessfulBite",1,"Detect")
	 GoTo See
	 Detect:
	 KAKJ A 0
	 KAKJ A 0 A_ChangeFlag(Invulnerable,1)
	 KAKJ E 15 A_ChangeFlag(Invulnerable,0)
	 KAKJ E 1
	 KAKJ A 0 A_TakeInventory("SuccessfulBite",1)
	 End:
	 KAKJ A 0
	 KAKJ A 0 HealThing(20)
	 KAKJ A 0 A_JumpIfInventory("BiteCountShot",5,"KakuHou2")
	 KAKJ A 0 A_JumpIfTargetInLos("See",360)
	 KAKJ A 0 A_ClearTarget
	 Goto Wander
	 KakuHou:
	 KAKJ A 0
	 KAKJ FFFFGGGG 1 A_FaceTarget(60,27)
	 KAKJ G 0 A_CustomMissile("GhoulShot",38,0,Angle,CMF_ABSOLUTEPITCH|CMF_ABSOLUTEANGLE ,pitch)
	 KAKJ H 5
	 GoTo See
	 KakuHou2:
	 KAKJ A 0
	 KAKJ FFFFFGGGGG 1 A_FaceTarget(60,27)
	 KAKJ G 0 A_TakeInventory("BiteCountShot",5)
	 KAKJ GGGGG 0 A_CustomMissile("GhoulShot",38,0,Angle+random(-12,12),CMF_ABSOLUTEPITCH|CMF_ABSOLUTEANGLE ,pitch)
	 KAKJ H 9
	 GoTo See
	Missile:
	 KAKJ A 1 A_Jump(24,"Shards")
	 TNT1 A 0 A_Jump(32,"KakuHou")
	 KAKJ A 1 A_Jump(42,"Acid")
	 KAKJ A 1 A_Jump(100,"RightCharge","LeftCharge")
	Charge:
	 KAKJ A 0
	 KAKJ A 0 A_ClearTarget
	 KAKJ A 0 A_LookEx(0,0,0,0,0,"Charging")
	 KAKJ E 2
	 GoTo Wander
	Shards:
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,35,2,-8)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-35,2,-8)
	 KAKJ E 0 A_FaceTarget(62,26)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,55,2,0)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-55,2,0)
	 KAKJ E 0 A_FaceTarget(62,26)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,75,2,8)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-75,2,8)
	 KAKJ E 0 A_FaceTarget(62,26)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,95,2,16)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-95,2,16)
	 KAKJ E 0 A_FaceTarget(62,26)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,115,2,20)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-115,2,20)
	 KAKJ E 0 A_FaceTarget(62,26)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,125,2,28)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-125,2,28)
	 ShardLoop:
	 TNT1 A 0 A_FaceTarget(62,26)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,125,2,28)
	 KAKJ E 1 A_CustomMissile("GhoulWingFX",40,10,-125,2,28)
	 TNT1 AA 0 A_CustomMissile("KaguneShard2",random(48,70),random(45,78),angle+random(18,-18),
	 CMF_ABSOLUTEPITCH|CMF_ABSOLUTEANGLE ,pitch+random(18,-18))
	 TNT1 AA 0 A_CustomMissile("KaguneShard2",random(48,70),random(-45,-78),angle+random(18,-18),
	 CMF_ABSOLUTEPITCH|CMF_ABSOLUTEANGLE ,pitch+random(18,-18))
	 TNT1 A 0 A_JumpIfTargetInLOS("ShardLoop",170,JLOSF_CLOSENOJUMP,700,200)
	 TNT1 A 0 A_Jump(32,1)
	 Loop
	 KAKJ E 6
	 GoTo Acid
	Acid:
	 KAKJ EEEEEFFF 1 A_FaceTarget(62,26)
	 KAKJ G 1 Bright
	 KAKJ GG 1 Bright A_CustomMissile("GhoulGas",18,0,angle,CMF_ABSOLUTEPITCH|CMF_ABSOLUTEANGLE ,pitch)
     KAKJ G 2 Bright
	 KAKJ G 2
	 GoTo See
	Charging:
	 KAKJ EEEE 1 A_FaceTarget(60,27)
	 KAKJ E 1 A_JumpIfCloser(70,"Melee")
	 KAKJ E 0 ThrustThingZ(0,18,0,0)
	 TNT1 A 0 A_SkullAttack(20)
	 KAKJ E 1 A_Recoil(-17)
	 KAKJ EEEEE 1 A_JumpIfCloser(70,"Melee")
	 KAKJ E 2 Thing_Stop(0)
	 TNT1 A 0 A_Gravity
	 KAKJ H 5
	 GoTo See
	RightCharge:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+random(69,5),30,0,0)
	 KAKJ A 5
	 KAKJ A 1 Thing_Stop(0)
	 GoTo Charge
	LeftCharge:
	 KAKJ A 0
	 KAKJ A 0 ThrustThing(angle*256/360+random(133,251),30,0,0)
	 KAKJ A 5
	 KAKJ A 1 Thing_Stop(0)
	 GoTo Charge
	Pain:
	 KAKJ H 4 A_Pain
	 KAKJ H 0 A_Jump(90,"Dodge")
	 GoTO See
	 XDeath:
	Death: 
    TNT1 A 0 A_TakeInventory("Ghouls",1)
	 KAKJ I 3
	 KAKJ J 3 A_ScreamAndUnblock
	 KAKJ KLM 4
	 KAKJ N 0 A_SpawnItem("BodyCrash",0,0,0,0)
	 KAKJ N -1
	 Stop
	Raise:
	 TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	 KAKJ NMLKJIH 3
     TNT1 A 0 A_GiveInventory("Ghouls",1)
	 GoTo See
	Pain.Goreling:
	TNT1 A 0 A_JumpIfInventory("Ghouls",1,"See")
    TNT1 A 0 A_SpawnItemEx("BloodConsumeFX",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 A 0
	TNT1 A 1
	Stop
  }
}

Actor GhoulWingFX
{
 +NoGravity
 +ThruActors
 +BounceOnFloors
 +BounceOnWalls
 +BounceOnCeilings
 BounceCount 999
 BounceFactor 0.99
 WallBounceFactor 0.99
 Renderstyle Add
 Scale 0.2
 Projectile
 Height 1
 Radius 1
 Speed 20
  States
   {
    Spawn:
	 L5NR A 1 Bright
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-1,2),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-2,3),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas",0,0,random(1,0),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-1,1),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 L5NR A 1 Bright
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-1,2),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAA 0 A_SpawnItemEx("HadesFire",random(-4,4),random(-4,4),random(-2,3),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas",0,0,random(1,0),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-1,1),
	random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 TNT1 A 0 A_Recoil(1)
	 L5NR A 1 Bright
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-1,2),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-2,3),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas",0,0,random(1,0),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-1,1),
	random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 TNT1 A 0 A_Recoil(1)
	 L5NR A 1 Bright
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-1,2),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAA 0 A_SpawnItemEx("HadesFire",random(-2,2),random(-2,2),random(-2,3),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas",0,0,random(1,0),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAAAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-1,1),
	random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 TNT1 A 0 A_Recoil(1)
	 L5NR A 1 Bright 
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-2,4),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAA 0 A_SpawnItemEx("HadesFire",random(-2,2),random(-2,2),random(-2,3),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AAA 0 A_SpawnItemEx("KaguneGas",0,0,random(-1,3),
	 random(-1,1),random(-1,1),random(-1,3),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-1,3),
	random(-1,1),random(-1,1),random(-1,2),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 TNT1 A 0 A_Recoil(1)
	 L5NR A 1 Bright 
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-1,1),random(-1,1),random(-2,4),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAA 0 A_SpawnItemEx("HadesFire",random(-2,2),random(-4,2),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AAA 0 A_SpawnItemEx("KaguneGas",random(-1,1),random(-1,1),random(-1,3),
	 random(-1,1),random(-1,1),random(-1,2),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-1,3),
	random(-1,1),random(-1,1),random(-1,2),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 TNT1 A 0 A_Recoil(1)
	 L5NR A 1 Bright 
	 TNT1 A 0 A_SpawnItemEx("HadesFire",random(-2,2),random(-2,2),random(-3,5),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-3,3),random(-3,3),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AA 0 A_SpawnItemEx("KaguneGas",random(-1,1),random(-1,1),random(-3,7),
	 random(-1,1),random(-1,1),random(-2,2),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-2,5),
	random(-1,1),random(-1,1),random(-2,2),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 L5NR A 1 Bright
	 TNT1 A 0 A_SpawnItemEx("HadesFire",random(-2,2),random(-2,1),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AA 0 A_SpawnItemEx("HadesFire",random(-4,4),random(-4,4),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 A 0 A_SpawnItemEx("KaguneGas",random(-1,1),random(-1,1),random(-2,5),
	 random(-1,1),random(-1,1),random(-2,4),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AAA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-2,5),
	random(-1,1),random(-1,1),random(-2,5),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 TNT1 A 0 A_Recoil(1)
	 L5NR A 1 Bright A_FadeOut
	 TNT1 A 0 A_SpawnItemEx("HadesFire",random(-3,3),random(-2,3),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 A 0 A_SpawnItemEx("HadesFire",random(-4,4),random(-4,4),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 TNT1 AA 0 A_SpawnItemEx("KaguneGas",random(-1,1),random(-1,1),random(-2,5),
	 random(-1,1),random(-1,1),random(-3,6),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
	 TNT1 AA 0 A_SpawnItemEx("KaguneGas2",random(-2,2),random(-2,2),random(-3,7),
	random(-1,1),random(-1,1),random(-3,6),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,80)
	 L5NR A 1 Bright A_FadeOut
	 TNT1 A 0 A_SpawnItemEx("KaguneGas",random(-4,4),random(-4,4),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 L5NR A 1 Bright A_FadeOut
	 TNT1 A 0 A_SpawnItemEx("HadesFire",random(-4,4),random(-4,4),random(-3,7),
	 random(-1,1),random(-1,1),random(-1,1),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,78)
	 L5NR A 1 Bright A_FadeOut
	 Wait
   }
 }

Actor KaguneShard2 : KaguneShard
{
 Speed 44
 Damage (18)
}

Actor GhorulAttack : GhoulAttack
{
 Obituary "%o was eaten alive by a Ghorul."
 Damage (38)
}
