// Scavenger mech
actor Scavenger : MechPlayer_Base {
	health 1500
	radius 44
	height 62
	damagefactor "Falling", 12.0
	player.displayname "Scavenger"
	player.forwardmove 0.35
	player.sidemove 0.15
	player.soundclass "mech"
	player.maxhealth 1500
	player.viewheight 47
	player.attackzoffset 13
	player.colorrange 112, 127
	player.morphweapon "ScavengerWeapons"
	scale 1.1
	+NOSKIN
	-NOBLOCKMONST
	bloodtype "HHMetalHit"
	bloodcolor "White"
	maxstepheight 40
	
	states {
	Spawn:
		ROB2 Q 0 SetPlayerProperty (0, 0, 3)
		ROB2 Q 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_FORCEOFF)
		ROB2 Q 0 A_GiveInventory ("ScavengerEject", 1)
		ROB2 Q 0 A_GiveInventory ("IsMech", 1)
		ROB2 Q 35
		ROB2 QQQQ 35 A_PlaySound ("mech/idle", 5, 1.0)
		ROB2 Q 35
		loop
	See:
		ROB2 A 0 A_JumpIfHealthLower (200, "SeeDamaged")
		ROB2 A 0 A_JumpIf(WaterLevel >= 1, "Drown")
		ROB2 A 0 A_PlaySound ("mech/idle", 5, 1.0, 1)
		ROB2 A 0 SetPlayerProperty (0, 0, 3)
		ROB2 A 8
		// apparently the left foot is less offset
		ROB2 B 0 A_SpawnItemEx ("MechStepSmokePuff", 0, -22, 4)
		ROB2 B 0 A_SpawnItemEx ("MechStepDamageWeak", 0, -22, 4)
		ROB2 BC 8
		ROB2 D 0 A_SpawnItemEx("MechStepSmokePuff", 0, 26, 4)
		ROB2 D 0 A_SpawnItemEx("MechStepDamageWeak", 0, 26, 4)
		ROB2 D 8
		goto Spawn
	SeeDamaged:
		ROB2 A 0 A_JumpIf(WaterLevel >= 1, "Drown")
		ROB2 C 0 A_PlaySound ("mech/idle", 5, 1.0, 1)
		ROB2 A 0 SetPlayerProperty (0, 0, 3)
		ROB2 A 8
		ROB2 B 0 A_SpawnItemEx ("MechStepSmokePuff", 0, -22, 4)
		ROB2 B 0 A_SpawnItemEx ("MechStepDamageWeak", 0, -22, 4)
		ROB2 B 0 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(48,64),0,0,3)
		ROB2 BC 8
		ROB2 D 0 A_SpawnItemEx("MechStepSmokePuff", 0, 26, 4)
		ROB2 D 0 A_SpawnItemEx("MechStepDamageWeak", 0, 26, 4)
		ROB2 D 0 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(48,64),0,0,3)
		ROB2 D 8
		ROB2 A 0 A_JumpIfHealthLower (200, "SeeDamaged")
		goto Spawn
	Drown:
		TNT1 A 0 Thing_Damage (0, 500, 12)
		goto Spawn
	Missile:
		ROB2 F 0 SetPlayerProperty (0, 1, 0)
		ROB2 F 7 BRIGHT
		ROB2 Q 10
		ROB2 Q 0 SetPlayerProperty (0, 0, 0)
		goto Spawn
	Pain.Flash:
		ROB2 Q 0 ACS_ExecuteAlways(320,0,3,0,0)
		ROB2 Q 0 ACS_ExecuteAlways(320,0,3,0,0)
		goto Spawn
	Death:
		ROB2 Q 0
		ROB2 Q 0 A_JumpIfInventory ("IsKamikaze", 1, "Death.IonExplosion")
		goto DeathGo
	DeathGo:
		ROB2 A 10 A_NoBlocking
		ROB2 A 0 A_StopSound (1) ROB2 A 0 A_StopSound (5)
		ROB2 A 0 A_StopSound (2) ROB2 A 0 A_StopSound (6)
		ROB2 A 0 A_StopSound (3) ROB2 A 0 A_StopSound (7)
		ROB2 A 0 A_StopSound (4) ROB2 A 0 A_StopSound (8)
		ROB2 GHI 5 BRIGHT
		ROB2 J 0 A_SpawnItemEx ("ScavengerExplosion")
		ROB2 JKLM 5 BRIGHT
		ROB2 NOP 5
		ROB2 P -1
		stop
	Death.IonExplosion:
		ROB2 Q 0
		ROB2 Q 0 A_JumpIfInventory ("IsRed", 1, "Death.NukeExplosion")
		ROB2 Q 0 A_SpawnItemEx ("BlueStrikeKamikaze", 0, 0, 32)
		goto DeathGo
	Death.NukeExplosion:
		ROB2 Q 0
		ROB2 Q 0 A_SpawnItemEx ("NukeKamikaze", 0, 0, 32)
		goto DeathGo
	}
}

