//===========================================================================
//
//  Engineer
//
//===========================================================================

ACTOR "Engineer" : PlayerPawn Replaces rDoomPlayer
{
	Speed 1
	Health 100
	Radius 16
	Height 56
	Mass 100 
	PainChance 255
	Player.DisplayName "Engineer"
	Player.SoundClass "Engineer"
	Player.StartItem "ClassID", 8
	Player.StartItem "EngineerToken", 1
	Player.StartItem "KXTechArmor", 1
	Player.StartItem "Nailgun", 1
	Player.StartItem "Nails", 200
	Player.StartItem "Impactor", 1
	Player.StartItem "EngineerMetalItem1", 1
	Player.StartItem "EngineerMetalItem2", 1
	Player.StartItem "EngineerMetalItem3", 1
	Player.StartItem "EngineerMetalItem4", 1
    DamageFactor "Player", 0
	DamageFactor "Boss", 1.00
	Player.ForwardMove 0.95 
	Player.SideMove 0.95
    Player.WeaponSlot 1, "Impactor"
    Player.WeaponSlot 2, "Nailgun"
	Player.ColorRange 112, 127
	States
	{
	Spawn:
		SPEN A -1
		Loop
	See:
		SPEN ABCD 5
		Loop
	Missile:
		SPEN E 12
		Goto Spawn
	Melee:
		SPEN F 5 Bright
		Goto Missile
	Pain:
		SPEN G 4
		SPEN G 4 A_Pain
		Goto Spawn
	Pain.WhirlWind:
        SPEN G 2
        TNT1 A 0 ThrustThing(random(0, 360)*256/360, random(-8, 8), 0, 0)
        TNT1 A 0 ThrustThingZ(0, random(0, 4), random(0,1), 1)
        TNT1 A 0 A_SetAngle(angle+random(-1,1)*random(25,50))
        TNT1 A 0 A_SetBlend("10 10 10", 0.6, 24)
        Goto Pain
    Pain.DeathKnightStun:
        SPEN G 2
        TNT1 A 0 acs_executealways(616, 0, 30)
        Goto Pain
    Pain.DeathKnightAssassinate:
        SPEN G 2
	    TNT1 A 0 acs_terminate(616, 0)
	    TNT1 A 0 a_takeinventory("armor", 250)
        TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
	    TNT1 A 0 SetPlayerProperty(0, 1, 4)
	    TNT1 A 0 A_SetGravity(0.75)
        TNT1 A 0 ThrustThingZ(0, 64, 0, 0)
	    TNT1 A 0 a_spawnitemex("deathknightassassinate2")
        Goto Pain
    Pain.DeathKnightDash:
        SPEN G 2
	    TNT1 A 0 acs_terminate(616, 0)
	    TNT1 A 0 acs_execute(618, 0)
        Goto Pain
	Pain.SlimeSpit:
		SPEN G 0  
		SPEN G 0 A_JumpIfInventory("SlimerSpitWindow",1,"Pain") 		
		SPEN G 0 A_GiveInventory("SlimerSpitWindow",1)
        SPEN G 1 ACS_NamedExecuteAlways("Slimer Spit",0)
        Goto Pain	
	Death:
		SPEN H 10 A_PlayerScream
		TNT1 H 0 A_spawnitemex("AmmoPack2", random(-10, 10), random(-10, 10), random(20, 44), random(1,2), random(1,2), random(3,4), 0, 0, 255)
		TNT1 H 0 a_spawnitemex("AmmoPack2", random(-10, 10), random(-10, 10), random(20, 44), random(1,2), random(1,2), random(3,4), 0, 0, 55)
		TNT1 H 0 a_spawnitemex("StimPack2C", random(-10, 10), random(-10, 10), random(20, 44), random(1,2), random(1,2), random(3,4), 0, 0, 255)
		TNT1 H 0 a_spawnitemex("StimPack2C", random(-10, 10), random(-10, 10), random(20, 44), random(1,2), random(1,2), random(3,4), 0, 0, 200)
		TNT1 H 0 a_spawnitemex("StimPack2C", random(-10, 10), random(-10, 10), random(20, 44), random(1,2), random(1,2), random(3,4), 0, 0, 150)
		TNT1 H 0 a_spawnitemex("StimPack2C", random(-10, 10), random(-10, 10), random(20, 44), random(1,2), random(1,2), random(3,4), 0, 0, 100)
		SPEN I 10 
		SPEN J 10 A_NoBlocking
		SPEN KLM 10
		SPEN N -1
		Stop
    XDeath:
	    SPEN G 2 A_XScream
	    TNT1 AAAAAA 0 A_CustomMissile("CeilBloodLauncherLong",0,0,Random(0,360),2,Random(50,130))
		TNT1 AA 0 A_CustomMissile("XDeath1",32,0,Random(0,360),2,Random(0,160))
		TNT1 AA 0 A_CustomMissile("XDeath2",32,0,Random(0,360),2,Random(0,160))
		TNT1 AA 0 A_CustomMissile("XDeath3",32,0,Random(0,360),2,Random(0,160))
		TNT1 AA 0 A_CustomMissile("XDeath4",32,0,Random(0,360),2,Random(0,160))
		TNT1 AA 0 A_CustomMissile("XDeath5",32,0,Random(0,360),2,Random(0,160))
		TNT1 AAAAAAAA 0 A_CustomMissile("SuperWallRedBlood",40,0,Random(0,360),2,Random(-5,5))
		TNT1 AAAA 0 A_CustomMissile("Instestin",32,0,Random(0,360),2,Random(0,160))
	    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("Brutal_FlyingBlood",35,0,Random(0,360),2,Random(0,160))
	    TNT1 AAAAAA 0 A_CustomMissile("SuperGoreSpawner",32,0,Random(0,360),2,Random(50,130))
		TNT1 A -1
		Stop
    }
}

ACTOR EngineerMetalItem1 : CustomInventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
	+INVBAR
	Inventory.Icon "AEPCB0"
	Tag "25 Clips for 25 of Metal"
	States
	{
	Spawn:
		TNT1 A 0
		Stop
	Use:
		TNT1 A 0 ACS_NamedExecute("EngineerMetal",0,1,0,0)
		Fail
	    }
}

ACTOR EngineerMetalItem2 : EngineerMetalItem1
{
    Tag "10 Shells for 25 of Metal"
	States
	{
	Use:
		TNT1 A 0 ACS_NamedExecute("EngineerMetal",0,2,0,0)
		Fail
	    }
}

ACTOR EngineerMetalItem3 : EngineerMetalItem1
{
    Tag "3 Rockets for 30 of Metal"
	States
	{
	Use:
		TNT1 A 0 ACS_NamedExecute("EngineerMetal",0,3,0,0)
		Fail
	    }
}

ACTOR EngineerMetalItem4 : EngineerMetalItem1
{
    Tag "50 Cells for 45 of Metal"
	States
	{
	Use:
		TNT1 A 0 ACS_NamedExecute("EngineerMetal",0,4,0,0)
		Fail
	    }
}