//Movement recoded
actor Mars : SemiHighArmorClass
{
	Player.ScoreIcon "MARSMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "SemiHighArmor"
	player.soundclass "marsc"
	player.displayname "Mars"
	player.jumpz 10
	gravity 0.9
	player.forwardmove 0.8, 0.8
	player.sidemove 0.76, 0.76
	player.startitem "PhotonMissileBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "Base56Ammo", 56
	player.startitem "MarsTankAmmo", 100
	player.startitem "CanThirdFire"
	player.startitem "UltimateAttackItem4", 1
	player.startitem "UltSoundWatcherSpawn4"
	player.startitem "IsFromGB5"
	Player.ViewHeight 53
	States
	{
		Spawn:
		MARS A 0
		MARS B 1 A_JumpIf(z-floorz>0,"Jumping")
		MARS A 1 A_JumpIf(z-floorz>0,"Jumping")
		Goto Spawn+2
		
		See:
		MARS BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0,"Jumping")	
		Goto Spawn
		
		Jumping:
		MARS M 1 A_JumpIf(z-floorz<=0, "Landed")
		wait

		Landed:
		MARS SSS 1 A_JumpIf(z-floorz>0, "Jumping")
		goto Spawn+2

		Animation3:
		MARS IL 2
		
		A3.Loop:
		MARS BBCCDDEE 1
		loop
		
		Animation4:
		MARS LI 2
		goto Spawn+2
		
		Missile:
		MARS FFFFFGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile")
	
		Missile4:
		MARS GGGGGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile4")
		goto Spawn+2
	
		JumpingMissile:
		MARS NNNNNNNNN 1 A_JumpIf(z-floorz<=0, "Missile")
	
		JumpingMissile4:
		MARS NNNNNNNN 1 A_JumpIf(z-floorz<=0, "Missile4")
		goto Jumping
	
		Animation1:
		MARS IILL 1 A_JumpIf(z-floorz>0,"JumpingA1")
		
		Animation2:
		Animation1b:
		MARS TTKKJJ 1 A_JumpIf(z-floorz>0,"JumpingA1b")
		MARS LLLLIIAA 1 A_JumpIf(z-floorz>0,"Jumping")
		goto Spawn+2
	
		JumpingA1:
		MARS OORR 1 A_JumpIf(z-floorz<=0,"Animation1")

		JumpingA1b:
		MARS PPQQPP 1 A_JumpIf(z-floorz<=0,"Animation1b")
		MARS RRRROOMM 1 A_JumpIf(z-floorz<=0,"Landed")
		goto Jumping
		
		Animation5:
		MARS AU 2
		
		A5.Loop:
		MARS S 1
		loop
		
		Animation6:
		MARS UA 2
		goto Spawn+2
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		MARS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		MARS HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		MARS H 20 ACS_ExecuteAlways(999,0,0)
		MARS H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMMV", 0, 0, 32, 0, 0, 0, 0, 1)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		MARS A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("PhotonMissileWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("PhotonMissileWepM")
		goto ClassDeath
	}
}

