#Thanks to Badx for original fake spark SOC
#Thanks to SMS for simple fix to the spark
FREESLOT
MT_MODERNRETICLE
MT_BOOSTAURA
MT_BOOSTSHOCKWAVE
MT_JUMPSPHERE
MT_STOMPAURA
MT_STOMPEFFECT
MT_SLIDEFXL
MT_SLIDEFXR
MT_STOMPDUST
MT_FAKESPARKLE
SPR_STOM
SPR_STMP
SPR_BOST
SPR_RETT
SPR_SCKW
SPR_SLDL
SPR_SLDR
S_STOMPDUST1
S_STOMPDUST2
S_STOMPDUST3
S_STOMPDUST4
S_STOMPDUST5
S_STOMPDUST6
S_STOMPDUST7
S_STOMPDUST8
S_SLIDEFXL1
S_SLIDEFXL2
S_SLIDEFXL3
S_SLIDEFXL4
S_SLIDEFXR1
S_SLIDEFXR2
S_SLIDEFXR3
S_SLIDEFXR4
S_FAKESPARK
S_FAKESPARKLE
S_STOMPAURA1
S_STOMPEFFECT1
S_STOMPEFFECT2
S_STOMPEFFECT3
S_STOMPEFFECT4
S_BOOSTAURA1
S_BOOSTSHOCKWAVE1
S_BOOSTSHOCKWAVE2
S_BOOSTSHOCKWAVE3
S_BOOSTSHOCKWAVE4
S_BOOSTSHOCKWAVE5
S_MODERNRETICLE1
S_MODERNRETICLE2
S_MODERNRETICLE3
S_MODERNRETICLE4
S_MODERNRETICLE5
S_MODERNRETICLE6
MT_WALLJUMP
S_WALLJUMP1
S_WALLJUMP2
S_WALLJUMP3
S_WALLJUMP4
S_WALLJUMP5
S_WALLJUMP6
S_WALLJUMP7
S_WALLJUMP8
S_WALLJUMP9
S_WALLJUMP10
S_WALLJUMP11

State S_SPRK1
Duration = 0
Next = 0
Action A_SpawnObjectRelative
Var2 = MT_SPARK

object MT_SPARK
SpawnState = S_FAKESPARK

State S_FAKESPARK
Spritename = SPR_SPRK
Spritesubnumber = tr_trans40
Duration = 1
Action None
Next = S_SPRK2

State S_COINSPARKLE1
Duration = 0
Next = 0
Action A_SpawnObjectRelative
Var2 = MT_FAKESPARKLE

object MT_FAKESPARKLE
SpawnState = S_FAKESPARKLE

State S_FAKESPARKLE
Spritename = SPR_CPRK 
Spritesubnumber = tr_trans40
Duration = 1
Action None
Next = S_COINSPARKLE2

Thing MT_BOOSTAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_BOOSTAURA1
SPAWNHEALTH = 1000
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY

FRAME S_BOOSTAURA1
SPRITENAME = SPR_BOST
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 1
NEXT = S_NULL
ACTION none
VAR1 = 0
VAR2 = 0

Thing MT_BOOSTSHOCKWAVE
MAPTHINGNUM = -1
SPAWNSTATE = S_BOOSTSHOCKWAVE1
SPAWNHEALTH = 1000
SEESTATE = S_BOOSTSHOCKWAVE2
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY

FRAME S_BOOSTSHOCKWAVE1
SPRITENAME = SPR_SCKW
SPRITEFRAME = A|TR_TRANS20
DURATION = 2
NEXT = S_BOOSTSHOCKWAVE2
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_BOOSTSHOCKWAVE2
SPRITENAME = SPR_SCKW
SPRITEFRAME = B|TR_TRANS20
DURATION = 3
NEXT = S_BOOSTSHOCKWAVE3
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_BOOSTSHOCKWAVE3
SPRITENAME = SPR_SCKW
SPRITEFRAME = C|TR_TRANS40
DURATION = 9
NEXT = S_BOOSTSHOCKWAVE4
ACTION A_Setscale
VAR1 = 2*FRACUNIT
VAR2 = MT_BOOSTSHOCKWAVE

FRAME S_BOOSTSHOCKWAVE4
SPRITENAME = SPR_SCKW
SPRITEFRAME = C|TR_TRANS60
DURATION = 9
NEXT = S_BOOSTSHOCKWAVE5
ACTION A_Setscale
VAR1 = 3*FRACUNIT
VAR2 = MT_BOOSTSHOCKWAVE

