Actor Nightmare : PlayerPawn
{
	Health 125
	Mass 500
	LimitedToTeam 1
	Renderstyle Translucent
	Alpha 1.0
	Scale 0.1325
	Player.ForwardMove 1.05
	Player.SideMove 1.05
	Player.MaxHealth 125
	Player.JumpZ 10
	Player.DisplayName "Nightmare"
	Player.SoundClass "IceFiend"
	Player.StartItem "GhostHands", 1
	Player.StartItem "DimVision", 1
	Player.StartItem "NightmareCloaker", 1
	Player.StartItem "InvisibleCounter", 24
	Player.StartItem "ArrowSingle", 35
	Player.StartItem "ClassID", 15 // 14
	Player.StartItem "GhoulTeam", 1
	Player.scoreicon "ICEFST"
//	Translation "0:255=192:207"
	Bloodtype "SmallerSmokes"
	DamageFactor "CyborgPlasma", 0.8
	DamageFactor "Poison", 0.0
	DamageFactor "FlaskT2", 0.0
	Species "Ghoul"
	+NOSKIN
	+NOICEDEATH
	+DONTTRANSLATE
	+QUICKTORETALIATE
	States
	{
	Spawn:
		TNT1 A 0
		MIST A 1
		TNT1 A 0 A_JumpIfInventory("IcefiendInvisible", 1, "SpawnCloud")
		TNT1 A 0 A_SpawnItemEx("TrailSmoke", -4, random(-20, 20), random(0,32), 0, 0, 0)
		TNT1 A 0 A_Jump(256, "SpawnFrame")
	SpawnCloud:
		TNT1 AAA 0 A_SpawnItemEx("TrailSmokeInvis", -4, random(-20, 20), random(0,32), 0, 0, 0)
	SpawnFrame:
		MIST A 5
		Goto Spawn
	See:
		TNT1 A 0 A_JumpIfInventory("IcefiendInvisible", 1, "SeeInvis")
		MIST AAA 1 A_JumpIfInventory("IcefiendInvisible", 1, "SeeInvis")
		TNT1 AAA 0 A_SpawnItemEx("TrailSmoke", -4, random(-20, 20), random(0,32), 0, 0, 0)
		MIST A 2
		Loop
	SeeInvis:
		MIST AAAAAAAA 2 A_SpawnItemEx("TrailSmokeInvis", -4, random(-20, 20), random(0,32), 0, 0, 0)
		TNT1 A 0 A_JumpIfInventory("IcefiendInvisible", 1, "CheckInvis")
		Goto See
		CheckInvis:
		TNT1 A 0
		Goto SeeInvis
	Pain:
		MIST G 4 A_Pain
		Goto Spawn
	Pain.HunterIceSpike:
		TNT1 A 0 ACS_ExecuteAlways(451, 0, random(5,8))
		Goto Spawn		
	Pain.FlaskT3:
		TNT1 A 0 A_GiveToTarget("Flask3Heal", 1)
		Goto Pain
	Pain.Maledict:
		TNT1 A 0 A_JumpIfInventory("MaledictCooldown", 1, 5)
		TNT1 A 0 A_PlaySound("MaledictVictim", 5)
		TNT1 A 0 A_GiveInventory("MaledictAmpPower", 1)
		TNT1 A 0 A_GiveInventory("MaledictCooldown", 1)
		TNT1 A 0 A_GiveToTarget("MaledictStart", 1)
		Goto Pain
		TNT1 A 0
		Goto Pain			
    Pain.Maledict2:
		TNT1 AAAAAAA 0 A_SpawnItemEx("PurpleParticle",0,0,36,random(1,-1),random(1,-1),random(1,-1),random(0,359),0)
        Goto Pain	
	Pain.GhostbusterHorror:
		TNT1 A 0 A_GiveInventory("VisionDimEffect", 1)
		Goto Spawn
	Missile:
		MIST A 16
		Goto Spawn
	Death:
	DeathAnim:
		TNT1 A 0 A_GiveToTarget("KilledIcefiend", 1)
		TNT1 A 0 A_GiveToTarget("GhoulKillCount", 1)
		TNT1 A 0 A_GiveToTarget("TotalKillCount", 1)
		TNT1 A 0 ACS_ExecuteAlways(724, 0)
		TNT1 A 0 A_GiveToTarget("LowHPKill", 1)
		TNT1 A 0 A_GiveToTarget("CheckAchievements", 1)
		MIST A 1 SetPlayerProperty (0, 0, 4) // Failsafe in case actor dies while transforming
		TNT1 A 0
		MIST A 1 A_PlayerScream
		TNT1 A 0 A_NoBlocking
		MIST A 1 A_CustomMissile("TrailSmoke2", 0, 0, 0)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, 45)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, -45)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, 90)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, -90)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, 135)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, -135)
		MIST A 0 A_CustomMissile("TrailSmoke2", 0, 0, 180)		
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 45, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 90, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 135, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 180, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 225, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 270, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 315, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 24, 2, 2, 2, 360, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 45, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 90, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 135, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 180, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 225, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 270, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 315, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 10, 10, 12, 2, 2, 0, 360, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -45, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -90, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -135, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -180, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -225, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -270, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -315, SXF_CLIENTSIDE)
		TNT1 H 0 A_SpawnItemEX("DeathSmokeX", 5, 5, 0, 2, 2, 2, -360, SXF_CLIENTSIDE)		
		MIST A 6
		BLAN A -1
		Stop
	Death.MarineShotgun:
        TNT1 A 0 A_GiveToTarget("MarineShotgunKill", 1)
		TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
        Goto DeathAnim
    Death.MarinePistol:
        MIST A 0 A_GiveToTarget("MarinePistolKill", 1)
		TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
        Goto DeathAnim
    Death.MarineMachineGun:
        TNT1 A 0 A_GiveToTarget("MarineMachineGunKill", 1)
		TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
        Goto DeathAnim
    Death.MarineGrenade:
        TNT1 A 0 A_GiveToTarget("MarineGrenadeKill", 1)
        TNT1 A 0 A_GiveToTarget("MarineGrenadeMulti", 1)
		TNT1 A 0 A_GiveToTarget("AmmoSatchel2", 1)
        Goto DeathAnim
    Death.MarineSuicideGrenade:
        TNT1 A 0 A_GiveToTarget("MarineSuicideGrenadeKill", 1)
        Goto DeathAnim
    Death.HunterFireArrow:
        TNT1 A 0 A_GiveToTarget("HunterFireArrowKill", 1)
        TNT1 A 0 A_GiveToTarget("HunterFireMulti", 1)
        Goto DeathAnim
    Death.HunterIceArrow:
        TNT1 A 0 A_GiveToTarget("HunterIceArrowKill", 1)
        Goto DeathAnim
    Death.HunterRegularArrow:
        TNT1 A 0 A_GiveToTarget("HunterRegularArrowKill", 1)
        Goto DeathAnim
    Death.HunterLightningRail:
        TNT1 A 0 A_GiveToTarget("HunterLightningRailKill", 1)
        TNT1 A 0 A_GiveToTarget("HunterLightningMulti", 1)
        Goto DeathAnim
    Death.HunterFireMagic:
        TNT1 A 0 A_GiveToTarget("HunterFireMagicKill", 1)
		TNT1 A 0 A_SpawnItemEx("ImmolationEffect", 0, 0, 24)
        Goto DeathAnim
    Death.HunterRegularMagic:
        TNT1 A 0 A_GiveToTarget("HunterRegularMagicKill", 1)
        Goto DeathAnim
    Death.HunterIceSpike:
        TNT1 A 0 A_GiveToTarget("HunterIceSpikeKill", 1)
        Goto DeathAnim
    Death.HunterLightningMagic:
        TNT1 A 0 A_GiveToTarget("HunterLightningMagicKill", 1)
        Goto DeathAnim
    Death.HunterSuperFireArrow:
	Death.HunterSuperFireBurn:
        TNT1 A 0 A_GiveToTarget("HunterSuperFireArrowKill", 1)
		TNT1 A 0 A_GiveToTarget("HunterFireMulti", 1)
		TNT1 A 0 A_SpawnItemEx("ImmolationEffect", 0, 0, 24)
        Goto DeathAnim
    Death.HunterSuperIceArrow:
        TNT1 A 0 A_GiveToTarget("HunterSuperIceArrowKill", 1)
        Goto DeathAnim	
    Death.HunterSuperRegularArrow:
        TNT1 A 0 A_GiveToTarget("HunterSuperRegularArrowKill", 1)
        Goto DeathAnim
    Death.HunterSuperLightningRail:
        TNT1 A 0 A_GiveToTarget("HunterSuperLightningRailKill", 1)
		TNT1 A 0 A_GiveToTarget("HunterLightningMulti", 1)
        Goto DeathAnim
    Death.CyborgPlasma:
        TNT1 A 0 A_GiveToTarget("CyborgPlasmaKill", 1)
		TNT1 A 0 A_GiveToTarget("CyborgTaunter", 1)
        Goto DeathAnim
    Death.CyborgCrapPlasma:
        TNT1 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:
        TNT1 A 0 A_GiveToTarget("GhostbusterProtonKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
    Death.GhostbusterTrap:
        TNT1 A 0 A_GiveToTarget("GhostbusterTrapKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
	Death.GhostbusterHorror:
		SJAS A 0 A_GiveToTarget("GhostbusterHorrorKill", 1)
	    SJAS A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
		Goto DeathAnim
    Death.GhostbusterBlood:
        TNT1 A 0 A_GiveToTarget("GhostbusterBloodKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
    Death.GhostbusterEcho:
        TNT1 A 0 A_GiveToTarget("GhostbusterEchoKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
    Death.GhostbusterSoul:
        TNT1 A 0 A_GiveToTarget("GhostbusterSoulKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
    Death.GhostbusterIceFall:
        TNT1 A 0 A_GiveToTarget("GhostbusterIceFallKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
    Death.GhostbusterDefilerBall:
        TNT1 A 0 A_GiveToTarget("GhostbusterDefilerBallKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
        Goto DeathAnim
	Death.GhostbusterBoneCannon:
		TNT1 A 0 A_GiveToTarget("GhostbusterBoneKill", 1)
		TNT1 A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
		Goto DeathAnim
	Death.GhostbusterExpander:
		SJAS A 0 A_GiveToTarget("GhostbusterExpanderKill", 1)
		SJAS A 0 A_GiveToTarget("GBIcefiendUpgrade", 1)
		TNT1 A 0 A_GiveToTarget("KilledIcefiend", 1)
		TNT1 A 0 A_GiveToTarget("GhoulKillCount", 1)
		TNT1 A 0 A_GiveToTarget("TotalKillCount", 1)
		TNT1 A 0 ACS_ExecuteAlways(724, 0)
		TNT1 A 0 A_GiveToTarget("LowHPKill", 1)
		TNT1 A 0 A_GiveToTarget("CheckAchievements", 1)
		TNT1 A 0 SetPlayerProperty (0, 0, 4) // Failsafe in case actor dies while transforming		
		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("NightmareEnlarge_1", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
		MIST A 1
		BLAN A -1
		Stop	
    Death.EngineerNail:
        TNT1 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.Drone:
		TNT1 A 0 A_GiveToTarget("EngyDroneKill", 1)
		TNT1 A 0 A_GiveToTarget("WrenchAmmo", 20)
		Goto DeathAnim
    Death.WarlockFireball:
        TNT1 A 0 A_GiveToTarget("WarlockFireballKill", 1)
		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.WarlockBigFireball:
        TNT1 A 0 A_GiveToTarget("WarlockBigFireballKill", 1)
		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.WarlockIceShards:
        TNT1 A 0 A_GiveToTarget("WarlockIceShardsKill", 1)
		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.WarlockLightning:
        TNT1 A 0 A_GiveToTarget("WarlockLightningKill", 1)
		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.WarlockMagmaSmall:
        TNT1 A 0 A_GiveToTarget("WarlockMagmaSmallKill", 1)
		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.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:
		TNT1 A 0 A_GiveToTarget("GhoulSouls", 1)
		TNT1 A 0 A_GiveToTarget("PurpleMagicKill", 1)
		TNT1 A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
        Goto DeathAnim	
    Death.Maledict:
		TNT1 A 0 A_GiveToTarget("GhoulSouls", 1)
		TNT1 A 0 A_GiveToTarget("PurpleMagicKill", 1)
		TNT1 A 0 A_SpawnItemEx("GhoulSoul", 0, 0, -4, 0, 0, random(4,6), SXF_ABSOLUTEMOMENTUM)
        Goto DeathAnim	
    Death.Maledict2:
		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.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		
	}
}

Actor IcefiendInvisible : Ammo
{
	Inventory.Amount 0
	Inventory.MaxAmount 1
}
Actor InvisibleCounter : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 24
	Inventory.Icon "JHUDA0"
	+IGNORESKILL
}

Actor GhostHands : Weapon
{
	Weapon.SelectionOrder 1
	Weapon.SlotNumber 1
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 0
	Weapon.AmmoType2 "InvisibleCounter"
	Inventory.Icon "IHUDA0"
	Obituary "%o was sent to the nether realm by %k"
	+WEAPON.NOAUTOAIM
	+INVENTORY.UNDROPPABLE
	+WEAPON.DONTBOB
	+NOALERT
	States 
	{ 
		Spawn: 
			TNT1 A 1
		Stop 
		Ready: 
			MISA ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 A_WeaponReady 
		Goto Ready
		Deselect:
			MISA A 1 A_Lower
		Loop
		Select: 
			TNT1 A 0 ACS_ExecuteAlways(700, 0, WM_ICEFIEND_SPIKES)
			MISA A 1 A_Raise
		Goto Select+1
		NotReady:
			MISA A 1
		Goto Ready
		Fire:
			MISA A 1 A_JumpIfInventory("NightmareCleaving", 1, "NotReady")
			ICEH A 0 A_JumpIfInventory("IcefiendInvisible", 1, "NotReady")
			ICEH A 0 A_JumpIfInventory("NightmareCooldown", 1, "NotReady")
			ICEH A 0 A_SetTranslucent (1.0, 0)
			ICEH A 0 A_PlayWeaponSound("IcefiendMelee")
			MISB V 2 A_FireCustomMissile("IcefiendMeleeProjectile")//A_FireBullets(0, 0, -1, 75, "NightmarePuff", FBF_NORANDOM | FBF_NOFLASH, 100)
			MISB WXWVUYZ 2
			MISC ABA 1
			MISB ZY 1
			MISA A 1 A_refire
		Goto Ready
		Altfire:
			MISA A 1 A_JumpIfInventory("NightmareCleaveCooldown", 1, "NotReady")
			ICEH A 0 A_JumpIfInventory("IcefiendInvisible", 1, "NotReady")
			ICEH A 0 A_SetTranslucent (1.0, 0)
			ICEH A 0 A_PlayWeaponSound("DarkCleave")
			MISB VW 2
			TNT1 A 0 A_FireCustomMissile("DarkCleaveAttack")
			TNT1 A 0 A_FireCustomMissile("DarkCleaveAttack", 12)
			TNT1 A 0 A_FireCustomMissile("DarkCleaveAttack", -12)
			TNT1 A 0 A_GiveInventory("NightmareCleaveCooldown", 1)
			TNT1 A 0 ACS_executeAlways(908, 0, 8)
			MISB XWVUYZ 2
			MISC ABA 1
			MISB ZY 1
			MISA A 1
		Goto Ready
	}
}

Actor DarkCleaveAttack {
	PROJECTILE
	Damage 0
	DamageType "NightmareCleave"
	+THRUACTORS
	+FLOORHUGGER
	Radius 2
	Height 4
	Speed 16
	States {
		Spawn:
			TNT1 A 3
			TNT1 A 0 A_CustomMissile("NightmareSmallExploder", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_PlaySound("FireStaffH")
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -20, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -10, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 0, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 10, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 20, 48, 6, 0, -1)
			TNT1 A 9
			TNT1 A 0 A_CustomMissile("NightmareSmallExploder", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_PlaySound("FireStaffH")
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -20, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -10, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 0, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 10, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 20, 48, 6, 0, -1)
			TNT1 A 9 
			TNT1 A 0 A_CustomMissile("NightmareSmallExploder", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_PlaySound("FireStaffH")
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -20, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -10, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 0, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 10, 48, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 20, 48, 6, 0, -1)
			TNT1 A 9
		Death:
			TNT1 A 0 A_PlaySound("weapons/arrowexplode")
			TNT1 A 0 A_CustomMissile("NightmareExploder", 0, 0, 0, CMF_TRACKOWNER)
		Stop
	}
}
Actor NightmareCooldown : Inventory
{
	inventory.maxamount 1
}
Actor NightmareCleaving : Inventory {
    inventory.maxamount 1
}

Actor NightmareCleaveItem : CustomInventory {
    inventory.maxamount 1
    +AUTOACTIVATE
	+ALWAYSPICKUP
	States {
	    Pickup:
			TNT1 A 0 A_FireCustomMissile("DarknessFloorhugger", 0, 0, 0)
			TNT1 A 0 A_SpawnItemEx("NightMareExploder", 40, 0, 0)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -20, 44, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, -10, 44, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 0, 44, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 10, 44, 6, 0, -1)
			TNT1 A 0 A_SpawnItemEx("NightmareShadow", 12, 20, 44, 6, 0, -1)
			TNT1 A 0 A_SetAngle(angle + 30)
		Stop
	}
}

Actor NightmareSmallExploder {
	Damage (0)
	damagetype "NightmareCleave"
	Obituary "%o was consumed by %k's shadows"
	PROJECTILE
	Speed 0
	Radius 2
	Height 2
	States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(24, 72, 0)
		Stop
	}
}

Actor NightmareExploder
{
	Damage (10)
	damagetype "NightmareCleave"
	Obituary "%o was consumed by %k's shadows"
	PROJECTILE
	Speed 0
	Radius 2
	Height 2
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 AA 2 A_Explode(24, 84, 0, 0, 24)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 45, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 90, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 135, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 180, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 225, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 270, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 315, SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEX("DeathSmokeX2", 0, 0, 12, 2, 2, 1, 360, SXF_NOCHECKPOSITION)
		TNT1 AA 2 A_Explode(24, 84, 0, 0, 24)
		Stop
	}
}

Actor DarknessFloorHugger
{
	Damage (10)
	damagetype "NightmareCleave"
	Obituary "%o was consumed by %k's shadows"
	PROJECTILE
	Speed 30
	Radius 4
	Height 4
	+FLOORHUGGER
	States
	{
	Spawn:
		TNT1 A 6
		Stop
	}
}

Actor DimGiver : CustomInventory
{
	inventory.maxamount 1000
	+AUTOACTIVATE
	+ALWAYSPICKUP
	States
	{
		Use:
		Pickup:
			TNT1 A 0 A_SpawnItem("DimDamager")
		Stop
	}
}

Actor DimDamager : NightmareExploder
{
	DamageType "DimmedVision"
	Obituary "%o somehow died to %k's dim vision"
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode(5, 200, 0)
		Stop
	}
}

Actor NightmarePuff
{
	DamageType "IceFiendMelee"
	Obituary "%o was sent to the nether realm by %k."
	+NOEXTREMEDEATH
	+DONTREFLECT
	+PUFFONACTORS
	+BLOODLESSIMPACT
	+MTHRUSPECIES
	States {
		Spawn:
		Melee:
			TNT1 A 0
		Stop
	}
}

Actor IcefiendMeleeProjectile : FastProjectile
{
	Radius 6
	Height 12
	Speed 100
	Damage (200)
	DamageType "IceFiendMelee"
	Obituary "%o was sent to the nether realm by %k"
	PROJECTILE
	+NOEXTREMEDEATH
	+DONTREFLECT
	States
	{
	Spawn:
		TNT1 A 1
		Stop
	}
}

Actor IcefiendTrail
{
	Scale 0.25
	Renderstyle Add
	Alpha 1.0
	VisibleToTeam 1
	+NOGRAVITY
	+FORCEXYBILLBOARD
	+NOINTERACTION
	+DONTREFLECT
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		FOG2 A 1 A_FadeOut(0.1) 
		Loop
	}
}

