actor StarCrashBoss : MegaBuster
{
Weapon.AmmoGive 0
Weapon.AmmoGive2 0
Weapon.SlotNumber 7
Obituary "%o was crashed by %k's Star Crash."
weapon.ammotype "StarCrashClassAmmo"
weapon.ammouse 1
weapon.ammouse2 6
weapon.ammotype2 "StarCrashClassAmmo"
inventory.pickupsound "weapon/weaponup"
//inventory.icon "STARSI"
+WEAPON.AMMO_OPTIONAL
+WEAPON.ALT_AMMO_OPTIONAL
Scale 2.0
States
{
Spawn:
TNT1 A 0
stop
Ready:
STAC A 0 ACS_ExecuteAlways(998,0,43)
STAC A 0 A_GunFlash
STAC A 0 A_ClearRefire
STAC A 0 A_JumpIfInventory("StarCrashClassAmmo",6,"Ready2")
STAC A 7 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
STAC A 0 A_GiveInventory("StarCrashClassAmmo",1)
Goto Ready+3
Ready2:
STAC A 0 A_JumpIfInventory("StarCrashClassAmmo",14,"Ready3")
STAC A 7 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSWITCH)
STAC A 0 A_GiveInventory("StarCrashClassAmmo",1)
loop
Ready3:
STAC A 7 A_WeaponReady(WRF_NOSWITCH)
STAC A 0 A_GiveInventory("StarCrashClassAmmo",1)
loop
Deselect:
STAC A 0 A_JumpIfInventory("ShieldCheck",1,24)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
STAC A 1 A_Lower
Goto Deselect+1
STAC A 0
STAC A 0 A_TakeInventory("ShieldCheck",1)
STAC A 0 //A_FireCustomMissile("StarCrash",0,0,0,0)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
Goto Deselect+1
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
STAC A 1 A_Raise
Loop
AltFire:
STAC A 0 A_JumpIfInventory("ShieldCheck",1,"ShieldThrow")
STAC A 0 A_JumpIfNoAmmo("NoAmmo")
STAC A 0 A_GiveInventory("StarCheck",1)
STAC A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
STAC A 0 A_FireCustomMissile("StarFlurryLauncher",0,1,8,0)
STAC BC 3
STAC A 12
STAC A 0 A_TakeInventory("StarCheck",1)
STAC A 0 A_Refire
goto Ready+2
Fire:
STAC A 0 A_JumpIfInventory("ShieldCheck",1,"ShieldThrow")
STAC A 0 A_JumpIfInventory("StarCrashClassAmmo",14,1)
goto NoAmmo
STAC A 0 A_JumpIfNoAmmo("NoAmmo")
STAC A 0 A_TakeInventory("BasicArmor",9999)
STAC A 0 A_TakeInventory("StarCrashClassAmmo",1)
STAC A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
STAC A 1 A_GiveInventory("ShieldCheck",1)
STAC A 0 A_GiveInventory("StarCheck",1)
goto ShieldActive
Hold:
STAC A 1
goto Ready+2
ShieldActive:
STAC A 1 A_GiveInventory("ShieldCheck",1)
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
STAC A 2 A_SpawnItemEx("StarCrash1B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 2 A_SpawnItemEx("StarCrash2B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC A 0 A_SpawnItemEx("SMStarRadius",0,0,0)
STAC B 2 A_SpawnItemEx("StarCrash3B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 2 A_SpawnItemEx("StarCrash4B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("SMStarRadius",0,0,0)
goto Shield
Shield:
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash1B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash1B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash2B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash2B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 0 A_SpawnItemEx("SMStarRadius",0,0,0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash3B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash3B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash4B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 1 A_WeaponReady
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC A 0 A_GiveInventory("StarArmor",1)
STAC B 0 A_SpawnItemEx("StarCrash4B", 0, 0, 15, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
STAC B 0 A_SpawnItemEx("SMStarRadius",0,0,0)
STAC B 0 A_TakeInventory("StarCrashClassAmmo",1)
STAC B 0 A_JumpIfNoAmmo("NoAmmo")
loop
ShieldThrow:
STAC B 0 A_TakeInventory("ShieldCheck",999)
STAC B 0 A_TakeInventory("StarCrashClassAmmo",14)
STAC B 5 A_FireCustomMissile("StarCrashShield",0,0,0,0)
//STAC A 0 A_TakeInventory("PowerStarCrashDefense",1)
//STAC A 0 A_TakeInventory("StarCrashDefense",1)
HEAA A 0 A_TakeInventory("BasicArmor",999)
STAC C 5
STAC A 20
STAC A 1
STAC A 0 A_TakeInventory("StarCheck",1)
goto Ready+2
NoAmmo:
//STAC A 1 ACS_Execute(979,0)
STAC A 0 A_TakeInventory("ShieldCheck",999)
STAC A 0 A_TakeInventory("StarCheck",1)
//STAC A 0 A_TakeInventory("PowerStarCrashDefense",1)
//STAC A 0 A_TakeInventory("StarCrashDefense",1)
HEAA A 0 A_TakeInventory("BasicArmor",999)
//STAC A 0 A_Refire
goto Ready+2
Flash:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,2)
TNT1 A 0 ACS_ExecuteAlways(648,0,11)
TNT1 A 1 
loop
}
}

actor SMStarRadius
{
PROJECTILE
+DONTSPLASH
Damagetype "Star"
Damage 0
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(8,160,0)
stop
}
}

actor StarShieldRadius : SMStarRadius
{
Damagetype "StarCrash"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(12,90,0)
stop
}
}

