actor BusterExpert : BasisForHales
{
//May the Unholy be with me...
player.soundclass "BOSS501"
player.forwardmove 0.90, 0.90
player.sidemove 0.90, 0.90
player.jumpz 11
player.morphweapon "GreatBusterBossWeapon"
Translation "192:192=86:86, 198:198=94:94"
States
{
Spawn:
BX01 A 0
BX01 A 0 A_JumpIfInventory("TruePowerFlag",1,3)
BX01 B 1
BX01 A -1
BX02 B 1
BX02 A 1
wait
See:
"####" B 0 A_JumpIfInventory("TruePowerFlag",1,"SeeR")
BX01 BCDE 5
Goto Spawn
SeeR:
BX02 BCDE 5
Goto Spawn
Missile:
"####" B 0 A_JumpIfInventory("TruePowerFlag",1,"FireR")
BX01 F 5
BX01 G 4
goto Spawn
FireR:
BX02 F 4
BX02 G 4
goto Spawn
BossPain:
"####" B 0 A_JumpIfInventory("TruePowerFlag",1,"PainR")
BX01 H 0 A_PlaySound("misc/devilpain")
BX01 HHHHHHHHH 2 A_SpawnItem("PainFX",-3,25)
BX01 H 0 SetPlayerProperty(0,0,1)
Goto Spawn
PainR:
BX02 H 0 A_PlaySound("misc/devilpain")
BX02 HHHHHHHHH 2 A_SpawnItem("PainFX",-3,25)
BX02 H 0 SetPlayerProperty(0,0,1)
Goto Spawn
Pain.TimeStopper:
Pain.RNCZaWarudo:
"####" B 0 A_JumpIfInventory("TruePowerFlag",1,"ZaWarudoR")
TNT1 A 0 SetPlayerProperty(0,1,4) TNT1 A 0 A_GiveInventory("DioFlashTimeHUD", 1) TNT1 A 0 A_SpawnItem("ZaWarudoHaleFix")
BX01 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
BX01 A 1 SetPlayerProperty(0,0,4)
Goto Spawn
ZaWarudoR:
TNT1 A 0 SetPlayerProperty(0,1,4) TNT1 A 0 A_GiveInventory("DioFlashTimeHUD", 1) TNT1 A 0 A_SpawnItem("ZaWarudoHaleFix")
BX02 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
BX02 A 1 SetPlayerProperty(0,0,4)
Goto Spawn

Death:
/*BX02 H 0 SetPlayerProperty(0,0,4)  
BX02 H 0 A_NoBlocking
BX02 H 0 A_Stop
BX02 H 1 A_GiveToTarget("KilledMe",1)
BX02 H 18
BX02 H 0 ACS_ExecuteAlways(400,0,437)
BX02 H 0 SetPlayerProperty(0,0,4)
BX02 H 0 A_PlayerScream
PLAY H 0 A_SpawnItemEx("FakeDeathFX", 0, 0, 32)
PLAY Z -1
//PLAY Z 1 A_CheckPlayerDone
wait*/
BX02 H 0 A_Stop
BX02 H 0 SetPlayerProperty(0,0,4)  
BX02 H 0 A_ChangeFlag("NOGRAVITY",1)
BX02 H 0 ACS_ExecuteAlways(400,0,437)
BX02 H 1 A_GiveToTarget("KilledMe",1)
BX02 H 0 A_ChangeFlag("NOGRAVITY",1)
BX02 H 0 ThrustThingZ(0,7,0,1)
BX02 HHHHHHHHH 1 A_SpawnItemEx("BoosterFX",random(-2,2),random(-2,2),32,random(-4,4),random(-4,4),random(-5,12))
BX02 H 0 A_Stop
BX02 H 0 A_PlaySoundEx("weapon/drillexplode","Weapon")
BX02 H 0 A_SpawnItemEx("DrillExplode",random(-90,50),random(-90,90),random(-30,90))
BX02 HHHHHHHHHHH 1 A_SpawnItemEx("BoosterFX",random(-2,2),random(-2,2),32,random(-20,20),random(-20,20),random(-5,12))
BX02 H 0 A_PlaySoundEx("weapon/drillexplode","Weapon")
BX02 HH 0 A_SpawnItemEx("DrillExplode",random(-90,50),random(-90,90),random(-30,90))
BX02 HHHHHHHHHHHH 1 A_SpawnItemEx("BoosterFX",random(-2,2),random(-2,2),32,random(-35,35),random(-35,35),random(-5,12))
BX02 H 0 A_PlaySoundEx("weapon/drillexplode","Weapon")
BX02 HHHHHHHHH 1 A_SpawnItemEx("DrillExplode",random(-90,50),random(-90,90),random(-30,90))
BX02 H 0 A_PlaySoundEx("weapon/drillexplode","Weapon")
BX02 HHHHH 1 A_SpawnItemEx("DrillExplode",random(-90,50),random(-90,90),random(-30,90))
BX02 H 0 A_PlaySoundEx("weapon/drillexplode","Weapon")
BX02 HHHHHHH 0 A_SpawnItemEx("DrillExplode",random(-90,50),random(-90,90),random(-30,90))
BX02 H 0 A_PlaySoundEx("weapon/drillexplode","Weapon")
BX02 HHHHHH 0 A_SpawnItemEx("DrillExplode",random(-90,50),random(-90,90),random(-30,90))
BX02 H 0 A_PlayerScream
PLAY H 0 A_SpawnItemEx("FakeDeathFX", 0, 0, 32)
PLAY Z -1
//PLAY Z 1 A_CheckPlayerDone
wait
}
}




// Jump //

actor GreatLeapItem : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "BUSXITEM"
tag "-==Great Leap==-"
+INVENTORY.UNDROPPABLE
+COUNTITEM
+INVBAR
states
{
Spawn:
TNT1 A 0
loop
Use:
TNT1 A 0 A_JumpIfInventory("InBoat",1,2)
TNT1 A 0 A_JumpIfInventory("BossJumpChargeBX",96,"Jump")
TNT1 A 0
fail
Jump:
TNT1 A 0 A_TakeInventory("BossJumpChargeBX",96)
TNT1 A 0 ThrustThingZ(0,25,0,0)
TNT1 A 0 A_Recoil(-45)
TNT1 A 0
fail
}
}

actor NormalPower : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor TruePowerFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}