Actor IceFiendSpeedBoost : PowerSpeed
{
	Powerup.Duration -6
	Speed 1.5
}

Actor IceFiendSpeedBoost2 : PowerSpeed
{
	Powerup.Duration 87
	Speed 1.3
}

Actor NightmareCloaker : CustomInventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
	Inventory.Icon "JHUDA0"
	+INVBAR
	+INVENTORY.UNDROPPABLE
	States
	{
	Spawn:
		TNT1 A 0
		Stop
	Use:
		TNT1 A 0 A_JumpIfInventory("InvisibleCounter", 1, "Success")
		Fail
	Success:
		TNT1 A 0 A_GiveInventory("UsedStealth", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("VanishAttackCooldown",0)
		TNT1 A 1 ACS_ExecuteAlways(758, 0)
		Fail
	}
}

Actor DimVision : CustomInventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
	Inventory.Icon "DIMVA0"
	+INVBAR
	+INVENTORY.UNDROPPABLE
	States
	{
	Spawn:
		TNT1 A 0
		Stop
	Use:
		TNT1 A 0 A_JumpIfInventory("IcefiendInvisible", 1, "Failed")
		TNT1 A 0 A_GiveInventory("UsedStealth", 1)
		TNT1 A 0 A_GiveInventory("DimDurationEffect", 6)
		TNT1 AA 0 A_PlaySound("DimVision", 6)
		TNT1 A 1 ACS_ExecuteAlways(755, 0)
		Stop
	Failed:
		TNT1 A 1
		Fail
	}
}