actor PhotonMissileBoss : VCBaseWeapon
{
	Weapon.AmmoUse 1
	Weapon.AmmoType2 "Base56Ammo"
	Weapon.AmmoGive 28
	Obituary "$OB_MARS1"
	States
	{
		Ready:
		TNT1 A 0
		MARH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		MARH A 0 A_JumpIfInventory("MarsViolenceMeter",40,"Ready4")
		MARH A 0 A_JumpIfInventory("MarsViolenceMeter",30,"Ready3")
		MARH A 0 A_JumpIfInventory("MarsViolenceMeter",20,"Ready2")
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_GiveInventory("Base28Ammo",2)
		MARH A 0 A_GiveInventory("Base56Ammo",1)
		Goto Ready
		
		Ready2:
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("Base28Ammo",2)
		MARH A 0 A_GiveInventory("Base56Ammo",1)
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("Base28Ammo",2)
		MARH A 0 A_GiveInventory("Base56Ammo",1)
		Goto Ready
		
		Ready3:
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("Base28Ammo",3)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("Base28Ammo",3)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		Goto Ready
		
		Ready4:
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("Base28Ammo",3)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("Base28Ammo",3)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_MarsUser1Check")==3,"User1")
		MARH A 1 A_WeaponReady
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_GiveInventory("Base28Ammo",3)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		Goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		MARH A 1 A_Lower
		Loop

		Select:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("MarsViolenceWatcher")
		TNT1 A 0 ACS_ExecuteAlways(991,0,5963)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		MARH A 1 A_Raise
		Loop

		Fire:
		MARH A 0 A_JumpIfInventory("BaseCustomFlag1",1,"FireUlt")
		MARH A 0 A_JumpIfNoAmmo("NoAmmo")
		MARH B 2 A_GiveInventory("BaseCustomFlag2") //For salvo input

		Hold:
		MARH B 0 A_JumpIfInventory("MarsViolenceMeter",20,"Fire2")
		MARH A 0 A_JumpIfNoAmmo("Hold.After")
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		MARH A 0 A_PlaySoundEx("weapon/MMVShot","Weapon")
		MARH C 0 A_FireCustomMissile("MarsBullet",0,1,-16,8)
		MARH C 0 A_FireCustomMissile("MarsBullet",0,0,16,8)
		MARH DCCCC 1
		MARH C 0 A_Refire
		
		Hold.After:
		TNT1 A 0 A_TakeInventory("RightClickFlag")
		TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
		MARH BAAAAAAAAA 1 A_ClearRefire
		goto Ready

		Fire2:
		MARH A 0 A_JumpIfNoAmmo("Hold.After")
		MARH A 0 A_GiveInventory("RightClickFlag")
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		MARH A 0 A_PlaySoundEx("weapon/MMVShot","Weapon")
		MARH C 0 A_FireCustomMissile("MarsBullet",0,1,-16,8)
		MARH C 0 A_FireCustomMissile("MarsBullet",0,0,16,8)
		MARH DCCCC 1 A_WeaponReady(WRF_NOPRIMARY)
		MARH C 0 A_Refire("Fire2")
		goto Hold.After
		
		FireUlt:
		MARH B 2 A_GiveInventory("BaseCustomFlag2")

		FireUltHold:
		MARH B 0 A_JumpIfInventory("MarsViolenceMeter",20,"FireUlt2")
		MARH A 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		goto FireUltHoldCooldown
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		MARH A 0 A_PlaySoundEx("weapon/marsmachinegun","Weapon")
		MARH AA 0 A_FireCustomMissile("MarsMachineGunPuffProj",frandom(-2.2,2.2),0,0,0,0,frandom(-2.2,2.2))
		MARH D 1 Offset(0,33) A_GiveInventory("Base28Ammo",2)
		MARH C 1 Offset(0,32)
		MARH C 0 A_Refire("FireUltHold")
		MARH C 0 A_WeaponReady(WRF_NOFIRE)

		FireUltHoldCooldown:
		TNT1 A 0 A_TakeInventory("RightClickFlag")
		TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
		MARH BAAAAAAAAA 1 A_ClearRefire
		goto Ready

		FireUlt2:
		MARH A 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		goto FireUltHoldCooldown
		MARH A 0 A_GiveInventory("RightClickFlag")
		MARH A 0 A_GiveInventory("Base56Ammo",2)
		MARH A 0 A_PlaySoundEx("weapon/marsmachinegun","Weapon")
		MARH AA 0 A_FireCustomMissile("MarsMachineGunPuffProj",frandom(-2.2,2.2),0,0,0,0,frandom(-2.2,2.2))
		MARH A 0 A_GiveInventory("Base28Ammo",2)
		MARH D 1 Offset(0,33) A_WeaponReady(WRF_NOPRIMARY)
		MARH C 1 Offset(0,32) A_WeaponReady(WRF_NOPRIMARY)
		MARH C 0 A_Refire("FireUlt2")
		MARH C 0 A_WeaponReady(WRF_NOFIRE)
		goto FireUltHoldCooldown
		
		FireSalvo:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
		TNT1 A 0 A_TakeInventory("RightClickFlag")
		TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
		MARH A 1 Offset(0,42) A_PlaySoundEx("weapon/searchopen","Weapon")
		MARH A 1 Offset(0,54) A_TakeInventory("RightClickFlag")
		MARH A 1 Offset(0,68) A_TakeInventory("BaseCustomFlag2")
		MARH A 10 Offset(0,84)
		
		SalvoLoop:
		MARH A 0 A_JumpIfInventory("MarsViolenceMeter",20,1)
		goto SalvoFinish
		MARH AAAAAAAAAA 3 Offset(0,88) A_GiveInventory("MarsSalvoHandler")
		MARH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"SalvoLoop")
		
		SalvoFinish:
		MARH A 13 Offset(0,84)
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6)
		MARH A 1 Offset(0,68) A_PlaySoundEx("weapon/searchopen","Weapon")
		MARH A 1 Offset(0,54) A_ClearRefire
		MARH A 1 Offset(0,42)
		MARH A 15 A_WeaponReady(WRF_NOFIRE)
		goto Ready
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		MARH A 0 A_JumpIfInventory("BaseCustomFlag2",1,"FireSalvo")
		MARH A 0 A_JumpIfInventory("BaseCustomFlag1",1,"AltfireUlt")
		MARH A 0 A_JumpIfInventory("Base56Ammo",14,1)
		goto NoAmmo
		MARH A 0 A_GunFlash("Flash")
		MARH A 0 A_GiveInventory("MarsTankAmmo",4)
		MARH A 1 Offset(0,44) ACS_NamedExecuteWithResult("VC_SetState",1)
		MARH A 1 Offset(0,56)
		MARH A 1 Offset(0,68)
		MARH A 1 Offset(0,80)
		MARH A 0 A_PlaySoundEx("weapon/binarymissile","Weapon")
		MARH A 0 A_TakeInventory("Base56Ammo",14)
		MARH A 10 A_FireCustomMissile("MarsPhotonMissile",0,0,0,24)
		MARH A 1 Offset(0,80)
		MARH A 1 Offset(0,68)
		MARH A 1 Offset(0,56)
		MARH A 1 Offset(0,44)
		MARH A 8 A_WeaponReady(WRF_NOFIRE)
		goto Ready

		AltfireUlt:
		MARH A 0 A_JumpIfInventory("Base56Ammo",7,1)
		goto NoAmmo
		MARH A 0 A_GunFlash("Flash")
		MARH A 1 Offset(0,44) ACS_NamedExecuteWithResult("VC_SetState",1)
		MARH A 1 Offset(0,56)
		MARH A 1 Offset(0,68)
		MARH A 1 Offset(0,80)

		AltfireUltHold:
		MARH A 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		goto AltfireUltCooldown
		MARH A 0 A_JumpIfInventory("Base56Ammo",7,1)
		goto AltfireUltCooldown
		MARH A 0 A_TakeInventory("Base56Ammo",7)
		MARH A 0 A_GunFlash("Flash.Ult")
		MARH A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		MARH A 0 A_PlaySoundEx("weapon/binarymissile","Weapon")
		MARH A 10 A_FireCustomMissile("MarsPhotonMissile2",0,0,0,24)
		MARH A 0 A_Refire("AltfireUltHold")

		AltfireUltCooldown:
		MARH A 1 Offset(0,80)
		MARH A 1 Offset(0,68)
		MARH A 1 Offset(0,56)
		MARH A 1 Offset(0,44)
		MARH A 8 A_WeaponReady(WRF_NOFIRE)
		MARH A 0 A_ClearRefire
		goto Ready

		User1:
		MARH A 0 A_JumpIfInventory("MarsTankAmmo",100,1)
		goto NoAmmo
		MARH A 0 A_TakeInventory("MarsTankAmmo",100)
		MARH A 1 Offset(0,44) ACS_NamedExecuteWithResult("VC_SetState",3)
		MARH A 1 Offset(0,56)
		MARH A 1 Offset(0,68)
		MARH A 1 Offset(0,80)
		MARH A 0 A_SpawnItemEx("MarsLandmine",-40)
		MARH A 0 A_PlaySoundEx("weapon/rminestick","Weapon")

		U1.Loop:
		MARH A 0 A_GiveInventory("MarsMobility1")//A_Recoil(-3)
		MARH A 0 A_PlaySoundEx("misc/sharkjoeraise","Body")
		MARH A 1 Offset(0,82) A_SpawnItemEx("MarsDashHitbox")
		MARH A 1 Offset(0,80) A_GiveInventory("MarsMobility2")//A_Recoil(-2)
		MARH A 0 A_GiveInventory("CutterFlag",1)
		MARH A 0 A_JumpIfInventory("CutterFlag",4,"U1.Mine")
		loop

		U1.Mine:
		MARH A 0 A_TakeInventory("CutterFlag",8)
		MARH A 0 A_SpawnItemEx("MarsLandmine",-40)
		MARH A 0 A_PlaySoundEx("weapon/rminestick","Weapon")
		MARH A 0 A_GiveInventory("WeaponCharge",1)
		MARH A 0 A_JumpIfInventory("WeaponCharge",4,"U1.Finish")
		goto U1.Loop

		U1.Finish:
		MARH A 0 A_TakeInventory("CutterFlag",999)
		MARH A 0 A_TakeInventory("WeaponCharge",9)
		MARH A 1 Offset(0,80) ACS_NamedExecuteWithResult("VC_SetState",4)
		MARH A 1 Offset(0,68)
		MARH A 1 Offset(0,56)
		MARH A 1 Offset(0,44)
		MARH A 8 A_WeaponReady(WRF_NOFIRE)
		goto Ready

		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,108)
		MARH A 0 A_TakeInventory("UltAttackFlag")
		MARH A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		MARH A 0 A_SpawnItemEx("MarsUltWatcher")
		MARH A 0 A_GiveInventory("UltBuildCooldownGiver",1)
		MARH A 0 A_TakeInventory("MediumLongUltimateAmmo",1)
		MARH A 1 A_GiveInventory("BaseCustomFlag1")
		goto Ready

		Flash: //Head cannon
		MARH GHIJJJJJJJJJJIIHHGG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop

		Flash.Ult: //Head cannon but shorter
		MARH JJJJJJJJJJJJJIIHHGG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop

		NoAmmo:
		MARH A 0 A_ClearRefire
		MARH A 0 A_GiveInventory("MarsTankAmmo",1)
		MARH A 0 A_GiveInventory("Base28Ammo",2)
		MARH A 3 A_GiveInventory("Base56Ammo",1)
		goto Ready
	}
}	

