actor Springman : VCBaseClass
{
Player.ScoreIcon "SPRIMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Springman"
player.soundclass "Springmanc"
player.startitem "WildCoilBoss"
player.startitem "UltimateAttackItem4"
player.startitem "UltSoundWatcherSpawn4"
player.startitem "Base28Ammo", 28
player.startitem "IsFromMM7"
player.startitem "NoHealthBar"
player.viewheight 51
projectilepassheight 93
player.forwardmove 0.8, 0.8
player.sidemove 0.78, 0.78
player.jumpz 14
States
{
Spawn:
SPNG B 0 
SPNG B 1 A_JumpIf(z-floorz>0,"Jumping")
SpawnIdle:
SPNG SSSSSAAAAATTTTTTAAAAA 1 A_JumpIf(z-floorz>0,"Jumping")
Goto SpawnIdle
Animation0:
SPNG B 0 A_JumpIf(z-floorz>0,"JumpWait")
goto SpawnIdle
See:
SPNG BBBBBCCCCDDDEEE 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+1
Jumping:
SPNG CCCCUUD 1 A_JumpIf(z-floorz<=0,"SpringLand")
JumpWait:
SPNG E 1 A_JumpIf(z-floorz<=0,"SpringLand")
wait
Animation1:
SpringLand:
SPNG BBBBB 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

Missile:

SPNG FFF 0 A_JumpIfInventory("IsUsingSpringSpin",1,"SpringSpinA")
SPNG FFF 0 A_JumpIfInventory("IsUsingSpringSpin2",1,"SpringSpinB")

SPNG FFF 1 A_JumpIf(z-floorz>0,"JumpingMissile")
Missile2:
SPNG GGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
Missile3:
SPNG FFF 1 A_JumpIf(z-floorz>0,"JumpingMissile3")
Goto SpawnIdle
JumpingMissile:
SPNG III 1 A_JumpIf(z-floorz<=0,"Missile")
JumpingMissile2:
SPNG JJJJJ 1 A_JumpIf(z-floorz<=0,"Missile2")
JumpingMissile3:
SPNG III 1 A_JumpIf(z-floorz<=0,"Missile3")
Goto JumpWait

Animation2:
SpringSpinA:
SPNG KKKKK 1
SPNG K 1 A_JumpIfInventory("IsUsingSpringSpin",1,"SpringSpinA")
Goto SpawnIdle
Animation3:
SpringSpinB:
SPNG LLLLL 1
SPNG L 1 A_JumpIfInventory("IsUsingSpringSpin2",1,"SpringSpinB")
Goto SpawnIdle

Animation4:
SpringPunch:
SPNG N 0 A_JumpIf(pitch>30 && pitch<=90,"SpringPunch.Down")
SPNG NNNNN 1
SPNG N 1 A_JumpIfInventory("IsUsingSpringPunch",1,"SpringPunch")
Goto SpawnIdle
SpringPunch.Down:
SPNG MMMMM 1
SPNG M 1 A_JumpIfInventory("IsUsingSpringPunch",1,"SpringPunch.Down")
Goto SpawnIdle

Animation5:
SpringGrabA:
SPNG OOOOO 1
SPNG O 1 A_JumpIfInventory("IsUsingSpringGrab",1,"SpringGrabA")
Goto SpawnIdle
Animation6:
SpringGrabB:
SPNG PPPPP 1
SPNG P 1 A_JumpIfInventory("IsUsingSpringGrab",1,"SpringGrabB")
Goto SpawnIdle
Animation7:
SpringGrabC:
SPNG QQQQQ 1
SPNG Q 1 A_JumpIfInventory("IsUsingSpringGrab",1,"SpringGrabC")
Goto SpawnIdle

Animation8:
SpringPose: 
SPNG RRRRR 1
Goto SpawnIdle

ClassPain:
SPNG HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto SpawnIdle
Pain.SlashClaw:
Pain.SlashMan:
Pain.SlashMan2:
SPNG H 0 A_PlaySoundEx("weapon/slashclawhit","SoundSlot5")
SPNG H 0 A_SpawnItemEx("SlashedSpringFragment",0,0,32,6,0,6,Random(0,359),SXF_TRANSFERTRANSLATION)
Goto ClassPain
Death.SlashClaw:
Death.SlashMan:
Death.SlashMan2:
TNT1 A 0 A_SpawnItemEx("DeadSlashedSpringMan",0,0,32,0,0,0,0,SXF_TRANSFERTRANSLATION)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadSpringMan",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
SPNG G 0 A_JumpIfInTargetInventory("WildCoilWepM",1,2)
SPNG G 0 A_GiveToTarget("WeaponGetter")
SPNG G 0 A_GiveToTarget("WildCoilWepM")
goto ClassDeath
}
}

actor DeadSpringMan : DeadFreezeMan
{
meleerange 7844
States
{
Spawn:
SPNG H 0
"####" "#" 0
goto loopit
}
}

actor DeadSlashedSpringMan
{
PROJECTILE
-NOGRAVITY
-SKYEXPLODE
+THRUACTORS
+HEXENBOUNCE
+USEBOUNCESTATE
+DONTBLAST
BounceFactor 0.8
WallBounceFactor 0.8
Damage (0)
height 32
radius 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SPNG H 0 A_PlaySoundEx("weapon/slashclawhit","SoundSlot5")
SPNG H 0 A_Recoil(20)
SPNG H 0 ThrustThingZ(0,50,0,1)
Spawn2:
SPNG XYZY 2
SPNG Y 0 A_SpawnItemEx("SlashedSpringFragment",0,0,32,6,0,6,Random(0,359),SXF_TRANSFERTRANSLATION)
loop
Bounce.Floor:
SPNG H 0 A_JumpIfInventory("CutterFlag",2,"Death")
SPNG H 0 A_GiveInventory("CutterFlag",1)
SPNG H 0 A_PlaySoundEx("weapon/slashclawhit","SoundSlot5")
SPNG HHHH 0 A_SpawnItemEx("SlashedSpringFragment",0,0,32,6,0,6,Random(0,359),SXF_TRANSFERTRANSLATION)
Goto Spawn2
Death:
TNT1 A 0 A_PlaySoundEx("mm7/dead","Auto")
TNT1 A 0 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
SPNG HHHHHHHH 0 A_SpawnItemEx("SlashedSpringFragment",0,0,32,Random(6,12),0,6,Random(0,359),SXF_TRANSFERTRANSLATION)
Stop
}
}