Actor IcefiendForceCloakScript : CustomInventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
	+INVENTORY.UNDROPPABLE
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
		TNT1 A 0
		Stop
	Use:
		TNT1 A 1 ACS_ExecuteAlways(758, 0)
		Stop
	}
}

Actor IcefiendCloakCooldown : Timer
{
	Powerup.Duration -4
}

Actor NightmareCleaveCooldown : Timer
{
	Powerup.Duration -4
}

ACTOR NightmareShadow : SjasVapor
{
   Speed 1
   Damage (0)
   DamageType "NightmareCleave"
   Obituary "%o was consumed by %k's shadows"
   PROJECTILE
   Radius 5
   +RIPPER
   +BLOODLESSIMPACT
   +DONTREFLECT
   +DONTSPLASH
   Height 8
   RENDERSTYLE Add
   Scale 1.15
   Alpha 0.8
   States
   {
   Spawn:
      PDBA ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_Explode(1, 48, 0)
      DEBR ABC 1
      Stop
   } 
}

Actor NightmareShadow2 : NightmareShadow
{
	Damage 0
}

ACTOR DeathSmokeX
{
 Radius 8
 Height 8
 Mass 5
 +NOBLOCKMAP
 +NOTELEPORT
 +ALLOWPARTICLES
 +CLIENTSIDEONLY
 +NoGravity
  States
  {
  Spawn:
    DSMK ABCD 2 A_SetTranslucent(0.9, 0)
	DSMK ABCD 2 A_SetTranslucent(0.8, 0)
	DSMK ABCD 2 A_SetTranslucent(0.7, 0)
	DSMK ABCD 2 A_SetTranslucent(0.6, 0)
	DSMK ABCD 2 A_SetTranslucent(0.5, 0)
	DSMK ABCD 2 A_SetTranslucent(0.4, 0)
	DSMK ABCD 2 A_SetTranslucent(0.3, 0)
	DSMK ABCD 2 A_SetTranslucent(0.2, 0)
	DSMK ABCD 2 A_SetTranslucent(0.1, 0)
	DSMK ABCD 2 A_SetTranslucent(0, 0)
	DSMK ABCD -1 A_SetTranslucent(0, 0)
    Stop
  }
}

