actor BounceBallBoss : BaseMM8BDMWep_CBM
{
Tag "$TAGC_11H"
dropitem "BounceBallWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 28
Obituary "$OB_BOUNCEBALL"
Inventory.Pickupmessage "Autism be damned my boy can juggle"
weapon.ammotype "HeliumAmmo"
weapon.ammotype2 "UpUpAndAwayAmmo"
+WEAPON.NOAUTOAIM
States
{
Spawn:
C_02 E 1
loop
Ready:
CRAA A 0 ACS_ExecuteAlways(998,0,DYE_BOUNCEMAN)
CRAA A 0 ACS_NamedExecuteAlways("BounceAltFireACS",0,0,0,0)
BCMN A 0 A_GunFlash
ReadyDelay:
BCMN A 10 
Ready0:
BCMN A 0 A_JumpIfInventory("HeliumAmmo",35,"Ready1")
FUSH A 0 A_GiveInventory("HeliumAmmo_RC",1)
FUSH A 0 A_GiveInventory("BouncemanAmmo_RC",1)
BCMN A 1 A_WeaponReady(WRF_NOPRIMARY)
loop
Ready1:
FUSH A 0 A_GiveInventory("HeliumAmmo_RC",1)
FUSH A 0 A_GiveInventory("BouncemanAmmo_RC",1)
BCMN A 1 A_WeaponReady(WRF_ALLOWRELOAD)
goto Ready0

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
CRAA A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
CRAA A 1 A_Raise
Loop

Fire:
TNT1 A 0 A_JumpIfInventory("BounceHandDelay",1,"Fire2")
KNIA D 0 A_JumpIfInventory("SlappyHandOut",1,"Fire2")
STHU A 0 A_PlaySoundEx("weapon/bounceshot","Weapon")
KNIA C 0 A_GiveInventory("BounceHandFlag1",1)
BCMN A 0 A_TakeInventory("HeliumAmmo",35)
TNT1 A 0 A_GunFlash("Flash.Punch")
TNT1 A 1 A_GiveInventory("BouncemanMain_CI",1)
TNT1 A 1 Offset(0, 26)
TNT1 A 1 Offset(5, 29)
TNT1 A 1 Offset(10, 32)
TNT1 A 1 Offset(15, 35)
TNT1 A 1 Offset(20, 38)
TNT1 A 1 Offset(25, 41)
Goto Check

Fire2:
STHU A 0 A_PlaySoundEx("weapon/bounceshot","Weapon")
KNIA C 0 A_GiveInventory("BounceHandFlag1",1)
BCMN A 0 A_TakeInventory("HeliumAmmo",35)
TNT1 A 1 A_GiveInventory("BouncemanMain_CI",1)
TNT1 A 1 Offset(0, 26)
TNT1 A 1 Offset(5, 29)
TNT1 A 1 Offset(10, 32)
TNT1 A 1 Offset(15, 35)
TNT1 A 1 Offset(20, 38)
TNT1 A 1 Offset(25, 41)
Goto Check

Check:
TNT1 A 1 Offset(30, 44)A_GiveInventory("BounceHandTimeOutCheck",1)
KNIA D 0 A_JumpIfInventory("BounceHandTimeOutCheck",70,"Return")
KNIA D 0 A_JumpIfInventory("BounceHandReturn",1,"Return")
loop

Return:
TNT1 A 1 Offset(25, 41)
TNT1 A 1 Offset(20, 38)
TNT1 A 1 Offset(15, 35)
TNT1 A 1 Offset(10, 32)
TNT1 A 1 Offset(5, 29)
TNT1 A 1 Offset(0, 26)
BCMN A 0 A_TakeInventory("BounceHandTimeOutCheck",999)
BCMN A 0 A_TakeInventory("BounceHandFlag1",999)
BCMN A 0 A_TakeInventory("BounceHandReturn",999)
BCMN A 2 A_WeaponReady(WRF_NOFIRE)
BCMN A 4
Goto Ready0

Altfire:
TNT1 A 0 A_JumpIfInventory("BounceHandCooldown",1,"NoAmmo")
TNT1 A 0 A_JumpIfInventory("BounceHandDelay",1,"NoAmmo")
TNT1 A 0 A_JumpIfInventory("SlappyHandOut",1,"AltDetonate")
TNT1 A 0 A_JumpIfInventory("UpUpAndAwayAmmo",300,1) //350 isn't divisible by 4, sadly.
goto NoAmmo
STHU A 0 A_PlaySoundEx("weapon/scrambleshot","Weapon")
BCMN A 0 A_TakeInventory("UpUpAndAwayAmmo",300)
TNT1 A 0 A_GunFlash("Flash.Grab")
TNT1 A 0 A_GiveInventory("BouncemanAlt_CI",1)
TNT1 A 0 A_GiveInventory("BounceHandDelay",1)
TNT1 A 1 Offset(0, 26)
TNT1 A 1 Offset(-5, 29)
TNT1 A 1 Offset(-10, 32)
TNT1 A 1 Offset(-15, 35)
TNT1 A 1 Offset(-20, 38)
TNT1 A 1 Offset(-20, 38)
TNT1 A 1 Offset(-15, 35)
TNT1 A 1 Offset(-10, 32)
TNT1 A 1 Offset(-5, 29)
TNT1 A 1 Offset(0, 26)
TNT1 A 0 //A_WeaponReady(WRF_NOFIRE)
TNT1 A 0 A_GiveInventory("BounceHandFlag2",1)
BCMN A 5 A_WeaponReady(WRF_NOFIRE)
//BCMN A 0 A_Refire("AltHold")
Goto Ready0

AltDetonate:
BCMN A 0 //momentum is funny //Joke's on you motherfucker, I thought of a better solution.//FUCK you got me there greg
BCMN A 0 Offset(0,40)//A_ScaleVelocity(.4) //ScaleVelocity, motherfucker. The blend of momentum and pitsaving.//ggwp//When the hell did you remove this?
BCMN A 2 Offset(0,40)A_GiveInventory("SlappyHandReturnFlag",1)
BCMN A 2 Offset(0,60)
BCMN A 2 Offset(0,80)
BCMN A 2 Offset(0,60)
BCMN A 0 A_GiveInventory("BounceHandCooldown",1)
Goto Ready0

Reload:
BCMN A 0 A_JumpIfInventory("SuperballSlamCooldown",1,"ReadyDelay")
BCMN A 0 A_JumpIfInventory("UpUpAndAwayAmmo",300,"ReloadCheck")
goto NoAmmo
ReloadCheck:
BCMN A 0 A_JumpIfInventory("UpUpAndAwayAmmo",1,1)
goto ReloadEnd
MAGB C 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,150,100)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,0,1)
//BCMN C 0 A_TakeInventory("BounceHandFlag2",1)
BCMN A 0 A_JumpIf(z-floorz>0, "SuperballSlam")
BCMN B 1
goto SuperballSlamming
SuperballSlam:
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_ChangeFlag("SOLID",0)
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_GunFlash("Flash.SlamboniFall")
//TNT1 A 0 SetPlayerProperty(0,1,0)
BCMN B 1 Offset(0, 26)A_JumpIf(z-floorz==0, "SuperballSlamming")
//BCMN B 1 Offset(5, 29)
BCMN B 1 Offset(0, 36)A_JumpIf(z-floorz==0, "SuperballSlamming")
//BCMN B 1 Offset(15, 35)
BCMN B 1 Offset(0, 46)A_JumpIf(z-floorz==0, "SuperballSlamming")
//BCMN B 1 Offset(25, 41)
SuperballSlamLOOP:
BCMN D 1 Offset(0, 56)A_JumpIf(z-floorz<=128, "SuperballSlamLOOPNOLOG")
TNT1 A 0 ThrustThingZ(0,10,1,1)
TCCC C 0 A_SetArg(2,abs(velz*1.25))
//TCCC C 0 A_LogInt(args[2])
TNT1 A 0 A_SpawnItemEx("BounceM_Crush",0,0,-10,0,0,-10)
TNT1 A 0 A_JumpIfInventory("CutterFlag",350, "SuperballSlamming")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
goto SuperballSlamLOOP
SuperballSlamLOOPNOLOG:
BCMN D 1 Offset(0, 56)A_JumpIf(z-floorz==0, "SuperballSlamming")
TNT1 A 0 ThrustThingZ(0,10,1,1)
//TCCC C 0 A_LogInt(args[2])
TNT1 A 0 A_SpawnItemEx("BounceM_Crush",0,0,-10,0,0,-10)
TNT1 A 0 A_JumpIfInventory("CutterFlag",350, "SuperballSlamming")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
goto SuperballSlamLOOPNOLOG
SuperballSlamming:
TNT1 A 0 A_SpawnItemEx("ResolidifyPlayer_H")
TNT1 A 0 A_ChangeFlag("THRUACTORS",0)
TNT1 A 0 A_ScaleVelocity(.5)//A_Stop
//TNT1 A 0 A_ChangeFlag(Floorhugger,true)
BCMN A 0 A_TakeInventory("UpUpAndAwayAmmo",150)
DUOF F 0 A_PlaySoundEx("weapon/crashland", "Voice")
//TNT1 A 0 A_GiveInventory("SuperballSlammingFlag",1)
TNT1 A 0 A_GiveInventory("BouncemanReload_CI",1)
TNT1 A 0 A_GiveInventory("BouncemanReloadSlam_CI",1)
TNT1 A 0 A_GiveInventory("HeliumAmmo",35)
TNT1 A 0 A_GunFlash("Flash.Slamboni")
TNT1 A 0 ACS_NamedExecute("BULL_SetState",0,1)
BCMN D 1 Offset(0, 26)
BCMN D 1 Offset(0, 36)
BCMN D 1 Offset(0, 46)
BCMN D 1 Offset(0, 56)
BouncingUp:
BCMN D 1 Offset(0, 46)ThrustThingZ(0,args[2]+40,0,1)
BCMN D 1 Offset(0, 36)
BCMN D 1 Offset(0, 26)
FAKR A 0 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_R") == 1, "ReloadCheck")
DOCR A 0 A_PlaySoundEx("weapon/DocMetalShot","weapon")
ReloadEnd:
TCCC C 0 A_SetArg(2,0)
TNT1 A 0 A_SpawnItemEx("ResolidifyPlayer_H")
TNT1 A 0 A_ChangeFlag("THRUACTORS",0)
TNT1 A 0 A_TakeInventory("CutterFlag",999)
BCMN B 0 A_GiveInventory("SuperballSlamCooldown",1)
MAGB C 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,100,100)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,15,1)
goto ReadyDelay