actor SlashedSpringFragment
{
+MISSILE
+RIPPER
+THRUACTORS
+CLIENTSIDEONLY
+FLOORCLIP
Damage (0)
Scale 2.5
Height 5
Radius 5
-NOGRAVITY
+BOUNCEONFLOORS
-DOOMBOUNCE
bouncefactor 0.5
Bouncecount 3
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"Scrap1","Scrap2","Scrap3","Scrap4")
Scrap1:
SCRP E 2
TNT1 A 2
loop
Scrap2:
SCRP F 2
TNT1 A 2
loop
Scrap3:
SCRP G 2
TNT1 A 2
loop
Scrap4:
SCRP H 2
TNT1 A 2
loop
}
}

Actor SpringmanOPPleaseNerf : PowerProtection
{
Powerup.Duration 0x7FFFFFFF
DamageFactor "ThunderBolt", 0.0
}

actor SpringElectricityCharge : Inventory
{
inventory.amount 1
inventory.maxamount 140
}

Actor SpringChargeThing : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("SpringElectricityCharge",1,"Nope")
TNT1 A 0 A_JumpIf(CheckClass("Springman"),"Success")
Goto Nope
Success:
TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","SoundSlot5")
TNT1 A 0 A_GiveInventory("SpringElectricityCharge",140)
Nope:
TNT1 A 0
Stop
}
}

actor ThunderBoltSpawner
{
States
{
Spawn:
TNT1 AA 0
TNT1 A 25 A_SpawnItemEx("ThunderBolt",0,0,16,25)
loop
}
}

const int SPARK_OFS = 32;

actor IsUsingSpringSpin : VCOnce {}
actor IsUsingSpringSpin2 : VCOnce {}
actor IsUsingSpringPunch : VCOnce {}
actor IsUsingSpringGrab : VCOnce {}

const int DEG = 45;
const int X_53OFS = 48;
const int Z_53OFS = 32;

Actor WildCoilBoss : VCBaseWeapon
{
weapon.ammotype "Base28Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_SPRINGMAN1"
const int SPRING_GRABBED_PITCH = 0;
const int SPRING_GRABBED_DIST = 70;
States
{
Ready:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("Base28Ammo",14,"Ready.CanM2") //Experimental fix to jittering -Fr3ak
SPFI A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY) SPFI A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SPFI A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY) SPFI A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SPFI A 0 A_GiveInventory("Base28Ammo",1)
loop
Ready.CanM2:
SPFI A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)) SPFI A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SPFI A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)) SPFI A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SPFI A 0 A_GiveInventory("Base28Ammo",1)
loop
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SPFI A 1 A_Lower
Loop
Select:
SPFI A 0 A_GunFlash
SPFI A 0 A_GiveInventory("SpringmanOPPleaseNerf",1)
SPFI A 0 ACS_ExecuteAlways(998,0,7844)
Select2:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SPFI A 1 A_Raise
Loop

Fire:
SPFI A 0 A_GiveInventory("SpringManMainPickUp",1)
SPFI A 1 Offset(5,37)
SPFI A 1 Offset(10,42)
SPFI A 1 Offset(15,47)
SPFI A 1 Offset(20,52)
SPFI B 10 Offset(25,57)
SPFI A 1 Offset(20,52)
SPFI A 1 Offset(15,47)
SPFI A 1 Offset(10,42)
SPFI A 1 Offset(5,37)
goto Ready

Altfire:
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_JumpIfInventory("SpringSlamCooldown",1,"Altfire2A")
TNT1 A 0 A_GiveInventory("SpringManAltfirePickUp",1)
TNT1 AAA 1 A_Jump(256,"Altfire2A")

Altfire2A:
SPFI E 0 A_JumpIfInventory("SuplexID",1,"SpringSuplex") SPFI E 0 A_GiveInventory("BaseAltFireAmmo",1)
SPFI E 0 A_GiveInventory("SpringManAltfire2PickUp",1) SPFI E 0 ACS_NamedExecuteWithResult("VC_SetState",2)
SPFI E 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Punch") SPFI E 0 A_PlaySoundEx("weapon/kingaxespin","Weapon")
SPFI E 0 A_GiveInventory("IsUsingSpringSpin",1) SPFI E 0 A_TakeInventory("IsUsingSpringSpin2",1)
SPFI E 1 A_Stop
SPFI E 0 A_Refire("Altfire2B")
SPFI EEE 1 A_Jump(256,"Punch")

Altfire2B:
SPFI F 0 A_GiveInventory("SpringManAltfire2PickUp",1) SPFI F 0 A_GiveInventory("BaseAltFireAmmo",2)
SPFI F 0 A_JumpIfInventory("SuplexID",1,"SpringSuplex") SPFI F 0 ACS_NamedExecuteWithResult("VC_SetState",2)
SPFI F 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Punch")
SPFI F 1 A_Stop
SPFI F 0 A_Refire("Altfire2C")
SPFI FFF 1 A_Jump(256,"Punch")

Altfire2C:
SPFI G 0 A_GiveInventory("SpringManAltfire2PickUp",1) SPFI G 0 A_GiveInventory("BaseAltFireAmmo",1)
SPFI G 0 A_JumpIfInventory("SuplexID",1,"SpringSuplex") SPFI G 0 ACS_NamedExecuteWithResult("VC_SetState",3)
SPFI G 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Punch") SPFI G 0 A_PlaySoundEx("weapon/kingaxespin","Weapon")
SPFI G 0 A_TakeInventory("IsUsingSpringSpin",1) SPFI G 0 A_GiveInventory("IsUsingSpringSpin2",1)
SPFI G 1 A_Stop
SPFI G 0 A_Refire("Altfire2D")
SPFI GGG 1 A_Jump(256,"Punch")

