actor Tortoise : MechPlayer_Base {
	//+USESPECIAL
	Health 3000
	Radius 40
	Height 64
	mass 4000
	Player.DisplayName "Tortoise"
	player.soundclass "tort"
	Player.ForwardMove 0.35
	Player.SideMove 0.15
	Player.MaxHealth 3000
	Player.ViewHeight 48
	Player.AttackZOffset 13
	Player.MorphWeapon "TortoiseWeapons"
	States {
	Spawn:
		ROB2 Q 0
		ROB2 Q 0 SetPlayerProperty (0, 0, 3)
		ROB2 Q 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_FORCEOFF)
		ROB2 Q 0 ACS_Execute (315, 0)
		//ROB2 Q 0 Thing_SetSpecial (0, ACS_ExecuteAlways, 914, 0, tid)
		ROB2 Q 0 A_GiveInventory ("MechEjectButton", 1)
		ROB2 Q 0 A_GiveInventory ("IsMech",1)
		ROB2 Q 35
		ROB2 QQQQ 35 A_PlaySound ("mech/idle", 5, 1.0, 1, ATTN_NONE)
		ROB2 Q 35
		loop
	See:
		ROB2 A 0 SetPlayerProperty(0,0,3)
		ROB2 AB 7 A_JumpIfHealthLower (500,"SeeDamaged")
		ROB2 C 0 A_PlaySound ("mech/idle", 5, 1.0, 1, ATTN_NONE)
		ROB2 C 0 A_SpawnItemEx ("MechStepSmokePuff", 0, -32, 4)
		ROB2 C 0 A_SpawnItemEx ("MechStepDamageWeak", 0, -32, 4)
		ROB2 CD 7
		ROB2 A 0 A_SpawnItemEx ("MechStepSmokePuff", 0, 32, 4)
		ROB2 A 0 A_SpawnItemEx ("MechStepDamageWeak", 0, 32, 4)
		ROB2 A 0 A_JumpIf (waterlevel >= 1, "Drown")
		Goto Spawn
	SeeDamaged:
		ROB2 C 0 A_PlaySound ("mech/idle", 5, 1.0, 1, ATTN_NONE)
		ROB2 Q 0 A_SpawnItemEx ("MechStepSmokePuff", 0, -32, 4)
		ROB2 Q 0 A_SpawnItemEx ("MechStepDamageWeak", 0, -32, 4)
		ROB2 C 0 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(96,128),0,0,3,0,0,0)
		ROB2 CD 7
		ROB2 Q 0 A_SpawnItemEx ("MechStepSmokePuff", 0, 32, 4)
		ROB2 Q 0 A_SpawnItemEx ("MechStepDamageWeak", 0, 32, 4)
		ROB2 A 0 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(96,128),0,0,3,0,0,0)
		ROB2 A 0 A_JumpIf (waterlevel >= 1, "Drown")
		Goto Spawn
	Drown:
		TNT1 A 0 Thing_Damage (0, 500, 12)
		goto Spawn
	Death:
		ROB2 A 0 A_StopSound (6)
		TNT1 A 0 A_JumpIfInventory ("IsKamikaze", 1, "Death.IonExplosion")
		TNT1 A 0 A_JumpIfInventory ("IsBombCrate", 1, "Death.BombExplosion")
	DeathGo:
		ROB2 A 10 A_NoBlocking
		ROB2 A 0 A_StopSound (5)
		ROB2 A 0 A_StopSound (CHAN_WEAPON)
		ROB2 A 35 A_SpawnItemEx ("MechExplosionSmall", 0,0,0,0,0,0,0, SXF_NOCHECKPOSITION)
		DISR Z -1 A_SetTranslucent(0,0.0)
		Stop
	Death.IonExplosion:
		ROB2 A 0
		ROB2 A 0 A_JumpIfInventory ("IsBlue", 1, "Death.NukeExplosion")
		ROB2 A 0 A_SpawnItemEx ("BlueStrikeKamikaze", 0, 0, 32)
		goto DeathGo
	Death.NukeExplosion:
		ROB2 A 0
		ROB2 A 0 A_SpawnItemEx ("NukeKamikaze", 0, 0, 32)
		goto DeathGo
	Death.BombExplosion:
		ROB2 A 0
		ROB2 A 0 A_SpawnItemEx("BombExplosion")
		goto DeathGo
	}
}

