// Lancer mech
actor Lancer : MechPlayer_Base {
	Health 3500
	Radius 58
	Height 128
	PainChance 0
	Player.DisplayName "Lancer"
	player.forwardmove 0.56
	player.sidemove 0.25
	player.maxhealth 3500
	Player.ViewHeight 96
	Player.MorphWeapon "LancerWeapons"
	scale 2.5
	states 
	{
	Spawn:
		PGRD I 0
		PGRD A 0 SetPlayerProperty(0,0,3)
		PGRD A 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_FORCEOFF)
		PGRD A 0 ACS_Execute(315,0,0,0,0)
		PGRD A 0 A_GiveInventory("MechEjectButton",1)
		PGRD A 0 A_GiveInventory("IsMech",1)
		PGRD A 35
		PGRD AAAA 35 A_PlaySoundEx("mech/idle","SoundSlot5",1,-1)
		PGRD A 35
		loop
	See:
		PGRD A 0 SetPlayerProperty (0, 0, 3)
		PGRD B 8 A_JumpIfHealthLower (500, "SeeDamaged")
		PGRD C 0 A_SpawnItemEx ("LancerStepDamageWeak", 0, -24, 4)
		PGRD A 0 A_SpawnItemEx ("MechStepSmokePuff", 0, -24, 4)
		PGRD C 8 
		PGRD D 8 
		PGRD A 0 A_SpawnItemEx ("LancerStepDamageWeak", 0, 24, 4)
		PGRD A 0 A_SpawnItemEx ("MechStepSmokePuff", 0, 24, 4)
		PGRD A 8 
		PGRD C 0 A_JumpIf(WaterLevel >= 1, "Drown")
		goto Spawn
	SeeDamaged:
		PGRD A 0 SetPlayerProperty (0, 0, 3)
		PGRD B 8
		PGRD C 0 A_SpawnItemEx ("LancerStepDamageWeak", 0, -24, 4)
		PGRD A 0 A_SpawnItemEx ("MechStepSmokePuff", 0, -24, 4)
		PGRD C 8 
		PGRD D 0 A_SpawnItemEx ("EjectedMechSmokePuff", random(-32,32),random(-32,32),random(96,128), 0,0,3)
		PGRD D 8 
		PGRD A 0 A_SpawnItemEx ("LancerStepDamageWeak", 0, 24, 4)
		PGRD A 0 A_SpawnItemEx ("MechStepSmokePuff", 0, 24, 4)
		PGRD A 8 
		PGRD C 0 A_JumpIf(WaterLevel >= 1, "Drown")
		goto Spawn
	Melee:
		//PGRD G 15 bright A_SpawnItemEx ("MechStepDamageWeak", 0, -24, 4)
		//PGRD G 5 bright A_SpawnItemEx ("MechStepDamageWeak", 0, 24, 4)
		PGRD G 10 bright
		goto Spawn
	Drown:
		TNT1 A 0 Thing_Damage (0, 300, 12)
		goto Spawn
	Death:
		PGRD A 0
		TNT1 A 0 A_JumpIfInventory("IsKamikaze",1,"Death.IonExplosion")
		TNT1 A 0 A_JumpIfInventory("IsBombCrate", 1, "Death.BombExplosion")
	DeathGo:
		PGRD A 1 A_NoBlocking
		PGRD A 0 A_StopSound (5)
		PGRD A 0 A_StopSound (CHAN_WEAPON)
		PGRD IJ 1 
		PGRD K 1 A_SpawnItemEx ("LancerExplosionSmall", 0,0,0,0,0,0,0, SXF_NOCHECKPOSITION)
		PGRD LM 1 bright 
		DISR Z -1 A_SetTranslucent(0,0.0)
		Stop
	Death.IonExplosion:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("IsRed", 1, "Death.NukeExplosion")
		TNT1 A 0 A_SpawnItemEx ("BlueStrikeKamikaze", 0, 0, 32)
		goto DeathGo
	Death.NukeExplosion:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("NukeKamikaze", 0, 0, 32)
		goto DeathGo
	Death.BombExplosion:
		PGRD A 0
		PGRD A 0 A_SpawnItemEx("BombExplosion")
		goto DeathGo
	}
}