Actor DeathSmokeX2 : DeathSmokeX {
    //VisibleToTeam 1
}

Actor SmallerSmokes : DeathSmokeX
{
	XScale 0.75
	YScale 0.85
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 ThrustThing(random(0,255), 8, 0, 0)
		SpawnLoop:
			DSMK A 3 A_FadeOut(0.1)
			TNT1 A 0 ThrustThingZ(0, 2, 1, 1)
			DSMK B 3 A_FadeOut(0.1)
			TNT1 A 0 ThrustThingZ(0, 2, 1, 1)
			DSMK C 3 A_FadeOut(0.1)
			TNT1 A 0 ThrustThingZ(0, 2, 1, 1)
			DSMK D 3 A_FadeOut(0.1)
			Loop
	}
}

Actor DimSmokeSpawner : CustomInventory
{
	inventory.maxamount 1
	+AUTOACTIVATE
	+ALWAYSPICKUP
	States
	{
		Use:
		Pickup:
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("DimSmoke", random(-32, 32), random(-32, 32), random(0, 8), random(-12, 12), random(-12,12), random(0,1)*random(0, 8), random(0, 359))
		Stop
	}
}

Actor DimSmoke
{
	Scale 1.15
	Alpha 0.85
	Renderstyle Add
	+CLIENTSIDEONLY
	+NOINTERACTION
	+NOGRAVITY
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(128, "Spawn2")
			NSMQ AAAAAA 4
			NSMQ AAAAAAAAAA 3 A_Fadeout(0.075)
		Stop
		Spawn2:
			NSMQ AAAAAA 4
			NSMQ AAAAAAAAAA 3 A_Fadeout(0.075)
		Stop		
	}
}

Actor InvisResist : PowerProtection
{
	damagefactor "normal", 0.75
	powerup.duration 0x7FFFFFFF
}

Actor TrailSmoke
{
    PROJECTILE
	Damage 0
	Speed 2
	Radius 1
	Height 1
	RenderStyle Normal
	Alpha 0.6
	Scale 0.7
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	    TNT1 A 3
		NSMQ A 0 A_Recoil(1)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 0 A_Recoil(1)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 0 A_Recoil(1)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 0 A_Recoil(1)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		NSMQ A 5 A_FadeOut(0.05)
		Stop
	Death:
		SMIS A 0
		Stop
	}
}

Actor TrailSmokeInvis : TrailSmoke
{
	VisibleToTeam 1
}

Actor TrailSmoke2
{
	Height 1
	Radius 1
	Speed 1
	RenderStyle Translucent
	Alpha 0.6
	Scale 2.1
	PROJECTILE
	-NOGRAVITY
	+NOCLIP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	    TNT1 A 3
		TNT1 A 0 A_ScaleVelocity(12.0)
		NSMQ A 100
		NSMQ AAAAAAAAAA 5 A_Fadeout(0.1)
	}
}