actor BassBusterSpecial : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 3
Weapon.SlotNumber 1
Inventory.Pickupmessage "$PU_BASSBUSTER"
Obituary "$OB_BASSBUSTER"
Tag "$TAG_BASSBUSTER"
weapon.ammotype "BassChargeShotAmmo"
weapon.ammotype2 "BassCrescentKickAmmo"
inventory.icon "NULLICON"
Dropitem ""
States
{
Spawn:
WEA3 A 1
stop
Ready:
BASB B 0
Ready2:
BASB B 0 ACS_ExecuteAlways(998,0,46)
BASB B 2 A_WeaponReady
BASB B 0 A_Gunflash
BASB B 2 A_WeaponReady
//BASB B 0 A_GiveInventory("BassCrescentKickAmmo",1)
Goto Ready2+3
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BASB B 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BASB B 1 A_Raise
Loop
Fire:
BASB B 0 A_JumpIfInventory("BassChargeShotAmmo",9,"Fire2")
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB B 0 A_GiveInventory("BassChargeShotAmmo",1)
BASB B 0 A_JumpIfInventory("PowerPartCAttack",1,"RageFire")
BASB B 0 A_JumpIfInventory("RageRuneFlag",1,"RageFire")
BASB CCDB 1
BASB B 0 A_Refire("Fire")
BASB D 20 
BASB C 8
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto Ready2+3
Fire2:
BASB B 0 A_JumpIfInventory("BassChargeShotAmmo",17,"Fire3")
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB B 0 A_GiveInventory("BassChargeShotAmmo",1)
BASB B 0 A_JumpIfInventory("RageRuneFlag",1,"RageFire2")
BASB B 0 A_JumpIfInventory("PowerPartCAttack",1,"RageFire2")
BASB EE 1 ACS_ExecuteAlways(991,0,10001)
BASB D 0 ACS_ExecuteAlways(991,0,46)
BASB DB 1 //A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 A_Refire("Fire2")
BASD B 0 ACS_ExecuteAlways(191,0,APROP_Speed,1,1)
BASB D 20 
BASB C 8
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto Ready2+3
Fire3:
BASB B 0 A_JumpIfInventory("BassChargeShotAmmo2",17,"Fire4")
BASD B 0 ACS_ExecuteAlways(191,0,APROP_Speed,90,100)
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB B 0 A_GiveInventory("BassChargeShotAmmo2",1)
BASB B 0 A_JumpIfInventory("PowerPartCAttack",1,"RageFire3")
BASB B 0 A_JumpIfInventory("RageRuneFlag",1,"RageFire3")
BASB EE 1 ACS_ExecuteAlways(991,0,10001)
TNT1 AA 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB F 1 ACS_ExecuteAlways(991,0,10002)
TNT1 AA 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 1 ACS_ExecuteAlways(991,0,46)
TNT1 AA 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 A_Refire("Fire3")
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto FireX
Fire4:
BASD B 0 ACS_ExecuteAlways(191,0,APROP_Speed,60,100)
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB B 0 A_JumpIfInventory("PowerPartCAttack",1,"RageFire3")
BASB B 0 A_JumpIfInventory("RageRuneFlag",1,"RageFire3")
BASB EE 1 ACS_ExecuteAlways(991,0,10001)
TNT1 AA 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB F 1 ACS_ExecuteAlways(991,0,10002)
TNT1 AA 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 1 ACS_ExecuteAlways(991,0,46)
TNT1 AA 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 A_Refire("Fire4")
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto FireX
FireX:
BASB B 0 ACS_ExecuteAlways(991,0,46)
BASB B 0 A_PlaySoundEx("weapon/cfire","Weapon")
BASB B 0 A_FireCustomMissile("BassChargeShotSH",0,0,8,0)
BASB B 1 A_TakeInventory("BassChargeShotAmmo",999)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
BASB CDC 5
BASD B 0 ACS_ExecuteAlways(191,0,APROP_Speed,1,1)
BASB B 19
BASB B 0 
goto Ready2+3
RageFire:
BASB CD 1
BASB D 0 A_Refire("Fire")
BASB D 0 A_TakeInventory("BassChargeShotAmmo",999)
goto Ready2+3
RageFire2:
BASB B 0 A_JumpIfInventory("BassChargeShotAmmo",17,"RageFire3")
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB B 0 A_GiveInventory("BassChargeShotAmmo",1)
BASB E 1 ACS_ExecuteAlways(991,0,10001)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB D 0 ACS_ExecuteAlways(991,0,46)
BASB D 1 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 A_Refire("Fire2")
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto Ready2+3
RageFire3:
BASB B 0 A_JumpIfInventory("BassChargeShotAmmo2",17,"RageFire4")
BASB B 0 ACS_ExecuteAlways(191,0,APROP_Speed,90,100)
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB B 0 A_GiveInventory("BassChargeShotAmmo2",1)
BASB E 1 ACS_ExecuteAlways(991,0,10001)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB F 1 ACS_ExecuteAlways(991,0,10002)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 ACS_ExecuteAlways(991,0,46)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 A_Refire("Fire3")
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto FireX
RageFire4:
BASB B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BASD B 0 ACS_ExecuteAlways(191,0,APROP_Speed,60,100)
BASB B 0 A_FireCustomMissile("BassShotSpecial",random(-3,3),0,8,0)
BASB E 1 ACS_ExecuteAlways(991,0,10001)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB F 1 ACS_ExecuteAlways(991,0,10002)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 ACS_ExecuteAlways(991,0,46)
TNT1 A 0 A_SpawnItemEx("BassBusterChargeFX",32,0,random(0,48),velx,vely,velz+12,random(0,360),SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM)
BASB B 0 A_Refire("Fire4")
BASB B 0 A_TakeInventory("BassChargeShotAmmo",35)
BASB B 0 A_TakeInventory("BassChargeShotAmmo2",35)
goto FireX
//Thanks ccbm for making my life slightly easier
Altfire:
BASB B 1 A_JumpIfInventory("BassCrescentKickAmmo",112,1)
goto Ready2+3
BASD B 0 A_GiveInventory("BassDashing",1)
BASD B 0 A_PlaySoundEx("weapon/chargekick","Weapon")
BASD B 0 SetPlayerProperty(0,1,0)
BASD B 0 ACS_ExecuteAlways(191,0,APROP_Speed,85,100)
BASD B 0 A_ChangeVelocity(cos(pitch)*30,0,sin(pitch)*-10,CVF_RELATIVE)
BASD B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
TNT1 A 0 //SetPlayerProperty(0,1,4)
BASD CCCCCCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
BASD C 0 A_GiveInventory("BassCrescentKicking",1)
BASD B 0 A_ScaleVelocity(0.05)
BASD B 0 A_PlaySoundEx("weapon/chargekick","Weapon")
BASD C 0  ACS_ExecuteAlways(191,0,APROP_Speed,0,1)
BASD C 0 A_SpawnItemEx("CresentKickProjectile",cos(pitch)*64,0,32+sin(-pitch)*64,cos(pitch)*15,0,sin(-pitch)*15,0)
BASD C 1 A_GiveInventory("BassAltEndPickup",0)
BASD B 0 A_TakeInventory("BassDashing",1)
BASD C 0 SetPlayerProperty(0,0,0)
TNT1 A 0 SetPlayerProperty(0,0,4)
BASK A 2
BASK B 2
BASK C 1
BASK D 1 
BASD C 0 A_TakeInventory("BassCrescentKicking",112)
BASD C 0 A_TakeInventory("BassCrescentKickAmmo",112)
BASK D 1
BASK G 1
BASK E 1
BASK F 2
TNT1 A 3 Offset(30,100)
BASD C 0  ACS_ExecuteAlways(191,0,APROP_Speed,1,1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Checkfloor("KickEnd")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Checkfloor("KickEnd")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Checkfloor("KickEnd")
//wait
KickEnd:
BASB B 1 Offset(20,70)
BASB B 1 Offset(17,60)
BASB B 1 Offset(12,45)
BASB B 1 Offset(8,38)
BASB B 1 Offset(2,34)
BASB B 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
goto Ready2+3
Flash:
TNT1 A 2 A_GiveInventory("BassCrescentKickAmmo",1)
loop
}
}