actor LancerExplosionSmall 
{
	obituary "%o was blown up by %k's mech."
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("mech/explode/medium1", 1)
		TNT1 A 0 A_PlaySound ("mech/explode/medium2", 2)
		TNT1 A 0 A_PlaySound ("mech/explode/medium1", 3, 0.5)
		TNT1 A 0 A_PlaySound ("mech/explode/medium2", 4, 0.5)
		TNT1 A 0 A_Explode (50, 512)
		TNT1 A 0 A_Explode (350, 128)
		TNT1 A 0 A_Explode (350, 256)
		TNT1 AAAAA 0 A_SpawnItemEx("EjectedMechSmokePuff", 0, 0, random(64,120), random(-5,5), random(-5,5), random(9,14), 0, 0, 64)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge")
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 12, 16, 64)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 14, 32, 96)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 26, 48, 128)
		TNT1 A 5
		Stop
	}
}

actor LancerStepDamageWeak {
	RenderStyle None
	+RANDOMIZE
	+NOCLIP
	+NODAMAGETHRUST
	-TELESTOMP
	PROJECTILE
	Speed 1
	Damage 0
	Scale 0.7
	damagetype "MechStomp"
	states {
	Spawn:
		TNT1 A 0
		ROB1 D 0 Radius_Quake(2,8,0,2,0)
		PUFF A 0 A_SpawnItemEx("LancerStepSound", 0, 0, 0, 0, 0, 0, 0, 128, 0)
		TNT1 A 10 bright A_Explode(100,128,0)
		stop
	}
}

actor LancerStepSound {
	+CLIENTSIDEONLY
	-TELESTOMP
	radius 1
	height 1
	+noclip
	States {
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_PlaySound("RHINOSTE")
		stop
	}
}

actor LancerUsed : Lancer {health 1000}

actor PowerLancer : AOWMorph {powermorph.playerclass "Lancer"}
actor PowerLancer2 : AOWMorph {PowerMorph.PlayerClass "LancerUsed"}
actor LancerSwitch : PermanentPowerup {Powerup.Type "Lancer"}
actor LancerSwitch2 : PermanentPowerup {Powerup.Type "Lancer2"}

actor LancerSwitchPickup : CustomInventory {
	inventory.pickupsound "mech/start"
	+INVENTORY.AUTOACTIVATE
	scale 2.5
	States {
	Spawn:
		PGRD F -1
		stop
	Pickup:
		PGRD F 0 ACS_ExecuteWithResult (353, 0)
		stop
	Use:
		PGRD F 0 A_GiveInventory ("LancerSwitch2", 1)
		PGRD F 0 A_GiveInventory ("IsMech", 1)
		PGRD F 0 A_GiveInventory("MechEjectButton",1)
		stop
	}
}

