// Actors common to all mechs
actor MechPlayer_Base : PlayerPawn {

	DamageFactor "Flash",			0.0		// You cant blind them anyway
	DamageFactor "Fist",			0.35
	DamageFactor "Knife",			0.35
	DamageFactor "Bullet",			0.8
	DamageFactor "Rifle",			0.8
	DamageFactor "Explosion",		1.25
	DamageFactor "MassDriver",		0.9
	DamageFactor "AntiArmor",		2.0
	DamageFactor "Mine",			1.5
	DamageFactor "Fire",			1.5
	DamageFactor "FireSpecial",		1.5
	DamageFactor "Chemical",		0.0		// No damage as it was on past.
	DamageFactor "ChemicalSpecial",	0.0
	DamageFactor "Energy",			1.1
	DamageFactor "Plasma",			1.05	// Mechs are a little tought to plasma cannon now
	DamageFactor "EnergyDecay",		1.5
	DamageFactor "Ice",				0.0		// Cant freeze
	DamageFactor "Time",			1.0
	DamageFactor "Disarm",			0.0
	DamageFactor "Deconstruction",	0.0
	DamageFactor "Mechstomp",		0.0
	DamageFactor "Monster",			1.0
	Damagefactor "Falling",			12.0	// Weeeeeeeeee!

	maxstepheight 40
	Gravity 1.75
	player.jumpz 0
	player.damagescreencolor "00 00 00"
	player.soundclass "mech"
	painchance 0
	player.colorrange 112, 127
	mass 0x7FFFFFFF
	-TELESTOMP
	-NOBLOCKMONST
	+NOSKIN
	+NOICEDEATH
	bloodtype "HHMetalHit"
	bloodcolor "White"
}


actor MechDeathJunk {
	PROJECTILE
	-RANDOMIZE
	-NOGRAVITY
	Radius 11
	Height 8
	Speed 1
	Damage (15)
	Gravity 0.3
	Scale 0.03
	Damagetype "MassDriver"
	Obituary "$OB_MECHJUNK"
	states {
	Spawn:
		TNT1 A 6 
		TNT1 A 2 A_SpawnItemEx("PulseBallSmokePuff", 0, 0, 0, 0, 0, 1)
		wait
	Death:
		TNT1 A 0 A_PlaySound ("mech/explode/junk")
		TNT1 A 0 A_Explode (90, 128, 1)
		TNT1 A 0 A_SpawnItemEx ("ExplosionMain")
		stop
	}
}

actor MechStepDamageWeak {
	RenderStyle None
	+RANDOMIZE
	+NOCLIP
	+NODAMAGETHRUST
	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("StepSound", 0, 0, 0, 0, 0, 0, 0, 128, 0)
		TNT1 A 10 bright A_Explode(72,128,0)
		stop
	}  
}

actor MechStepDamageStrong : MechStepDamageWeak {
	states {
	Spawn:
		TNT1 A 0
		ROB1 D 0 Radius_Quake(3,10,0,4,0)
		PUFF A 0 A_SpawnItemEx("StepSound", 0, 0, 0, 0, 0, 0, 0, 128, 0)
		TNT1 A 10 bright A_Explode(256,128,0)
		stop
	}  
}

actor MechStepJuggernaut : MechStepDamageWeak {
	+EXTREMEDEATH
	damagetype "MechStomp"
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("mech/step", 5)
		TNT1 A 0 Radius_Quake (3, 10, 0, 4, 0)
		TNT1 A 10 bright A_Explode (384, 192, 0)
		stop
	}  
}

actor MechStepDamageOrca : MechStepDamageWeak {
	-TELESTOMP
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 10 bright A_Explode(60,64,0)
		stop
	}
}
actor StepSound {
	+CLIENTSIDEONLY
	-TELESTOMP
	radius 1
	height 1
	+noclip
	States {
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_PlaySound("mech/step")
		stop
	}
}

actor MechReloading : Inventory {inventory.maxamount 20}

actor MechAmmoStuffSmall : CustomInventory {
	+ALWAYSPICKUP
	states {
	Pickup:
		TNT1 A 0 A_GiveInventory("MechRocketAmmo", 2)
		TNT1 A 0 A_GiveInventory("ShortRangeMissileAmmo", 2)
		TNT1 A 0 A_GiveInventory("Wolverine-MinigunAmmo", 4)
		TNT1 A 0 A_GiveInventory("Titan-80mmAmmo", 1)
		TNT1 A 0 A_GiveInventory("Titan-FlamerAmmo", 4)
		TNT1 A 0 A_GiveInventory("Raven-RocketAmmo", 2)
		TNT1 A 0 A_GiveInventory("RavenAC2Ammo", 5)
		TNT1 A 0 A_GiveInventory("Orca-RocketAmmo", 1)
		TNT1 A 0 A_GiveInventory("Orca-MinigunAmmo", 4)
		TNT1 A 0 A_GiveInventory("FlamerAmmo", 5)
		TNT1 A 0 A_GiveInventory("ShortRangeMissileAmmo", 2)
		TNT1 A 0 A_GiveInventory("ArtilleryShellAmmo", 2)
		TNT1 A 0 A_GiveInventory("MachineGunAmmo", 4)
		TNT1 A 0 A_GiveInventory("GeneporiumCharge", 3)
		TNT1 A 0 A_GiveInventory("NukeAmmo", 1)
		TNT1 A 0 A_GiveInventory("Tortoise-BlasterAmmo", 4)
		TNT1 A 0 A_GiveInventory("Tortoise-GrenadeAmmo", 2)
		TNT1 A 0 A_GiveInventory("MechChemicalAmmo", 5)
		TNT1 A 0 A_GiveInventory("MastodonAmmoPackage", 4)
		stop
	}
}