NoAmmo:
BCMN A 1 //A_PlaySoundEx("weapon/noammo","Voice")
goto Ready0

Flash:
BCMN C 0 A_JumpIfInventory("BounceHandFlag2",1,"FlashNo")
BCMN B 1
loop
FlashNo:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("SlappyHandOut",1,"FlashNo")
TNT1 A 0 A_JumpIfInventory("BounceHandFlag2",1,"FlashNo") //Uncertain if this is necessary.
goto Flash
Flash.Punch:
BCMN C 0 A_JumpIfInventory("SlappyHandOut",1,"FlashNo")
BCMN BBBBD 1
ReturnCheck:
BCMN D 1
BCMN D 0 A_JumpIfInventory("BounceHandFlag1",1,"ReturnCheck")
BCMN DDBB 1
goto Flash
Flash.Grab:
BCMN C 0 A_JumpIfInventory("BounceHandFlag2",1,"FlashNo")
BCMN AAAACCCCAA 1
BCMN A 5
goto Flash
Flash.Slamboni:
BCMN C 0 A_JumpIfInventory("BounceHandFlag2",1,"FlashNo")
BCMN CCCCCCC 1
goto Flash
Flash.SlamboniFall:
BCMN C 0 A_JumpIfInventory("BounceHandFlag2",1,"FlashNo")
BCMN AAA 1 A_JumpIf(z-floorz==0,"Flash")
FallCheck:
BCMN C 1 A_JumpIf(z-floorz==0,"Flash")
loop
}
}