actor BassShotSpecial : BassShot
{
//Speed 40
//speed 74
damage (5)
damagetype "Bass2"
}
actor CresentKickProjectile
{
PROJECTILE
scale 3.0
height 5
radius 5
speed 0
damage (0)
translation "210:255=103:103"
damagetype "BassCrescentKick"
Obituary "%o was kicked off of the stage by %k's Crescent Kick."
+RIPPER
+NOGRAVITY
+NOTARGETSWITCH
states
{
Spawn:
TNT1 A 1
CKIC D 1 A_Explode(45,80,0,0,80)
CKIC D 2 A_Warp(AAPTR_TARGET,45,3,55)
CKIC D 0 A_Explode(45,80,0,0,80)
CKIC E 2 A_Warp(AAPTR_TARGET,30,3,40)
CKIC D 0 A_Explode(45,80,0,0,80)
CKIC E 2 A_Warp(AAPTR_TARGET,25,3,35)
CKIC D 0 A_Explode(45,80,0,0,80)
CKIC F 2 A_Warp(AAPTR_TARGET,-15,3,25)
CKIC D 0 A_Explode(45,80,0,0,80)
CKIC F 2 A_Warp(AAPTR_TARGET,-25,3,15)
CKIC D 0 A_Explode(45,80,0,0,80)
CKIC D 1 A_Warp(AAPTR_TARGET,-30,3,-5)
CKIC D 0 A_Explode(45,80,0,0,80)
CKIC D 1 A_Warp(AAPTR_TARGET,-45,3,-25)
CKIC D 0 A_Explode(45,80,0,0,80)
stop
}
}

