//Mobility recoded
actor Napalmman : SemiHighArmorClass
{
	Player.ScoreIcon "NAPAMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "SemiHighArmor"
	player.soundclass "napalmmanc"
	player.displayname "Napalmman"
	player.jumpz 12
	player.forwardmove 0.75, 0.75
	player.sidemove 0.73, 0.73
	player.startitem "NapalmBombBoss"
	player.startitem "Base56Ammo", 56
	player.startitem "NapalmDashAmmo", 56
	player.startitem "CanThirdFire"
	player.startitem "UltimateAttackItem2", 1
	player.startitem "UltSoundWatcherSpawn2"
	player.startitem "IsFromMM5"
	Player.ViewHeight 53
	States
	{
		Animation3:
		Spawn:
		NAPM A 0
		NAPM B 1 A_JumpIf(z-floorz>0, "JumpSP")
		NAPM A 1 A_JumpIf(z-floorz>0, "JumpSP")
		Goto Spawn+2
		See:
		NAPM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "JumpSP")
		Goto Spawn
		
		Missile:
		NAPM F 0 A_JumpIfInventory("NapmFireFlag1",1,"Missile2")
		NAPM JJJJFFGGGG 1 A_JumpIfInventory("NapmFireFlag1",1,"Missile2")
		Goto Spawn+1
		
		Animation1:
		Missile2:
		NAP2 CCCCCDDDD 1 A_JumpIf(z-floorz>0,"Missile2F")
		Goto Spawn+2
		Missile2F:
		NAP2 AAAAABBBB 1 A_JumpIf(z-floorz<=0,"Spawn")
		Goto Spawn+2
		
		JumpSP:
		NAPM I 1 A_JumpIfInventory("NapmFireFlag1",1,"Missile2")
		NAPM I 0 A_JumpIf(z-floorz<=0, "Spawn")
		loop
		
		Animation2:
		NAPM BCDE 2
		loop
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		NAPM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		NAPM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		NAPM H 20 ACS_ExecuteAlways(999,0,0)
		NAPM H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFX",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		NAPM A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("NapalmBombWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("NapalmBombWepM")
		goto ClassDeath
	}
}