actor HeliumAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 140
+INVENTORY.IGNORESKILL
}

actor UpUpAndAwayAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 600
+INVENTORY.IGNORESKILL
}
actor BounceLatchTimeAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 140
+INVENTORY.IGNORESKILL
}

actor BounceHandTimeOutCheck : Inventory
{
inventory.amount 1
inventory.maxamount 70
+INVENTORY.IGNORESKILL
}

actor BounceHandDelay : Powerup
{
Powerup.Duration 15
}

actor BounceHandCooldown : Powerup
{
Powerup.Duration 25
}

actor SuperballSlammingFlag : Inventory
{
inventory.amount 1
inventory.maxamount 100
+INVENTORY.IGNORESKILL
}

actor SuperballSlamCooldown : Powerup
{
Powerup.Duration 50
}

actor BounceHandFlag1 : OnceC{}
actor BounceHandReturn : Powerup
{
Powerup.Duration 10
}
actor BounceHandFlag2 : Powerup
{
Powerup.Duration 3
}

actor SlappyHandOut : OnceC{}

actor SlappyHandReturnFlag : Powerup
{
Powerup.Duration 7//7
}

actor SlappyHandReturnFlagX : Powerup
{
Powerup.Duration 3
}

actor BounceDragState : OnceC {}
//WITH this, Bounce pulls players towards him.
//WITHOUT this, Bounce pulls himself towards players.
//Either way, Bounce pulls himself to terrain.
//However, WITHOUT this, Bounce gets an A_Stop for better travel.

//corny

//cringe even

actor BounceDragCancel : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "BNCEICON"
Tag "$TAGC_11H2"
inventory.pickupmessage "\cuHow many of these cancels can I get away with?"//one.
scale 2.0
+INVBAR
states
{
Spawn:
TNT1 A 1
wait
Use:
TNT1 A 0 A_JumpIfInventory("BounceHandDelay",1,"No")
TNT1 A 0 A_PlaySoundEx("item/ItemUseMM9","SoundSlot6")
BCMN A 0 A_GiveInventory("SlappyHandReturnFlagX",1)//ThrustThingZ(0,900,1,0)
fail
No:
TNT1 A 0
fail
}
}

actor HeliumAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SuperballSlamCooldown",1,"No")
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"Pickup2")
TNT1 A 0 A_GiveInventory("HeliumAmmo",2)
stop
Pickup2:
TNT1 A 0 A_GiveInventory("HeliumAmmo",4)
stop
No:
TNT1 A 0
stop
}
}

actor BouncemanAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SlappyHandOut",1,"No")
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"Pickup2")
TNT1 A 0 A_GiveInventory("UpUpAndAwayAmmo",4)
stop
Pickup2:
TNT1 A 0 A_GiveInventory("UpUpAndAwayAmmo",6)
stop
No:
TNT1 A 0 A_GiveInventory("BounceHandFlag2",1)
stop
}
}

actor BounceM_Crush
{
PROJECTILE
+DONTBLAST
damage (2)
Radius 15
Height 2
Obituary "$OB_BOUNCESLAM"
damagetype "BounceM_Bopper"
renderstyle none
States
{
Spawn:
TNT1 A 1
stop
}
}

