// Actors common to all mechs
actor MechPlayer_Base : PlayerPawn {
	damagefactor "Fist", 0.35
	damagefactor "Bullet", 0.8
	damagefactor "Rifle", 0.8
	damagefactor "Explosion", 1.25
	damagefactor "Mine", 1.25
	damagefactor "Fire", 1.25
	damagefactor "Chemical", 1.75
	damagefactor "ChemicalSpecial", 0.0
	damagefactor "Energy", 1.0
	damagefactor "AntiArmor", 2.0
	damagefactor "Time", 1.0
	damagefactor "Disarm", 0.0
	damagefactor "Deconstruction", 0.0
	damagefactor "MassDriver", 0.9
	damagefactor "Mechstomp", 0.0
	damagefactor "Monster", 1.0
	damagefactor "Falling", 12.0
	maxstepheight 40
	player.jumpz 0
	player.damagescreencolor "00 00 00"
	player.soundclass "mech"
	painchance 0
	mass 0x7FFFFFFF
	-TELESTOMP
	-NOBLOCKMONST
	+NOSKIN
	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-RocketAmmo", 2)
		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)
		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:
		MISL AA 0 A_PlaySound ("ambient/rocket", CHAN_BODY, 1.0, 1)
		MISL 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
	}
}

// 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")
		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 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
	}
}