actor MarsTankAmmo : inventory
{
inventory.amount 1
inventory.maxamount 100
}

actor MarsViolenceMeter : inventory
{
inventory.amount 1
inventory.maxamount 40
}

actor MarsBullet
{
+MISSILE
+NOGRAVITY
Radius 8
Height 8
scale 2.5
damage (2)
speed 80
Obituary "$OB_MARS1"
damagetype "Mars"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MARE A 1
Goto Spawn+2
Death:
MMFX BCDE 2
Stop
}
}

actor MarsMachineGunPuffProj : FastProjectile
{
PROJECTILE
-NOEXPLODEFLOOR
-BOUNCEONFLOORS
Speed 2000
Damage (3)
Obituary "$OB_MARS1"
+NOGRAVITY
//+THRUACTORS
//+THRUGHOST
Radius 4
Height 4
Damagetype "MarsUlt"
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
TNT1 A 1
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/MMVBoom","Body")
TNT1 A 1 A_SpawnItemEx("MarsMachineGunPuffFX",0,0,0,0,0,0,0,1)
stop
}
}

actor MarsMachineGunPuffFX : BasicClientSide
{
Renderstyle Translucent
scale 1.5
alpha 0.7
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
MMFX BCDE 1
stop
}
}

actor MarsPhotonMissile
{
PROJECTILE
Obituary "$OB_MARS2"
+RIPPER
damage (4)
damagetype "MarsMissile"
Radius 24
Height 24
speed 40
scale 2.5
mass 17
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
MVRM D 0 A_PlaySoundEx("weapon/photonspeed","Body")
MVRM AB 1 A_ScaleVelocity(1.1)
loopit:
MVRM CDE 1 A_ScaleVelocity(1.1)
loop
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_SpawnItemEx("MarsExplodeFX")
TNT1 A 0 A_SpawnItemEx("MarsExplodeFX",0,-40,40)
TNT1 A 0 A_SpawnItemEx("MarsExplodeFX",0,-40,-40)
TNT1 A 0 A_SpawnItemEx("MarsExplodeFX",0,40,40)
TNT1 A 0 A_SpawnItemEx("MarsExplodeFX",0,40,-40)
TNT1 A 0 A_PlaySoundEx("weapon/drillexplode","Body")
TNT1 A 3 A_Explode(mass,128,0,0,32)
stop
}
}	

