actor ImpairmentStack : Inventory
{
inventory.amount 1
inventory.maxamount 100
} //UEC

Actor StrikeM_ReboundStriker
{
Translation "198:198=251:251", "192:192=38:38"
PROJECTILE
Damagetype "DMGNoHitstun"
Obituary "$OB_STRIKEBALL"
+DONTSPLASH
+HEXENBOUNCE
+SKYEXPLODE
+BOUNCEONACTORS
+USEBOUNCESTATE
+HITTRACER
SeeSound "weapon/reboundprojectile"
BounceFactor 1.0
WallBounceFactor 1.0
BounceCount 6
Damage (10)
Radius 16
Height 16
Speed 50
Scale 2.5
States 
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
Spawn2:
RBDS ABCD 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"SpawnNew")
RBDS A 0 A_JumpIfInventory("WeaponCharge",4,"Spawn3")
RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
RBDS A 0 A_GiveInventory("WeaponCharge",1)
loop

Spawn3:
RBDS A 0 A_ChangeFlag(NOGRAVITY,FALSE)
RBDS ABCD 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"SpawnNew")
RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
loop

Bounce.Actor:
RBDS A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerenemy")==1,"GivenPower")
RBDS A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
goto Spawn3

GivenPower:
RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
RBDS A 0 A_GiveInventory("ReboundStrikerPowerInv",1)
RBDS A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
RBDS A 0 A_ChangeFlag("THRUACTORS", 1)
RBDS A 1 A_ChangeVelocity(50.0,0,velz,CVF_RELATIVE|CVF_REPLACE)
RBD2 B 1
RBDS C 1
RBD2 D 1
RBD2 D 0 A_ChangeFlag("THRUACTORS",0)
goto Spawn4

Spawn4:
RBDS A 0 A_ChangeFlag(NOGRAVITY,FALSE)
RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
RBDS A 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"SpawnNew")
RBD2 B 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"SpawnNew")
RBDS C 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"SpawnNew")
RBD2 D 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"SpawnNew")
loop

Death:
RBDS D 0 A_JumpIfInventory("ReboundStrikerPowerInv",1,"GivePower")
RBDS D 0 A_SpawnItemEx("ReboundStrikerReturner", 0, 0, 0, 0, 0, 0, 0, 1)
stop

SpawnNew:
RBDS D 0 A_JumpIfInventory("ReboundStrikerPowerInv",1,"GivePower")
RBDS D 0 A_SpawnItemEx("ReboundStrikerReturner", 0, 0, 0, 0, 0, 0, 0, 1)
stop

GivePower:
RBDS D 0 A_SpawnItemEx("ReboundStrikerReturnerPowered", 0, 0, 0, 0, 0, 0, 0, 1)
stop
}
}

actor StrikeM_ReboundStrikerB : StrikeM_ReboundStriker {translation "192:192=205:205", "198:198=74:74"}
actor StrikeM_ReboundStrikerR : StrikeM_ReboundStriker {translation "192:192=171:171", "198:198=41:41"}
actor StrikeM_ReboundStrikerO : StrikeM_ReboundStriker {translation "192:192=104:104", "198:198=128:128"}
actor StrikeM_ReboundStrikerP : StrikeM_ReboundStriker {translation "192:192=229:229", "198:198=232:232"}

actor ReboundStrikeItem : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "RBDSJ"
scale 2.0
Tag "$TAGC_10E3"
inventory.pickupmessage "OUGHH THATS A BASEBALL GUYS ITS A BASEBALL LIKE JOJO ITS A BASEBALL OGH THATS A BASEBALL"//I don't like you people.
+INVBAR
states
{
Spawn:
CRAA X 1
loop
Use:
TNT1 A 0 A_PlaySoundEx("weapon/BoobeamBeep","SoundSlot6")
TNT1 A 0 A_GiveInventory("ReboundStrikeProjCheck",1)
fail
No:
TNT1 A 0
fail
}
}