actor NapalmBombBoss : VCBaseWeapon //UltAttackFlag
{
	Obituary "$OB_NAPALMMAN1"
	weapon.ammotype "Base56Ammo"
	weapon.ammotype2 "Base56Ammo"
	weapon.ammouse 8
	Weapon.AmmoUse2 2
	+WEAPON.NOAUTOAIM
	States
	{
		Ready:
		TNT1 A 0
		NPAR A 0 A_JumpIfInventory("NapalmDashAmmo",56,"Ready.TF")
		NPAR A 1 A_WeaponReady NPAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		NPAR A 1 A_WeaponReady NPAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		NPAR A 1 A_WeaponReady NPAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		NPAR A 0 A_GiveInventory("NapalmDashAmmo",1)
		NPAR A 0 A_GiveInventory("Base56Ammo",2)
		Goto Ready
		
		Ready.TF:
		NPAR A 1 A_WeaponReady NPAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") NPAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		NPAR A 1 A_WeaponReady NPAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") NPAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		NPAR A 1 A_WeaponReady NPAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") NPAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		NPAR A 0 A_GiveInventory("NapalmDashAmmo",1)
		NPAR A 0 A_GiveInventory("Base56Ammo",2)
		Goto Ready
		
		Deselect:
		TNT1 A 0 A_GunFlash("NoFlash")
		DeselectX:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		NPAR A 1 A_Lower
		Loop
		Select:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(991,0,806)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		NPAR A 1 A_Raise
		Loop
		
		Fire:
		NPAR B 0 A_JumpIfNoAmmo("NoAmmo")
		NPAR B 0 A_GiveInventory("NapmFireFlag1",1)
		NPAR B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		NPAR B 0 A_FireCustomMissile("NapalmBomb_B",0,0,16,16)
		NPAR B 0 A_FireCustomMissile("NapalmBomb_B",0,0,-16,16)
		NPAR B 0 A_TakeInventory("Base56Ammo",8)
		NPAR BCHHHHHHHHHHH 2
		NPAR IJKL 2
		NPAR A 1
		NPAR B 0 A_Refire
		goto Ready
		
		AltFire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)>1 || CallACS("VC_CheckBtn",5)>1,"AltFireFire")
		NPAR A 1 A_JumpIfInventory("Base56Ammo",8,"ShoulderMissilesRev")
		goto NoAmmo
		
		AltFireFire:
		NPAR A 1 Offset(0,36)
		NPAR A 1 Offset(0,44)
		NPAR A 1 Offset(0,52) A_GunFlash
		NPAR A 1 Offset(0,64)
		NPAR A 0 A_PlaySoundEx("weapon/napalmrocket", "Weapon")
		NPAR A 0 A_PlaySoundEx("weapon/mbuster","Body")
		NPAR A 0 A_SpawnItemEx("NapalmShotFX",8,0,56)
		NPAR A 0 A_FireCustomMissile("NapalmHeadMissile",0,0,0,32)
		NPAR A 0 A_TakeInventory("Base56Ammo",8)
		NPAR A 2 Offset(0,52)
		NPAR A 2 Offset(0,44)
		NPAR A 2 Offset(0,36)
		NPAR A 2 Offset(0,32)
		NPAR A 14
		NPAR A 0 A_Refire
		goto Ready
		
		Flash:
		NPAR DEFG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		NPAR GGGGGGGG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		Goto Flash.GoBack
		
		Flash.Waiting:
		NPAR DEFG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		NPAR GGGGGGGG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		wait
		//I said go back
		
		Flash.GoBack:
		NPAR GFED 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		Stop
		
		ShoulderMissilesRev:
		NPAR A 1
		NPAR A 0 A_JumpIfNoAmmo("NoAmmo")
		NPAR A 1 Offset(0,36) A_GunFlash("Flash.Waiting")
		NPAR A 1 Offset(0,44)
		NPAR A 1 Offset(0,52)
		NPAR A 1 Offset(0,64)
		NPAR A 0 A_Jump(256,"ShoulderMissilesFire_L","ShoulderMissilesFire_R")
		goto ShoulderMissilesFire_L
		
		ShoulderMissilesFire_L:
		NPAR A 3 Offset(0,64)
		NPAR A 0 A_PlaySoundEx("weapon/napalmshoulder","Auto")
		NPAR A 0 A_SpawnItemEx("NapalmShotFX",-2,-24,56)
		NPAR A 0 A_FireCustomMissile("NapalmShoulderMissile",0,1,-24,32)
		NPAR A 0 A_JumpIfNoAmmo("ShoulderMissilesEnd")
		NPAR A 0 SetPlayerProperty(0,1,0)
		NPAR A 0 A_Refire("ShoulderMissilesFire_R")
		goto ShoulderMissilesEnd
		
		ShoulderMissilesFire_R:
		NPAR A 3 Offset(0,64)
		NPAR A 0 A_JumpIfNoAmmo("ShoulderMissilesEnd")
		NPAR A 0 A_PlaySoundEx("weapon/napalmshoulder","Auto")
		NPAR A 0 A_SpawnItemEx("NapalmShotFX",-2,24,56)
		NPAR A 0 A_FireCustomMissile("NapalmShoulderMissile",0,1,24,32)
		NPAR A 0 A_JumpIfNoAmmo("ShoulderMissilesEnd")
		NPAR A 0 SetPlayerProperty(0,1,0)
		NPAR A 0 A_Refire("ShoulderMissilesFire_L")
		goto ShoulderMissilesEnd
		
		ShoulderMissilesEnd:
		NPAR A 1 Offset(0,52)
		NPAR A 1 Offset(0,44) A_GunFlash("Flash.GoBack")
		NPAR A 1 Offset(0,36)
		NPAR A 1 Offset(0,32)
		ShoulderMissilesEnd2:
		NPAR A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		NPAR A 0 SetPlayerProperty(0,0,0)
		goto Ready
		
		User1:
		NPAR A 1 ACS_NamedExecuteWithResult("VC_SetState",2)
		NPAR A 0 A_SpawnItemEx("NapalmLeapHitbox",-100,0,8)
		NPAR A 0 A_PlaySoundEx("weapon/superboost","Voice")
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,-16,32,-10,0,-6,0,16384)
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,16,32,-10,0,-6,0,16384)
		NPAR A 0 A_ChangeVelocity(CallACS("VC_XYMob",35),0,0,CVF_RELATIVE|CVF_REPLACE)
		NPAR A 0 //ThrustThingZ(0,70,0,1)
		NPAR A 0 A_TakeInventory("NapalmDashAmmo",39)
		NPAR M 1 A_WeaponReady
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,-16,32,-10,0,-6,0,16384)
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,16,32,-10,0,-6,0,16384)
		NPAR N 1 A_WeaponReady
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,-16,32,-10,0,-6,0,16384)
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,16,32,-10,0,-6,0,16384)
		NPAR A 0 A_GiveInventory("Base56Ammo",2)
		NPAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1_1")
		goto Ready
		
		User1_1:
		NPAR O 1 A_PlaySoundEx("weapon/napalmtank","Weapon")
		NPAR A 0 A_JumpIfInventory("NapalmDashAmmo",1,"NapalmDash_1")
		goto U1.Stop
		NapalmDash_1:
		TNT1 A 0 A_SpawnItemEx("NapalmDashHitbox")
		NPAR P 1 A_PlaySoundEx("misc/sharkjoeraise","Body")
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,-16,32,-10,0,-6)
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,16,32,-10,0,-6)
		NPAR A 0 A_ChangeVelocity(6,0,0,CVF_RELATIVE)
		NPAR A 0 A_TakeInventory("NapalmDashAmmo",2)
		TNT1 A 0 A_SpawnItemEx("NapalmDashHitbox")
		NPAR O 1 A_WeaponReady
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,-16,32,-10,0,-6)
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,16,32,-10,0,-6)
		TNT1 A 0 A_SpawnItemEx("NapalmDashHitbox")
		NPAR P 1 A_WeaponReady
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,-16,32,-10,0,-6)
		NPAR A 0 A_SpawnItemEx("NapalmDashFX",-32,16,32,-10,0,-6)
		NPAR A 0 A_GiveInventory("Base56Ammo",2)
		NPAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1_1")
		U1.Stop:
		NPAR NMA 1 ACS_NamedExecuteWithResult("VC_SetState",3)
		goto Ready
		
		NoAmmo:
		NPAR A 3
		NPAR A 0 SetPlayerProperty(0,0,0)
		NPAR A 0 A_GiveInventory("NapalmDashAmmo",1)
		NPAR A 0 A_GiveInventory("Base56Ammo",2)
		goto Ready
		
		// Ult
		UltimateAttack:
		TNT1 A 0 A_Quake(3,10,0,128)
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,40)
		NPAR A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		NPAR B 0 A_PlaySoundEx("weapon/drillbomb","Weapon")
		NPAR B 0 A_PlaySoundEx("weapon/napalmrocket","Body")
		NPAR B 0 A_GiveInventory("NapalmUltCooldown")
		NPAR B 0 A_FireCustomMissile("NapalmUltBomb",0,0,0,8)
		NPAR BCHIJKL 2 A_TakeInventory("MediumShortUltimateAmmo",999)
		NPAR A 7
		NPAR A 0 A_TakeInventory("UltAttackFlag")
		goto Ready
	}
}