actor MarsPhotonMissile2 : MarsPhotonMissile
{
Translation "42:198=241:241"
damage (5)
damagetype "MarsUlt"
speed 45
mass 30
-RIPPER
}	

actor MarsExplodeFX : NapalmExplodeFX
{
Translation "207:227=227:227", "0:4=209:209"
}

actor MarsDashHitbox
{
species "DustManType"
+THRUSPECIES
PROJECTILE
Obituary "$OB_MARS3"
damage (2)
damagetype "Mars"
Radius 60
Height 60
speed 0
scale 2.5
States
{
Spawn:
TNT1 A 2
stop
}
}

actor MarsLandmine
{
translation "211:211=196:196", "220:220=71:71"
+MISSILE
Radius 32
Height 16
scale 2.5
Obituary "$OB_MARS4"
damagetype "Mars"
speed 0
damage (0)
+CANBOUNCEWATER
-EXPLODEONWATER
//+NOEXPLODEFLOOR
-DONTBLAST
+DONTREFLECT
States
{
Spawn:
MARD AA 0 A_GiveInventory("ProjectileCode",1)
MARD A 13
Death:
TNT1 A 0 A_SpawnItemEx("MarsMine2")
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("MarsMineTrigger")
stop
}
}

actor MarsMine2 : MarsLandmine
{
States
{
Spawn:
MARD AA 0 A_GiveInventory("ProjectileCode",1)
MARD A 400
Death:
TNT1 A 0 A_SpawnItemEx("MarsMineTrigger")
stop
}
}