actor BounceM_Punch
{
var int user_PTID;
Translation "194:194=39:39","195:195=41:41","202:202=214:214","192:192=193:193","198:198=197:197"
PROJECTILE
damagetype "BounceM_BopperX"
Obituary "$OB_BOUNCEBOP"
+NOTARGETSWITCH
+SKYEXPLODE
+FORCEXYBILLBOARD
+HITTRACER
damage (16)
Radius 12
Height 12
speed 60
scale 2.5
States
{
Spawn:
BNCM I 0
HARP H 0 A_SetUserVar("user_PTID",ACS_ExecuteWithResult(257,0))
SpawnLOOP:
BNCM B 0 A_GiveInventory("CutterFlag",1)
BNCM B 1 
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",-momx/3,-momy/3,-momz/3,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_TRANSFERTRANSLATION)//ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,0)
BNCM B 0 A_SpawnItemEx("BounceM_FistFX",0,0,0,0,0,0,0,1)
TNT1 A 0 ACS_NamedExecuteWithResult("CCBM_PitchAngleSetter",1)
TNT1 A 0 A_ChangeVelocity(cos(-pitch)*50,0,sin(-pitch)*50,3)
BNCM B 0 A_JumpIfInventory("CutterFlag",5,1)
goto SpawnLOOP
BNCM B 0 
BNCM B 0 A_SetDamageType("DMG_NoHitstun")
SpawnPOOP:
BNCM B 0 A_JumpIfInventory("WeaponCharge",10,"DeathBall")
BNCM B 0 A_GiveInventory("WeaponCharge",1)
BNCM B 1 
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",-momx/3,-momy/3,-momz/3,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("BounceM_TetherWire2",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_TRANSFERTRANSLATION)//ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,0)
loop
DeathBall:
TNT1 A 0 //ACS_NamedExecuteWithResult("CCBM_PitchAngleSetter",5)
BNCM B 0 A_ChangeFlag(NOINTERACTION,TRUE)
BBLL A 0 A_PlaySoundEx("weapon/scrambleshot","Weapon")
TNT1 A 0 A_SpawnItemEx("BounceM_BallSplit",0,0,0,momx,momy,momz,angle+10,1) //I'm not sure why using 'angle' worked but 0 didn't when these are supposed
TNT1 A 0 A_SpawnItemEx("BounceM_BallSplit",0,0,0,momx,momy,momz+6.25,angle+5,1) //to be relative by default. I don't want to know. - Greg
TNT1 A 0 A_SpawnItemEx("BounceM_BallSplit",0,0,0,momx,momy,momz-6.25,angle+5,1)
TNT1 A 0 A_SpawnItemEx("BounceM_BallSplit",0,0,0,momx,momy,momz+6.25,angle-5,1) //I'm not sure why using 'angle' worked but 0 didn't when these are supposed
TNT1 A 0 A_SpawnItemEx("BounceM_BallSplit",0,0,0,momx,momy,momz-6.25,angle-5,1) //to be relative by default. I don't want to know. - Greg
TNT1 A 0 A_SpawnItemEx("BounceM_BallSplit",0,0,0,momx,momy,momz,angle-10,1)
Death:
BNCM B 0 A_JumpIfInventory("CutterFlag",5,1)
goto DeathRebound
TNT1 A 0
DeathCont:
//BNCM B 0 A_SetDamageType("DMGNoHitstun")
TNT1 I 0 A_SpawnItemEx("BounceHandBoomFX",0,0,0,0,0,0,0,1)
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("BounceM_Confetti",0,0,0,random(-3,3),random(-3,3),random(3,-3),0,1)
//"####" "#" 0 ACS_ExecuteWithResult(259,1)//Set angle based on player pitch/angle
//BNCM I 0 A_Explode(100,96,0,0,48)
DeathCont2:
BNCM A 0 A_Stop
TNT1 I 0 A_SpawnItemEx("BounceM_HandReturn",0,0,0,0,0,0,0,1) //A_GiveToTarget("WavemanHookshotStart_P",1)
TNT1 AAAAAAAAAA 1 //ACS_NamedExecuteAlways("cbm_WaveHookshot",0,user_PTID,10,0)
stop
DeathRebound:
TNT1 A 0 A_JumpIf(ACS_NamedexecuteWithResult("cbm_istracerenemy")==1,"DeathCont")
BNCM I 0 A_GiveToTarget("BounceRebound_P",1)
goto DeathCont
}
}

actor BounceM_PunchB : BounceM_Punch{Translation"194:194=74:74","195:195=199:199","202:202=196:196","192:192=196:196","198:198=205:205"}
actor BounceM_PunchR : BounceM_Punch{Translation"194:194=41:41","195:195=43:43","202:202=170:170","192:192=170:170","198:198=171:171"}
actor BounceM_PunchO : BounceM_Punch{Translation"194:194=128:128","195:195=131:131","202:202=138:138","192:192=138:138","198:198=104:104"}
actor BounceM_PunchP : BounceM_Punch{Translation"194:194=232:232","195:195=223:223","202:202=214:214","192:192=214:214","198:198=229:229"}

actor BounceHandBoomFX : SpringFistHitFX
{
Scale 1.25
renderstyle add
States
{
Spawn:
X_8B BDF 2
stop
}
}

actor BounceM_FistFX : BasicClientSide
{
renderstyle add
+FORCEXYBILLBOARD
states
{
Spawn:
BNCM B 1 A_FadeOut(0.25)
loop
}
}

actor BounceRebound_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeVelocity(-Cos(pitch)*14, 0, sin(pitch)*14,1)
stop
}
}

Actor BounceM_TetherFX-1 : BasicClientSide
{
Translation "194:194=39:39","195:195=41:41","202:202=4:4","192:192=193:193","198:198=197:197"
+MISSILE
Scale 1.5
States
{
Spawn:
BNCM A 0
BNCM A 2
stop
}
}

actor BounceM_TetherFX0 : BounceM_TetherFX-1{Translation"194:194=74:74","195:195=199:199","202:202=4:4","192:192=196:196","198:198=205:205"}
actor BounceM_TetherFX1 : BounceM_TetherFX-1{Translation"194:194=41:41","195:195=43:43","202:202=4:4","192:192=170:170","198:198=171:171"}
actor BounceM_TetherFX2 : BounceM_TetherFX-1{Translation"194:194=128:128","195:195=131:131","202:202=4:4","192:192=138:138","198:198=104:104"}
actor BounceM_TetherFX3 : BounceM_TetherFX-1{Translation"194:194=232:232","195:195=223:223","202:202=4:4","192:192=214:214","198:198=229:229"}