Altfire2D:
SPFI H 0 A_GiveInventory("SpringManAltfire2PickUp",1) SPFI H 0 A_GiveInventory("BaseAltFireAmmo",2)
SPFI H 0 A_JumpIfInventory("SuplexID",1,"SpringSuplex") spfi h 0 ACS_NamedExecuteWithResult("VC_SetState",3)
SPFI F 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Punch")
SPFI H 1 A_Stop
SPFI H 0 A_Refire("Altfire2A")
SPFI HHH 1 A_Jump(256,"Punch")

Punch:
SPFI D 0 A_GiveInventory("SpringManAltfire3PickUp",1)
SPFI D 0 ACS_NamedExecuteWithResult("VC_SetState",4)
SPFI D 0 A_GiveInventory("CutterFlag",1)
SPFI D 0 A_TakeInventory("IsUsingSpringSpin",1)
SPFI D 0 A_TakeInventory("IsUsingSpringSpin2",1)
SPFI D 0 A_GiveInventory("IsUsingSpringPunch",1)
SPFI D 1 A_Stop
SPFI D 0 A_TakeInventory("BaseAltFireAmmo",112)
SPFI D 0 A_JumpIfInventory("BaseCustomFlag2",1,1)
Goto Punch+1

Finish:
TNT1 AA 1 A_GiveInventory("SpringManAltfire4PickUp",1)
TNT1 A 0 A_Refire("AmmoCheck")
TNT1 AAA 1 A_Jump(256,"EndAlt")

AmmoCheck:
SPFI C 0 A_JumpIfInventory("Base28Ammo",14,"Altfire")
TNT1 AAA 1 A_Jump(256,"EndAlt")

EndAlt:
SPFI CCC 0 A_TakeInventory("IsUsingSpringPunch",1)
SPFI C 1 Offset(35,137)ACS_NamedExecuteWithResult("VC_SetState",0)
SPFI C 1 Offset(30,122)A_SpawnItemEx("Resolidifier")
SPFI C 1 Offset(25,107)A_ClearRefire
SPFI C 1 Offset(20,92)
SPFI C 1 Offset(15,77)
SPFI A 1 Offset(10,62)
SPFI A 1 Offset(5,47)
SPFI A 2 A_WeaponReady(WRF_NOFIRE)
SPFI AAA 1 A_Jump(256,"Ready")

SpringSuplex:
TNT1 A 0 A_GiveInventory("SpringManSlamPickUp",1)
TNT1 A 0 A_GiveInventory("IsUsingSpringGrab",1)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_ZangiefStartGrab",0,CallACS("cbm_ZangiefCountInv",2)+999)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5) TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",25,1)
Goto SpringSuplex+2
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI1") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI1") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI1") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI1") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 0 A_GiveInventory("SpringSuplexSnd_CI") TNT1 A 0 ThrustThingZ(0,120,0,1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI2") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI2") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI2") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI2") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI3") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI3") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI3") TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1)
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",6) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI3")
SpringSuplexReady:
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI3")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",7) TNT1 A 0 ThrustThingZ(0,-8,0,1) TNT1 A 0 A_JumpIf(z-floorz<=0,"SpringSuplexHit")
TNT1 A 1 A_JumpIf(CallACS("cbm_ZangiefGrab",SPRING_GRABBED_PITCH,angle*256/360,SPRING_GRABBED_DIST)==0,"SuplexEscape")
TNT1 A 0 A_GiveInventory("SpringManSlam4PickUp",1) TNT1 A 0 A_GiveInventory("SpringUltSuplex_CI3")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",7) TNT1 A 0 ThrustThingZ(0,-8,0,1) TNT1 A 0 A_JumpIf(z-floorz<=0,"SpringSuplexHit")
loop
SpringSuplexHit:
TNT1 A 0 A_Quake(3,35,0,200)
TNT1 A 0 A_GiveInventory("SpringManSlam2PickUp",1)
TNT1 AAAAAAAAAAAA 1 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 16
SuplexEscape:
TNT1 A 0 A_GiveInventory("SpringManSlam3PickUp",1)
SPFI A 1 Offset(0,112)A_TakeInventory("IsUsingSpringGrab",1)
SPFI A 1 Offset(0,102)A_TakeInventory("IsUsingSpringGrab",1)
SPFI A 0 A_ChangeFlag("THRUACTORS",False)
SPFI A 1 Offset(0,92)
SPFI A 1 Offset(0,82)
SPFI A 1 Offset(0,72)
SPFI A 1 Offset(0,62)A_TakeInventory("IsUsingSpringGrab",99)
SPFI A 1 Offset(0,52)A_TakeInventory("IsUsingSpringSpin",99)
SPFI A 1 Offset(0,42)A_TakeInventory("IsUsingSpringSpin2",99)
SPFI A 1 Offset(0,32)A_TakeInventory("IsUsingSpringPunch",99)
Goto Ready

UltimateAttack:
TNT1 A 0 A_JumpIfInventory("SpringElectricityCharge",1,"Ready")
SPFI A 0 A_GiveInventory("SpringManUltimatePickUp",1)
SPFI A 0 ACS_ExecuteAlways(971,0,1234)
SPFI J 1 Offset(4,34)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI J 1 Offset(2,40)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI J 1 Offset(6,36)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI J 1 Offset(8,28)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI J 1 Offset(4,34)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI A 0 ACS_ExecuteAlways(971,0,7844)
SPFI A 1 Offset(2,40)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI A 1 Offset(6,36)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI A 1 Offset(8,28)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI A 1 Offset(4,34)ACS_NamedExecuteWithResult("VC_SetState",8)
SPFI A 1 Offset(2,40)ACS_NamedExecuteWithResult("VC_SetState",8)
Goto Ready