actor MechEjectButton : CustomInventory {
	+INVBAR
	inventory.maxamount 1
	inventory.icon "ICO_EJCT"
	tag "Eject mech"
	states {
	Spawn:
		TNT1 A 0
		stop
	Use:
		TNT1 A 0 ACS_ExecuteAlways (697, 0)
		stop
	}
}

actor LongRangeMissile {
	PROJECTILE
	-RANDOMIZE
	+ROCKETTRAIL
	radius 11
	height 8
	speed 45
	damage (30)
	deathsound "weapons/rocklx"
	damagetype "Explosion"
	decal "Scorch"
	scale 0.8
	States {
	Spawn:
		MISR AA 0 A_PlaySound ("ambient/rocket", CHAN_BODY, 1.0, 1)
		MISR A -1 bright
		stop
	Death:
		TNT1 A 0 A_StopSound (CHAN_BODY)
		TNT1 A 0 A_Explode (30, 128, 0)
		TNT1 A 0 A_SpawnItemEx ("FlameDecay", random (-16,16), random (-16,16), 4, 0, 0, 0, 0, 0, 160)
		TNT1 A 5 A_SpawnItemEx ("ExplosionMain")
		stop
	}
}

Actor LongRangeMissileBlue : LongRangeMissile
{
	States
	{
		Spawn:
			MISB AA 0 A_PlaySound ("ambient/rocket", CHAN_BODY, 1.0, 1)
			MISB A -1 bright
			stop
	}
}

// Ammo types
actor ShortRangeMissileAmmo : Ammo {
	inventory.amount 0
	inventory.maxamount 150
	ammo.backpackamount 10
	ammo.backpackmaxamount 150
}

actor MechExplosionSmall {
	Obituary "$OB_MECHEXPLOSION"
	DamageType "Monster"
	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("MechDeathJunk", 0, 0, random(64,120), random(-5,5), random(-5,5), random(9,14), 0, 0, 64)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 0, 0, 0, 0, 0, 0, 0, SXF_SETMASTER)  // [TT] No teamdamage 
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 12, 16, 64, 0, 0, 0, 0, SXF_SETMASTER)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 14, 32, 96, 0, 0, 0, 0, SXF_SETMASTER)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 26, 48, 128, 0, 0, 0, 0, SXF_SETMASTER)
		TNT1 A 5
		Stop
	}
}

actor MechExplosionLarge {
	Obituary "$OB_MECHEXPLOSION"
	damagetype "Monster"
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("mech/explode/large1", 1)
		TNT1 A 0 A_PlaySound ("mech/explode/large2", 2)
		TNT1 A 0 A_PlaySound ("mech/explode/large1", 3, 0.5)
		TNT1 A 0 A_PlaySound ("mech/explode/large2", 4, 0.5)
		TNT1 A 0 A_Explode (100, 512)
		TNT1 A 0 A_Explode (700, 128)
		TNT1 A 0 A_Explode (700, 256)
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx ("MechDeathJunk", 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 8 A_SpawnItemEx ("ExplosionMainLarge", 38, 72, 160)
		TNT1 A 8 A_SpawnItemEx ("ExplosionMainLarge", 50, 96, 192)
		Stop
	}
}

Actor warFactoryHangerClear : CustomInventory
{
	+INVENTORY.AUTOACTIVATE

	Inventory.MaxAmount 1

	States
	{
		Use:
		Pickup:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("", 0, 0, 0, 0)
			Stop
	}
}

// [Xindage] used to fix ejecting from instant juggernaut
actor Justmorphed : Inventory {inventory.maxamount 1}

// [JD] Placing this in a map will only allow players to purchase light mechs.
Actor CONFIG_LightMechsOnly 30001
{
	+NOBLOCKMAP
	
	States
	{
		Spawn:
			TNT1 A -1
			Stop
	}
}

// Moved this generic ammo to base.
actor MechRocketAmmo : Ammo {
	inventory.amount 20
	inventory.maxamount 240
	ammo.backpackamount 20
	ammo.backpackmaxamount 240
}