Actor BounceM_TetherWire : DuoPunchLeftyReturn
{
Translation "194:194=193:193","195:195=39:39"
+NOCLIP
+FORCEXYBILLBOARD
Scale 1.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfCloser(64,"Death")
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
BNCM A 1 //A_SpawnItemEx("BounceM_TetherWireFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
Return:
Death2:
Death:
TNT1 A 0 
stop
}
}

Actor BounceM_TetherWire2 : DuoPunchLeftyReturn
{
Translation "194:194=193:193","195:195=39:39"
+NOCLIP
+FORCEXYBILLBOARD
renderstyle translucent
Scale 1.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfCloser(512,"ComingClose")
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
BNCM A 1 A_FadeOut(0.1,0)//A_SpawnItemEx("BounceM_TetherWireFX",0,0,0,0,0,0,0,1)
//TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
ComingClose:
TNT1 A 0 A_JumpIfCloser(64,"Death")
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
BNCM A 1 A_FadeIn(0.75)//A_SpawnItemEx("BounceM_TetherWireFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
Return:
Death2:
Death:
TNT1 A 0 
stop
}
}

Actor BounceM_HandReturn : DuoPunchLeftyReturn
{
Translation "194:194=193:193","195:195=39:39"
+NOCLIP
Scale 2.5
+FORCEXYBILLBOARD
renderstyle translucent
alpha 0.5
reactiontime 500 //15 sec
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfCloser(64,"Death")
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
BNCM C 1 //A_SpawnItemEx("BounceM_TetherWireFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
Return:
Death2:
Death:
BNCM I 0 A_GiveToTarget("BounceHandReturn",999)
TNT1 A 3
stop
}
}

Actor BounceM_LatchReturn : DuoPunchLeftyReturn
{
Translation "194:194=193:193","195:195=39:39"
+NOCLIP
Scale 2.5
+FORCEXYBILLBOARD
renderstyle translucent
alpha 0.5
var int user_PTID;
speed 50
States
{
Spawn:
TNT1 A 0
BNCM D 0 A_SetUserVar("user_PTID",ACS_ExecuteWithResult(257,0))
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfCloser(64,"Death")
OOTC H 0 A_GiveToTarget("SlappyHandOut",1)
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
BNCM I 0 A_GiveToTarget("BounceHandDelay")
BNCM C 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)//A_SpawnItemEx("BounceM_TetherWireFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
Return:
Death2:
Death:
OOTC H 0 A_TakeFromTarget("SlappyHandOut",1)
TNT1 A 3
stop
}
}

Actor BounceM_HandReturn2 : DuoPunchLeftyReturn
{
Obituary "$OB_BOUNCEPULL"
Translation "194:194=193:193","195:195=39:39"
+NOCLIP
+FORCEXYBILLBOARD
Scale 2.5
var int user_PTID;
States
{
Spawn:
TNT1 A 0
BNCM D 0
BNCM D 0 A_SetUserVar("user_PTID",ACS_ExecuteWithResult(257,0))
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfCloser(64,"Death")
OOTC H 0 A_GiveToTarget("SlappyHandOut",1)
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
BNCM C 1 //A_SpawnItemEx("BounceM_Drag")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
Return:
Death2:
Death:
BNCM I 0 A_GiveToTarget("BounceHandFlag2",999)
OOTC H 0 A_TakeFromTarget("SlappyHandOut",1)
TNT1 A 3
stop
}
}

actor BounceM_HandReturn2Drag : BounceM_HandReturn2
{
Obituary "$OB_BOUNCEPULL"
	States
	{
		Spawn:
		TNT1 A 0
		BNCM D 0 A_SetUserVar("user_PTID",ACS_ExecuteWithResult(257,0))
		TNT1 A 0 A_RearrangePointers(0,0,2)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(64,"Death")
		TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
		BNCM C 1 A_SpawnItemEx("BounceM_DragInitial")
		TNT1 A 0 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
		TNT1 A 0 A_CountDown
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		goto Spawn2
		Spawn2:
		TNT1 A 0 A_JumpIfCloser(64,"Death")
		TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
		BNCM C 1 A_SpawnItemEx("BounceM_Drag")
		TNT1 A 0 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
		TNT1 A 0 A_CountDown
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		loop
	}
}

actor BounceM_DragInitial
{
+THRUSPECIES
PROJECTILE
damagetype "BounceM_Pull"
Obituary "$OB_BOUNCEPULL"
+RIPPER
+NOINTERACTION
+DONTBLAST
damage (0)
radius 1
height 1
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(12,28,0,0,28)
stop
Crash:
Death:
XDeath:
TNT1 A 0
stop
}
}

actor BounceM_Drag : BounceM_DragInitial{damagetype "BounceM_Pull2"}

Actor BounceM_TetherWireFX : BasicClientSide
{
+NOINTERACTION
Scale 1.5
States
{
Spawn:
TNT1 A 1
TNT1 A 0 A_JumpIfCloser(32,"Death")
BNCM A 2 
stop
Death:
TNT1 A 0
stop
}
}