actor MarsMineTrigger : MarsLandmine
{
translation "207:227=71:71"
Radius 0
Height 0
+RIPPER
States
{
Spawn:
MARD AA 0 A_GiveInventory("ProjectileCode",1)
MARD BCD 1
NAPA A 0 A_Stop
NAPA A 0 A_PlaySoundEx("weapon/marsmineexplode", "Weapon")
NAPA A 0 A_ChangeFlag("NOGRAVITY",1)
NAPA A 0 A_Explode(40, 64, 0)
NAPA EFGHIJKLMNOPQRS 1
stop
Death:
XDeath:
TNT1 A 0
Stop
}
}

actor MarsUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+NOTARGETSWITCH
+MISSILE
States
{
Spawn:
TNT1 A 0 A_GiveToTarget("MarsUltColor1")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("MediumLongUltimateAmmo",1)
TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1)
goto Death
TNT1 A 0 A_GiveToTarget("MarsUltColor2")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("MediumLongUltimateAmmo",1)
TNT1 A 1 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,"Spawn")
TNT1 A 1 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,"Spawn")
Death:
TNT1 A 0 A_GiveToTarget("MarsNormalColor")
TNT1 A 0 A_TakeFromTarget("MediumLongUltimateAmmo",400) //Just in case
TNT1 A 0 A_TakeFromTarget("BaseCustomFlag1")
TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown",1)
stop
}
}

actor MarsUltColor1 : CustomInventory
{
states
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(971,0,1963)
stop
}
}

actor MarsUltColor2 : CustomInventory
{
states
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(971,0,2963)
stop
}
}

actor MarsNormalColor : CustomInventory
{
states
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(991,0,5963)
stop
}
}

actor MarsSmoke : BasicClientSide
{
renderstyle translucent
alpha 0.8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_FadeOut(random(0.7,0.8))
MARD EEFFGGHH 1 ThrustthingZ(0,2,0,1)
stop
}
}

actor MarsSalvoFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MARB BC 2
stop
}
}

actor MarsMissile
{
translation "204:204=220:220"
PROJECTILE
-EXTREMEDEATH
+SEEKERMISSILE
+SCREENSEEKER
damagetype "MarsHoming"
Obituary "$OB_MARS5"
Damage (5)
radius 8
height 8
Speed 20
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MAR2 A 2
MAR2 C 0 A_ChangeVelocity(10,0,10,CVF_RELATIVE|CVF_REPLACE)
MAR2 BCD 2
MAR2 C 0 A_ChangeVelocity(20,0,0,CVF_RELATIVE|CVF_REPLACE)

loopit:
TNT1 A 0 A_JumpIf(momz>16, "Up")
TNT1 A 0 A_JumpIf(momz>8, "AngleUp")
TNT1 A 0 A_JumpIf(momz<-8, "AngleDown")
TNT1 A 0 A_JumpIf(momz<-16, "Down")
MAR2 EEFF 1 A_SeekerMissile(4,16,SMF_LOOK|SMF_PRECISE,256,6)
loop

Up:
MAR2 AABB 1 A_SeekerMissile(4,16,SMF_LOOK|SMF_PRECISE,256,6)
goto loopit

AngleUp:
MAR2 CCDD 1 A_SeekerMissile(4,16,SMF_LOOK|SMF_PRECISE,256,6)
goto loopit

AngleDown:
MAR2 GGHH 1 A_SeekerMissile(4,16,SMF_LOOK|SMF_PRECISE,256,6)
goto loopit

Down:
MAR2 IIJJ 1 A_SeekerMissile(4,16,SMF_LOOK|SMF_PRECISE,256,10)
goto loopit

Death:
TNT1 A 0 A_PlaySoundEx("weapon/MMVBoom","Body")
X_VC PQQRRSSPP 1 A_Stop
stop
}
}