Flash:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"UltFlash")
TNT1 A 0 A_JumpIfInventory("SpringElectricityCharge",1,"CopyWepFlash")
loop
CopyWepFlash:
SPFI A 0 A_SpawnItemEx("SpringElectricityWarper2")
CopyWepFlashLoop:
TNT1 A 0 A_JumpIfInventory("SpringElectricityCharge",1,1)
Goto Flash
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_SpawnItemEx("SpringManAttractionHitBox")
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-80,80),Random(-80,80),Random(0,80))
TNT1 A 0 A_SpawnItemEx("SpringElectricityDamager")
TNT1 A 0 A_TakeInventory("SpringElectricityCharge",1)
loop
UltFlash:
SPFI A 0 A_SpawnItemEx("SpringElectricityWarper")
SPFI A 0 A_GiveInventory("HalfDamageProtection")
SPFI A 0 A_TakeInventory("SpringElectricityCharge",140)
UltFlashLoop:
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1)
Goto EndUltFlash
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_SpawnItemEx("SpringManAttractionHitBox")
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-80,80),Random(-80,80),Random(0,80))
TNT1 A 0 A_SpawnItemEx("SpringElectricityDamager")
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",1)
loop
EndUltFlash:
TNT1 A 0 A_TakeInventory("PowerUltBuildCooldown",1)
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
Goto Flash
EndFlash:
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_TakeInventory("PowerUltBuildCooldown",1)
TNT1 A 0 A_TakeInventory("SpringElectricityCharge",140)
stop
}
}

Actor SpringManMainPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base28Ammo",4)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"PickUp2")
TNT1 A 0 A_SpawnItemEx("WildCoilRMStart")
TNT1 A 0 A_SpawnItemEx("WildCoilRMStart",0,0,0,0,0,0,180)
Stop
PickUp2:
TNT1 A 0 A_SpawnItemEx("WildCoilRMStart2")
TNT1 A 0 A_SpawnItemEx("WildCoilRMStart2",0,0,0,0,0,0,90)
TNT1 A 0 A_SpawnItemEx("WildCoilRMStart2",0,0,0,0,0,0,180)
TNT1 A 0 A_SpawnItemEx("WildCoilRMStart2",0,0,0,0,0,0,270)
Stop
}
}

actor WildCoilRMStart
{
PROJECTILE
-NOGRAVITY
damagetype "SpringMan"
Obituary "$OB_SPRINGMAN1"
Damage (16)
height 16
radius 4
scale 2.5
reactiontime 350
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
TNT1 A 0 A_Countdown
SPRG J 1 A_JumpIf(z-floorz<=0,"Death")
goto Spawn+3
Death:
TNT1 A 0 A_PlaySoundEx("weapon/coilbounce1","Auto")
TNT1 A 0 A_SpawnItemEx("WildCoilRM",0,0,0,15,0,10)
XDeath:
TNT1 A 2 A_SpawnItemEx("ExplosionEffect1",0,0,32)
stop
}
}

actor WildCoilRM : WildCoilRMStart
{
Bouncetype Hexen
+CANBOUNCEWATER
BounceSound "weapon/coilbounce1"
bouncefactor 1.0
wallbouncefactor 1.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
Spawn2:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"Death")
SPRG HI 4
loopit:
TNT1 A 0 A_Countdown
SPRG J 1 A_JumpIf(z-floorz<=0,"Spawn2")
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/coilexplode","Auto")
TNT1 A 2 A_SpawnItemEx("ExplosionEffect1",0,0,32)
stop
}
}

actor WildCoilRMStart2 : WildCoilRMStart
{
damagetype "SpringManUlt"
Obituary "$OB_SPRINGMAN6"
reactiontime 87
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
Spawn2:
TNT1 A 0 A_Countdown
SPRG MM 1 A_JumpIf(z-floorz<=0,"Death") TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
SPRG PP 1 A_JumpIf(z-floorz<=0,"Death") TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/coilbounce1","Auto")
TNT1 A 0 A_SpawnItemEx("WildCoilRM2",0,0,0,15,0,10)
XDeath:
TNT1 A 2 A_SpawnItemEx("ExplosionEffect1",0,0,32)
stop
}
}

actor WildCoilRM2 : WildCoilRM
{
damagetype "SpringManUlt"
Obituary "$OB_SPRINGMAN6"
reactiontime 87
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
Spawn2:
TNT1 A 0 A_Countdown
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"Death")
SPRG K 2 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
SPRG N 2 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
SPRG L 2 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
SPRG O 2 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
Spawn3:
TNT1 A 0 A_Countdown
SPRG MM 1 A_JumpIf(z-floorz<=0,"Spawn2") TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
SPRG PP 1 A_JumpIf(z-floorz<=0,"Spawn2") TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-32,32),Random(-32,32),Random(0,32))
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/coilexplode","Voice")
TNT1 A 2 A_SpawnItemEx("ExplosionEffect1",0,0,32)
stop
}
}

actor SpringManAltfirePickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_setGravity(0.0)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_GiveInventory("NoPushFlag",1)
TNT1 A 0 A_GiveInventory("ToadChargeDamageGive")
TNT1 A 0 A_GiveInventory("HalfDamageProtection")
TNT1 A 0 A_JumpIf(z-floorz>8,"Nope")
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*0))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*1))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*2))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*3))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*4))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*5))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*6))
TNT1 A 0 A_SpawnItemEx("SpringGrabberCheck",X_53OFS,0,Z_53OFS,0,0,0,(DEG*7))

Nope:
TNT1 A 0
Stop
}
}