actor BounceM_Confetti
{
+MISSILE
+DONTBLAST
+DONTREFLECT
+CLIENTSIDEONLY
+LOWGRAVITY
+THRUACTORS
+DONTSPLASH
damage 0
height 2
radius 2
scale 2.0
States
{
Spawn:
PCNF A 0
PCNF A 0 A_Jump(85,"Spawn2")
PCNF A 0 A_Jump(85,"Spawn3")
Spawn1://White
PCNF A 1
PCNF BCD 1 A_ChangeVelocity(momx*0.9,momy*0.9,momz,2)
PCNF ABCDABCD 1
PCNF AAAAABBBBBCCCCCDDDDD 1 A_Fadeout(.1)
stop
Spawn2://195/249
PCNF T 1
PCNF UTU 1 A_ChangeVelocity(momx*0.9,momy*0.9,momz,2)
PCNF TUTUTUTU 1
PCNF TTTTTUUUUUTTTTTUUUUU 1 A_Fadeout(.1)
stop
Spawn3://194/250/4
PCNF V 1
PCNF WB 1 A_ChangeVelocity(momx*0.9,momy*0.9,momz,2)
PCNF VWBVWBVW 1
PCNF VVVVVBBBBBWWWWWVVVVVBBBBB 1 A_Fadeout(.1)
stop
}
}

actor BounceM_Ball
{
Translation "194:194=39:39","195:195=41:41","202:202=214:214","192:192=193:193","198:198=197:197"
PROJECTILE
+HEXENBOUNCE
+CANBOUNCEWATER
+FORCEXYBILLBOARD
-NOGRAVITY
WALLBOUNCEFACTOR 2
BOUNCEFACTOR 2
seesound "weapon/bouncebounce"
damagetype "DMGNoHitstun"
Obituary "$OB_BOUNCEBALL"
speed 30
Radius 16
Height 16
scale 2.5
damage (12)
bouncecount 2
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
BBAL D 0 A_JumpIfInventory("BounceBallTimer",10,"Pop")
BBAL E 0 A_GiveInventory("BounceBallTimer",1)
BBAL DEFE 4
loop
Pop:
Death:
TNT1 A 0 A_PlaySoundEx("weapon/bounceexplode", "Weapon")
TNT1 A 0 A_SpawnItemEx("BounceBallPop")
TNT1 A 0 A_SpawnItemEx("BounceBallConfettiScatter")
TNT1 A 35
Stop

}
}

actor BounceM_BallSplit : BounceM_Ball
{
damage (4)
-HEXENBOUNCE
-CANBOUNCEWATER
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
BBAL D 0 A_JumpIfInventory("BounceBallTimer",10,"Pop")
BBAL E 0 A_GiveInventory("BounceBallTimer",1)
BBAL GHIH 2
loop
Pop:
Death:
TNT1 A 0 A_PlaySoundEx("weapon/blastpuff", "Weapon")
TNT1 A 0 A_SpawnItemEx("BounceBallPop")
TNT1 A 35
Stop

}
}

actor BounceM_BallB : BounceM_Ball{Translation"194:194=74:74","195:195=199:199","202:202=196:196","192:192=196:196","198:198=205:205"}
actor BounceM_BallR : BounceM_Ball{Translation"194:194=41:41","195:195=43:43","202:202=170:170","192:192=170:170","198:198=171:171"}
actor BounceM_BallO : BounceM_Ball{Translation"194:194=128:128","195:195=131:131","202:202=138:138","192:192=138:138","198:198=104:104"}
actor BounceM_BallP : BounceM_Ball{Translation"194:194=232:232","195:195=223:223","202:202=214:214","192:192=214:214","198:198=229:229"}

actor BounceM_BallReload : BounceM_Ball { Damagetype "BounceReloadBalls" }
actor BounceM_BallReloadB : BounceM_BallReload{Translation"194:194=74:74","195:195=199:199","202:202=196:196","192:192=196:196","198:198=205:205"}
actor BounceM_BallReloadR : BounceM_BallReload{Translation"194:194=41:41","195:195=43:43","202:202=170:170","192:192=170:170","198:198=171:171"}
actor BounceM_BallReloadO : BounceM_BallReload{Translation"194:194=128:128","195:195=131:131","202:202=138:138","192:192=138:138","198:198=104:104"}
actor BounceM_BallReloadP : BounceM_BallReload{Translation"194:194=232:232","195:195=223:223","202:202=214:214","192:192=214:214","198:198=229:229"}

/*actor BounceBallX : BounceBall
{
States
{
Spawn:
BBAL D 0 A_JumpIfInventory("BounceBallTimer",10,"Pop")
BBAL E 0 A_GiveInventory("BounceBallTimer",1)
BBAL GHGI 4
loop
Bounce.Actor:
BBAL G 0 A_ChangeFlag("THRUACTORS", 1)
BBAL G 2 A_ChangeVelocity(40.0,0,velz,CVF_RELATIVE|CVF_REPLACE)
BBAL I 2
BBAL I 0 A_ChangeFlag("THRUACTORS",0)
Goto Spawn

}
}*/

actor BounceBallPop
{
+NOINTERACTION
States
{
Spawn:
MMFX BCDE 2
Stop
}
}

actor BounceBallConfettiScatter
{
+NOINTERACTION
States
{
Spawn:
TNT1 AAAAA 0 A_SpawnItemEx("BounceM_Confetti",0,0,0,7,0,random(-2,2),random(0,360))
Stop
}
}