actor ScavengerExplosion {
	+NOINTERACTION
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("ExplosionMainLarge")
		TNT1 A 0 A_CustomMissile ("MechExplosionSmall", 48)
		TNT1 A 8 A_PlaySound ("weapons/rocklx")
		TNT1 A 0 A_SpawnItemEx ("ExplosionMainLarge", 12, 16, 32)
		TNT1 A 8 A_PlaySound("weapons/rocklx")
		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 0 A_SpawnItemEx ("ExplosionMainLarge", 14, 32, 64)
		TNT1 A 8 A_PlaySound ("weapons/rocklx")
		TNT1 A 0 A_SpawnItemEx ("ExplosionMainLarge", 26, 48, 96)
		TNT1 A 8 A_PlaySound ("weapons/rocklx")
		TNT1 A 0 A_SpawnItemEx ("ExplosionMainLarge", 38, 72, 128)
		TNT1 A 0 A_PlaySound ("weapons/rocklx")
		stop
	}
}
actor ScavengerSwitch : PermanentPowerup {powerup.type "Scavenger"}
actor PowerScavenger : AOWMorph {powermorph.playerclass "Scavenger"}

actor ScavengerSwitchPickup : CustomInventory {
	+AUTOACTIVATE
	inventory.pickupsound "mech/start"
	translation "112:127=[255,255,255]:[0,0,0]"
	scale 1.1
	states {
	Spawn:
		ROB2 Q -1
		stop
	Pickup:
		ROB2 Q 0 ACS_ExecuteWithResult (353)
		stop
	Use:
		ROB2 Q 0 A_GiveInventory ("ScavengerSwitch", 1)
		ROB2 Q 0 ACS_Execute (359, 0, 6)
		stop
	}
}

actor PowerScavengerUsed : AOWMorph {powermorph.playerclass "ScavengerUsed"}

actor ScavengerEject : CustomInventory  {
	+INVBAR
	inventory.pickupmessage ""
	inventory.pickupsound ""
	inventory.maxamount 1
	inventory.icon "ICO_EJCT"
	states {
	Spawn:
		TNT1 A -1
		stop
	Use:
		TNT1 A 0 ACS_ExecuteAlways(697, 0, 7)
		stop
	}
}

actor EjectedScavengerWeak {
	health 150
	radius 44
	height 62
	mass 0x7FFFFFFF
	-SOLID
	-NOBLOCKMAP
	-NOCLIP
	+SHOOTABLE
	damagefactor "Disarm", 0.0
	damagefactor "Deconstruction", 0.0
	PainChance 0
	scale 1.1
	bloodtype "HHMetalHit"
	bloodcolor "White"
	obituary "%o went boom."
	translation "112:127=[255,255,255]:[0,0,0]"
	states {
	Spawn:
		ROB2 QQQQQ 35
		ROB2 Q 35 
		goto Idle
	Idle:
		ROB2 Q 5 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(96,128),0,0,3)
		loop
	DeathGo:
		ROB2 Q 10 A_NoBlocking
		ROB2 GHI 5 BRIGHT
		ROB2 J 0 A_SpawnItemEx ("ScavengerExplosion")
		ROB2 JKLM 5 BRIGHT
		ROB2 NOP 5
		ROB2 P -1
		stop
	}
}