Actor ReboundStrikerReturner : StrikeM_ReboundStriker { 
	+NOINTERACTION
	+SEEKERMISSILE
	ReactionTime 87//about 10 seconds
	States {
		Spawn:
			RBDS A 0
			RBDS A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)//Target >> Tracer
			RBDS A 0 A_FaceTarget
		Goto Spawn2
		Spawn2:
			RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
			RBDS AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBDS A 1 A_JumpIfCloser(46, "Return")
			RBDS BB 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBDS B 1 A_JumpIfCloser(46, "Return")
			RBDS CC 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBDS C 1 A_JumpIfCloser(46, "Return")
			RBDS DD 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBDS D 1 A_JumpIfCloser(46, "Return")
			RBDS D 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		Loop
		
		Return:
			TNT1 A 0 A_JumpIfInTargetInventory("StrikeBuntCheck",1,"ReturnBunted")
			TNT1 A 0 //A_GiveToTarget("ReboundStrikerLimit")
			TNT1 A 0 A_GiveToTarget("StrikeHUDCheck")
			stop
			
		ReturnBunted:
			TNT1 A 0 A_GiveToTarget("StrikeHUDCheck2")
			TNT1 A 1
			TNT1 A 0 A_GiveToTarget("StrikemanMain2_CI")
			TNT1 A 0 A_PlaySoundEx("weapon/reboundbunt","Weapon")
			TNT1 A 18
			stop
			
		Death:
			TNT1 A 0
			stop
	}
}

Actor ReboundStrikerReturnerPowered : StrikeM_ReboundStriker { 
	+NOINTERACTION
	+SEEKERMISSILE
	ReactionTime 87//about 10 seconds
	States {
		Spawn:
			RBD2 A 0
			RBD2 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)//Target >> Tracer
			RBD2 A 0 A_FaceTarget
		Goto Spawn2
		Spawn2:
			RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
			RBD2 AA 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBDS A 1 A_JumpIfCloser(46, "Return")
			RBD2 BB 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBD2 B 1 A_JumpIfCloser(46, "Return")
			RBD2 CC 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBDS C 1 A_JumpIfCloser(46, "Return")
			RBD2 DD 0 A_SeekerMissile(90, 90, SMF_PRECISE)
			RBD2 D 1 A_JumpIfCloser(46, "Return")
			RBD2 D 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
		Loop
		
		Return:
			TNT1 A 0 A_JumpIfInTargetInventory("StrikeBuntCheck",1,"ReturnBunted")
			TNT1 A 0 //A_GiveToTarget("ReboundStrikerLimit")
			TNT1 A 0 A_GiveToTarget("StrikeHUDCheck")
			TNT1 A 0 A_GiveToTarget("ReboundStrikerPower", 4)
			stop
			
		ReturnBunted:
			TNT1 A 0 A_GiveToTarget("StrikeHUDCheck2")
			TNT1 A 1
			TNT1 A 0 A_GiveToTarget("StrikemanMain3_CI")
			TNT1 A 0 A_PlaySoundEx("weapon/reboundbunt","Weapon")
			TNT1 A 18
			stop
			
		Death:
			TNT1 A 0
			stop
	}
}

actor ReboundStrikerHitFX
{
translation "202:202=210:210"
PROJECTILE
+DONTBLAST
+NOCLIP
+NOINTERACTION
reactiontime 1
damage (0)
Radius 20
Height 20
speed 0
scale 2.5
States
{
Spawn:
TNT1 A 0
UMFX J 0 A_Stop
UMFX J 2
XMFX S 2
UMFX JK 2
stop
}
}

actor StrikeMelee : BasicPunch
{
damagetype "StrikeBall2"
Obituary "$OB_STRIKEBAT"
mass 20
}

actor StrikeMeleeB : StrikeMelee{translation "202:202=4:4", "199:199=205:205"}
actor StrikeMeleeR : StrikeMelee{translation "202:202=4:4", "199:199=171:171"}
actor StrikeMeleeO : StrikeMelee{translation "202:202=4:4", "199:199=104:104"}
actor StrikeMeleeP : StrikeMelee{translation "202:202=4:4", "199:199=229:229"}

actor StrikeMeleeC : BasicExplosion
{
damagetype "StrikeBall"
Obituary "$OB_STRIKEBOUNCE"
States
{
Spawn:
TNT1 A 0
TNT1 A 3 A_Explode(20,48,0,0,49)
stop
XDeath:
TNT1 A 0 A_PlaySoundEx("weapon/blizzstrike","Body")
stop
}
}

actor StrikeMeleeCProtect : PowerProtection
{
Powerup.Duration 12
DamageFactor "StrikeBall", 0.0
}

  Actor ReboundStrikerLimit : Ammo
  {
    Inventory.Amount 1
    Inventory.MaxAmount 175
  }
  
  Actor ReboundStrikerPower : Ammo
  {
    Inventory.Amount 1
    Inventory.MaxAmount 28
  }

  Actor StrikeBuntCheck : Inventory
  {
    Inventory.Amount 1
    Inventory.MaxAmount 1
  }
  
  Actor StrikeHitTarget : Inventory
  {
    Inventory.Amount 1
    Inventory.MaxAmount 1
  }
  
  Actor ReboundStrikerPowerInv : Inventory
  {
    Inventory.Amount 1
    Inventory.MaxAmount 1
  }
  