actor TortoiseUsed : Tortoise {
	Health 1750
}

actor PowerTortoise : AOWMorph {
	PowerMorph.PlayerClass "Tortoise"
}

actor PowerTortoise2 : AOWMorph {
	PowerMorph.PlayerClass "TortoiseUsed"
}

actor TortoiseSwitch : PermanentPowerup {
	Powerup.Type "Tortoise"
}

actor TortoiseSwitch2 : PermanentPowerup {
	Powerup.Type "Tortoise2"
}

actor TortoiseSwitchPickup : CustomInventory {
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupSound "mech/start"
	Translation "112:127=[255,255,255]:[0,0,0]"
	States {
	Spawn:
		ROB2 A -1
		stop
	Pickup:
		ROB2 A 0 ACS_ExecuteWithResult (353, 0)
		stop
	Use:
		RAVN I 0 A_GiveInventory ("TortoiseSwitch2", 1)
		RAVN I 0 A_GiveInventory ("IsMech", 1)
		RAVN I 0 A_GiveInventory("MechEjectButton",1)
		stop
	}
}

actor TortoiseWeapons : AOWWeapon {
	Weapon.SelectionOrder 1
	Obituary "$OB_TORTOISE"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 0
	Weapon.AmmoType "Tortoise-BlasterAmmo"
	Weapon.AmmoUse2 12
	Weapon.AmmoGive2 0
	Weapon.AmmoType2 "Tortoise-GrenadeAmmo"
	+WEAPON.CHEATNOTWEAPON
	+WEAPON.DONTBOB
	Weapon.PreferredSkin "Tortoise"
	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
	Fire:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("Tortoise-BlasterAmmo", 1, 1)
		Goto Ready
		TNT1 A 0 A_TakeInventory("Tortoise-BlasterAmmo", 1)
		MHUD A 0 A_PlaySound ("Tortoise/BlasterFire", CHAN_WEAPON)	
		MHUD A 0 Radius_Quake (1, 4, 0, 1, 0)
		MHUD D 0 A_FireCustomMissile ("TortoisePlasmaShot", 0, 0, 24, -4)
		MHUD D 3 bright A_GunFlash
		MHUD C 1
		MHUD C 4 A_Refire
		Goto Ready
	AltFire:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("tortoiseImpactGrenadesDelay", 1, "Fire")
		TNT1 A 0 A_GiveInventory("tortoiseImpactGrenadesDelay")
		TNT1 A 0 A_JumpIfInventory("Tortoise-GrenadeAmmo", 12, 1)
		Goto Ready
		TNT1 A 0 A_TakeInventory("Tortoise-GrenadeAmmo", 12)
		MHUD A 4 Bright A_GunFlash		
		MHUD A 0 A_PlayWeaponSound ("Tortoise/GrenadeFire")
		MHUD B 0 Radius_Quake (2,20,0,1,0)
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade1", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade2", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade3", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade4", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade5", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade6", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))		
	    MHUD B 0 Bright A_PlayWeaponSound("Tortoise/GrenadeFire")
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade1", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade2", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade3", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade4", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade5", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade6", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))		
		MHUD A 35
		MHUD A 2 A_Refire
		goto Ready		
	Flash:
		TNT1 A 2 Bright A_Light2
		TNT1 A 1 Bright A_Light1
		TNT1 A 0 Bright A_Light0
		stop	
	Spawn:
		TNT1 A 0
		stop
	}
}

