////////////////
// BOSS START //
////////////////
actor BossStarterExecution : CustomInventory {States {Pickup:
TNT1 A 0 A_JumpIfInventory("BossStarterHasExecuted",1,"No")
TNT1 A 0 A_GiveInventory("BossStarterHasExecuted",1)
TNT1 A 0 A_GiveInventory("TakeCopyWeapons",1)
TNT1 A 0 ACS_ExecuteAlways(804,0,255)
TNT1 A 0 ACS_ExecuteAlways(808,0)
TNT1 A 0 A_SpawnItem("BTWIMRIGHTHERE")
TNT1 A 0 A_SpawnItem("SuperJumpGive")
stop
No: TNT1 A 0 
stop}}

actor BossStarterHasExecuted : OnceC {}


///////////////////
// RAGE COUNTERS //
///////////////////
actor BossRageCharge : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 500 }
actor BossRageChargeNEO : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 4500 }
actor BossRageCharge1SP : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 750 }
actor BossRageCharge2 : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 1000 }
actor BossRageCharge3 : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 1500 }
actor BossRageCharge4 : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 2000 }
actor BossRageCharge0 : Ammo {+INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 250}

/////////////////////////
// SUPER JUMP COUNTERS //
/////////////////////////

actor BossJumpCharge : Ammo{ +INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 96 }
actor BossJumpChargeG : Ammo { +INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 80 }
actor BossJumpChargeH : Ammo { +INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 125 }
actor BossJumpChargeBX : Ammo { +INVENTORY.IGNORESKILL inventory.amount 1 inventory.maxamount 192 }

actor JumpChargeStop : OnceC {} //Stops the charge.

actor JumpChargeSpeed0 : OnceC {} //Faster Speed (1 every tic)
actor JumpChargeSpeed1 : OnceC {} //Default Speed (1 every 2 tics) //Unused, since it defaults.
actor JumpChargeSpeed2 : OnceC {} //Slower Speed (1 every 3 tics)
actor JumpChargeSpeed3 : OnceC {} //Sluggish Speed (1 every 4 tics)