actor LancerWeapons : AOWWeapon {
	Weapon.SelectionOrder 1
	Obituary "%o was destroyed by %k's Lancer."
	+WEAPON.CHEATNOTWEAPON
	+WEAPON.DONTBOB
	weapon.preferredskin "LancerMech"
	States {
	Ready:
		MHUD A 1 A_WeaponReady
		wait
	Deselect:
		MHUD A 0 A_JumpIfHealthLower(1,1)
		goto Ready
		MHUD CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 0 A_Lower
		TNT1 A 1 A_Lower
		wait
	Select:
		MHUD C 0
		MHUD CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 0 A_Raise
		MHUD C 1 A_Raise
		goto Select+31
	WaitReload:
		MHUD A 0
		MHUD A 2
		MHUD A 2 A_ReFire
		Goto Ready
	Fire:
		NHUD A 0
		MHUD A 0 A_JumpIfInventory ("Wolverine-WhatWeapon",2,"FireChemicalSprayer")
		MHUD A 0 A_JumpIfInventory ("Wolverine-WhatWeapon",1,"FirePlasmaCannon")
		MHUD A 0 A_JumpIfInventory ("Reload-LRM", 1, "FirePlasmaCannon")
		MHUD A 0 A_JumpIfInventory ("MechRocketAmmo", 10, 1)
	FireMissiles:
		MHUD C 0
		MHUD A 0 A_JumpIfInventory ("Reload-LRM", 1, "FirePlasmaCannon")
		TNT1 A 0 A_JumpIfInventory ("MechRocketAmmo", 10, 1)
		Goto NoAmmo
		MHUD A 2 A_PlayWeaponSound ("lrm/fire")
		MHUD B 0 Radius_Quake (2, 35, 0, 1, 0)
		MHUD A 0 A_TakeInventory ("MechRocketAmmo", 10)
		MHUD A 0 ACS_ExecuteAlways (319, 0, 1, 3) // reload
		MHUD B 0 Bright A_GunFlash
		MHUD BBBBBBBBBB 2 A_FireCustomMissile ("LongRangeMissile", 0, 0, 25)
		MHUD A 20
		MHUD A 2 A_Refire
		Goto Ready
	FirePlasmaCannon:
		MHUD C 0
		MHUD A 0 A_JumpIfInventory ("IsBlue", 1, "FirePlasmaCannonBlue")
		MHUD A 0 A_JumpIfInventory ("Reload-Plasma", 1, "FireChemicalSprayer")
		MHUD A 0 Radius_Quake (1, 4, 0, 1, 0)
		MHUD B 1 A_PlayWeaponSound("plasmacannon/fire")
		MHUD B 24
		MHUD D 0 A_FireCustomMissile ("PlasmaCannonBall", 0, 1, 25)
		MHUD D 2 bright A_GunFlash
		MHUD C 1 ACS_ExecuteAlways (319, 0, 4, 4) //reload plasma
		MHUD A 35
		MHUD A 2 A_Refire
		Goto Ready
	FirePlasmaCannonBlue:
		MHUD CC 0
		MHUD A 0 A_JumpIfInventory ("Reload-Plasma", 1, "FireChemicalSprayer")
		MHUD A 0 Radius_Quake (1, 4, 0, 1, 0)
		MHUD B 1 A_PlayWeaponSound("plasmacannon/fire")
		MHUD B 24
		MHUD D 0 A_FireCustomMissile ("PlasmaCannonBallBlue", 0, 1, 25)
		MHUD D 2 bright A_GunFlash
		MHUD C 1 ACS_ExecuteAlways (319, 0, 4, 4) //reload plasma
		MHUD A 35
		MHUD A 2 A_Refire
		Goto Ready
	FireChemicalSprayer:
		MHUD C 0
		MHUD A 0 A_JumpIfInventory ("MechChemicalAmmo", 10, 1)
		Goto NoAmmo
		MHUD B 0 A_PlayWeaponSound("Chem/fire")
		TNT1 A 0 A_TakeInventory("MechChemicalAmmo", 10)
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		TNT1 A 0 A_FireCustomMissile ("ChemicalShotDummy", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 0 A_FireCustomMissile ("ChemicalShot", Random(-5, 5) * 0.5, 0, 25)
		MHUD D 1 bright A_GunFlash
		MHUD A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 1 Bright A_Light2
		TNT1 A 2 Bright A_Light1
		Goto LightDone
	AltFire:
		MHUD A 0
		MHUD B 15 ACS_ExecuteAlways (314, 0)
		MHUD A 10
		Goto Ready
	Spawn:
		TNT1 A 0 
		stop
	NoAmmo:
		MHUD A 10 A_WeaponReady (WRF_NOPRIMARY)
		goto Ready
	}
}

actor DamagedLancer {
	Health 300
	Radius 58
	Height 128
	Mass 2000
	-SOLID
	-NOBLOCKMAP
	-NOCLIP
	+SHOOTABLE
	PainChance 0
	scale 2.5
	bloodtype "HHMetalHit"
	bloodcolor "White"
	obituary "%o went boom."
	Translation "112:127=[255,255,255]:[0,0,0]"
	damagefactor "Disarm", 0.0
	scale 2.5
	states {
	Spawn:
		PGRD FFFF 35
		PGRD F 35 
		PGRD FFFF 5 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(96,128),0,0,3,0,128,0)
		PGRD F 5 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(96,128),0,0,3,0,128,0)
		goto Spawn+5
	Death:
		PGRD F 0
		PGRD F 10 A_NoBlocking
		PGRD F 10 A_SpawnItemEx ("MechExplosionSmall", 0,0,0,0,0,0,0, SXF_NOCHECKPOSITION)
		DISR K -1
		Stop
	}
}

actor EjectedLancer {
	scale 2.5
	translation "112:127=[255,255,255]:[0,0,0]"
	States {
	Spawn:
		PGRD FFFF 35
		PGRD A 0 A_SpawnItemEx ("LancerSwitchPickup")
		stop
	}
}


actor Reload-Plasma : Inventory {inventory.maxamount 5}

actor MechChemicalAmmo : Ammo {
	inventory.amount 10
	inventory.maxamount 800
	ammo.backpackamount 10
	ammo.backpackmaxamount 800
}

actor LancerAmmoPackage : CustomInventory {
	+AUTOACTIVATE
	inventory.maxamount 0
	states {
	Pickup:
		TNT1 A 0 A_GiveInventory ("MechRocketAmmo", 250)
		TNT1 A 0 A_GiveInventory ("MechChemicalAmmo", 800)
		stop
	}
}