actor BassAltEndPickup : CustomInventory
{
inventory.amount 1
inventory.maxamount 0
scale 2.0
States
{
Pickup:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0,20,0,0)
TNT1 A 0 A_Checkfloor("Ground")
TNT1 A 0 A_JumpIf(floorz==z, "Ground")
TNT1 A 0
goto Ground//AirMove
AirMove:
TNT1 A 0 A_Recoil(-33.5)
stop
Ground:
TNT1 A 0 A_Recoil(23.5)
stop
No:
TNT1 A 0 
fail
}
}

actor CrescentKickProtection : PowerProtection
{
Powerup.duration 12
damagefactor "BassCrescentKick", 0.0
}

actor BassChargeshotAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 17
+INVENTORY.IGNORESKILL
}
actor BassCrescentKickAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 112
+INVENTORY.IGNORESKILL
}
actor BassChargeshotAmmo2 : Inventory
{
inventory.amount 1
inventory.maxamount 17
+INVENTORY.IGNORESKILL
}
actor BassDashing : Inventory
{
inventory.amount 1
inventory.maxamount 1
}
actor BassCrescentKicking : Inventory
{
inventory.amount 1
inventory.maxamount 1
}
actor BassBusterChargeFX
{
PROJECTILE
damage (0)
+NOINTERACTION
+CLIENTSIDEONLY
Scale 2.35
States
{
Spawn:
TNT1 A 0
GRSH B 3
GRSH BBBBBBBBBBB 1 A_Fadeout(0.15)
stop
}
}

actor BassChargeShotSH
{
	PROJECTILE
	+THRUSPECIES
	+ACTIVATEMCROSS
	Species "Bass"
	translation "192:192=103:103", "198:198=110:110", "215:215=104:104" // Bass Colors: "220:220=95:95", "228:228=217:217"
	damagetype "BassBuster"
	obituary "%o was broken down by %k's Bass Buster."
	Speed 45
	Damage (45)
	radius 16
	height 32
	scale 3.5
	States
	{
	Spawn:
		BSCG B 0
		BSCG B 0 A_GiveInventory("Once", 1)
		BSCG ABC 3
		Goto Spawn+2
	Death:
		BSCG A 0
		stop
	}
}