FRAME S_BOOSTSHOCKWAVE5
SPRITENAME = SPR_SCKW
SPRITEFRAME = C|TR_TRANS80
DURATION = 7
NEXT = S_NULL
ACTION A_Setscale
VAR1 = 4*FRACUNIT
VAR2 = MT_BOOSTSHOCKWAVE

Thing MT_JUMPSPHERE
MAPTHINGNUM = -1
SPAWNSTATE = S_INVISIBLE
SPAWNHEALTH = 1000
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY

Thing MT_STOMPAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_STOMPAURA1
SPAWNHEALTH = 1000
SEESTATE = S_NULL
SEESOUND = 0
REACTIONTIME = 8
ATTACKSOUND = 0
PAINSTATE = 0
PAINCHANCE = FRACUNIT*256
PAINSOUND = 0
MELEESTATE = 0
MISSILESTATE = 0
DEATHSTATE = 0
DEATHSOUND = 0
XDEATHSTATE = 0
SPEED = FRACUNIT*10
RADIUS = FRACUNIT*5
HEIGHT = FRACUNIT*5
MASS = 16
DAMAGE = 0
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY|MF_NOBLOCKMAP

FRAME S_STOMPAURA1
SPRITENAME = SPR_STMP
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 1
NEXT = S_NULL
ACTION NONE
VAR1 = 0
VAR2 = 0

Thing MT_STOMPEFFECT
MAPTHINGNUM = -1
SPAWNSTATE = S_STOMPEFFECT1
SPAWNHEALTH = 1000
SEESTATE = S_NULL
SEESOUND = 0
REACTIONTIME = 8
ATTACKSOUND = 0
PAINSTATE = 0
PAINCHANCE = FRACUNIT*256
PAINSOUND = 0
MELEESTATE = 0
MISSILESTATE = 0
DEATHSTATE = 0
DEATHSOUND = 0
XDEATHSTATE = 0
SPEED = FRACUNIT*10
RADIUS = FRACUNIT*5
HEIGHT = FRACUNIT*5
MASS = 16
DAMAGE = 0
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY|MF_NOBLOCKMAP

FRAME S_STOMPEFFECT1
SPRITENAME = 0
SPRITEFRAME = 0
DURATION = 1
NEXT = S_STOMPEFFECT2
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_STOMPEFFECT2
SPRITENAME = SPR_STMP
SPRITEFRAME = B|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_STOMPEFFECT3
ACTION A_Setscale
VAR1 = FRACUNIT/4
VAR2 = MT_STOMPEFFECT

FRAME S_STOMPEFFECT3
SPRITENAME = SPR_STMP
SPRITEFRAME = B|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_STOMPEFFECT4
ACTION A_Setscale
VAR1 = FRACUNIT/4
VAR2 = MT_STOMPEFFECT

FRAME S_STOMPEFFECT4
SPRITENAME = SPR_STMP
SPRITEFRAME = B|TR_TRANS60|FF_FULLBRIGHT
DURATION = 2
NEXT = S_NULL
ACTION A_Setscale
VAR1 = FRACUNIT/5
VAR2 = MT_STOMPEFFECT

Thing MT_MODERNRETICLE
MAPTHINGNUM = -1
SPAWNSTATE = S_MODERNRETICLE1
SPAWNHEALTH = 1000
SEESTATE = 0
SEESOUND = 0
REACTIONTIME = 0
ATTACKSOUND = 0
PAINSTATE = 0
PAINCHANCE = 0
PAINSOUND = 0
MELEESTATE = 0
MISSILESTATE = 0
DEATHSTATE = 0
DEATHSOUND = 0
XDEATHSTATE = 0
SPEED = 0
RADIUS = 65536
HEIGHT = 65536
MASS = 100
DAMAGE = 0
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_RUNSPAWNFUNC|MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT

FRAME S_MODERNRETICLE1
SPRITENUMBER = SPR_RETT
SPRITESUBNUMBER = A|FF_FULLBRIGHT
DURATION = 1
NEXT = S_MODERNRETICLE2
ACTION A_ReticleThinker
VAR1 = 0
VAR2 = 0