actor SpringManAltfire2PickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"PickUp2")
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",0,0,0,0,0,0)
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*0))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*1))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*2))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*3))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*4))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*5))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*6))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager",X_53OFS,0,Z_53OFS,0,0,0,(DEG*7))
stop
PickUp2:
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",0,0,0,0,0,0)
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*0))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*1))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*2))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*3))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*4))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*5))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*6))
TNT1 A 0 A_SpawnItemEx("SpringSpinDamager2",X_53OFS,0,Z_53OFS,0,0,0,(DEG*7))
stop
}
}

actor SpringManAltfire3PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_TakeInventory("Base28Ammo",14)
TNT1 A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_PlaySoundEx("knightman/shoot","SoundSlot1")
TNT1 A 0 A_PlaySoundEx("weapon/tengudash","SoundSlot2")
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"PickUp2")
TNT1 A 0 A_FireCustomMissile("SpringFistRM",0,0,8,12)
Stop
PickUp2:
TNT1 A 0 A_FireCustomMissile("SpringFistRM2",0,0,8,12)
Stop
}
}

actor SpringManAltfire4PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_TakeInventory("NoPushFlag",1)
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
Stop
}
}

actor SpringManSlamPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeFlag("SOLID",False)
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_ChangeFlag("THRUACTORS",True)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_GiveInventory("TempPitProtect_P")
TNT1 A 0 A_GiveInventory("IsPerformingSuplex")
TNT1 A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_GiveInventory("SpringManGrabSpeed",1)
Stop
}
}

actor SpringManSlam2PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SpringSlamWatcher")
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_TakeInventory("Base28Ammo",14)
TNT1 A 0 A_TakeInventory("BaseAltFireAmmo",112)
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_PlaySoundEx("weapon/wallrush","Weapon")
TNT1 A 0 A_GiveInventory("SpringSlamCooldown",105)
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"PickUp2")
TNT1 A 0 A_SpawnItemEx("SpringSlamDamager",56,0,32)
Stop
PickUp2:
TNT1 A 0 A_SpawnItemEx("SpringSlamDamager2",56,0,32)
Stop
}
}

actor SpringManSlam3PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_TakeInventory("SuplexID",999)
TNT1 A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 A_TakeInventory("ZangiefAngle",255)
TNT1 A 0 A_TakeInventory("TempPitProtect_P")
TNT1 A 0 A_GiveInventory("SpringGrabCancel",1)
TNT1 A 0 A_TakeInventory("IsPerformingSuplex")
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_TakeInventory("SpringManGrabSpeed",1)
TNT1 A 0 A_GiveInventory("SpringReleaseConfirm",1)
Stop
}
}

actor SpringManSlam4PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("SpringManBuster",64,32,32)
TNT1 A 0 A_SpawnItemEx("SpringManHand",64,-32,32)
TNT1 A 0 A_SpawnItemEx("SpringManChain",32,32,32)
TNT1 A 0 A_SpawnItemEx("SpringManChain",32,-32,32)
Stop
}
}

Actor SpringManBuster : BasicClientSide
{
Translation "192:192=87:87", "198:198=41:41"
+BRIGHT
+NOINTERACTION
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SPRG F 1
stop
}
}

Actor SpringManHand : SpringManBuster
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SPRG G 1
stop
}
}

Actor SpringManChain : SpringManBuster
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SPRG E 1
stop
}
}

actor SpringSpinDamager : BasicExplosion
{
Damagetype "SpringManSpin"
Obituary "$OB_SPRINGMAN2"
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 1 A_Explode(1,40,0,0,40)
stop
}
}

actor SpringSpinDamager2 : SpringSpinDamager
{
Damagetype "SpringManSpinUlt"
Obituary "$OB_SPRINGMAN7"
}

actor SpringSpinProtect : PowerProtection
{
powerup.duration 1
damagefactor "SpringManSpin", 0.0
damagefactor "SpringManSpinUlt", 0.0
}

actor SpringFistRM : WildCoilRMStart
{
Translation "192:192=87:87", "198:198=41:41"
+NOGRAVITY
+SKYEXPLODE
+DONTREFLECT
+THRUSPECIES
Species "SpringFist"
damagetype "SpringManFist"
Obituary "$OB_SPRINGMAN3"
Radius 24
Height 24
Damage (40)
Speed 30
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",112,"Scale16") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",105,"Scale15")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",98, "Scale14") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",81, "Scale13")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",84, "Scale12") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",77, "Scale11")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",70, "Scale10") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",63,  "Scale9")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",56,  "Scale8") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",49,  "Scale7") 
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",42,  "Scale6") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",35,  "Scale5")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",28,  "Scale4") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",21,  "Scale3") 
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",14,  "Scale2") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",7,   "Scale1")
Goto Spawn2
Scale16: TNT1 A 0 A_ScaleVelocity(2.6) Goto Spawn2 Scale15: TNT1 A 0 A_ScaleVelocity(2.5) Goto Spawn2
Scale14: TNT1 A 0 A_ScaleVelocity(2.4) Goto Spawn2 Scale13: TNT1 A 0 A_ScaleVelocity(2.3) Goto Spawn2
Scale12: TNT1 A 0 A_ScaleVelocity(2.2) Goto Spawn2 Scale11: TNT1 A 0 A_ScaleVelocity(2.1) Goto Spawn2
Scale10: TNT1 A 0 A_ScaleVelocity(2.0) Goto Spawn2 Scale9:  TNT1 A 0 A_ScaleVelocity(1.9) Goto Spawn2
Scale8:  TNT1 A 0 A_ScaleVelocity(1.8) Goto Spawn2 Scale7:  TNT1 A 0 A_ScaleVelocity(1.7) Goto Spawn2
Scale6:  TNT1 A 0 A_ScaleVelocity(1.6) Goto Spawn2 Scale5:  TNT1 A 0 A_ScaleVelocity(1.5) Goto Spawn2
Scale4:  TNT1 A 0 A_ScaleVelocity(1.4) Goto Spawn2 Scale3:  TNT1 A 0 A_ScaleVelocity(1.3) Goto Spawn2
Scale2:  TNT1 A 0 A_ScaleVelocity(1.2) Goto Spawn2 Scale1:  TNT1 A 0 A_ScaleVelocity(1.1) Goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIf(momz > -50 && momz < -20, "LowAngle")
TNT1 A 0 A_JumpIf(momz <= -50, "Down")
Goto Forward
Forward:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_SpawnItemEx("SpringFistChainRM")
SPRG AA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
LowAngle:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_SpawnItemEx("SpringFistChainRM")
SPRG CC 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
Down:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_SpawnItemEx("SpringFistChainRM")
SPRG DD 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
Death:
XDeath:
TNT1 A 0 A_SpawnItemEx("ReturningSpringFistRM")
TNT1 A 0 A_GiveToTarget("BaseCustomFlag1")
stop
End:
NAPA FGHIJKLMNOPQRS 1
stop
}
}