actor NapalmDashAmmo : Inventory {inventory.maxamount 56}
actor NapmFireFlag1 : Powerup {powerup.duration 4 inventory.maxamount 1}

actor NapalmBomb_B
{
	Obituary "$OB_NAPALMMAN1"
	DamageType "Napalmman"
	PROJECTILE
	-NOGRAVITY
	Radius 6
	Height 25//8
	Speed 35
	Damage (3)
	Scale 2.5
	Gravity 0.8
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 0 ThrustThingZ(0,12,0,1)
		SpawnL:
		NBOM ABCD 3
		loop

		Death:
		NAPA E 0 A_Stop
		NAPA E 0 A_PlaySoundEx("weapon/napalm", "Weapon")
		NAPA E 0 A_ChangeFlag("NOGRAVITY",1)
		NAPA E 0 A_Explode(14, 72, 0, 0, 24)
		NAPA EFGHIJKLMNOPQRS 1
		stop
	}
}

actor NapalmShoulderMissile
{
	DamageType "Napalmman"
	PROJECTILE
	Obituary "$OB_NAPALMMAN2"
	Speed 8
	Radius 4
	Height 8//2
	Damage (2)
	Scale 2.5
	States
	{
		Spawn:
		NATO AA 0 A_GiveInventory("ProjectileCode",1)
		NATO AAAAA 2 A_ScaleVelocity(1.45)
		NATO A 1 //A_SpawnItemEx("NapalmSMTrail",0,0,0,0,0,0,0,0)
		wait
		
		Death:
		NAMI B 0 A_SetScale(1.5)
		NAMI B 0 A_Stop
		NAMI B 0 A_PlaySoundEx("weapon/napalm", "Weapon")
		NAMI B 0 A_ChangeFlag("NOGRAVITY",1)
		NAMI B 0 A_Explode(8, 64, 0, 0, 16)
		NAMI BCDEF 2
		stop
	}
}