actor SuperJumpGive
{
PROJECTILE
+NOINTERACTION
+DONTBLAST
states
{
Spawn:
TNT1 A 0
NormalCharge:
TNT1 A 2

TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeStop", 1, "HoldIt")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeSpeed0",1,"FasterCharge")
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeSpeed2",1,"SlowerSpeed")
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeSpeed3",1,"SluggishSpeed")

TNT1 A 0 A_GiveToTarget("BossJumpCharge", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeG", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeH", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeBX", 1)

loop
FasterCharge:
TNT1 A 1
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeStop", 1, "HoldIt")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
TNT1 A 0 A_GiveToTarget("BossJumpCharge", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeG", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeH", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeBX", 1)
loop
SlowerSpeed:
TNT1 A 3
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeStop", 1, "HoldIt")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
TNT1 A 0 A_GiveToTarget("BossJumpCharge", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeG", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeH", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeBX", 1)
loop
SluggishSpeed:
TNT1 A 4
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeStop", 1, "HoldIt")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead", 1, "Death")
TNT1 A 0 A_GiveToTarget("BossJumpCharge", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeG", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeH", 1)
TNT1 A 0 A_GiveToTarget("BossJumpChargeBX", 1)
loop

HoldIt:
TNT1 A 1
TNT1 A 0 A_JumpIfInTargetInventory("JumpChargeStop", 1, "HoldIt")
goto NormalCharge
Death:
TNT1 A 0
stop}}

////////////////
// SUPER JUMP //
////////////////
actor BossJumpItem : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "SXISI1"
tag "-==Super Jump==-"
+INVENTORY.UNDROPPABLE
+COUNTITEM
+INVBAR
states
{
Spawn:
TNT1 A 0
loop
Use:
TNT1 A 0 A_JumpIfInventory("InBoat",1,2)
TNT1 A 0 A_JumpIfInventory("BossJumpCharge", 96,"Jump")
TNT1 A 0
fail
Jump:
TNT1 A 0 A_TakeInventory("BossJumpCharge",1000)
TNT1 A 0 A_PlaySoundEx("item/refill","Item")
TNT1 A 0 A_GiveInventory("BossJumpVoice",1)
TNT1 A 1 ThrustThingZ(0,120,0,0)
TNT1 A 1 A_TakeInventory("JumpCancler",1)
TNT1 A 0
}
}
actor BossJumpVoice : CustomInventory {States {Pickup:
TNT1 A 0 
TNT1 A 0 A_JumpIfInventory("SaxtonBossWeapon",1,"Boss1")
TNT1 A 0 A_JumpIfInventory("StarmanBossWeapon",1,"Boss2")
TNT1 A 0 A_JumpIfInventory("CaveBossWeapon",1,"Boss3")
TNT1 A 0 A_JumpIfInventory("SniperBossWeapon",1,"Boss4")
TNT1 A 0 A_JumpIfInventory("NinjaSpyBossWeapon",1,"Boss5")
TNT1 A 0 A_JumpIfInventory("ChoZoWeapon",1,"Boss6")
TNT1 A 0 A_JumpIfInventory("FalconBossWeapon",1,"Boss11")
TNT1 A 0 A_JumpIfInventory("RemiliaBossWeapon",1,"Boss12")
TNT1 A 0 A_JumpIfInventory("UnknownRMBossWeapon",1,"Boss13")
TNT1 A 0 A_JumpIfInventory("PissedOffSwing",1,"Boss15")
TNT1 A 0 A_JumpIfInventory("MudkipBossWeapon",1,"Boss16")
TNT1 A 0 A_JumpIfInventory("SuperMachoManBossWeapon",1,"Boss18")
TNT1 A 0 A_JumpIfInventory("SeemanBossWeapon",1,"Boss201a")
TNT1 A 0 A_JumpIfInventory("SeeldierBossWeapon",1,"Boss201b")
goto Boss0
Boss0:
TNT1 A 0 A_PlaySoundEx("item/refill","Item")
stop
Boss1: //Saxton
TNT1 A 0 A_PlaySoundEx("Saxton/Jump","Item")
stop
Boss2: //Starman
TNT1 A 0 A_PlaySoundEx("Starman/Jump","Item")
stop
Boss3: //Cave
TNT1 A 0 A_PlaySoundEx("Cave/Jump","Item")
stop
Boss4: //Sniper
TNT1 A 0 A_PlaySoundEx("Sniper/Jump","Item")
stop
Boss5: //Spy
TNT1 A 0 A_PlaySoundEx("NinjaSpy/Jump","Item")
stop
Boss6: //ChoZo
TNT1 A 0 A_PlaySoundEx("CHOZO/JUNP","Item")
stop
Boss11: //Falcon
TNT1 A 0 A_PlaySoundEx("Falcon/Jump","Item")
stop
Boss12: //Remilia
TNT1 A 0 A_PlaySoundEx("RemiliaScarlet/Jump","Item")
stop
Boss13: //Frankenstone 
TNT1 A 0 A_PlaySoundEx("Franken/Jump","Item")
stop
Boss15: //Roll
TNT1 A 0 A_PlaySoundEx("misc/PissedOffJump","Item")
stop
Boss16: //Mudkip
TNT1 A 0 A_SpawnItemEx("WhirlPoolAssist2", 0, 0, 0, 0, 0, 0)
TNT1 A 0 A_GiveInventory("MudkipImmunity", 1)
//TNT1 A 1 ThrustThingZ(0,70,0,0)
TNT1 A 0 A_PlaySoundEx("Mudkip/Pokemon","Item")
TNT1 A 0 A_PlaySoundEx("Mudkip/Whirlpool","Body")
stop
Boss18: //Macho
TNT1 A 0 A_PlaySoundEx("SuperMachoMan/Jump","Item")
stop
Boss201a: //Seeman
TNT1 A 0 A_PlaySoundEx("Seemen/See1","Item")
stop
Boss201b: //Seeldier
TNT1 A 0 A_PlaySoundEx("Seemen/See2","Item")
stop
}}