actor SpringFistRM2 : SpringFistRM
{
damagetype "SpringManFistUlt"
Obituary "$OB_SPRINGMAN8"
Damage (60)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",112,"Scale16") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",105,"Scale15")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",98, "Scale14") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",81, "Scale13")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",84, "Scale12") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",77, "Scale11")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",70, "Scale10") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",63,  "Scale9")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",56,  "Scale8") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",49,  "Scale7") 
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",42,  "Scale6") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",35,  "Scale5")
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",28,  "Scale4") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",21,  "Scale3") 
TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",14,  "Scale2") TNT1 A 0 A_JumpIfInTargetInventory("BaseAltfireAmmo",7,   "Scale1")
Goto Spawn2
Scale16: TNT1 A 0 A_ScaleVelocity(2.6) Goto Spawn2 Scale15: TNT1 A 0 A_ScaleVelocity(2.5) Goto Spawn2
Scale14: TNT1 A 0 A_ScaleVelocity(2.4) Goto Spawn2 Scale13: TNT1 A 0 A_ScaleVelocity(2.3) Goto Spawn2
Scale12: TNT1 A 0 A_ScaleVelocity(2.2) Goto Spawn2 Scale11: TNT1 A 0 A_ScaleVelocity(2.1) Goto Spawn2
Scale10: TNT1 A 0 A_ScaleVelocity(2.0) Goto Spawn2 Scale9:  TNT1 A 0 A_ScaleVelocity(1.9) Goto Spawn2
Scale8:  TNT1 A 0 A_ScaleVelocity(1.8) Goto Spawn2 Scale7:  TNT1 A 0 A_ScaleVelocity(1.7) Goto Spawn2
Scale6:  TNT1 A 0 A_ScaleVelocity(1.6) Goto Spawn2 Scale5:  TNT1 A 0 A_ScaleVelocity(1.5) Goto Spawn2
Scale4:  TNT1 A 0 A_ScaleVelocity(1.4) Goto Spawn2 Scale3:  TNT1 A 0 A_ScaleVelocity(1.3) Goto Spawn2
Scale2:  TNT1 A 0 A_ScaleVelocity(1.2) Goto Spawn2 Scale1:  TNT1 A 0 A_ScaleVelocity(1.1) Goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIf(momz > -50 && momz < -20, "LowAngle")
TNT1 A 0 A_JumpIf(momz <= -50, "Down")
Goto Forward
Forward:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS))
TNT1 A 0 A_SpawnItemEx("SpringFistChainRM2")
TNT1 A 0 A_SpawnItemEx("SpringFistRMFX")
SPRG AA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
LowAngle:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS))
TNT1 A 0 A_SpawnItemEx("SpringFistChainRM2")
TNT1 A 0 A_SpawnItemEx("SpringFistRMFXB")
SPRG CC 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
Down:
TNT1 A 0 A_JumpIfInventory("CutterFlag",15,"Death")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS))
TNT1 A 0 A_SpawnItemEx("SpringFistChainRM2")
TNT1 A 0 A_SpawnItemEx("SpringFistRMFXC")
SPRG DD 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
Death:
XDeath:
TNT1 A 0 A_SpawnItemEx("ReturningSpringFistRM2")
TNT1 A 0 A_GiveToTarget("BaseCustomFlag1")
stop
End:
NAPA FGHIJKLMNOPQRS 1
stop
}
}

actor SpringFistRMFX : BasicClientSide
{
Translation "192:192=87:87", "198:198=41:41"
+BRIGHT
Scale 2.5
States
{
Spawn:
TNT1 A 0
SPRG A 1 A_FadeOut(0.05)
wait
}
}

actor SpringFistRMFXB : SpringFistRMFX
{
States
{
Spawn:
TNT1 A 0
SPRG C 1 A_FadeOut(0.05)
wait
}
}

actor SpringFistRMFXC : SpringFistRMFX
{
States
{
Spawn:
TNT1 A 0
SPRG D 1 A_FadeOut(0.05)
wait
}
}

actor ReturningSpringFistRM
{
Translation "192:192=87:87", "198:198=41:41"
PROJECTILE
+NOINTERACTION
+NOCLIP
Species "SpringFist"
speed 33
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_FaceTarget
SPRG B 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_CustomMissile("ReturningSpringFistRM",0,0)
Goto End
Return:
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2")
End:
TNT1 A 0
stop
}
}

actor ReturningSpringFistRM2 : ReturningSpringFistRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_FaceTarget
SPRG B 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfCloser(64,"Return")
TNT1 A 0 A_FaceTarget
SPRG B 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_CustomMissile("ReturningSpringFistRM2",0,0)
TNT1 A 0 A_SpawnItemEx("ReturningSpringFistRMFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS))
Goto End
Return:
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2")
End:
TNT1 A 0
stop
}
}

actor ReturningSpringFistRMFX : SpringFistRMFX
{
States
{
Spawn:
TNT1 A 0
SPRG B 1 A_FadeOut(0.05)
wait
}
}