FRAME S_MODERNRETICLE2
SPRITENUMBER = SPR_RETT
SPRITESUBNUMBER = B|FF_FULLBRIGHT
DURATION = 1
NEXT = S_MODERNRETICLE3
ACTION A_ReticleThinker
VAR1 = 0
VAR2 = 0

FRAME S_MODERNRETICLE3
SPRITENUMBER = SPR_RETT
SPRITESUBNUMBER = C|FF_FULLBRIGHT
DURATION = 1
NEXT = S_MODERNRETICLE4
ACTION A_ReticleThinker
VAR1 = 0
VAR2 = 0

FRAME S_MODERNRETICLE4
SPRITENUMBER = SPR_RETT
SPRITESUBNUMBER = D|FF_FULLBRIGHT
DURATION = 1
NEXT = S_MODERNRETICLE5
ACTION A_ReticleThinker
VAR1 = 0
VAR2 = 0

FRAME S_MODERNRETICLE5
SPRITENUMBER = SPR_RETT
SPRITESUBNUMBER = E|FF_FULLBRIGHT
DURATION = 1
NEXT = S_MODERNRETICLE6
ACTION A_ReticleThinker
VAR1 = 0
VAR2 = 0

FRAME S_MODERNRETICLE6
SPRITENUMBER = SPR_RETT
SPRITESUBNUMBER = F|FF_FULLBRIGHT
DURATION = 1
NEXT = S_MODERNRETICLE1
ACTION A_ReticleThinker
VAR1 = 0
VAR2 = 0

Thing MT_SLIDEFXL
MAPTHINGNUM = -1
SPAWNSTATE = S_SLIDEFXL1
SPAWNHEALTH = 1000
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT

FRAME S_SLIDEFXL1
SPRITENAME = SPR_SLDL
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXL2
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_SLIDEFXL2
SPRITENAME = SPR_SLDL
SPRITEFRAME = B|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXL3
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_SLIDEFXL3
SPRITENAME = SPR_SLDL
SPRITEFRAME = C|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXL4
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_SLIDEFXL4
SPRITENAME = SPR_SLDL
SPRITEFRAME = D|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXL1
ACTION NONE
VAR1 = 0
VAR2 = 0

Thing MT_SLIDEFXR
MAPTHINGNUM = -1
SPAWNSTATE = S_SLIDEFXR1
SPAWNHEALTH = 1000
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT

FRAME S_SLIDEFXR1
SPRITENAME = SPR_SLDR
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXR2
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_SLIDEFXR2
SPRITENAME = SPR_SLDR
SPRITEFRAME = B|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXR3
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_SLIDEFXR3
SPRITENAME = SPR_SLDR
SPRITEFRAME = C|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXR4
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_SLIDEFXR4
SPRITENAME = SPR_SLDR
SPRITEFRAME = D|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SLIDEFXR1
ACTION NONE
VAR1 = 0
VAR2 = 0

Thing MT_WALLJUMP
MAPTHINGNUM = -1
SPAWNSTATE = S_WALLJUMP1
SPAWNHEALTH = 1000
SEESTATE = 0
SEESOUND = 0
REACTIONTIME = 8
ATTACKSOUND = 0
PAINSTATE = 0
PAINCHANCE = 1
PAINSOUND = 0
MELEESTATE = 0
MISSILESTATE = 0
DEATHSTATE = S_WALLJUMP7
DEATHSOUND = 0
XDEATHSTATE = S_WALLJUMP7
SPEED = 20*FRACUNIT
RADIUS = 11*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
DAMAGE = -20*FRACUNIT
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_RUNSPAWNFUNC

#Boring spawn frame.

FRAME S_WALLJUMP1
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_WALLJUMP2
ACTION A_FindTarget
VAR1 = MT_PLAYER
VAR2 = 0

#Capechase the player so it's ready to spawn objects on him, so they collide with him.

FRAME S_WALLJUMP2
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_WALLJUMP3
ACTION A_CapeChase
VAR1 = 0

FRAME S_WALLJUMP3
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_WALLJUMP4
ACTION A_MoveRelative
VAR1 = 0
VAR2 = 5

#Make into a missile to collide with walls.

FRAME S_WALLJUMP4
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_WALLJUMP5
ACTION A_SetObjectFlags
VAR1 = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE
VAR2 = 0

#Otherwise turn into a useless crap nothingness item.

FRAME S_WALLJUMP5
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_WALLJUMP6
ACTION A_SetObjectFlags
VAR1 = 0
VAR2 = 0