// [JD] Since we're not using ACS to rely on the delaying of weapons, we have to
//		use DECORATE.
Actor tortoiseImpactGrenadesDelay : PowerDamage
{
	DamageFactor "PD_VOID", 1.0
	Powerup.Duration 175
	Inventory.Amount 1
	Inventory.MaxAmount 1
}

/*actor TortoiseWeapons : AOWWeapon {
	Weapon.SelectionOrder 1
	weapon.ammouse 1
	weapon.ammogive 400
	weapon.ammotype "TortoisePlasmaAmmo"
	weapon.ammouse2 1
	weapon.ammogive2 600
	weapon.ammotype2 "TortoiseBulletAmmo"
	Obituary "$OB_TORTOISE"
	+WEAPON.CHEATNOTWEAPON
	+WEAPON.DONTBOB
	Weapon.PreferredSkin "Tortoise"
	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
	Fire:
		MHUD A 0 A_GunFlash
		MHUD A 0 Radius_Quake (1, 4, 0, 1, 0)
		MHUD A 0 A_PlaySound ("Weapons/PlasmaShot", CHAN_WEAPON)
		MHUD A 0 A_FireCustomMissile ("TortoisePlasmaShot", 0, 1, -16, 0)
		MHUD D 3 Bright
		MHUD A 1
		MHUD B 12 A_Refire
		Goto Ready
	AltFire:
		MHUD B 0 A_GunFlash
		MHUD A 0 A_PlaySoundEx("minigun/fire","Weapon",1)
		MHUD B 0 Radius_Quake (2, 8, 0, 1, 0)
		MHUD B 0 A_FireBullets (3.0, 3.0, -1, 10, "RiflePuff")
		MHUD B 3 Bright
		MHUD A 1
		MHUD A 0 A_Refire
		MHUD A 0 a_stopsound(CHAN_WEAPON)
		MHUD A 0 A_PlaySoundEx("minigun/spin","Weapon",0)
		MHUD A 4
		Goto Ready
	Flash:
		TNT1 A 2 Bright A_Light2
		TNT1 A 1 Bright A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Spawn:
		TNT1 A 0
		stop
	}
}*/