actor MarsSalvoHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("MarsViolenceMeter",2)
TNT1 A 0 A_PlaySoundEx("weapon/marssalvo","Weapon")
TNT1 A 0 A_PlaySoundEx("weapon/MMVShot","Body")
TNT1 A 0 A_SpawnItemEx("MarsSalvoFX",-5,0,60)
TNT1 A 0 A_SpawnItemEx("MarsMissile",-5,0,60,0,0,20,random(-4,4))
stop
}
}

actor MarsViolenceWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+NOTARGETSWITCH
+MISSILE
States
{
Spawn:
TNT1 A 3

loopit:
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("MarsViolenceMeter",40,"Spawn4")
TNT1 A 0 A_JumpIfInTargetInventory("MarsViolenceMeter",30,"Spawn3")
TNT1 A 0 A_JumpIfInTargetInventory("MarsViolenceMeter",20,"Spawn2")
TNT1 A 0 A_JumpIfInTargetInventory("MarsViolenceMeter",10,"Spawn1")
TNT1 A 0 A_TakeFromTarget("MarsSpeed1")
TNT1 A 0 A_TakeFromTarget("MarsSpeed2")
TNT1 A 0 A_TakeFromTarget("MarsSpeed3")
TNT1 A 0 A_TakeFromTarget("MarsSpeed4")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop

Spawn1:
TNT1 A 0 A_GiveToTarget("MarsSpeed1")
TNT1 A 0 A_TakeFromTarget("MarsSpeed2")
TNT1 A 0 A_TakeFromTarget("MarsSpeed3")
TNT1 A 0 A_TakeFromTarget("MarsSpeed4")
goto loopit

Spawn2:
TNT1 A 0 A_SpawnItemEx("MarsSmoke", random(8, 24), 0, random(24, 56), random(2,4), 0, random(1,4), random(0, 359))
TNT1 A 0 A_TakeFromTarget("MarsSpeed1")
TNT1 A 0 A_GiveToTarget("MarsSpeed2")
TNT1 A 0 A_TakeFromTarget("MarsSpeed3")
TNT1 A 0 A_TakeFromTarget("MarsSpeed4")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
goto loopit

Spawn3:
TNT1 A 0 A_SpawnItemEx("MarsSmoke", random(8, 24), 0, random(24, 56), random(2,4), 0, random(1,4), random(0, 359))
TNT1 A 0 A_TakeFromTarget("MarsSpeed1")
TNT1 A 0 A_TakeFromTarget("MarsSpeed2")
TNT1 A 0 A_GiveToTarget("MarsSpeed3")
TNT1 A 0 A_TakeFromTarget("MarsSpeed4")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
goto loopit

Spawn4:
TNT1 A 0 A_SpawnItemEx("MarsSmoke", random(8, 24), 0, random(24, 56), random(2,4), 0, random(1,4), random(0, 359))
TNT1 A 0 A_TakeFromTarget("MarsSpeed1")
TNT1 A 0 A_TakeFromTarget("MarsSpeed2")
TNT1 A 0 A_TakeFromTarget("MarsSpeed3")
TNT1 A 0 A_GiveToTarget("MarsSpeed4")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
goto loopit

Death:
TNT1 A 0
stop
}
}

actor MarsSpeed1 : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration 0x7FFFFFFD
Speed 1.05
}

actor MarsSpeed2 : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration 0x7FFFFFFD
Speed 1.1
}

actor MarsSpeed3 : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration 0x7FFFFFFD
Speed 1.15
}

actor MarsSpeed4 : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration 0x7FFFFFFD
Speed 1.2
}

actor MarsMobility1 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_Recoil(CallACS("VC_XYMob",-3))
stop
}
}

actor MarsMobility2 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_Recoil(CallACS("VC_XYMob",-2))
stop
}
}