
actor StarSpurUpgrade : BaseMM8BDMBusterUpgrade
{
inventory.amount 1
inventory.maxamount 1
inventory.pickupmessage "$PU_STARSPUR"
Tag "$TAG_STARSPUR"
inventory.icon "SPURICON"
Inventory.PickupSound "item/1up"
Inventory.RespawnTics 350
scale 2.0
+COUNTITEM
+INVBAR
states
{
SpawnLoop:
SPUR Z 1 
loop
Use:
TRBB I 0 A_PlaySoundEx("item/refill","Voice")
TNT1 A 0 A_GiveInventory("BusterGiven",1)
TRBB I 0 A_GiveInventory("StarSpur",1)
TRBB I 0 A_SelectWeapon("StarSpur")
stop
}
}

actor StarSpurUpgrade_Respawn : 8BDMItemRespawn
{
	translation "192:192=227:227", "198:198=3:3"
	mass 350
}
actor StarSpurUpgrade_RespawnShadow : 8BDMItemRespawnShadow
{
	mass 350
	States
	{
	Spawn:
		SPUR Z 0
		goto Super::Spawn
	}
}
actor StarSpur_ScriptBar : ScriptBar{}

actor StarSpur : BaseMM8BDMWep
{
//$Title Star Spur
Weapon.AmmoUse 0
Weapon.AmmoGive 0
Weapon.SlotNumber 1
Inventory.Pickupmessage "$PU_STARSPUR"
Obituary "$OB_STARSPUR"
weapon.ammotype "BusterAmmo"
Tag "$TAG_STARSPUR"
inventory.pickupsound "weapon/weaponup"
inventory.icon "NULLICON"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
SpawnLoop:
SPUR Z 1
loop
Ready:
SPUR B 0 A_JumpIfInventory("BusterGiven",1,"TakeBusters")
Goto Ready2
TakeBusters:
SPUR B 0 A_GiveInventory("TakeBuster", 1)
Goto Ready2
Ready2:
SPUR D 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_STARSPUR)
SPUR D 1 A_WeaponReady
Goto Ready2+1
ReadyC: Goto Ready2+1
Deselect:
SPUR D 0 
goto DeselectSwap
Select:
SPUR D 0 
goto SelectSwap
Altfire:
SPUR D 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
SPUR D 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
SPUR D 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
SPUR D 4
Goto Fire1X
ClassAltfire:
SPUR D 0 
goto Super::Altfire
Fire:
SPUR D 1
Goto Hold
Fire1:
SPUR D 0 A_PlaySoundEx("Weapon/CaveStoryShot","SoundSlot7")
SPUR D 0 A_FireCustomMissile("SpurShot",0,0,8,0)
SPUR D 0 A_TakeInventory("WeaponCharge",999)
SPUR D 0 A_TakeInventory("SpurDoubleCheck",999)
SPUR D 0
SPUR H 2
SPUR I 1
SPUR H 0 A_Refire
Goto Ready2+1
Fire1X:
SPUR D 0 A_PlaySoundEx("Weapon/CaveStoryShot","SoundSlot7")
SPUR D 0 A_FireCustomMissile("SpurShot",0,0,8,0)
SPUR D 0 A_TakeInventory("WeaponCharge",999)
SPUR D 0 A_TakeInventory("SpurDoubleCheck",999)
SPUR D 0
SPUR H 2
SPUR I 1
SPUR D 0 A_Refire
Goto Ready2+1
Fire2:
SPUR D 0 A_TakeInventory("WeaponCharge",999)
SPUR D 0 A_TakeInventory("SpurDoubleCheck",999)
SPUR D 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_STARSPUR,1)
SPUR D 0 A_PlaySoundEx("Weapon/Spur1","SoundSlot7")
SPUR D 0 A_FireCustomMissile("SpurLaser1",0,0,8,0)
SPUR HI 1
SPUR D 0
SPUR D 0 A_Refire
Goto Ready2+1
Fire3:
SPUR D 0 A_TakeInventory("WeaponCharge",999)
SPUR D 0 A_TakeInventory("SpurDoubleCheck",999)
SPUR D 0 A_PlaySoundEx("Weapon/Spur2","SoundSlot7")
SPUR D 0
SPUR D 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_STARSPUR,1)
SPUR D 0 A_FireCustomMissile("SpurLaser2",0,0,8,0)
SPUR HI 1
SPUR D 0
SPUR D 0 A_Refire
Goto Ready2+1
FireMax:
SPUR D 0 A_TakeInventory("WeaponCharge",999)
SPUR D 0 A_TakeInventory("SpurDoubleCheck",999)
SPUR D 0 A_PlaySoundEx("Weapon/Spur3","SoundSlot7")
SPUR D 0
SPUR D 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_STARSPUR,1)
SPUR D 0 A_FireCustomMissile("SpurLaser3",0,0,8,0)
SPU0 ABCDEF 2
SPU0 G 19
SPU0 G 0 ACS_NamedExecuteWithResult("core_clientsound", CSND_CRYSTALRELOAD) // A_PlaySoundEx("weapons/mm5/crystaleyereload", "Weapon")
SPU0 HIJK 2
SPUR B 0 A_Refire
Goto Ready2+1
Hold:
SPUR D 0 A_JumpIfInventory("SpurDoubleCheck",3,"Hold1")
SPUR D 1 A_GiveInventory("SpurDoubleCheck",1)
SPUR D 0 A_Refire
Goto Fire1
Hold1:
SPUR D 0 //A_StopSoundEx("Weapon")
SPUR D 0 A_PlaySoundEx("Weapon/SpurCharge1","Weapon")
SPUR D 0 A_JumpIfInventory("WeaponCharge",8,"Hold2")
SPUR D 1
SPUR D 1
SPUR D 1 A_GiveInventory("WeaponCharge",1)
SPUR D 0 A_Refire
Goto Fire1
Hold2:
SPUR D 0 //A_StopSoundEx("Weapon") 
SPUR D 0 A_PlaySoundEx("Weapon/SpurCharge2","Weapon")
SPUR D 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR2,TCLR_CHARGE1)
SPUR D 0 A_JumpIfInventory("WeaponCharge",16, "Hold3")
SPUR DE 1
SPUR D 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR,TCLR_NONE)
SPUR D 1 A_GiveInventory("WeaponCharge",1)
SPUR D 0 A_Refire
Goto Fire2
Hold3:
SPUR D 0 A_JumpIfInventory("WeaponCharge",36,"HoldMaxStart")
SPUR D 0 A_PlaySoundEx("Weapon/SpurCharge3","Weapon")
SPUR D 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR3,TCLR_CHARGE2)
SPUR D 0 A_Refire("Hold3.b")
Goto Fire3
Hold3.b:
SPUR D 0 A_JumpIfInventory("WeaponCharge",36,"HoldMaxStart")
SPUR G 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR4,TCLR_CHARGE3)
SPUR D 0 A_GiveInventory("WeaponCharge",1)
SPUR D 0 A_Refire("Hold3")
Goto Fire3
HoldMaxStart:
SPUR D 0 A_PlaySoundEx("Weapon/SpurCharged","Weapon")
Goto HoldMax
HoldMax:
SPUR E 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR2,TCLR_CHARGE1)
SPUR D 0 A_Refire("HoldMax2")
Goto FireMax
HoldMax2:
SPUR F 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR3,TCLR_CHARGE2)
SPUR D 0 A_Refire("HoldMax3")
Goto FireMax
HoldMax3:
SPUR G 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_STARSPUR4,TCLR_CHARGE3)
SPUR G 0 A_JumpIfInventory("IsBot", 1, "BotFire")
SPUR D 0 A_Refire("HoldMax")
Goto FireMax
BotFire:
SPUR A 0 A_Jump(16, "FireMax")
SPUR B 0 A_Refire("HoldMax")
Goto Fire3
}
}