actor StarFlurryLauncher
{
scale 2.5
PROJECTILE
+RIPPER
-SOLID
-NOGRAVITY
+NOINTERACTION
damage (0)
radius 1
height 1
speed 0
states
{
Spawn:
STAR A 0 //A_JumpIfInTargetInventory("StarFlurryFlag",1,"Shoot")
STAR A 15
STAR AAAABBBBCCCCDDDAAABBBCCDDAABCDAB 1
STAR A 0 A_PlaySoundEx("weapon/StarDakka","Weapon")
Shoot:
STAR A 1 A_SpawnItemEx("StarFlurryShot",5,0,15,random(10,15),random(-3,3),random(-1,1),0, 0, 0)
STAR B 1 A_SpawnItemEx("StarFlurryShot",5,0,15,random(10,15),random(-3,3),random(-1,1),0, 0, 0)
STAR C 1 A_SpawnItemEx("StarFlurryShot",5,0,15,random(10,15),random(-3,3),random(-1,1),0, 0, 0)
STAR A 0 A_GiveInventory("StarFlurryFlag",1)
STAR A 0 A_JumpIfInventory("StarFlurryFlag",20,"StopFlurry")
loop
StopFlurry:
STAR A 0 //A_TakeFromTarget("StarFlurryFlag",999)
stop
}
}

actor StarFlurryShot
{
scale 2.5
PROJECTILE
+DONTSPLASH
Damage (5)
Speed 50
Radius 10
Height 10
Damagetype "StarCrash"
Obituary "%o couldn't dodge %k's Star Flurry."
States
{
Spawn:
STAP ABCB 2 
loop
}
}

actor StarCrashShield : StarCrash
{
+RIPPER
Damage (0)
Speed 20
States
{
Spawn:
STAC H 2
STAC I 2 A_SpawnItemEx("StarShieldRadius",0,0,0)
STAC J 2
STAC K 2 A_SpawnItemEx("StarShieldRadius",0,0,0)
loop
}
}

actor StarCrashClassAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor StarFlurryFlag : Ammo
{
inventory.amount 1
inventory.maxamount 120
}

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

actor StarArmor : BasicArmorPickup
{
Armor.Savepercent 50
Armor.Saveamount 100
States
{
Spawn:
PLAY A 1
loop
}
}

actor StarCrash1B : StarCrash1
{
States
{
Spawn:
STAC D 1
STAC D 1
stop
}
}
actor StarCrash2B : StarCrash2
{
States
{
Spawn:
STAC E 1
STAC E 1
stop
}
}
actor StarCrash3B : StarCrash3
{
States
{
Spawn:
STAC F 1
STAC F 1
stop
}
}
actor StarCrash4B : StarCrash4
{
States
{
Spawn:
STAC G 1
STAC G 1
stop
}
}