actor SpringFistChainRM : ReturningSpringFistRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Spawn2:
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Return")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",85,"End2")
loop
Return:
TNT1 A 0 A_SpawnItemEx("ReturningSpringFistChainRM",0,0,0,0,0,0,0,1)
stop
End:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect1")
stop
End2:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect1")
TNT1 AAA 0 A_GiveToTarget("BaseCustomFlag2",1)
stop
}
}

actor SpringFistChainRM2 : ReturningSpringFistRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Spawn2:
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Return")
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Return")
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Return")
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End") TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Return")
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS))
loop
Return:
TNT1 A 0 A_SpawnItemEx("ReturningSpringFistChainRM2",0,0,0,0,0,0,0,1)
End:
TNT1 A 0
stop
}
}

actor ReturningSpringFistChainRM : ReturningSpringFistRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfCloser(64,"End")
TNT1 A 0 A_FaceTarget
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_CustomMissile("ReturningSpringFistChainRM",0,0)
End:
TNT1 A 0
stop
}
}

actor ReturningSpringFistChainRM2 : ReturningSpringFistRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfCloser(64,"End")
TNT1 A 0 A_FaceTarget
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfCloser(64,"End")
TNT1 A 0 A_FaceTarget
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfCloser(64,"End")
TNT1 A 0 A_FaceTarget
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfCloser(64,"End")
TNT1 A 0 A_FaceTarget
SPRG E 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_CustomMissile("ReturningSpringFistChainRM",0,0)
TNT1 A 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS),Random(-SPARK_OFS,SPARK_OFS))
End:
TNT1 A 0
stop
}
}

actor SpringManFlinger
{
//+SERVERSIDEONLY
PROJECTILE
+NOINTERACTION
+NOCLIP
+DONTBLAST
damage 0
radius 1
height 1
speed 0
var int user_force;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("CannotBeMoved",1,"Death")
TNT1 A 0 A_SetUserVar("user_force",-25)
Spawn2:
TNT1 A 0 A_TransferPointer(AAPTR_TARGET,AAPTR_DEFAULT,AAPTR_TARGET,AAPTR_TRACER) //target's target to self's tracer
TNT1 A 0 A_FaceTracer
TNT1 A 0 ThrustThing(angle*256/360,user_force,1,ACS_ExecuteWithResult(257,0))
stop
Death:
TNT1 A 0
stop
}
}

actor SpringSuplexSnd_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"Pickup2")
TNT1 A 0 A_PlaySoundEx("shadowman/jump","Voice")
stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/lightningbolt","Voice")
stop
}
}

actor SpringUltSuplex_CI1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"Pickup2")
stop

Pickup2:
TNT1 A 0 A_SpawnItemEx("SpringUltSuplexFX1",0,0,0,0,0,momz,0,1)
stop
}
}

actor SpringUltSuplex_CI2 : SpringUltSuplex_CI1
{
States
{
Pickup2:
TNT1 A 0 A_SpawnItemEx("SpringUltSuplexFX2",0,0,0,0,0,momz,0,1)
stop
}
}

actor SpringUltSuplex_CI3 : SpringUltSuplex_CI1
{
States
{
Pickup2:
TNT1 A 0 A_SpawnItemEx("SpringUltSuplexFX3",0,0,0,0,0,momz,0,1)
stop
}
}

actor SpringUltSuplexFX1
{
+BRIGHT
Scale 2.5
renderstyle add
PROJECTILE
+NOCLIP
States
{
Spawn:
TNT1 A 0
SPNG S 0
goto Spawn2

Spawn2:
"####" "#" 1 A_FadeOut(0.05)
"####" "#" 0 A_ScaleVelocity(0.75)
"####" "#" 1 A_FadeOut(0.05)
"####" "#" 0 A_ScaleVelocity(0.75)
"####" "#" 1 A_FadeOut(0.05)
"####" "#" 0 A_ScaleVelocity(0.75)
"####" "#" 1 A_FadeOut(0.05)
"####" "#" 0 A_ScaleVelocity(0.75)
"####" "#" 1 A_FadeOut(0.05)
"####" "#" 0 A_ScaleVelocity(0.75)
"####" "#" 0 A_SpawnItemEx("FuseSmallSparkFX",Random(-80,80),Random(-80,80),Random(0,80))
loop
}
}

actor SpringUltSuplexFX2 : SpringUltSuplexFX1
{
States
{
Spawn:
TNT1 A 0
SPNG T 0
goto Spawn2
}
}

actor SpringUltSuplexFX3 : SpringUltSuplexFX1
{
States
{
Spawn:
TNT1 A 0
SPNG U 0
goto Spawn2
}
}