actor NapalmSMTrail : BasicClientside
{
	Scale 0.65
	RenderStyle translucent
	Alpha 0.6
	States
	{
		Spawn:
		MMFX BB 0 A_GiveInventory("ProjectileCode",1)
		MMFX BCDE 1
		stop
	}
}

actor NapalmShotFX : BasicClientside
{
	Scale 1.75
	States
	{
		Spawn:
		MMFX BB 0 A_GiveInventory("ProjectileFXCode",1)
		MMFX BCDE 1
		stop
	}
}

actor NapalmHeadMissile
{
	DamageType "Napalmman"
	PROJECTILE
	Obituary "$OB_NAPALMMAN3"
	Speed 35
	Radius 6//4
	Height 12//2
	Damage (4)
	Scale 2.5
	States
	{
		Spawn:
		NAMI AA 0 A_GiveInventory("ProjectileCode",1)
		NAMI A 0 A_PlaySoundEx("weapon/drillfly","Body")
		NAMI AAA 1 A_SpawnItemEx("NapalmHeadMissileFX",-2,0,1,random(-1,0),random(-1,1),random(-1,1))
		loop
		
		Death:
		NBOM A 0 A_JumpIfCloser(156,"RJump")
		goto DeathC
		XDeath:
		DeathC:
		NBOM A 0 A_Stop
		NBOM A 0 A_PlaySoundEx("weapon/napalmnew", "Body")
		NBOM A 0 A_PlaySoundEx("weapon/hyperbomb", "Weapon")
		NBOM A 0 A_PlaySoundEx("weapon/drillexplode", "Auto")
		NBOM A 0 A_ChangeFlag("NOGRAVITY",1)
		NBOM D 0 A_Explode(18, 200, 0, 0, 96)
		NAPA EFGHIJKLMNOPQRS 1
		stop
		
		RJump:
		NBOM A 0 A_GiveToTarget("NapalmRocketJump")
		goto DeathC
	}
}