actor SpurDoubleCheck : Inventory //Do you want to charge or not
{
+INVENTORY.IGNORESKILL
inventory.amount 1
inventory.maxamount 5
}

Actor SpurShot : BasicProjectile
{
Obituary "$OB_STARSPUR"
PROJECTILE
+BRIGHT
Damagetype "StarSpur"
Radius 14
Height 11
Scale 2.0
Speed 50
Damage (CallACS("vile_cbm_damage",7))
States
{
Spawn:
SPUR M 14
goto XDeath
Death:
SPUR M 0 A_Explode(CallACS("vile_cbm_damage",8),32,0,0,16)
SPUR M 0 A_SpawnItemEx("SpurShotFlashyEndStar", 5, 0, -3, 0, 0, 0)
stop
XDeath:
Crash:
TNT1 A 0 A_SpawnItemEx("SpurShotFlashyEndStar", 0, 0, -3, 0, 0, 0)
stop
}
}

actor SpurShotFlashyEnd : BasicGraphicEffect
{
scale 3.2
+NOINTERACTION
+NOGRAVITY
states
{
SpawnFrame:
CAST ABCD 1
stop
}
}

actor SpurShotFlashyEndStar : SpurShotFlashyEnd
{
states
{
SpawnFrame:
CAST EFGH 1
stop
}
}

actor SpurLaser1 : BasicProjectile
{
+BRIGHT
PROJECTILE
+LOOKALLAROUND
+SKYEXPLODE
+DONTREFLECT
+DONTBLAST
+FORCEXYBILLBOARD
+RIPPER
Speed 4
var int user_PierceRipper;
Damagetype "StarSpur"
Damage (CallACS("vile_cbm_damage",3))
radius 3
height 3
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SpurShadower1",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM)
stop
Death:
TNT1 A 0 A_SpawnItemEx("SpurShotFlashyEndStar", 5, 0, -3, 0, 0, 0)
stop
}
}