/*actor TortoiseWeapons : AOWWeapon {
	Weapon.SelectionOrder 1
	Obituary "$OB_TORTOISE"
	+WEAPON.CHEATNOTWEAPON
	+WEAPON.DONTBOB
	Weapon.PreferredSkin "Tortoise"
	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
	Fire:
		MHUD A 0 A_JumpIfInventory("Wolverine-WhatWeapon",2,"Fire.Grenades")
		MHUD A 0 A_JumpIfInventory("Wolverine-WhatWeapon",1,"Fire.Machinegun")
		//Continue firing Blaster
		MHUD C 0 A_JumpIfInventory ("Tortoise-BlasterAmmo", 1, 1)
		goto NoAmmo		
		MHUD A 0 A_PlaySound ("Tortoise/BlasterFire", CHAN_WEAPON)	
		MHUD A 0 A_TakeInventory ("Tortoise-BlasterAmmo", 1)
		MHUD A 0 Radius_Quake (1, 4, 0, 1, 0)
		MHUD D 0 A_FireCustomMissile ("TortoisePlasmaShot", 0, 0, 24, -4)
		MHUD D 3 bright A_GunFlash
		MHUD C 1
		MHUD C 4 A_Refire
		Goto Ready
	Fire.Grenades:
		MHUD A 0 A_JumpIfInventory("Reload-LRM", 1, "Fire.Machinegun")
		MHUD A 8 A_JumpIfInventory("Tortoise-GrenadeAmmo",12,1)
		Goto NoAmmo
		MHUD A 4 Bright A_GunFlash		
		MHUD A 0 A_PlayWeaponSound ("Tortoise/GrenadeFire")
		MHUD B 0 Radius_Quake (2,20,0,1,0)
		MHUD A 0 A_TakeInventory ("Tortoise-GrenadeAmmo", 12)
		MHUD A 0 ACS_ExecuteAlways (319, 0, 1, 4) // reload
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade1", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade2", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade3", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade4", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade5", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade6", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))		
	    MHUD B 0 Bright A_PlayWeaponSound("Tortoise/GrenadeFire")
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade1", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade2", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade3", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade4", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade5", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))
        MHUD B 0 Bright A_FireCustomMissile("ImpactGrenade6", Random(-9, 9), 0, -18, 0, 0, Random(-2, 6))		
		MHUD A 16
		MHUD A 2 A_Refire
		goto Ready
	Fire.Machinegun:
		MHUD A 10 A_JumpIfInventory("Tortoise-MachinegunAmmo",2,2)
		Goto NoAmmo
		MHUD B 0 Radius_Quake(2,8,0,1,0)		
		MHUD A 0 A_GunFlash	
		MHUD A 0 A_PlayWeaponSound("Tortoise/Machinegun")			
		MHUD A 0 A_TakeInventory("Tortoise-MachinegunAmmo",1)
		MHUD B 0 A_SpawnItemEx("RifleShellCasing",2,8,30,random(-3,-1),random(0,1),random(1,3),random(-60,-45),128)
		MHUD B 3 BRIGHT A_FireBullets (2.6, 2.6, -1, 10, "RiflePuff")
		MHUD A 1		
		MHUD B 0 A_GunFlash
		MHUD B 0 A_PlayWeaponSound("Tortoise/Machinegun")			
		MHUD A 0 A_TakeInventory("Tortoise-MachinegunAmmo",1)
		MHUD B 0 A_SpawnItemEx("RifleShellCasing",2,8,30,random(-3,-1),random(0,1),random(1,3),random(-60,-45),128)
		MHUD B 3 BRIGHT A_FireBullets (2.6, 2.6, -1, 10, "RiflePuff")
		MHUD A 1
		MHUD A 10 A_ReFire
		goto Ready		
	Flash:
		TNT1 A 2 Bright A_Light2
		TNT1 A 1 Bright A_Light1
		TNT1 A 0 Bright A_Light0
		stop	
	AltFire:
		MHUD C 0
		MHUD C 20 ACS_ExecuteAlways (314, 0)
		MHUD A 10
		Goto Ready
	NoAmmo:
		MHUD A 10 A_WeaponReady (WRF_NOPRIMARY)
		goto Ready		
	Spawn:
		TNT1 A 0
		stop
	}
}*/