actor ReboundStrikeProjCheck : Powerup
{
Powerup.Duration 3
}

actor StrikeHUDCheck : Powerup
{
Powerup.Duration 3
}

actor StrikeHUDCheck2 : Powerup
{
Powerup.Duration 2
}

actor OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH : Powerup
{
Powerup.Duration 8
}

Actor ReboundStrikerPowerball
{
Translation "198:198=251:251", "192:192=38:38"
PROJECTILE
SeeSound "weapon/reboundprojectile"
Damagetype "DMGNoHitstun"
Obituary "$OB_STRIKEBALLX"
+DONTSPLASH
+HEXENBOUNCE
+SKYEXPLODE
+BOUNCEONACTORS
+USEBOUNCESTATE
BounceFactor 1.0
WallBounceFactor 1.0
BounceCount 8
Damage (15)
Radius 16
Height 16
Speed 60
Scale 2.5
States 
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
RBDS A 1
RBDS A 0 A_SpawnItemEx("ReboundStrikerHitFX")
Spawn2:
RBDS A 1
RBD2 B 1
RBDS C 1
RBD2 D 1
loop

Bounce.Actor:
RBDS A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
RBDS A 0 A_ChangeFlag("THRUACTORS", 1)
RBDS A 1 A_ChangeVelocity(60.0,0,velz,CVF_RELATIVE|CVF_REPLACE)
RBD2 B 1
RBDS C 1
RBD2 D 1
RBD2 D 0 A_ChangeFlag("THRUACTORS",0)
goto Spawn2

Death:
TNT1 A 1 //A_GiveToTarget("ReboundStrikerLimit")
TNT1 A 1
stop
}
}

actor ReboundStrikerPowerballB : ReboundStrikerPowerball {translation "192:192=205:205", "198:198=74:74"}
actor ReboundStrikerPowerballR : ReboundStrikerPowerball {translation "192:192=171:171", "198:198=41:41"}
actor ReboundStrikerPowerballO : ReboundStrikerPowerball {translation "192:192=104:104", "198:198=128:128"}
actor ReboundStrikerPowerballP : ReboundStrikerPowerball {translation "192:192=229:229", "198:198=232:232"}

actor StrikemanMain2_CI : TeamColor_CI
{
States
{
FireX:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball",0,0,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerballB",0,0,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerballR",0,0,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerballO",0,0,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerballP",0,0,8,0)
goto Done
}
}

Actor ReboundStrikerPowerball2
{
Translation "198:198=251:251", "192:192=38:38"
PROJECTILE
SeeSound "weapon/reboundprojectile"
Damagetype "DMGNoHitstun"
Obituary "$OB_STRIKEBALLX"
+DONTSPLASH
+HEXENBOUNCE
+SKYEXPLODE
+BOUNCEONACTORS
+USEBOUNCESTATE
BounceFactor 1.0
WallBounceFactor 1.0
BounceCount 6
Damage (20)
Radius 16
Height 16
Speed 75
Scale 2.5
States 
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
RBDS A 1 A_SpawnItemEx("ReboundStrikerBallFX1",0,0,0,0,0,0,0,1)
RBDS A 0 A_SpawnItemEx("ReboundStrikerHitFX")
Spawn2:
RBD2 A 1 A_SpawnItemEx("ReboundStrikerBallFX1",0,0,0,0,0,0,0,1)
RBDS B 1 A_SpawnItemEx("ReboundStrikerBallFX2",0,0,0,0,0,0,0,1)
RBD2 C 1 A_SpawnItemEx("ReboundStrikerBallFX3",0,0,0,0,0,0,0,1)
RBDS D 1 A_SpawnItemEx("ReboundStrikerBallFX4",0,0,0,0,0,0,0,1)
loop

Bounce.Actor:
RBDS A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
RBDS A 0 A_ChangeFlag("THRUACTORS", 1)
RBD2 A 1 A_ChangeVelocity(75.0,0,velz,CVF_RELATIVE|CVF_REPLACE)
RBD2 A 0 A_SpawnItemEx("ReboundStrikerBallFX1",0,0,0,0,0,0,0,1)
RBDS B 1 A_SpawnItemEx("ReboundStrikerBallFX2",0,0,0,0,0,0,0,1)
RBD2 C 1 A_SpawnItemEx("ReboundStrikerBallFX3",0,0,0,0,0,0,0,1)
RBDS D 1 A_SpawnItemEx("ReboundStrikerBallFX4",0,0,0,0,0,0,0,1)
RBDS D 0 A_ChangeFlag("THRUACTORS",0)
goto Spawn2

Death:
TNT1 A 1 //A_GiveToTarget("ReboundStrikerLimit")
TNT1 A 1
stop
}
}