actor BounceBallTimer : Inventory
{
inventory.amount 1
inventory.maxamount 10
}

actor BounceHandLanded : Inventory
{
inventory.amount 1 
-invbar
}
 
actor BounceM_Latch : FastProjectile
{
Translation "194:194=39:39","195:195=41:41","202:202=4:4","192:192=193:193","198:198=197:197"
PROJECTILE
+SKYEXPLODE
+HITTRACER
+FORCEXYBILLBOARD
Obituary "$OB_BOUNCEGRAB"
Radius 16
Height 32
scale 2.5
damage (0)
speed 50
//gravity 2
damagetype "DMGNoHitstun"
var int user_stuck;
var int user_PTID;
States
{
Spawn:
BNCM D 0
BNCM D 0 A_SetUserVar("user_PTID",ACS_ExecuteWithResult(257,0))
BNCM DDDDDDDDDDDD 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)//A_SpawnItemEx("BounceM_TetherWire2",0,0,0,0,0,0,0,1)
BNCM G 0 A_Stop
OOTC H 0 A_GiveToTarget("BounceHandDelay",1)
BNCM G 0 A_SpawnItemEx("BounceM_LatchReturn",0,0,0,0,0,0,0,1)
stop
Crash:
XDeath:
BNCM A 0 A_SetUserVar("user_stuck", 1)
Death: 
BNCM A 0 A_Stop
BNCM D 0 A_SetUserVar("user_PTID",ACS_ExecuteWithResult(257,0))
BNCM A 0 A_PlaySound("weapon/rminestick")
LatchStart:
OOTC H 0 A_GiveToTarget("BounceHandLanded",1)
//OOTC H 0 A_TakeFromTarget("UpUpAndAwayAmmo",75)
OOTC H 0 A_TakeFromTarget("BounceHandCooldown",999)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerenemy")==1,"LatchCooldown")
goto Latch
//BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
//BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
LatchCooldown:
OOTC H 0 A_GiveToTarget("BounceHandDelay",1)
//BNCM D 0 A_JumpIfInventory("WeaponCharge",25,"Latched")
//loop
Latch:
OOTC H 0 A_GiveToTarget("SlappyHandOut",1)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 0 A_TakeFromTarget("BounceLatchTimeAmmo",1)
BNCM D 0 A_JumpIfInTargetInventory("BounceLatchTimeAmmo",1,1)
goto Detonate
BNCM D 1 A_JumpIfInTargetInventory("SlappyHandReturnFlag",1,"Detonate")
BNCM D 0 A_JumpIfInTargetInventory("SlappyHandReturnFlagX",1,"Exit2")
BNCM D 0 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)//A_SpawnItemEx("BounceM_TetherWire2",0,0,0,0,0,0,0,1)
BNCM D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Detonate")
BNCM D 0 A_JumpIf(user_stuck==0,"Latch")
BNCM D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1)==0,"Detonate")
Goto Latch
Detonate:
BNCM B 0 A_TakeFromTarget("BounceHandLanded",99)
BNCM B 0 A_GiveToTarget("BounceLatchTimeAmmo",140)
BNCM B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Exit")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerenemy")==1,"DetonateDrag")
BNCM A 0 A_PlaySound("weapon/marsmissiletravel")
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
HARP I 0 A_SpawnItemEx("BounceM_HandReturn2Drag",0,0,0,0,0,0,0,1) //A_GiveToTarget("WavemanHookshotStart_P",1)
//HARP I 0 A_SpawnItemEx("BounceHandBoomFX",0,0,0,0,0,0,0,1)
TNT1 AAAAAAAAAA 1 ACS_NamedExecuteAlways("cbm_WaveHookshot",0,user_PTID,25,0)
stop
DetonateDrag:
//HARP I 0 A_SpawnItemEx("BounceM_HandReturn2Drag",0,0,0,0,0,0,0,1) //A_GiveToTarget("WavemanHookshotStart_P",1)
BNCM B 0 A_JumpIf(user_stuck==1,"Exit")
TNT1 AAAAAAAAAA 1 ACS_NamedExecuteAlways("cbm_WaveHookshot",0,user_PTID,15,0)
Goto Exit
Exit2:
BNCM B 0 A_GiveToTarget("BounceHandCooldown",1) 
Exit:
BNCM B 0 A_GiveToTarget("BounceLatchTimeAmmo",140)
BNCM A 0 A_PlaySound("weapon/marsmissiletravel")
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
BNCM D 1 ACS_NamedExecuteAlways("cbm_DrawBounceTether",0,0,user_PTID,24)
BNCM A 0 A_Warp(AAPTR_TRACER,0,0,12,0,WARPF_COPYINTERPOLATION)
HARP I 0 A_SpawnItemEx("BounceM_HandReturn2Drag",0,0,0,0,0,0,0,1)
TNT1 A 1
stop
}
}

actor BounceM_LatchB : BounceM_Latch {Translation "194:194=74:74","195:195=199:199","202:202=4:4","192:192=196:196","198:198=205:205"}
actor BounceM_LatchR : BounceM_Latch {Translation "194:194=41:41","195:195=43:43","202:202=4:4","192:192=170:170","198:198=171:171"}
actor BounceM_LatchO : BounceM_Latch {Translation "194:194=128:128","195:195=131:131","202:202=4:4","192:192=138:138","198:198=104:104"}
actor BounceM_LatchP : BounceM_Latch {Translation "194:194=232:232","195:195=223:223","202:202=4:4","192:192=214:214","198:198=229:229"}

