ACTOR Defiler : PlayerPawn {
      Speed .55
      Health 80
      Radius 18
      Height 32
      Mass 8192
	  YScale 0.7
	  XScale 0.78
      PainChance 255
      maxstepheight 1024
      Player.forwardmove 0.9
      Player.sidemove 1.0
      damagefactor "normal", .85
	  DamageFactor "CyborgPlasma", 0.75
      damagefactor "HunterLightningRail", .3
      damagefactor "HunterSuperLightningRail", .3
      damagefactor "HunterLightningMagic", .3
      damagefactor "WarlockLightning", .3
      DamageFactor "HunterSuperIceArrowTrail2", .3
	  DamageFactor "ProtectorLightning", 0.3
	  DamageFactor "GhostbusterDefilerBall", 0.5	  
	  DamageFactor Fire, 0.0
	  DamageFactor Slime, 0.0
	  maxstepheight 128
      species "ghoul"
      limitedtoteam 1
	  Player.viewheight 32
      Player.DisplayName "Impaler"
      Player.StartItem "DiggaWep"
      Player.StartItem "ClassID", 16 // 15
      Player.StartItem "GhoulTeam", 1
      Player.StartItem "ArrowSingle", 35
      Player.ColorRange 112, 127
      Player.jumpz 0
      player.scoreicon "DIGFAEC"
      player.soundclass "Nigerian"
      +floorhugger
      -NOBLOOD
	  -WINDTHRUST
      bloodcolor red
      States
      {
      Spawn:
			TNT1 A 0
			HAN3 A 1
            TNT1 A 0 a_stopsoundex("body")
			TNT1 A 0 a_jumpifinventory("LeapOfFaith", 1, "Leap")
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
       Loop
      See:
            TNT1 A 0 a_playsoundex("SHITSOUN", "body")
            HAN3 AAAAAAAA 3 a_spawnitem("ImpalerDebris", -1, 4, 0, 0)
			TNT1 A 0 a_jumpifinventory("LeapOfFaith", 1, "Leap")
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            Loop
      Leap:
			TNT1 A 0 A_GiveInventory("IJUMP", 1)
			TNT1 A 0 a_giveinventory("ohmerdamage", 1)
			TNT1 A 0 a_changeflag("floorhugger", 0)
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
			TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
			TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            HANT K 1
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
            loop
      Herp:
	   HAN3 H 1
	   HAN3 H 0 A_JumpIfInventory("HerpAttackCheck",1,1)
	   HAN3 H 0 A_Jump(256,1)
       HAN3 H 0 A_GiveInventory("HerpCheck",1)
	   HAN3 GEFDCBB 1
	   TNT1 A 0 A_TakeInventory("IJUMP", 1)
       TNT1 A 0 a_changeflag("floorhugger", 1)
	   TNT1 A 0 A_TakeInventory("HerpCheck",1)
       TNT1 A 0 a_takeinventory("LeapOfFaith", 1)
       TNT1 A 0 a_takeinventory("LeapOfFaith2", 1)
       TNT1 A 0 a_takeinventory("BusyFlying", 1)
       TNT1 A 0 a_takeinventory("ohmerdamage", 1)  
       HAN3 A 1
       goto see
	   Melee:
		    TNT1 A 0 a_jumpifinventory("BusyFlying", 1, "leap")
		    TNT1 A 0 A_JumpIfInventory("LeapCooldown", 1, 1)
	   Goto Missile
            TNT1 A 0 a_playsoundex("SHITSOUN", "body")
            HAN3 AAAAAAAA 3 a_spawnitem("ImpalerDebris", -1, 4, 0, 0)
			TNT1 A 0 a_jumpifinventory("LeapOfFaith", 1, "Leap")
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")	   
	   Goto See
      Missile:
            TNT1 A 0 a_jumpifinventory("LeapOfFaith2", 1, "herp")
			TNT1 A 0 a_jumpifinventory("BusyFlying", 1, "leap")
			HAN3 BCDE 2
			TNT1 A 0 a_jumpifinventory("LeapOfFaith", 1, "Leap")
			TNT1 A 0 a_giveinventory("ohmerdamage", 1)			
			HAN3 FGH 2
			HANT A 6
			HANT BCDEFGH 2
			HAN3 EDCB 3
            TNT1 A 0 a_takeinventory("ohmerdamage", 1)
            Goto Spawn
          Death:
              DeathAnim:
                FROB A 0 A_GiveToTarget("KilledDefiler", 1)
                FROB A 0 A_GiveToTarget("TotalKillCount", 1)
                FROB A 0 A_GiveToTarget("GhoulKillCount", 1)
                FROB A 0 ACS_ExecuteAlways(724, 0)
                TNT1 A 0 A_GiveToTarget("LowHPKill", 1)
                FROB A 0 A_GiveToTarget("CheckAchievements", 1) 
				TNT1 A 0 A_JumpIfInventory("IJUMP", 1, "GiveAchieve")
				HAN3 BCDEFG 1
				HAN3 H 1 A_SpawnItemEx("ImpalerDeath")
				TNT1 A 0 A_Stop
				TNT1 A 0 A_NoBlocking
				TNT1 A 0 A_SpawnItemEx("GIBBER")
				TNT1 AAAA 0 A_playsoundex("DIGDIE", 5)
				BLAN A -1
            stop
			GiveAchieve:
				TNT1 A 0 A_GivetoTarget("ImpalerHopKill", 1)
				HAN3 BCDEFGH 1
				TNT1 A 0 A_Stop
				TNT1 A 0 A_SpawnItem("ImpalerDeath")
				TNT1 A 0 A_NoBlocking
				TNT1 A 0 A_SpawnItemEx("GIBBER")
				TNT1 AAAA 0 A_playsoundex("DIGDIE", 5)
				BLAN A -1
			Stop
        Death.MarineShotgun:
            JSKL A 0 A_GiveToTarget("MarineShotgunKill", 1)
                    TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
            Goto DeathAnim
        Death.MarinePistol:
            JSKL A 0 A_GiveToTarget("MarinePistolKill", 1)
                    TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
            Goto DeathAnim
        Death.MarineMachineGun:
            JSKL A 0 A_GiveToTarget("MarineMachineGunKill", 1)
                    TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
            Goto DeathAnim
        Death.MarineGrenade:
            JSKL A 0 A_GiveToTarget("MarineGrenadeKill", 1)
            JSKL A 0 A_GiveToTarget("MarineGrenadeMulti", 1)
                    TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
            Goto DeathAnim
        Death.MarineSuicideGrenade:
            JSKL A 0 A_GiveToTarget("MarineSuicideGrenadeKill", 1)
            Goto DeathAnim
        Death.HunterFireArrow:
            JSKL A 0 A_GiveToTarget("HunterFireArrowKill", 1)
            JSKL A 0 A_GiveToTarget("HunterFireMulti", 1)
            TNT1 A 0 A_SpawnItemEx("ImmolationEffect", 0, 0, 24)
			Goto DeathAnim
        Death.HunterIceArrow:
            JSKL A 0 A_GiveToTarget("HunterIceArrowKill", 1)
            Goto DeathAnim
        Death.HunterRegularArrow:
            JSKL A 0 A_GiveToTarget("HunterRegularArrowKill", 1)
            Goto DeathAnim
        Death.HunterLightningRail:
            JSKL A 0 A_GiveToTarget("HunterLightningRailKill", 1)
            JSKL A 0 A_GiveToTarget("HunterLightningMulti", 1)
            Goto DeathAnim
        Death.HunterFireMagic:
            JSKL A 0 A_GiveToTarget("HunterFireMagicKill", 1)
            TNT1 A 0 A_SpawnItemEx("ImmolationEffect", 0, 0, 24)
			Goto DeathAnim
        Death.HunterRegularMagic:
            JSKL A 0 A_GiveToTarget("HunterRegularMagicKill", 1)
            Goto DeathAnim
        Death.HunterIceSpike:
            JSKL A 0 A_GiveToTarget("HunterIceSpikeKill", 1)
            Goto DeathAnim
        Death.HunterLightningMagic:
            JSKL A 0 A_GiveToTarget("HunterLightningMagicKill", 1)
            Goto DeathAnim
        Death.HunterSuperFireArrow:
            JSKL A 0 A_GiveToTarget("HunterSuperFireArrowKill", 1)
            JSKL A 0 A_GiveToTarget("HunterFireMulti", 1)
            TNT1 A 0 A_SpawnItemEx("ImmolationEffect", 0, 0, 24)
			Goto DeathAnim
        Death.HunterSuperIceArrow:
            JSKL A 0 A_GiveToTarget("HunterSuperIceArrowKill", 1)
            Goto DeathAnim              
        Death.HunterSuperRegularArrow:
            JSKL A 0 A_GiveToTarget("HunterSuperRegularArrowKill", 1)
            Goto DeathAnim
        Death.HunterSuperLightningRail:
            JSKL A 0 A_GiveToTarget("HunterSuperLightningRailKill", 1)
                    JSKL A 0 A_GiveToTarget("HunterLightningMulti", 1)
            Goto DeathAnim
        Death.CyborgPlasma:
            JSKL A 0 A_GiveToTarget("CyborgPlasmaKill", 1)
			TNT1 A 0 A_GiveToTarget("CyborgTaunter", 1)
            Goto DeathAnim
        Death.CyborgCrapPlasma:
            JSKL A 0 A_GiveToTarget("CyborgCrapPlasmaKill", 1)
			TNT1 A 0 A_GiveToTarget("CyborgTaunter", 1)
            Goto DeathAnim
        Death.CyborgJetpackFire:
            TNT1 A 0 A_GiveToTarget("JetpackKill", 1)
            TNT1 A 0 A_GiveToTarget("CyborgFuel", 25)
			TNT1 A 0 A_GiveToTarget("CyborgTaunter", 1)
            Goto DeathAnim         
        Death.GhostbusterProton:
            JSKL A 0 A_GiveToTarget("GhostbusterProtonKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
        Death.GhostbusterTrap:
            JSKL A 0 A_GiveToTarget("GhostbusterTrapKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
            Death.GhostbusterHorror:
                    SJAS A 0 A_GiveToTarget("GhostbusterHorrorKill", 1)
                SJAS A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
                    Goto DeathAnim
        Death.GhostbusterBlood:
            JSKL A 0 A_GiveToTarget("GhostbusterBloodKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
        Death.GhostbusterEcho:
            JSKL A 0 A_GiveToTarget("GhostbusterEchoKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
        Death.GhostbusterSoul:
            JSKL A 0 A_GiveToTarget("GhostbusterSoulKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
        Death.GhostbusterIceFall:
            JSKL A 0 A_GiveToTarget("GhostbusterIceFallKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
        Death.GhostbusterDefilerBall:
            JSKL A 0 A_GiveToTarget("GhostbusterDefilerBallKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
            Goto DeathAnim
            Death.GhostbusterBoneCannon:
                    JSKL A 0 A_GiveToTarget("GhostbusterBoneKill", 1)
                    JSKL A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
                    Goto DeathAnim
		Death.GhostbusterExpander:
			SJAS A 0 A_GiveToTarget("GhostbusterExpanderKill", 1)
			SJAS A 0 A_GiveToTarget("GBDefilerUpgrade", 1)
                FROB A 0 A_GiveToTarget("KilledDefiler", 1)
                FROB A 0 A_GiveToTarget("TotalKillCount", 1)
                FROB A 0 A_GiveToTarget("GhoulKillCount", 1)
                FROB A 0 ACS_ExecuteAlways(724, 0)
                TNT1 A 0 A_GiveToTarget("LowHPKill", 1)
                FROB A 0 A_GiveToTarget("CheckAchievements", 1) 
				TNT1 A 0 A_JumpIfInventory("IJUMP", 1, "GiveAchieve")
				HAN3 BCDEFGH 1
				TNT1 A 0 A_Stop
				TNT1 A 0 A_NoBlocking
				TNT1 A 0 A_PlaySound("Ghostbuster/Enlarge")
				TNT1 A 0 A_SpawnItem("ExpanderExplosion", 0, 32)
				TNT1 A 0 A_SpawnItemEx("ImpalerEnlarge_1", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)				
				HAN7 H 1
				BLAN A -1
			Stop
        Death.EngineerNail:
            JSKL A 0 A_GiveToTarget("EngineerNailKill", 1)
            TNT1 A 0 A_GiveToTarget("WrenchAmmo", 20)
            Goto DeathAnim
        Death.Pulverizer:
            TNT1 A 0 A_GiveToTarget("EngineerPulvKill", 1)
            TNT1 A 0 A_GiveToTarget("WrenchAmmo", 20)
            Goto DeathAnim  
		Death.SawBlade:
			TNT1 A 0 A_GiveToTarget("EngineerSawKill", 1)
			TNT1 A 0 A_GiveToTarget("WrenchAmmo", 20)
			Goto DeathAnim
        Death.SentryShoot:
           JSKL A 0 A_GiveToTarget("SentryBulletKills", 1)
           TNT1 A 0 A_GiveToTarget("WrenchAmmo", 20)
           Goto DeathAnim
		Death.Drone:
			TNT1 A 0 A_GiveToTarget("EngyDroneKill", 1)
			TNT1 A 0 A_GiveToTarget("WrenchAmmo", 20)
			Goto DeathAnim						
        Death.WarlockFireball:
            JSKL A 0 A_GiveToTarget("WarlockFireballKill", 1)
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim
        Death.WarlockBigFireball:
            JSKL A 0 A_GiveToTarget("WarlockBigFireballKill", 1)
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim
        Death.WarlockIceShards:
            JSKL A 0 A_GiveToTarget("WarlockIceShardsKill", 1)
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim
        Death.WarlockLightning:
            JSKL A 0 A_GiveToTarget("WarlockLightningKill", 1)
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim
        Death.WarlockMagmaSmall:
            JSKL A 0 A_GiveToTarget("WarlockMagmaSmallKill", 1)
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim
            Death.BoneShield:
                    TNT1 A 0 A_GiveToTarget("GhoulSouls", 1)
                    TNT1 A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
                    Goto DeathAnim
            Death.WarlockTeleport:
                    TNT1 A 0 A_GiveToTarget("GhoulSouls", 1)
                    TNT1 A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
                    Goto DeathAnim         
            Death.PurpleMagic:
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    TNT1 A 0 A_GiveToTarget("PurpleMagicKill", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim 
        Death.Maledict:
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    TNT1 A 0 A_GiveToTarget("PurpleMagicKill", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim 
        Death.Maledict2:
                    CHOK A 0 A_GiveToTarget("GhoulSouls", 1)
                    CHOK A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim
        Death.ShadowBlast:
                    TNT1 A 0 A_GiveToTarget("GhoulSouls", 1)
                    TNT1 A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
            Goto DeathAnim                 
            Death.CyborgPulseMale:
                    TNT1 A 0 A_GiveToTarget("CyborgPulseKill", 1)
                    TNT1 A 0 A_Jump(192, 3)
                    TNT1 AA 0 A_PlaySoundEx("MaleCyborgPulseKill1", 5)
                    GoTo DeathAnim
                    TNT1 A 0 A_Jump(192, 3)
                    TNT1 AA 0 A_PlaySoundEx("MaleCyborgPulseKill2", 5)
                    GoTo DeathAnim
                    TNT1 A 0 A_Jump(192, 3)
                    TNT1 AA 0 A_PlaySoundEx("MaleCyborgPulseKill3", 5)
                    GoTo DeathAnim
                    TNT1 AA 0 A_PlaySoundEx("MaleCyborgPulseKill4", 5)
                GoTo DeathAnim
            Death.CyborgPulseFemale:
                    TNT1 A 0 A_GiveToTarget("CyborgPulseKill", 1)
                    TNT1 A 0 A_PlaySoundEx("fcybtaunt", 5)
                    Goto DeathAnim
            Death.CyborgPulseOther:
                    TNT1 A 0 A_GiveToTarget("CyborgPulseKill", 1)
                    TNT1 A 0 A_PlaySoundEx("cyblolcopy", 5)
                    GoTo DeathAnim
			Death.PlaneShotgun:
				TNT1 A 0 A_GiveToTarget("PlaneShotKills", 1)
				TNT1 A 0 A_JumpIfInTargetInventory("PlaneWalkCheck", 1, 1)
				Goto DeathAnim
				TNT1 A 0 A_GiveToTarget("PlaneDashKill", 1)
				Goto DeathAnim		
			Death.PlaneVortex:
				TNT1 A 0 A_GiveToTarget("PlaneVortexKills", 1)
				TNT1 A 0 A_JumpIfInTargetInventory("PlaneWalkCheck", 1, 1)
				Goto DeathAnim
				TNT1 A 0 A_giveToTarget("PlaneDashKill", 1)
				Goto DeathAnim
			Death.PlaneBlade:
				TNT1 A 0 A_GiveToTarget("PlaneBladeKill", 1)
				TNT1 A 0 A_JumpIfInTargetInventory("PlaneWalkCheck", 1, 1)
			Goto DeathAnim
				TNT1 A 0 A_giveToTarget("PlaneDashKill", 1)
			Goto DeathAnim
			Death.FlaskT3:
				TNT1 A 0 A_GivetoTarget("Flask3HealBig", 1)
			Death.FlaskT1:
			Death.FlaskT2:
				TNT1 A 0 A_GiveToTarget("FlaskKill", 1)
				Goto DeathAnim
			Death.DeathDart:
				TNT1 A 0 A_GiveToTarget("DartKill", 1)
				Goto DeathAnim
			Death.HeartSeeker:
				TNT1 A 0 A_GiveToTarget("PelletKill", 1)
				Goto DeathAnim
			Death.ProtectorMissile:
				TNT1 A 0 A_GiveToTarget("ProtMissileKill", 1)
				TNT1 A 0 A_GiveToTarget("ProtectorArmorShard", 1)
				TNT1 A 0 A_GiveToTarget("UpgradeCount", 1)
				Goto DeathAnim
			Death.ProtectorPlasma:
				TNT1 A 0 A_GiveToTarget("ProtPlasmaKill", 1)
				TNT1 A 0 A_GiveToTarget("ProtectorArmorShard", 1)
				TNT1 A 0 A_GiveToTarget("UpgradeCount", 1)
				Goto DeathAnim
			Death.ProtectorLightning:
				TNT1 A 0 A_GiveToTarget("ProtLightningKill", 1)
				TNT1 A 0 A_GiveToTarget("ProtLightningMulti", 1)
				TNT1 A 0 A_GiveToTarget("ProtectorArmorShard", 1)
				TNT1 A 0 A_GiveToTarget("UpgradeCount", 1)
				Goto DeathAnim	
			Death.ProtectorDash:
				TNT1 A 0 A_GiveToTarget("UpgradeCount", 1)
				Goto DeathAnim
			Pain.GhostbusterHorror:
				TNT1 A 0 A_GiveInventory("VisionDimEffect", 1)
				Goto Spawn
      }
    }
     
     
    actor LeapOfFaith : Inventory
    {
    inventory.maxamount 1
    }
     
	actor HerpCheck : Inventory
    {
    inventory.maxamount 1
    }
	
    actor HerpAttackCheck : Inventory
    {
    inventory.maxamount 1
    }
	 
    actor wontwork : Inventory
    {
    inventory.maxamount 1
    }
     
     
    actor LeapOfFaith2 : Inventory
    {
    inventory.maxamount 1
    }
     
    actor LeapCoolDown : Inventory
    {
    inventory.maxamount 1
    }
     
    actor BusyFlying : Inventory
    {
    inventory.maxamount 1
    }
     
    ACTOR DiggaWep : Weapon
    {
     Weapon.SelectionOrder 500
     Obituary "%o was impaled by by %k."
     inventory.icon "SPIKEZ"
     Inventory.PickupMessage ""
     DamageType "Impale"
     Weapon.AmmoUse 0
     +Weapon.dontbob
     +WEAPON.NOAUTOAIM
     +Weapon.noautofire
      States
     {
      Spawn:
           TNT1 A -1
           Loop
      Ready:
           DEFT A 1 A_WeaponReady
           Loop
      Fire:
			DEFT A 0 A_GiveInventory("HerpAttackCheck",1)
			DEFT A 0 A_JumpIfInventory("HerpCheck",1,"HerpBug")
            CSLM A 0 a_jumpifinventory("LeapOfFaith2", 1, "ready")
            HTFX F 0 a_jumpifinventory("BusyFlying", 1, "ready")
            HTFX F 0 a_jumpifinventory("LeapOfFaith", 1, "ready")
			DEFT A 1
            TNT1 A 0 ACS_EXECUTEALWAYS(500, 0)
            DEFT A 1
            TNT1 A 0 A_Stop
            CLA3 B 0 A_spawnitemex("DiggaSpike", 72, 0, 0, 0, 0, 0, 0, 0, 0)
            CLA3 B 0 A_spawnitemex("DiggaSpike", 56, 56, 0, 0, 0, 0, 0, 0, 0)
            CLA3 B 0 A_spawnitemex("DiggaSpike", 0, 72, 0, 0, 0, 0, 0, 0, 0)
            CLA3 B 0 A_spawnitemex("DiggaSpike", -56, 56, 0, 0, 0, 0, 0, 0, 0)
            CLA3 B 0 A_spawnitemex("DiggaSpike", -72, 0, 0, 0, 0, 0, 0, 0, 0)
            CLA3 B 0 A_spawnitemex("DiggaSpike", -56, -56, 0, 0, 0, 0, 0, 0, 0)            
            CLA3 B 0 A_spawnitemex("DiggaSpike", 0, -72, 0, 0, 0, 0, 0, 0, 0)
            CLA3 B 0 A_spawnitemex("DiggaSpike", 56, -56, 0, 0, 0, 0, 0, 0, 0)
			XXXX B 0 A_spawnitemex("BodyAttack", 0, 0, 0, 0, 0, 0, 0, 0, 0)
            TNT1 A 0 A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			TNT1 A 0 A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			TNT1 A 0 A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			TNT1 A 0 A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			CSLM A 0 a_stopsoundex("body")
            TNT1 AAAA 0 a_playsoundex("DIGAT1", 5)
			DEFT A 1 Offset(0, 48)
            DEFT A 1 Offset(0, 56)
            DEFT A 1 Offset(0, 66)
            DEFT A 1 Offset(0, 72)
            DEFT A 2 Offset(0, 86)
            DEFT A 2 Offset(0, 96)
            DEFT A 3 Offset(0, 106)
            DEFT A 1 Offset(0, 80)
            DEFT A 2 Offset(0, 66)
            DEFT AA 0 Offset(0, 52) // A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			DEFT A 2 Offset(0, 52) A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
            DEFT A 1 Offset(0, 32) A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			DEFT A 1 Offset(0, 22) A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
			DEFT A 1 Offset(0, 14) A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
            DEFT A 3 Offset(0, 13)// A_FireCustomMissile("ImpaleAttack", 0, 0 ,0)
            DEFT A 2 Offset(0, 12)
            DEFT A 1 Offset(0, 19)
			DEFT A 1 Offset(0, 29)
			DEFT A 1 Offset(0, 33)
			DEFT A 40 Offset(0, 33)
      goto ready
	HerpBug:
			DEFT A 0 A_TakeInventory("HerpCheck",1)
			DEFT A 0 A_TakeInventory("HerpAttackCheck",1)
			DEFT A 5 A_WeaponReady(WRF_NOPRIMARY)
			goto Fire
    AltFire:
	  TNT1 A 0 A_GunFlash
      DEFT A 1
	  CLA3 B 0 a_jumpifinventory("LeapCoolDown", 1, "Ready")
	  DEFT A 1
      CLA3 B 0 a_jumpifinventory("Leapoffaith", 1, "Ready")
      CLA3 B 0 a_giveinventory("leapoffaith", 1)
	  TNT1 A 0 A_ChangeFlag("FLOORHUGGER", 0)
	  TNT1 AA 0 a_playsoundex("DIGAT2", 5)
      DEFT A 1
	  TNT1 A 0 A_GiveInventory("JumpingJehosaphat", 1)
	  TNT1 A 0 A_GiveInventory("CheckAchievements", 1)
      CLA3 B 0 ACS_EXECUTEALWAYS(501, 0)
      DEFT A 3
      goto ready
      Deselect:
           DEFT A 1 A_Lower
           Loop
      Select:
           DEFT A 1 A_Raise
           Loop  
           }
    }
    actor DiggaSpike
    {
    radius 19
    Height 72
    damage (random(12, 18))
    species "ghoul"
    Projectile
    +floorhugger
    +ripper
    -bloodsplatter
    +DONTREFLECT
    +DONTBLAST
	+SHOOTABLE
	-WINDTHRUST
	+THRUSPECIES
	+NOBLOCKMAP
	+SOLID
    mass 99999999999
    obituary "%o was impaled by %k."
    DamageType "Impale"
    States
    {
    Spawn:
	CSPK EE 0 a_SpawnItemEx("SpikeSound",0,0,0)
    HTFX FFF 1 a_spawnitemex("ImpalerDebris", random(-5,5), random(-5,5), random(0,9))
    CSPK E 3 A_SpawnItemEx("ImpaleAttack1",0,0,0)
    CSPK D 3 A_SpawnItemEx("ImpaleAttack2",0,0,20)
    CSPK C 3 A_SpawnItemEx("ImpaleAttack3",0,0,40)
	CSPK D 0 A_SpawnItemEx("ImpaleAttack2",0,0,20)
    CSPK B 3 A_SpawnItemEx("ImpaleAttack4",0,0,60)
    CSPK A 15
    CSPK B 3
    CSPK C 3
    CSPK D 3
    CSPK E 3
    HTFX FFF 1 a_spawnitemex("ImpalerDebris", random(-5,5), random(-5,5), random(0,9))
    stop
    Death:
    HTFX FFF 1 a_spawnitemex("ImpalerDebris", random(-5,5), random(-5,5), random(0,9))
    Stop
    }
    }
     
Actor SpikeSound { +NOCLIP +CLIENTSIDEONLY +NOGRAVITY +FLOORHUGGER States {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"PlaySound","Death","PlaySound2")
	PlaySound:
		TNT1 A 1 A_PlaySound("DIGSPI",CHAN_AUTO,1)
		stop
	PlaySound2:
		TNT1 A 1
		TNT1 A 0 A_PlaySound("DIGSPI",CHAN_AUTO,0.75)
		stop
	Death:
		TNT1 A 1
		stop
	}
}	
	Actor BodyAttack
    {
			species "ghoul"
			Projectile
			-bloodsplatter
		    +FORCERADIUSDMG
			+DONTREFLECT
			+DONTBLAST
			-PUSHABLE
			+THRUSPECIES
			-NOBLOCKMAP
			-WINDTHRUST
//			+SOLID
			+NOGRAVITY
            Speed 0
            Radius 14
            Height 20
			mass 9999999
            Obituary "%o was impaled by %k."
            damagetype "ImpaleBite"
            damage 0
            States
            { 
			Spawn:
                    TNT1 A 0
                    TNT1 A 0 A_Explode(180, 72, 0)
                    Stop
            }
    }
    Actor ImpaleAttack
    {
            PROJECTILE
            +FORCERADIUSDMG
            +DONTREFLECT
			+DONTBLAST
			-WINDTHRUST
            Speed 30
            Radius 2
            Height 2
			mass 99999999
            Obituary "%o was impaled by %k."
            damagetype "Impale"
            damage 0
            States
            {
            Spawn:
                    TNT1 A 0
                    TNT1 A 0 A_Explode(40, 72, 0)
					TNT1 A 1 A_RadiusThrust(300, 10, 0)
                    Stop
            }
    }
	 
    Actor ImpaleAttack1
    {
			species "ghoul"
			Projectile
			-bloodsplatter
		    +FORCERADIUSDMG
			+DONTREFLECT
			+DONTBLAST
			-PUSHABLE
			+THRUSPECIES
			-NOBLOCKMAP
			-WINDTHRUST
//			+SOLID
			+NOBLOOD
			+NOGRAVITY
            Speed 0
            Radius 14
            Height 20
			mass 9999999
            Obituary "%o was impaled by %k."
            damagetype "ImpaleBite"
            damage 0
            States
            {
            Spawn:
                    TNT1 A 0
                    TNT1 A 0 A_Explode(40, 72, 0)
                    TNT1 A 60 A_RadiusThrust(700, 10, 0)
                    Stop
            }
    }
     
    Actor ImpaleAttack2
    {
			species "ghoul"
			Projectile
			-bloodsplatter
		    +FORCERADIUSDMG
			+DONTREFLECT
			+DONTBLAST
			-PUSHABLE
			-WINDTHRUST
			+THRUSPECIES
			-NOBLOCKMAP
//			+SOLID
			+NOBLOOD
			+NOGRAVITY
            Speed 0
            Radius 14
            Height 20
			mass 9999999
            Obituary "%o was impaled by %k."
            damagetype "ImpaleBite"
            damage 0
            States
            {
            Spawn:
                    TNT1 A 0
                    TNT1 A 0 A_Explode(16, 56, 0)
                    TNT1 A 60 A_RadiusThrust(500, 10, 0)
                    Stop
            }
    }
	
	Actor ImpaleAttack3
    {
			species "ghoul"
			Projectile
			-bloodsplatter
		    +FORCERADIUSDMG
			+DONTREFLECT
			+DONTBLAST
			-PUSHABLE
			-WINDTHRUST
			+THRUSPECIES
			-NOBLOCKMAP
//			+SOLID
			+NOBLOOD
			+NOGRAVITY
            Speed 0
            Radius 14
            Height 20
			mass 9999999
            Obituary "%o was impaled by %k."
            damagetype "ImpaleBite"
            damage 0
            States
            {
            Spawn:
                    TNT1 A 0
                    TNT1 A 0 A_Explode(16, 48, 0)
                    TNT1 A 54 A_RadiusThrust(500, 10, 0)
                    Stop
            }
    }
	
    Actor ImpaleAttack4
    {
			species "ghoul"
			Projectile
			-bloodsplatter
		    +FORCERADIUSDMG
			+DONTREFLECT
			+DONTBLAST
			-PUSHABLE
			-WINDTHRUST
			+THRUSPECIES
			-NOBLOCKMAP
//			+SOLID
			+NOBLOOD
			+NOGRAVITY
            Speed 0
            Radius 14
            Height 20
			mass 9999999
            Obituary "%o was impaled by %k."
            damagetype "ImpaleBite"
            damage 0
            States
            {
            Spawn:
                    TNT1 A 0
                    TNT1 A 0 A_Explode(32, 40, 0)
                    TNT1 A 40 A_RadiusThrust(600, 10, 0)
                    Stop
            }
    }

    Actor ohmerdamage : BasicArmorPickup
    {
        //inventory.icon "SHUDA0"
        //Armor.SavePercent 100.0
        //Armor.SaveAmount 100
        DamageFactor "Normal", 1.1
    }
     
Actor RockPieces2
{
	Radius 1
	Height 1
	Mass 15
	Speed 0
	Scale 1.0
	Damage (0)
	PROJECTILE
	-NOGRAVITY
	+NOTELEPORT
	+PAINLESS
	+RIPPER
	+BLOODLESSIMPACT
	+CLIENTSIDEONLY
    States
	{
	Spawn:
		DIRT GHI 3
		Loop
	Death:
		DIRT KL 4
		Stop
	}
}

Actor ImpalerDebris 
{
	PROJECTILE
	radius 1
	height 1
	speed 0
	damage 0
	+RIPPER
	-BLOODSPLATTER
	+BLOODLESSIMPACT
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 AAAAA 0  A_SpawnItemEx("RockPieces2", random(-9,9), random(-16,16), random(-4,4), random(-6,16), random(-6,8), random(2,11), random(0, 359),0,64)
		Stop
	}
}

Actor ImpalerDeath
{
	XScale 0.78
	YScale 0.7
	Height 1
	Radius 1
	-SOLID
	-TELESTOMP
	
	States
	{
		Spawn:
			HAN7 A 5
			HAN7 BCDEFGHIJKLMN 3
			HAN7 O -1	
		Stop
	}
}

Actor IJUMP : Inventory
{
	inventory.maxamount 1
}