actor ReboundStrikerPowerball2B : ReboundStrikerPowerball2 {translation "192:192=205:205", "198:198=74:74"}
actor ReboundStrikerPowerball2R : ReboundStrikerPowerball2 {translation "192:192=171:171", "198:198=41:41"}
actor ReboundStrikerPowerball2O : ReboundStrikerPowerball2 {translation "192:192=104:104", "198:198=128:128"}
actor ReboundStrikerPowerball2P : ReboundStrikerPowerball2 {translation "192:192=229:229", "198:198=232:232"}

Actor ReboundStrikerPowerballAlt
{
Translation "198:198=251:251", "192:192=38:38"
PROJECTILE
SeeSound "weapon/reboundprojectile"
Damagetype "DMGNoHitstun"
Obituary "$OB_STRIKEBALLX"
+DONTSPLASH
+HEXENBOUNCE
+SKYEXPLODE
+BOUNCEONACTORS
+USEBOUNCESTATE
BounceFactor 1.0
WallBounceFactor 1.0
BounceCount 8
Damage (15)
Radius 16
Height 16
Speed 55
Scale 2.5
States 
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
RBDS A 1
RBDS A 0 A_SpawnItemEx("ReboundStrikerHitFX")
Spawn2:
RBDS A 0 A_GiveToTarget("OHTHATSABASEBALLXDXDXDGETITITSAJOJOREFERENCELAUGH",1)
RBDS A 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"Death")
RBD2 B 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"Death")
RBDS C 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"Death")
RBD2 D 1 A_JumpIfInTargetInventory("ReboundStrikeProjCheck",1,"Death")
loop

Bounce.Actor:
RBDS A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
RBDS A 0 A_ChangeFlag("THRUACTORS", 1)
RBDS A 1 A_ChangeVelocity(60.0,0,velz,CVF_RELATIVE|CVF_REPLACE)
RBD2 B 1
RBDS C 1
RBD2 D 1
RBD2 D 0 A_ChangeFlag("THRUACTORS",0)
goto Spawn2

Death:
RBDS D 0 A_SpawnItemEx("ReboundStrikerReturnerPowered", 0, 0, 0, 0, 0, 0, 0, 1)
TNT1 A 1
stop
}
}

actor ReboundStrikerPowerballAltB : ReboundStrikerPowerballAlt {translation "192:192=205:205", "198:198=74:74"}
actor ReboundStrikerPowerballAltR : ReboundStrikerPowerballAlt {translation "192:192=171:171", "198:198=41:41"}
actor ReboundStrikerPowerballAltO : ReboundStrikerPowerballAlt {translation "192:192=104:104", "198:198=128:128"}
actor ReboundStrikerPowerballAltP : ReboundStrikerPowerballAlt {translation "192:192=229:229", "198:198=232:232"}

actor StrikemanMain3_CI : TeamColor_CI
{
States
{
FireX:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball2",0,0,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball2B",0,0,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball2R",0,0,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball2O",0,0,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball2P",0,0,8,0)
goto Done
}
}

actor ReboundStrikerBallFX1 : BasicClientSide
{
renderstyle add
states
{
Spawn:
RBD2 A 1 A_FadeOut(0.25)
loop
}
}

actor ReboundStrikerBallFX2 : BasicClientSide
{
renderstyle add
states
{
Spawn:
RBDS B 1 A_FadeOut(0.25)
loop
}
}

actor ReboundStrikerBallFX3 : BasicClientSide
{
renderstyle add
states
{
Spawn:
RBD2 A 1 A_FadeOut(0.25)
loop
}
}

actor ReboundStrikerBallFX4 : BasicClientSide
{
renderstyle add
states
{
Spawn:
RBDS D 1 A_FadeOut(0.25)
loop
}
}


  Actor ReboundStrikerBuntPickup : CustomInventory
  {
    States
    {
        Pickup:
        TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball")
        stop
       
        No:
        TNT1 A 0
        Stop
    }
  }
  
  Actor ReboundStrikerBuntPickupPowered : CustomInventory
  {
    States
    {
        Pickup:
        TNT1 A 0 A_FireCustomMissile("ReboundStrikerPowerball2")
        stop
       
        No:
        TNT1 A 0
        Stop
    }
  }
 