actor MaestroUpgrade : BaseMM8BDMBusterUpgrade
{
inventory.amount 1
inventory.maxamount 1
Tag "$TAG_MAESTROUPGRADE"
inventory.pickupmessage "$PU_MAESTROUPGRADE"
inventory.icon "MAEBUP"
Inventory.PickupSound "item/1up"
Inventory.RespawnTics 350
scale 2.0
+COUNTITEM
+INVBAR
states
{
SpawnLoop:
MAEB A 1 
loop
Use:
TRBB I 0 A_PlaySoundEx("item/refill","Voice")
TNT1 A 0 A_GiveInventory("BusterGiven",1)
TRBB I 0 A_GiveInventory("MaestroBusterEnc",1)
TRBB I 0 A_SelectWeapon("MaestroBusterEnc")
stop
}
}

actor MaestroUpgrade_Respawn : 8BDMItemRespawn
{
	translation "192:192=192:192", "198:198=198:198"
	mass 350
}
actor MaestroUpgrade_RespawnShadow : 8BDMItemRespawnShadow
{
	mass 350
	States
	{
	Spawn:
		MAEB A 0
		goto Super::Spawn
	}
}


actor MaestroBusterEnc_ScriptBar : ScriptBar{}
actor MaestroBusterEnc : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 3
Weapon.SlotNumber 1
weapon.ammotype "BusterAmmo"
inventory.icon "NULLICON"
Dropitem ""
Inventory.Pickupmessage "$PU_MAESTROUPGRADE"
Obituary "$OB_MAESTROUPGRADE"
Tag "$TAG_MAESTROBUSTER"
States
{
SpawnLoop:
MAEB A 1
stop
Ready:
MAEB B 0 A_JumpIfInventory("BusterGiven",1,"TakeBusters")
Goto Ready2
TakeBusters:
TNT1 Q 0 A_GiveInventory("TakeBuster", 1)
Goto Ready2
Ready2:
MAEB B 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_MAESTROBUSTER)
MAEB B 0 A_TakeInventory("WeaponCharge",999)
ReadyC:
MAEB BB 1 A_WeaponReady
Goto Ready2+2
Deselect:
MAEB B 0
goto DeselectSwap
Select:
MAEB B 0
goto SelectSwap
Altfire:
MAEB B 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
MAEB B 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
MAEB B 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
MAEB B 0
Fire:
MAEB B 0 A_JumpIfNoAmmo("Hold")
MAEB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
MAEB B 0 A_FireCustomMissile("MaestroBShot",0,0,8,0)
MAEB B 1 A_TakeInventory("WeaponCharge",999)
MAEB EFFFEB 1
MAEB B 1
MAEB B 0 A_Refire
goto Ready2+2
Fire2:
MAEB B 0 A_TakeInventory("WeaponCharge",999)
MAEB B 0 ACS_NamedExecuteWithResult("core_chargecolor", CLR_MAESTROBUSTER,TCLR_NONE)
MAEB E 1 A_PlaySoundEx("weapon/mbuster","Weapon")
MAEB B 1 A_FireCustomMissile("MaestroBShot",0,0,8,0)
MAEB E 1 A_PlaySoundEx("weapon/mbuster","Weapon")
MAEB B 1 A_FireCustomMissile("MaestroBShot",0,0,8,0)
MAEB E 1 A_PlaySoundEx("weapon/mbuster","Weapon")
MAEB B 1 A_FireCustomMissile("MaestroBShot",0,0,8,0)
MAEB B 1 A_PlaySoundEx("weapon/mbuster","Weapon")
MAEB B 1 A_FireCustomMissile("MaestroBShot",0,0,8,0)
MAEB EFFFFFFEEB 1
MAEB B 0 A_Refire
goto Ready2+2
Fire3:
MAEB B 0 A_TakeInventory("WeaponCharge",999)
TNT1 A 0 A_StopSoundEx("SoundSlot5")
MAEB B 0 A_PlaySoundEx("weapon/cfire","Weapon")
MAEB E 0 ACS_NamedExecuteWithResult("core_chargecolor", CLR_DAWNBREAKER,TCLR_NONE)
MAEB E 0 A_FireCustomMissile("MaestroCShot",0,0,8,0)
MAEB KKLLLLKK 1
MAEB CC 1 ACS_NamedExecuteWithResult("core_chargecolor", CLR_MAESTROBUSTERCHARGE1,TCLR_CHARGE1)
MAEB BB 1 ACS_NamedExecuteWithResult("core_chargecolor", CLR_MAESTROBUSTER,TCLR_NONE)
MAEB B 0 A_Refire
goto Ready2+2
Hold:
//BUST B 0 A_JumpIfInventory("WeaponCharge",34,"Charge2Start")
MAEB B 0 A_JumpIfInventory("WeaponCharge",18,"Charge")
MAEB B 1 A_GiveInventory("WeaponCharge",1)
MAEB B 0 A_Refire
Goto Ready2+2
Charge:
MAEB B 0 A_JumpIfInventory("WeaponCharge",19,"Charge1")
MAEB B 0 A_PlaySoundEx("weapon/coilstart","Weapon")
Goto Charge1
Charge1:
MAEB B 0 A_JumpIfInventory("WeaponCharge",35,"Charge2Start")
MAEB C 1 ACS_NamedExecuteWithResult("core_chargecolor", CLR_MAESTROBUSTERCHARGE1,TCLR_CHARGE1)
MAEB D 0 A_Refire("Charge1.a")
Goto Fire2
Charge1.a:
MAEB B 1 ACS_NamedExecuteWithResult("core_chargecolor", CLR_MAESTROBUSTER,TCLR_NONE)
MAEB B 0 A_GiveInventory("WeaponCharge",1)
MAEB C 0 A_Refire("Charge")
Goto Fire2
BotFire:
MAEB B 0 A_Jump(16, "Fire3")
MAEB C 0 A_Refire
Goto Fire3
Charge2Start:
MAEB B 0 A_GunFlash("Sound.BusterCharge", GFF_NOEXTCHANGE)
Goto Hold3
Hold3:
MAEB D 1 ACS_NamedExecuteWithResult("core_chargecolor",CLR_MAESTROBUSTERCHARGE2,TCLR_CHARGE2)
MAEB D 0 A_Refire("Hold3.a")
Goto Fire3
Hold3.a:
MAEB J 1 ACS_NamedExecuteWithResult("core_chargecolor",CLR_MAESTROBUSTERCHARGE3,TCLR_CHARGE3)
MAEB J 0 A_Refire("Hold3.b")
Goto Fire3
Hold3.b:
MAEB M 1 ACS_NamedExecuteWithResult("core_chargecolor",CLR_DAWNBREAKER,TCLR_NONE)
MAEB M 0 A_JumpIfInventory("IsBot", 1, "BotFire")
MAEB M 0 A_Refire("Hold3")
Goto Fire3
ClassAltfire:
MAEB B 0 
goto Super::Altfire
}
}