actor NapalmHeadMissileFX : BasicClientSide
{
renderstyle add
	States
	{
	Spawn:
	TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
	GRES EFE 2
	GRES FFEEFF 1 A_FadeOut(0.20)
	Goto Spawn+3
	}
}

actor NapalmRocketJumpPS : PowerSpeed
{
	+POWERSPEED.NOTRAIL
	Speed 2.75
	PowerUp.Duration 25
}

actor NapalmRocketJump : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(z-floorz==0,"Floor")
		TNT1 A 0 ThrustThingZ(0,45,0,1)
		goto Floor+1
		Floor:
		TNT1 A 0 ThrustThingZ(0,75,0,1)
		TNT1 A 0 A_GiveInventory("NapalmRocketJumpPS")
		stop
	}
}

actor NapalmDashFX : BasicClientside
{
	RenderStyle Add
	Alpha 0.75
	Scale 1.5
	States
	{
		Spawn:
		ASEX AAAAA 1 A_SetScale(ScaleX - 0.25)
		stop
	}
}

actor NapalmLeapHitbox
{
	PROJECTILE
	+NOINTERACTION
	Renderstyle Add
	Alpha 0.45
	DamageType "NapalmDash"
	Obituary "$OB_NAPALMMAN4"
	Scale 1.75
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 0 A_Explode(18,96,0,0,64)
		ASEX ABCDE 1
		stop
	}
}

actor NapalmUltBomb
{
	Obituary "$OB_NAPALMMAN5"
	DamageType "NapalmUlt"
	PROJECTILE
	-NOGRAVITY
	Radius 16
	Height 16
	Speed 50
	Damage (20)
	Scale 2.5
	Gravity 0.8
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 0 ThrustThingZ(0,20,0,1)
		TNT1 A 0 A_GiveToTarget("NapalmUltCooldown")
		TNT1 A 0 A_PlaySoundEx("weapon/napalmultfall","Body")
		SpawnL:
		NBOU A 1 A_SpawnItemEx("NapalmUltEcho",0,0,0,0,0,0,0,1)
		loop

		Death:
		TNT1 A 0 A_StopSoundEx("Body")
		TNT1 A 1 A_SpawnItemEx("NapalmUltExplosion")
		stop
	}
}

actor NapalmUltEcho : BasicClientSide
{
renderstyle add
alpha 0.5
States
{
Spawn:
TNT1 A 2
loopit:
NBOU A 0 A_SetScale(scalex-0.25, scaley-0.25)
NBOU A 1 A_FadeOut(0.05)
loop
}
}

actor NapalmUltExplosion
{
	Obituary "$OB_NAPALMMAN5"
	damagetype "NapalmUlt"
	PROJECTILE
	+NOINTERACTION
	+NOGRAVITY
	reactiontime 40
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode")
		TNT1 A 0 A_PlaySoundEx("weapon/napalmult", "Weapon")
		TNT1 A 0 A_Quake(3,120,0,256)
		
		loopit:
		TNT1 A 0 A_GiveToTarget("NapalmUltCooldown")
		TNT1 A 0 A_SpawnItemEx("NapalmUltExplodeFX",random(0,64),0,random(0,32),0,0,0,random(0,359))
		TNT1 A 0 A_Explode(8, 128, 0, 0, 32)
		TNT1 A 3 A_Countdown
		loop
		
		Death:
		TNT1 A 0
		stop
	}
}

actor NapalmUltExplodeFX : BasicClientside
{
	scale 2.5
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		NBOU BCDE 2
		stop
	}
}

actor NapalmUltCooldown : UltBuildCooldownGiver
{
Powerup.Duration 35
}

actor NapalmDashHitbox : BasicExplosion
{
DamageType "NapalmBoost"
Obituary "$OB_NAPALMMAN4"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(13,48,0,0,48)
stop
}
}

actor NapalmBoostProtect : PowerProtection
{
Powerup.Duration 35
DamageFactor "NapalmBoost", 0.0
}