actor SpurShadower1 : BasicProjectile
{
+BRIGHT
var int user_PierceRipper;
Obituary "$OB_STARSPUR"
PROJECTILE
+LOOKALLAROUND
+SKYEXPLODE
+DONTREFLECT
+DONTBLAST
+FORCEXYBILLBOARD
+RIPPER
Damagetype "StarSpur"
Damage (CallACS("vile_cbm_damage",2))
radius 7
height 7
scale 1.4
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_ScaleVelocity(7.5)
//TNT1 A 1
Goto Continue
Continue:
SPUR J 2
SPUR JJ 1 A_SpawnItemEx("SpurTrail1",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
goto Continue+1
Death:
TNT1 A 0 A_SpawnItemEx("SpurShotFlashyEndStar", 5, 0, -3, 0, 0, 0)
stop
}
}

actor SpurTrail1 : BasicProjectile
{
var int user_PierceRipper;
+BRIGHT
Obituary "$OB_STARSPUR"
PROJECTILE
+RIPPER
+DONTREFLECT
+FORCEXYBILLBOARD
damage (CallACS("vile_cbm_damage",2))
radius 7
height 7
scale 1.4
Damagetype "StarSpur"
States
{
Spawn:
SPUR JJJJJ 1 
SPUR JJJJJ 1 A_SpawnItemEx("SpurTrail1X",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
stop
Death:
TNT1 A 0 A_SpawnItemEx("SpurShotFlashyEndStar", 5, 0, -3, 0, 0, 0)
stop
}
}

actor SpurTrail1X : BasicProjectile
{
var int user_PierceRipper;
+BRIGHT
Obituary "$OB_STARSPUR"
PROJECTILE
+DONTREFLECT
+RIPPER
+FORCEXYBILLBOARD
damage (CallACS("vile_cbm_damage",1))
radius 7
height 7
scale 1.4
Damagetype "StarSpur"
States
{
Spawn:
SPUR LLLl 1 A_SpawnItemEx("SpurTrail1XX",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
stop
Death:
TNT1 A 0 A_SpawnItemEx("SpurShotFlashyEndStar", 5, 0, -3, 0, 0, 0)
stop
}
}

actor SpurTrail1XX : SpurTrail1
{
Damage (0)
scale 1.4
radius 7
height 7
States
{
Spawn:
SPUR N 5
stop
}
}

actor SpurLaser2 : SpurLaser1
{
Damage (CallACS("vile_cbm_damage",4))
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SpurShadower2",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM)
stop
}
}

actor SpurShadower2 : SpurShadower1
{
Obituary "$OB_STARSPUR"
Damage (CallACS("vile_cbm_damage",3))
radius 18
height 18
scale 2.85
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_ScaleVelocity(7.5)
Continue:
SPUR K 1 A_SpawnItemEx("SpurTrail0",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
goto Continue
}
}
actor SpurTrail0 : SpurTrail1
{
scale 2.85
Damage (CallACS("vile_cbm_damage",3))
+DONTBLAST
radius 18
height 18
States
{
Spawn:
SPUR KKKKKKK 1
SPUR KKKK 1 A_SpawnItemEx("SpurTrail2",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
stop
}
}

actor SpurTrail2 : SpurTrail1
{
Obituary "$OB_STARSPUR"
scale 2.85
Damage (CallACS("vile_cbm_damage",3))
+DONTBLAST
radius 18
height 18
States
{
Spawn:
SPUR OOOOO 1
SPUR O 1 A_SpawnItemEx("SpurTrail2X",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
stop
}
}
actor SpurTrail2X : SpurTrail1X
{
Damage (0)
scale 2.6
radius 18
height 18
States
{
Spawn:
SPUR P 7
stop
}
}

actor SpurLaser3 : SpurLaser1
{
Damage (CallACS("vile_cbm_damage",5))
+THRUGHOST
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SpurShadower3",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM)
stop
}
}

actor SpurShadower3 : SpurShadower1
{
Obituary "$OB_STARSPUR"
Damage (CallACS("vile_cbm_damage",4))
scale 2.2
radius 28
height 28
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_ScaleVelocity(6.5)
Continue:
SPUR AAAA 1 A_SpawnItemEx("SpurTrail3",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
goto Continue+1
}
}

actor SpurTrail3 : SpurTrail2
{
Obituary "$OB_STARSPUR"
Damage (CallACS("vile_cbm_damage",4))
scale 2.2
radius 28
height 28
States
{
Spawn:
SPUR AAAAA 1
SPUR AA 1 A_SpawnItemEx("SpurTrail3X",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
stop
}
}

actor SpurTrail3X : SpurTrail2
{
Obituary "$OB_STARSPUR"
Damage (CallACS("vile_cbm_damage",3))
scale 2.2
radius 28
height 28
States
{
Spawn:
SPUR BBBBBB 1
SPUR BB 1 A_SpawnItemEx("SpurTrail4",0,0,0,momx/3,momy/3,momz/3,0,SXF_ABSOLUTEMOMENTUM)
stop
}
}

actor SpurTrail4 : SpurTrail2
{
Obituary "$OB_STARSPUR"
Damage (CallACS("vile_cbm_damage",2))
scale 2.2
radius 28
height 28
States
{
Spawn:
SPUR C 9
stop
}
}