actor MaestroBShot : MegaShot
{
Damage (CallACS("vile_cbm_damage",10))
Obituary "$OB_MAESTROBUSTER"
}

actor MaestroCShot : BasicProjectile
{
translation "198:198=70:70", "192:192=196:196"
PROJECTILE
+LOOKALLAROUND
+SKYEXPLODE
+DONTBLAST
+THRUGHOST
+RIPPER
+BRIGHT
+SEEKERMISSILE
Speed 40
Damage (CallACS("vile_cbm_damage",25))
radius 22
height 22
scale 2.5
damagetype "MaestroBuster"
Obituary "$OB_MAESTROBUSTER"
var int user_PierceRipper;

States
{
Spawn:
MAEB G 0
MAEB I 2 A_ChangeFlag("THRUGHOST", 0)
TNT1 A 0 A_SpawnItemEx("BlastRuneA_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB GH 2
TNT1 A 0 A_SpawnItemEx("BlastRuneB_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB IG 2
TNT1 A 0 A_SpawnItemEx("BlastRuneD_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB HI 2
TNT1 A 0 A_SpawnItemEx("BlastRuneM_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB GH 2
TNT1 A 0 A_SpawnItemEx("BlastRuneA_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB IG 2
TNT1 A 0 A_SpawnItemEx("BlastRuneB_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB HI 2
TNT1 A 0 A_SpawnItemEx("BlastRuneD_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB GH 2
TNT1 A 0 A_SpawnItemEx("BlastRuneM_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB IG 2
TNT1 A 0 A_SpawnItemEx("BlastRuneA_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB HI 2
TNT1 A 0 A_SpawnItemEx("BlastRuneB_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB GH 2
TNT1 A 0 A_SpawnItemEx("BlastRuneD_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB IG 2
TNT1 A 0 A_SpawnItemEx("BlastRuneM_Enc", 0, 0, -12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
MAEB HI 2
Goto Spawn+2
Death:
MAEB H 0 A_SpawnItemEx("BlastRuneExplosion_Enc", 0, 0,-12, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
TNT1 A 2
stop
}
}

actor BlastRuneA_Enc : BasicProjectile
{
    +BRIGHT
	Obituary "$OB_MAESTROBUSTER"
    height 16
    radius 10
    speed 0
    damage (0)
    States
    {
    Spawn:
        DBR1 B 5
        DBR1 C 6
    Death:
        DBR1 D 4
        DBR1 D 8 A_SpawnItemEx("BlastRuneExplosion_Enc", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
        stop
    }
}

actor BlastRuneB_Enc : BlastRuneA_Enc
{
	States
    {
    Spawn:
        DBR1 E 5
        DBR1 F 6
    Death:
        DBR1 G 4
        DBR1 G 8 A_SpawnItemEx("BlastRuneExplosion_Enc", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
        stop
    }
}

actor BlastRuneD_Enc : BlastRuneA_Enc
{
	States
    {
    Spawn:
        DBR1 H 5
        DBR1 I 6
    Death:
        DBR1 J 4
        DBR1 J 8 A_SpawnItemEx("BlastRuneExplosion_Enc", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
        stop
    }
}

actor BlastRuneM_Enc : BlastRuneA_Enc
{
	States
    {
    Spawn:
        DBR1 K 5
        DBR1 L 6
    Death:
        DBR1 M 4
        DBR1 M 8 A_SpawnItemEx("BlastRuneExplosion_Enc", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
        stop
    }
}

actor BlastRuneExplosion_Enc : BasicExplosion
{
    +BRIGHT
	scale 3.5
    damagetype "MaestroBuster_Rune"
    Obituary "$OB_MAESTROBUSTER"
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 D 0 A_Explode(CallACS("vile_cbm_damage",35), 96, 0, 0, 40)
        TNT1 A 0 A_PlaySoundEx("weapons/mmk/dawnbreakerexplode", "Weapon")
        DBR1 NMOPQRST 1
        stop
    }
}