actor EjectedScavenger {
	health 300
	radius 58
	height 128
	mass 2000
	-SOLID
	-NOBLOCKMAP
	-NOCLIP
	painChance 0
	scale 1.1
	translation "112:127=[255,255,255]:[0,0,0]"
	states {
	Spawn:
		ROB2 QQQQ 35
		ROB2 Q 0 A_SpawnItemEx ("ScavengerSwitchPickup")
		stop
	}
}

actor ScavengerWeapons : AOWWeapon {
	weapon.selectionorder 1
	weapon.ammouse 1
	weapon.ammogive 400
	weapon.ammotype "MachineGunAmmo"
	obituary "%o couldn't stop %k's Scavenger."
	+WEAPON.CHEATNOTWEAPON
	+WEAPON.DONTBOB
	weapon.preferredskin "Scavenger"
	states {
	Ready:
		MHUD A 1 A_WeaponReady
		wait
	Deselect:
		MHUD A 0 A_JumpIfHealthLower(1,1)
		goto Ready
		TNT1 A 1 A_Lower
		wait
	Select:
		MHUD A 0
		MHUD AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		MHUD A 1 A_Raise
		wait
	WaitReload:
		MHUD A 2
		MHUD A 2 A_ReFire
		goto Ready
	Fire:
		MHUD A 10 A_JumpIfInventory("Wolverine-MinigunAmmo",2,2)
		MHUD A 0 A_PlaySound ("minigun/spin", CHAN_WEAPON)
		Goto AltFire
		MHUD B 0 Radius_Quake(2,8,0,1,0)
		MHUD A 0 A_PlaySound ("minigun/fire", CHAN_WEAPON, 1.0, 1)
		MHUD A 0 A_GunFlash
		MHUD B 0 A_SpawnItemEx ("RifleShellCasing", 16, -32, 50, random (-3,-1), random(0,1), random(1,3), random(-60,-45))
		MHUD A 0 A_JumpIfInventory("IsBlue", 1, "FireBlue")
		MHUD B 2 BRIGHT A_FireBullets (3.4, 3.4, -1, 10, "RiflePuff", 1)
		MHUD A 1
		MHUD B 0 A_GunFlash
		MHUD B 0 A_SpawnItemEx ("RifleShellCasing", 16, -32, 50, random (-3,-1), random(0,1), random(1,3), random(-60,-45))
		MHUD B 2 BRIGHT A_FireBullets (3.4, 3.4, -1, 10, "RiflePuffBlue", 1)
		MHUD A 1
		MHUD A 0 A_ReFire
		MHUD A 0 A_PlayWeaponSound ("minigun/spin")
		MHUD A 4
		goto Ready
	FireBlue:
		MHUD B 2 BRIGHT A_FireBullets (3.4, 3.4, -1, 10, "RiflePuff")
		MHUD A 1
		MHUD B 0 A_GunFlash
		MHUD B 0 A_SpawnItemEx ("RifleShellCasing", 16, -32, 50, random (-3,-1), random(0,1), random(1,3), random(-60,-45))
		MHUD B 2 BRIGHT A_FireBullets (3.4, 3.4, -1, 10, "RiflePuff")
		MHUD A 1
		MHUD A 0 A_ReFire
		MHUD A 0 A_PlayWeaponSound ("minigun/spin")
		MHUD A 4
		goto Ready
	Flash:
		TNT1 A 2 Bright A_Light2
		TNT1 A 1 Bright A_Light1
		goto LightDone
	Spawn:
		TNT1 A 0
		stop
	}
}

actor ScavengerAmmoPackage : CustomInventory {
	+AUTOACTIVATE
	inventory.maxamount 0
	states {
	Pickup:
		TNT1 A 0 A_GiveInventory ("Wolverine-MinigunAmmo", 600)
		stop
	}
}