actor BounceShockWaveSpawner : BasicExplosion
{
Translation "199:199=4:4"
damagetype "BounceM_Slam"
Obituary "$OB_BOUNCESLAM"
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,15,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,75,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,105,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,165,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,195,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,225,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,255,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,285,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,315,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,330,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWave",0,0,0,30,0,0,345,1)
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,15,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,75,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,105,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,165,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,195,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,225,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,255,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,285,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,315,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,330,1)
TNT1 A 0 A_SpawnItemEx("BounceShockWaveClientside",0,0,0,30,0,0,345,1)
TNT1 A 2
stop
}
}

actor BounceShockWaveSpawnerB : BounceShockWaveSpawner{Translation "199:199=205:205"}
actor BounceShockWaveSpawnerR : BounceShockWaveSpawner{Translation "199:199=171:171"}
actor BounceShockWaveSpawnerO : BounceShockWaveSpawner{Translation "199:199=104:104"}
actor BounceShockWaveSpawnerP : BounceShockWaveSpawner{Translation "199:199=229:229"}

actor BounceShockWave
{
PROJECTILE
damagetype "BounceM_Slam"
Obituary "$OB_BOUNCESLAM"  
+THRUSPECIES
+STEPMISSILE
+NOEXPLODEFLOOR
-NOGRAVITY
maxstepheight 32 
gravity 555
var int user_power;
Damage (4)//(20-user_power)
Radius 32
Height 32
Speed 30
Scale 2.0
States
{
Spawn:
Y_0E S 0
Y_0E S 1 A_GiveInventory("somesortofweirdassfloorhugger",1)
TNT1 A 0 A_SetUserVar("user_power",user_power+2)
Y_0E S 1 A_GiveInventory("somesortofweirdassfloorhugger",1)
TNT1 A 0 A_SetUserVar("user_power",user_power+2)
Y_0E S 1 A_GiveInventory("somesortofweirdassfloorhugger",1)
TNT1 A 0 A_SetUserVar("user_power",user_power+2)
Y_0E S 1 A_GiveInventory("somesortofweirdassfloorhugger",1)
TNT1 A 0 A_SetUserVar("user_power",user_power+2)
Y_0E S 1 A_GiveInventory("somesortofweirdassfloorhugger",1)
TNT1 A 0 A_SetUserVar("user_power",user_power+2)
Y_0E S 1 A_GiveInventory("somesortofweirdassfloorhugger",1)
TNT1 A 0 A_SetUserVar("user_power",user_power+2)
TNT1 A 0 A_GiveInventory("somesortofweirdassfloorhugger",1)
Y_0E S 1 A_FadeOut(0.25)
TNT1 A 0 A_SetUserVar("user_power",user_power+3)
Loopers:
TNT1 A 0 A_GiveInventory("somesortofweirdassfloorhugger",1)
Y_0E S 1 A_FadeOut(0.25)
wait
Death:
TNT1 A 1
stop
}
}

ACTOR BounceShockWaveClientside : BounceShockWave
{
Damage(0)
renderstyle normal
+CLIENTSIDEONLY
}

actor BounceM_SlamProtect : PowerProtection
{
Powerup.Duration 8
DamageFactor "BounceM_Slam", 0.0
}
 
actor BounceM_SlamBallsProtect : PowerProtection
{
Powerup.Duration 8
DamageFactor "BounceReloadBalls", 0.0
}

actor BouncemanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BounceM_Punch",0,1,-10,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BounceM_PunchB",0,1,-10,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BounceM_PunchR",0,1,-10,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BounceM_PunchO",0,1,-10,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BounceM_PunchP",0,1,-10,0)
goto Done
}
}

actor BouncemanAlt_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BounceM_Latch",0,1,10,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BounceM_LatchB",0,1,10,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BounceM_LatchR",0,1,10,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BounceM_LatchO",0,1,10,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BounceM_LatchP",0,1,10,0)
goto Done
}
}

actor BounceM_PullProtect : PowerProtection
{
Powerup.Duration 10
DamageFactor "BounceM_Pull", 0.0
DamageFactor "BounceM_Pull2", 0.0
}

actor BouncemanReload_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BounceM_BallReload",0,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReload",60,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReload",120,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReload",180,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReload",240,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReload",300,1,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadB",0,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadB",60,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadB",120,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadB",180,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadB",240,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadB",300,1,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadR",0,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadR",60,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadR",120,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadR",180,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadR",240,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadR",300,1,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadO",0,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadO",60,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadO",120,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadO",180,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadO",240,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadO",300,1,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadP",0,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadP",60,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadP",120,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadP",180,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadP",240,1,0,0)
TNT1 A 0 A_FireCustomMissile("BounceM_BallReloadP",300,1,0,0)
goto Done
}
}

actor BouncemanReloadSlam_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BounceShockWaveSpawner",0,0,0,-50)
stop
FireB:
TNT1 A 0 A_FireCustomMissile("BounceShockWaveSpawnerB",0,0,0,-50)
stop
FireR:
TNT1 A 0 A_FireCustomMissile("BounceShockWaveSpawnerR",0,0,0,-50)
stop
FireO:
TNT1 A 0 A_FireCustomMissile("BounceShockWaveSpawnerO",0,0,0,-50)
stop
FireP:
TNT1 A 0 A_FireCustomMissile("BounceShockWaveSpawnerP",0,0,0,-50)
stop
}
}