FRAME S_WALLJUMP6
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 35
NEXT = S_NULL
ACTION A_SpawnObjectRelative
VAR1 = 0
VAR2 = 0

#Object died! Spawn walljump object.

FRAME S_WALLJUMP7
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_WALLJUMP8
ACTION A_SPAWNWALLJUMPOBJECT
VAR1 = 0
VAR2 = 0

#Call the next frame's action so the player plays a jump noise for walljump only.

FRAME S_WALLJUMP8
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 3
NEXT = S_NULL
ACTION A_RemoteAction
VAR1 = -1
VAR2 = S_WALLJUMP10

FRAME S_WALLJUMP9
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_NULL
ACTION A_RemoteAction
VAR1 = -1
VAR2 = S_WALLJUMP11

FRAME S_WALLJUMP10
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 35
NEXT = S_NULL
ACTION A_PlaySound
VAR1 = SFX_JUMP
VAR2 = 1

FRAME S_WALLJUMP11
SPRITENAME = NULL
SPRITEFRAME = A
DURATION = 35
NEXT = S_NULL
ACTION A_PlaySound
VAR1 = SFX_JUMP
VAR2 = 1

Thing MT_STOMPDUST
MAPTHINGNUM = -1
SPAWNSTATE = S_STOMPDUST1
SPAWNHEALTH = 1000
SEESTATE = 0
SEESOUND = 0
REACTIONTIME = 0
ATTACKSOUND = 0
PAINSTATE = 0
PAINCHANCE = 0
PAINSOUND = 0
MELEESTATE = 0
MISSILESTATE = 0
DEATHSTATE = 0
DEATHSOUND = 0
XDEATHSTATE = 0
SPEED = 20*FRACUNIT
RADIUS = 16*FRACUNIT
HEIGHT = 32*FRACUNIT
MASS = 0
DAMAGE = 0
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_MISSILE|MF_NOGRAVITY|MF_NOBLOCKMAP

FRAME S_STOMPDUST1
SPRITENAME = SPR_STOM
SPRITEFRAME = A|TR_TRANS20|FF_FULLBRIGHT
DURATION = 2
NEXT = STOMPDUST2
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_STOMPDUST2
SPRITENAME = SPR_STOM
SPRITEFRAME = B|TR_TRANS20|FF_FULLBRIGHT
DURATION = 1
NEXT = S_STOMPDUST3
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_STOMPDUST3
SPRITENAME = SPR_STOM
SPRITEFRAME = C|TR_TRANS20|FF_FULLBRIGHT
DURATION = 2
NEXT = S_STOMPDUST4
ACTION NONE
VAR1 = 0
VAR2 = 0

FRAME S_STOMPDUST4
SPRITENAME = SPR_STOM
SPRITEFRAME = D|TR_TRANS20|FF_FULLBRIGHT
DURATION = 1
NEXT = STOMPDUST5
ACTION A_Setscale
VAR1 = FRACUNIT/3
VAR2 = MT_STOMPDUST

FRAME S_STOMPDUST5
SPRITENAME = SPR_STOM
SPRITEFRAME = E|TR_TRANS20|FF_FULLBRIGHT
DURATION = 2
NEXT = S_STOMPDUST6
ACTION A_Setscale
VAR1 = FRACUNIT/3
VAR2 = MT_STOMPDUST

FRAME S_STOMPDUST6
SPRITENAME = SPR_STOM
SPRITEFRAME = F|TR_TRANS40|FF_FULLBRIGHT
DURATION = 1
NEXT = S_STOMPDUST7
ACTION A_Setscale
VAR1 = FRACUNIT/2
VAR2 = MT_STOMPDUST

FRAME S_STOMPDUST7
SPRITENAME = SPR_STOM
SPRITEFRAME = G|TR_TRANS60|FF_FULLBRIGHT
DURATION = 2
NEXT = S_STOMPDUST8
ACTION A_Setscale
VAR1 = FRACUNIT
VAR2 = MT_STOMPDUST

FRAME S_STOMPDUST8
SPRITENAME = SPR_STOM
SPRITEFRAME = H|TR_TRANS80|FF_FULLBRIGHT
DURATION = 2
NEXT = S_NULL
ACTION A_Setscale
VAR1 = FRACUNIT
VAR2 = MT_STOMPDUST