actor TortoisePlasmaShot
{
	SeeSound "Tortoise/Blaster"	
    Deathsound "Tortoise/BlasterExp"
	PROJECTILE
	obituary "$OB_TORTOISE"
	speed 45
	renderstyle add
	damage (random(23,28))
	scale 0.5
	radius 8
	height 12
	damagetype "energy"
	decal PulseScorch
	states
	{
		Spawn:
			TRTP A -1 bright
			stop
		Death:
			TNT1 A 0 A_Explode(16,64,1)
			TNT1 A 0 A_SpawnItemEx ("PulseBallSmokePuff",0,0,0,0,0,1)
			TNT1 A 1 A_SpawnItemEx ("ExplosionSmaller",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
			stop
	}
}

Actor ImpactGrenade1
{
	Obituary "$OB_TORTOISE_GRENADE"
    Radius 11
    Height 8
    Speed 25
    Damage (34)
    Gravity 0.3
    Scale 1.0
    Projectile
    -NoGravity
    DeathSound "Tortoise/GrenadeHit"
	damagetype "Explosion"	
    Decal "Scorch"
    States
    {
    Spawn:
        HSBM A 1 Bright
        Loop
    Death:
        TNT1 A 0 Bright A_StopSound (CHAN_BODY)
        TNT1 A 0 Bright A_Explode (30, 128, 0)
        TNT1 A 0 Bright A_SpawnItemEx ("FlameDecay", random (-16,16), random (-16,16), 4, 0, 0, 0, 0, 0, 160)
        TNT1 A 5 Bright A_SpawnItemEx ("ExplosionMain")
        Stop
    }
}

Actor ImpactGrenade2 : ImpactGrenade1
{
  Speed 24
  Gravity 0.28
}

Actor ImpactGrenade3 : ImpactGrenade1
{
  Speed 23
  Gravity 0.26
}

Actor ImpactGrenade4 : ImpactGrenade1
{
  Speed 22
  Gravity 0.24
}

Actor ImpactGrenade5 : ImpactGrenade1
{
  Speed 21
  Gravity 0.22
}

Actor ImpactGrenade6 : ImpactGrenade1
{
  Speed 20
  Gravity 0.20
}

Actor Tortoise-BlasterAmmo : Ammo {
	inventory.amount 10
	inventory.maxamount 400
	ammo.backpackamount 10
	ammo.backpackmaxamount 400
}

Actor Tortoise-GrenadeAmmo : Ammo {
	inventory.amount 10
	inventory.maxamount 250
	ammo.backpackamount 10
	ammo.backpackmaxamount 250
}

actor TortoiseAmmoPackage : CustomInventory {
	+AUTOACTIVATE
	inventory.maxamount 0
	states {
	Pickup:
		TNT1 A 0 A_GiveInventory ("Tortoise-BlasterAmmo", 400)	
		TNT1 A 0 A_GiveInventory ("Tortoise-GrenadeAmmo", 250)
		stop
	}
}
/*
actor MakePassenger : CustomInventory {
	+AUTOACTIVATE
	+ALWAYSPICKUP
	Inventory.MaxAmount 0
	States {
	Pickup:
		TNT1 A 0 A_UnsetSolid
		TNT1 A 0 A_UnsetShootable
		TNT1 A 0 Thing_Stop (0)
		TNT1 A 0 A_SetTranslucent (0.0, 0)
		stop
	}
}

actor UnmakePassenger : MakePassenger {
	States {
	Pickup:
		TNT1 A 0 A_SetSolid
		TNT1 A 0 A_SetShootable
		TNT1 A 0 A_SetTranslucent (1.0, 0)
		stop
	}
}

actor IsPassenger : Inventory {
	Inventory.MaxAmount 0x7FFFFFFF
}

actor TortoiseEjectSpaceCheck {
	+SOLID
	+SERVERSIDEONLY
	Radius 31
	Height 64
}

actor TortoiseEjectSpaceCheck2 : TortoiseEjectSpaceCheck {
	+THRUACTORS
	Radius 80
}*/

actor DamagedTortoise {
	Health 300
	Radius 40
	Height 64
	Mass 2000
	+SHOOTABLE
	scale 1.75
	bloodtype "HHMetalHit"
	bloodcolor "White"
	obituary "%o went boom."
	Translation "112:127=[255,255,255]:[0,0,0]"
	damagefactor "Disarm", 0.0
	states {
	Spawn:
		ROB2 Q 170
		ROB2 Q 5 A_SpawnItemEx("EjectedMechSmokePuff",random(-32,32),random(-32,32),random(96,128),0,0,3,0,128,0)
		wait
	Death:
		ROB2 Q 0
		ROB2 Q 10 A_NoBlocking
		ROB2 Q 10 A_SpawnItemEx ("MechExplosionSmall", 0,0,0,0,0,0,0, SXF_NOCHECKPOSITION)
		DISR K -1
		Stop
	}
}

actor EjectedTortoise {
	Translation "112:127=[255,255,255]:[0,0,0]"
	States {
	Spawn:
		ROB2 AAAA 35
		ROB2 A 0 A_SpawnItemEx ("TortoiseSwitchPickup")
		stop
	}
}