actor SpringGrabberCheck
{
PROJECTILE
+NOBLOCKMAP
+NOGRAVITY
+NOEXPLODEFLOOR
+DONTBLAST
+DONTREFLECT
+HITTRACER
+THRUGHOST
Damage (0)
height 12
radius 12
scale 1.0
states
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Crash:
TNT1 AAA 0 A_GiveInventory("SpringGrabProtect",1,AAPTR_TRACER)
XDeath:
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_CheckFlag("FLOORHUGGER","DeathK",8)
TNT1 A 0 A_CheckFlag("INVULNERABLE","DeathK",8)
TNT1 A 0 A_JumpIfInventory("NoPushFlag",1,"DeathK",8)
TNT1 A 0 A_JumpIfInventory("HSHSuctionFlag",1,"DeathM",8)
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerplayer")==1,"DeathCheck2")
stop
DeathCheck2:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975,1)==1,"DeathCheck3")
goto GiveSuplex
DeathCheck3:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(143,ACS_ExecuteWithResult(147,0),1) == ACS_ExecuteWithResult(143,ACS_ExecuteWithResult(147,1),1),"DeathL")
goto GiveSuplex
GiveSuplex:
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_CheckFlag("FLOORHUGGER","DeathK",8)
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 0 A_GiveToTarget("IsPerformingSuplex",1)
TNT1 A 0 A_PlaySoundEx("KirbyNES/FoeGrab","Auto")
TNT1 A 0 A_GiveToTarget("SpringGrabbing",1)
TNT1 A 0 A_GiveToTarget("SuplexID",(ACS_ExecuteWithResult(147,1)-1000)+1)
TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
TNT1 A 1 A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 0 A_GiveInventory("SpringmanGrabProtector",1,8)
Carry:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",140,"StopCarry2")
TNT1 A 0 A_GiveInventory("SpringGrabProtect",1,8)
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 0 A_JumpIfInTargetInventory("SpringReleaseConfirm",1,"StopCarry2")
TNT1 A 0 A_JumpIfInTargetInventory("SpringGrabCancel",1,"StopCarryTerrain")
TNT1 A 1 A_JumpIfInTargetInventory("SpringGrabbing",1,"Carry")
StopCarry:
TNT1 A 1 A_JumpIfInTargetInventory("SpringReleaseConfirm",1,"StopCarry2")
TNT1 A 1 A_JumpIfInTargetInventory("SpringReleaseConfirm",1,"StopCarry2")
TNT1 A 1 A_JumpIfInTargetInventory("SpringReleaseConfirm",1,"StopCarry2")
TNT1 A 1 A_JumpIfInTargetInventory("SpringReleaseConfirm",1,"StopCarry2")
goto StopCarryTerrain
StopCarry2:
TNT1 A 0 A_TakeInventory("SpringmanGrabProtector",1,0,8)
TNT1 A 0 A_TakeFromTarget("IsPerformingSuplex",999)
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
stop
StopCarryTerrain:
TNT1 A 0 A_TakeInventory("SpringmanGrabProtector",1,0,8)
TNT1 A 0 A_TakeFromTarget("IsPerformingSuplex",999)
TNT1 A 0 A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
stop
DeathI:
TNT1 A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE BEING GRABBED!")
stop
DeathJ:
TNT1 A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE GRABBING!")
stop
DeathK:
TNT1 A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE DIGGING OR INVINCIBLE!")
stop
DeathL:
TNT1 A 1 //A_LOG("FAILED, CAN'T GRAB ALLIES!")
stop
DeathM:
TNT1 A 1 //A_LOG("FAILED, CAN'T GRAB HYPER STORM H DURING HIS SUCTION!")
stop
Death:
TNT1 A 0 A_TakeInventory("SpringmanGrabProtector",1,0,8)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("SpringSlamMovementGiver",1,8) TNT1 A 0 A_TakeInventory("SpringGrabProtect",1,AAPTR_TRACER)
stop
}
}

actor SpringSlamMovementGiver : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("NoThirdFire")
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 SetPlayerProperty(0,0,0)
stop
}
}

actor SpringManGrabSpeed : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration -999
Speed 0.10
}

actor SpringSlamDamager : BasicExplosion
{
+NOINTERACTION
damagetype "SpringManSlam"
Obituary "$OB_SPRINGMAN4"
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_Explode(50,40,0,0,40)
stop
}
}

actor SpringSlamDamager2 : BasicExplosion
{
damagetype "SpringManSlamUlt"
Obituary "$OB_SPRINGMAN9"
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_Explode(200,40,0,0,40)
stop
}
}

actor SpringManUltimatePickUp : CustomInventory
{
States
{
Pickup:
SPFI A 0 A_TakeInventory("UltAttackFlag",1)
SPFI A 0 A_SpawnItemEx("MM7PinpointThunder")
SPFI A 0 A_GiveInventory("PowerUltBuildCooldown",1)
SPFI A 0 A_PlaySoundEx("weapon/lightningbolt","Body")
SPFI A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,60)
SPFI A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
Stop
}
}

actor SpringSlamWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("SpringSlamCooldown",1)
TNT1 A 0 A_JumpIfInTargetInventory("SpringSlamCooldown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

actor SpringGrabCancel : Powerup
{
Powerup.Duration 8
}

actor SpringReleaseConfirm : Powerup
{
Powerup.Duration 20
}

actor SpringElectricityWarper
{
+MISSILE
-SOLID
+NOCLIP
+NOGRAVITY
+NOINTERACTION
+CLIENTSIDEONLY
Height 0
Radius 0
scale 2.5
renderstyle translucent
alpha 0.6
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 0 A_PlaySound("weapon/smaplar","Auto",1.5)
SHKI A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SHKI B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SHKI C 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SHKI D 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop
Death:
TNT1 A 0
stop
}
}

actor SpringElectricityWarper2 : SpringElectricityWarper
{
States
{
Spawn:
TNT1 A 0
Spawn2:
TNT1 A 0 A_PlaySound("weapon/smaplar","Auto",1.5)
SHKI A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SHKI B 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SHKI C 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SHKI D 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIfInTargetInventory("SpringElectricityCharge",1,1) Goto Death TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop
Death:
TNT1 A 0
stop
}
}

actor SpringElectricityDamager : BasicExplosion
{
damagetype "SpringManElectricity"
Obituary "$OB_SPRINGMAN5"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(1,48,0,0,48)
stop
}
}

actor SpringElectricityProtect : PowerProtection
{
powerup.duration 1
damagefactor "SpringManElectricity", 0.0
}

actor SpringManAttractionHitBox : BasicExplosion
{
damagetype "SpringManElectricity"
Obituary "$OB_SPRINGMAN5"
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 1 ACS_ExecuteAlways(247,0,1,500)
stop
}
}

actor SpringGrabProtect : PowerProtection
{
powerup.duration -10
damagefactor "Damage", 0.0
damagefactor "SpringManElectricity", 0.0
damagefactor "SpringManSlam", 1.0
damagefactor "SpringManSlamUlt", 1.0
}

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

actor SpringSlamCooldown : Inventory
{
inventory.amount 1
inventory.maxamount 105
}

actor SpringmanGrabProtector : GrabProtectionBase
{
	DamageFactor "SpringManSlam", 1.0
	DamageFactor "SpringManSlamUlt", 1.0
}