#~~~~~~~~~~~~~~~~~~
#First off, let's add every custom item to freeslots in 1 list.
#Due to SRB2's priority issues, some of the items that appear in the SOCs
#don't appear on this list because they've been assigned through LUA instead.
#~~~~~~~~~~~~~~~~~~

FREESLOT
S_SMSAURATRAIL
S_SMSAIRBOOST1
S_SMSAIRBOOST2
S_SMSAIRBOOST3
S_SMSAIRBOOST4
S_SMSAIRBOOST5
S_SMSSPINBOOST0
S_SMSSPINBOOST1
S_SMSSPINBOOST2
S_SMSSPINBOOST3
S_SMSSPINBOOST4
S_SMSGROUNDBOOST
S_SMSLINE0
S_SMSLINE1
S_SMSLINE2
S_SMSLINE3
S_SMSLINE4
S_SMSLINE5
S_SMS_BOOST01
S_SMS_BOOST02
S_SMS_BOOST03
S_SMS_BOOST04
S_SMS_FOOTSWEEP1
S_SMS_FOOTSWEEP2
S_SMS_FOOTSWEEP3
S_SMS_FOOTSWEEP4
S_SMS_FOOTSWEEP5
S_SMS_FOOTSWEEP6
S_SMS_FOOTSWEEP7
S_SMS_FOOTSWEEP8
S_SMS_PREHOMET1
S_SMS_PREHOMET2
S_SMS_PREHOMET3
S_SMS_PREHOMET4
S_SMS_HOMET1
S_SMS_HOMET2
S_SMS_HOMET3
S_SMS_HOMET4
S_SMS_HOMET5
S_SMS_HOMET6
S_SMS_HOMET7
S_SMS_ROLLT1
S_SMS_ROLLT2
S_SMS_ROLLT3
S_SMS_ROLLT4
S_SMS_ROLLT5
S_SMS_ROLLT6
S_SMS_FLIPT1
S_SMS_FLIPT2
S_SMS_FLIPT3
S_SMS_FLIPT4
S_SMS_FLIPT5
S_SMS_FLIPT6
S_SMS_SIDET
S_SMS_TAURA1
S_SMS_TAURA2
S_SMS_TAURA3
S_SMS_STOMP1
S_SMS_STOMP2
S_SMS_AIRBOOST
S_SMS_RINGBURSTSLIDE
S_SMS_VERTICALRINGBURST
S_SMS_HORIZONTALRINGBURST
S_SMS_WALLJUMP
S_SMS_ADVFALL1
S_SMS_ADVFALL2
S_SMSTOSSREADY
S_SMSTOSSING
S_SMS_ATOMDIVE
S_SMS_ATOMTARGETDED
S_SMS_ATOMLAND1
S_SMS_ATOMLAND2
S_HMS_ATOMLAND
S_SMS_DODGELAND
S_SMSPOWERBOMB1
S_SMSPOWERBOMB1A
S_SMSPOWERBOMB2
S_SMSPOWERBOMB3
S_SMSPOWERBOMB4
S_SMSPOWERBOMB5
S_SMSPOWERBOMB6
S_SMS_SIDEDODGE1
S_SMS_SIDEDODGE2
S_SMS_LIGHTDASH
S_BURSTWAVE1
S_BURSTWAVE2
S_BURSTWAVE3
S_BURSTWAVE4
S_BURSTWAVE5
S_BURSTWAVE6
S_BURSTLIGHT1
S_BURSTLIGHT2
S_BURSTLIGHT3
S_BURSTLIGHT4
S_BURSTLIGHT5
S_BURSTLIGHT6
S_BURSTLIGHT7
S_SMMK0
S_SMMK1
S_SMMK2
S_SMMK3
S_SMMK4
S_SMMK5
S_SMSCOMETHAYMAKER1
S_SMSCOMETHAYMAKER2
S_SMSHUGEFLAMETOSS
S_CMPHRADIUS
S_CMPHRADIUS2
S_CMPHTRACKER
S_RVGMISSILE
S_POWERSHARE
S_SMSTHOK
S_SMSTHOK2
S_SMSTHOK3
S_SMSTHOK4
S_SMSBDASH
S_SMSBDASH2
S_SMSBDASH3
S_SMSBDASH4
S_SMSPOWA0
S_SMSPOWA1
S_SMSPOWA2
S_SMSPOWA3
S_SMSPOWA4
S_SMSPOWA5
S_SMSPOWA6
S_SMSPOWA7
S_SMSPOWA8
S_SMSPOWA9
S_SMSPOWA10
S_SMSTSPARK1
S_SMSTSPARK2
S_SMSTSPARK3
S_SMSTSPARK4
S_SMSTSPARK5
S_SMSTSPARK6
S_SMSTSPARK7
S_SMSSPARKLESPAWN
S_SMSSPARKLESPAWN2
S_SMSSSSA
S_SMSSSSB
S_SMSSSS1
S_SMSSSS2
S_SMSSSS3
S_SMSSSS4
S_PARTICLESMS
S_SMSHOMING
S_SMSWALLJUMP1
S_SMSWALLJUMP3
S_SMSWALLJUMP4
S_SMSWALLJUMP5
S_SMSWALLJUMP6
S_SMSWALLJUMPF
S_SMSSPRINTLINE1
S_SMSSPRINTLINE2
S_SMSSPRINTLINE3
S_SMSSPRINTLINE4
S_SMSSPRINTLINE5
S_SMSSPRINTLINE1M
S_SMSSPRINTLINE2M
S_SMSSPRINTLINE3M
S_SMSSPRINTLINE4M
S_SMSSPRINTLINE5M
S_SMSSPRINTLINE1S
S_SMSSPRINTLINE2S
S_SMSSPRINTLINE3S
S_SMSSPRINTLINE4S
S_SMSWATERGRIND1
S_SMSWATERGRIND2
S_SMSGRINDPOSE1
S_SMSGRINDPOSE2
S_SMSFIRE1
S_SMSFIRE2
S_SMSFIRE3
S_SMSFIRE4
S_SMSTAUNT1
S_SMSYELLOWSIGN
S_HMSCOMETHAYMAKER1
S_HMSCOMETHAYMAKER2
S_HMSFIRE1
S_HMSFIRE2
S_HMSFIRE3
S_HMSFIRE4
S_HMSFPILLAR1
S_HMSFPILLAR2
S_HMSFPILLAR3
S_HMSFPILLAR4
S_HMSFPILLAR5
S_HMSNAPALMFLAME_DIE
S_HMSFLAMEREST
S_HMSFREST1
S_HMSFREST2
S_HMSFREST3
S_HMSFREST4
S_HMSNOVAFIRE1
S_HMSNOVAFIRE2
S_NOVABLAST
S_NOVAEXPLODE1
S_NOVAEXPLODE2
S_NOVAEXPLODE3
S_NOVAEXPLODE4
S_NOVAWAVE1
S_NOVAWAVE2
S_BLACKHOLE0
S_BLACKHOLE1
S_BLACKHOLE2
S_BLACKHOLE3
S_BLACKHOLE4
S_BLACKHOLE5
S_BLACKHOLE6
S_BLACKHOLE7
S_BLACKHOLE8
S_BLACKHOLE9
S_HMSBLACKHOLE
S_HMSPOWERBOMB1
S_HMSPOWERBOMB1A
S_HMSPOWERBOMB1B
S_HMSPOWERBOMB1C
S_HMSPOWERBOMB2
S_HMSPOWERBOMB3
S_HMSPOWERBOMB4
S_HMSPOWERBOMB5
S_HMSLIPILLAR0
S_HMSLIPILLAR1
S_HMSLIPILLAR2
S_ATOMDIVEPOP
S_HMSPBC0
S_HMSPBC1
S_HMSPBC2
S_HMSPBC3
S_HMSPBC4
S_PLAY_HMSCOMBO1
S_PLAY_HMSCOMBO2
S_PLAY_HMSCOMBO3
S_HMSWAVEAURA1
S_HMSWAVEAURA2
S_HMSWAVEAURA3
S_HMSWAVEAURA4
S_HMSWAVEAURA5
S_HMSWAVEAURA6
S_HMSWAVEAURA7
S_HMSWAVEAURA8
S_HMSWAVEAURA9
S_HMSWAVEAURA10
S_HMSWAVEAURA11
S_HMSWAVEAURA12
S_HMSWAVEAURAG
S_HMSELAURA1
S_HMSELAURA1A
S_HMSELAURA2
S_HMSELAURA2A
S_HMSELAURA3
S_HMSELAURA3A
S_HMSELAURA4
S_HMSELAURA4A
S_HMSELAURA5
S_HMSELAURA5A
S_HMSELAURA5B
S_HMSELAURA6
S_HMSELAURA6A
S_HMSELAURA6B
S_HMSSTOMPEXPLODE
S_HMSWARPPOINT
S_HMSWARPPOINTRETURN
S_HMS_INSTANTMOVE1
S_HMS_INSTANTMOVE2
S_HMS_INSTANTWARP1
S_HMS_INSTANTWARP2
S_HMS_INSTANTWARP3
S_HMSTRANSFORM1
S_HMSTRANSFORM2
S_HMSTRANSFORM3
S_HMSTRANSFORM4
S_HMSTRANSFORM5
S_HMSTRANSFORM6
S_HMSTRANSFORM7
S_HMSTRANSFORM8
S_HMSTRANSFORM9
S_SMSBOOSTAURA1
S_SMSECHECK
S_SMSSOUNDOBJ
S_HMSRISEAURA1
S_HMSRISEAURA2
S_HMSSTOMPAURA
S_HMSLIGHTNING
S_SMSSWAVE
S_SMSSWAVE2
S_SMSME1
S_SMSME2
S_SMSTHOKANIM
S_HMSGAX
S_HMSGAXANIM
S_HMSGAXA
S_GOLDENSHINE
SPR_AURA
SPR_POWA
SPR_SFIR
SPR_SMBO
SPR_SMST
SPR_NOVA
SPR_SGAX
SPR_ARBO
SPR_SPBS
SPR_BKHL
SPR_NUEX
SPR_PWBM
SPR_ELAU
SPR_SMSP
SPR_SBRT
SPR_SBST
SPR_SMMK
SPR_LIGB
SPR_HMSL
SPR_RGOR
SPR_SMME
SPR_SMSO
SPR_HMSO
SKINCOLOR_EMPEROR1
SKINCOLOR_EMPEROR2
SKINCOLOR_EMPEROR3
SKINCOLOR_EMPEROR4
SKINCOLOR_EMPEROR5
SKINCOLOR_SMS1R
SKINCOLOR_SMS2R
SKINCOLOR_SMS3R
SKINCOLOR_SMS4R
SKINCOLOR_SMS5R
SKINCOLOR_SMS1
SKINCOLOR_SMS2
SKINCOLOR_SMS3
SKINCOLOR_SMS4
SKINCOLOR_FLAMEBREAKER1
SKINCOLOR_FLAMEBREAKER2
SKINCOLOR_FLAMEBREAKER3
SKINCOLOR_FLAMEBREAKER4
SKINCOLOR_FLAMEBREAKER5
SKINCOLOR_MYSTICAL1
SKINCOLOR_MYSTICAL2
SKINCOLOR_MYSTICAL3
SKINCOLOR_MYSTICAL4
SKINCOLOR_MYSTICAL5
SKINCOLOR_SONIC1
SKINCOLOR_SONIC2
SKINCOLOR_SONIC3
SKINCOLOR_SONIC4
SKINCOLOR_SONIC5
SKINCOLOR_TRANSFORMATION1
SKINCOLOR_TRANSFORMATION2
SKINCOLOR_TRANSFORMATION3
SKINCOLOR_TRANSFORMATION4
SKINCOLOR_TRANSFORMATION5
SKINCOLOR_ZEEJIN1
SKINCOLOR_ZEEJIN2
SKINCOLOR_ZEEJIN3
SKINCOLOR_ZEEJIN4
SKINCOLOR_ZEEJIN5
SKINCOLOR_SMSROVERGLOW

SKINCOLOR SKINCOLOR_SMSROVERGLOW
NAME = SMSROVERGLOW
RAMP = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
INVCOLOR = SKINCOLOR_BLACK
INVSHADE = 12
CHATCOLOR = V_REDMAP
ACCESSIBLE = FALSE

SKINCOLOR SKINCOLOR_EMPEROR1
NAME = EMPEROR1
RAMP = 28,46,46,45,44,42,40,39,37,36,35,34,33,32,0,0
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 12
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_EMPEROR2
NAME = EMPEROR2
RAMP =  30,47,46,45,44,43,42,41,40,39,38,37,36,33,32,0
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 12
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_EMPEROR3
NAME = EMPEROR3
RAMP = 31,30,47,47,46,71,45,43,42,41,40,39,38,37,35,33
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 12
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_EMPEROR4
NAME = EMPEROR4
RAMP = 31,31,187,47,47,71,46,46,45,45,44,43,42,41,38,35
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_EMPEROR5
NAME = EMPEROR5
RAMP = 31,31,31,187,47,47,71,46,46,45,45,44,43,42,40,37
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 12
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE


SKINCOLOR SKINCOLOR_SMS1R
NAME = SMS1R
RAMP = 0,0,1,1,80,81,81,82,83,84,85,86,87,78,78,70
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS2R
NAME = SMS2R
RAMP =  0,80,81,82,82,83,72,72,73,73,84,85,86,87,69,70
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS3R
NAME = SMS3R
RAMP = 0,80,81,82,83,72,73,73,64,64,65,66,67,68,70,71
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS4R
NAME = SMS4R
RAMP = 0,80,81,82,83,72,73,64,64,65,66,67,68,69,71,47
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS5R
NAME = SMS5R
RAMP = 80,81,82,83,72,73,73,64,66,67,68,69,70,46,71,47
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE


SKINCOLOR SKINCOLOR_SMS1
NAME = SMS1
RAMP = 0,80,81,82,83,72,73,73,64,65,66,67,68,69,70,71
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS2
NAME = SMS2
RAMP = 0,0,80,81,82,83,72,73,74,64,64,73,83,82,81,81,0
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS3
NAME = SMS3
RAMP = 0,80,81,83,73,74,52,53,65,64,74,73,82,80,0,0
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SMS4
NAME = SMS4
RAMP = 0,0,0,80,81,82,83,72,73,73,73,73,81,80,0,0
INVCOLOR = SKINCOLOR_BLUE
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MYSTICAL1
NAME = MYSTICAL1
RAMP = 0,0,1,80,80,81,81,82,82,83,83,72,4,6,8,10
INVCOLOR = SKINCOLOR_LAVENDER
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_FLAMEBREAKER1
NAME = FLAMEBREAKER1
RAMP = 0,0,1,1,80,80,81,82,83,72,73,74,51,54,56,58
INVCOLOR = SKINCOLOR_SKY
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_FLAMEBREAKER2
NAME = FLAMEBREAKER2
RAMP = 0,1,80,80,83,72,73,49,51,53,55,39,40,42,43,45
INVCOLOR = SKINCOLOR_SKY
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_FLAMEBREAKER3
NAME = FLAMEBREAKER3
RAMP = 0,80,82,72,73,49,51,55,38,39,40,41,42,44,46,47
INVCOLOR = SKINCOLOR_SKY
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_FLAMEBREAKER4
NAME = FLAMEBREAKER4
RAMP = 80,83,73,50,53,36,37,38,40,41,42,43,45,46,47,71
INVCOLOR = SKINCOLOR_SKY
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_FLAMEBREAKER5
NAME = FLAMEBREAKER5
RAMP = 82,73,49,52,54,56,40,42,44,45,46,71,47,239,31,31
INVCOLOR = SKINCOLOR_SKY
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MYSTICAL2
NAME = MYSTICAL2
RAMP = 0,0,1,1,80,80,81,82,83,83,72,72,84,85,86,87
INVCOLOR = SKINCOLOR_LAVENDER
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MYSTICAL3
NAME = MYSTICAL3
RAMP = 0,1,80,80,81,82,83,72,73,84,85,86,87,78,78,70
INVCOLOR = SKINCOLOR_LAVENDER
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MYSTICAL4
NAME = MYSTICAL4
RAMP = 0,1,1,80,81,82,83,83,72,73,73,65,66,70,46,71
INVCOLOR = SKINCOLOR_LAVENDER
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MYSTICAL5
NAME = MYSTICAL5
RAMP = 0,1,80,80,81,81,82,83,72,73,67,68,69,70,71,47
INVCOLOR = SKINCOLOR_LAVENDER
INVSHADE = 12
CHATCOLOR = V_YELLOWMAP
ACCESSIBLE = TRUE


SKINCOLOR SKINCOLOR_SONIC1
NAME = SONIC1
RAMP = 149,150,152,153,154,155,155,156,157,158,159,253,253,254,31,31
INVCOLOR = SKINCOLOR_MAGENTA
INVSHADE = 16
CHATCOLOR = V_BLUEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SONIC2
NAME = SONIC2
RAMP = 148,149,150,151,153,154,154,155,156,157,158,159,253,253,254,31
INVCOLOR = SKINCOLOR_MAGENTA
INVSHADE = 16
CHATCOLOR = V_BLUEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SONIC3
NAME = SONIC3
RAMP = 146,147,149,150,151,152,153,154,155,156,157,158,159,253,253,254
INVCOLOR = SKINCOLOR_MAGENTA
INVSHADE = 16
CHATCOLOR = V_BLUEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SONIC4
NAME = SONIC4
RAMP = 145,147,148,149,150,152,152,153,154,155,156,157,158,159,159,253
INVCOLOR = SKINCOLOR_MAGENTA
INVSHADE = 16
CHATCOLOR = V_BLUEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SONIC5
NAME = SONIC5
RAMP = 144,145,147,148,149,150,151,152,153,154,155,156,157,158,159,159
INVCOLOR = SKINCOLOR_MAGENTA
INVSHADE = 16
CHATCOLOR = V_BLUEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_TRANSFORMATION1
NAME = TRANSFORMATION1
RAMP = 205,204,203,202,201,200,1,0,128,129,140,141,142,143,207,206
INVCOLOR = SKINCOLOR_YELLOW
INVSHADE = 10
CHATCOLOR = V_PURPLEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_TRANSFORMATION2
NAME = TRANSFORMATION2
RAMP = 140,143,206,205,204,203,202,201,200,1,0,128,129,140,141,142
INVCOLOR = SKINCOLOR_YELLOW
INVSHADE = 10
CHATCOLOR = V_PURPLEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_TRANSFORMATION3
NAME = TRANSFORMATION3
RAMP = 140,141,142,143,207,206,205,204,203,202,201,200,1,0,128,129
INVCOLOR = SKINCOLOR_YELLOW
INVSHADE = 10
CHATCOLOR = V_PURPLEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_TRANSFORMATION4
NAME = TRANSFORMATION4
RAMP = 0,128,129,140,141,142,143,207,206,205,204,203,202,201,200,1
INVCOLOR = SKINCOLOR_YELLOW
INVSHADE = 10
CHATCOLOR = V_PURPLEMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_TRANSFORMATION5
NAME = TRANSFORMATION5
RAMP = 201,200,1,0,128,129,140,141,142,143,207,206,205,204,203,202
INVCOLOR = SKINCOLOR_YELLOW
INVSHADE = 10
CHATCOLOR = V_PURPLEMAP
ACCESSIBLE = TRUE

#0,1,80,81,83,48,49,50,51,53,55,58,70,70,71,47
#0,80,82,73,48,50,52,54,58,39,40,41,42,43,44,47

#36,38,40,43,45,66,64,81,83,72,73,74,51,54,55,56

SKINCOLOR SKINCOLOR_ZEEJIN1
NAME = INFINITY1
RAMP = 24,26,27,28,29,29,29,29,30,30,30,30,31,31,31,31
INVCOLOR = SKINCOLOR_JET
INVSHADE = 16
CHATCOLOR = V_INVERTMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZEEJIN2
NAME = INFINITY2
RAMP = 21,23,24,27,27,28,28,29,29,29,30,30,30,31,31,31
INVCOLOR = SKINCOLOR_JET
INVSHADE = 16
CHATCOLOR = V_INVERTMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZEEJIN3
NAME = INFINITY3
RAMP = 170,22,23,26,26,27,27,28,28,29,29,159,253,254,254,31
INVCOLOR = SKINCOLOR_JET
INVSHADE = 16
CHATCOLOR = V_INVERTMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZEEJIN4
NAME = INFINITY4
RAMP = 160,166,27,27,28,28,29,29,30,30,167,168,169,169,254,31
INVCOLOR = SKINCOLOR_JET
INVSHADE = 16
CHATCOLOR = V_INVERTMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZEEJIN5
NAME = INFINITY5
RAMP = 192,15,19,26,28,29,30,31,31,186,186,187,199,169,169,254
INVCOLOR = SKINCOLOR_JET
INVSHADE = 16
CHATCOLOR = V_INVERTMAP
ACCESSIBLE = TRUE
































#First off is SMS' aura trail, which appears when he speed thoks.
#This item tells SMS to go spawn a trail for 8 tics through Lua in LUA_MOBT

Thing MT_SMSAURATRAIL
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSAURATRAIL
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY

FRAME S_SMSAURATRAIL
SPRITENAME = SPR_AURA
SPRITEFRAME = B|FF_FULLBRIGHT|TR_TRANS40
DURATION = 9
NEXT = S_NULL

#SMS Boosting frames!

FRAME S_SMS_BOOST01
SPRITENAME = SPR_SMSO
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMS_BOOST02

FRAME S_SMS_BOOST02
SPRITENAME = SPR_SMSO
SPRITEFRAME = B
DURATION = 1
NEXT = S_SMS_BOOST03

FRAME S_SMS_BOOST03
SPRITENAME = SPR_SMSO
SPRITEFRAME = C
DURATION = 1
NEXT = S_SMS_BOOST04

FRAME S_SMS_BOOST04
SPRITENAME = SPR_SMSO
SPRITEFRAME = D
DURATION = 1
NEXT = S_SMS_BOOST01

#Spinkick up to 3 times with the footsweep!

FRAME S_SMS_FOOTSWEEP1
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = E
DURATION = 4
NEXT = S_SMS_FOOTSWEEP2

FRAME S_SMS_FOOTSWEEP2
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = F
DURATION = 2
NEXT = S_SMS_FOOTSWEEP3

FRAME S_SMS_FOOTSWEEP3
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = G
DURATION = 1
NEXT = S_SMS_FOOTSWEEP4

FRAME S_SMS_FOOTSWEEP4
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = H
DURATION = 1
NEXT = S_SMS_FOOTSWEEP5

FRAME S_SMS_FOOTSWEEP5
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = H
DURATION = 1
NEXT = S_SMS_FOOTSWEEP6

FRAME S_SMS_FOOTSWEEP6
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = I
DURATION = 2
NEXT = S_SMS_FOOTSWEEP7

FRAME S_SMS_FOOTSWEEP7
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = J
DURATION = 2
NEXT = S_SMS_FOOTSWEEP8

FRAME S_SMS_FOOTSWEEP8
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = K
DURATION = 3
NEXT = S_PLAY_FALL

#SMS does Tricks from the homing attack! Booya!

FRAME S_SMS_PREHOMET1
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = F
DURATION = 1
NEXT = S_SMS_PREHOMET2

FRAME S_SMS_PREHOMET2
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = G
DURATION = 1
NEXT = S_SMS_PREHOMET3

FRAME S_SMS_PREHOMET3
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = H
DURATION = 2
NEXT = S_SMS_PREHOMET4

FRAME S_SMS_PREHOMET4
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = I
DURATION = 3
NEXT = S_SMS_HOMET1

FRAME S_SMS_HOMET1
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = J
DURATION = 5
NEXT = S_SMS_HOMET2

FRAME S_SMS_HOMET2
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = K
DURATION = 4
NEXT = S_SMS_HOMET3

FRAME S_SMS_HOMET3
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = E
DURATION = 4
NEXT = S_SMS_HOMET4

FRAME S_SMS_HOMET4
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = F
DURATION = 4
NEXT = S_SMS_HOMET5

FRAME S_SMS_HOMET5
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = G
DURATION = 4
NEXT = S_SMS_HOMET6

FRAME S_SMS_HOMET6
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = H
DURATION = 4
NEXT = S_SMS_HOMET7

FRAME S_SMS_HOMET7
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = I
DURATION = 5
NEXT = S_SMS_HOMET1

#Second homing T! M 24 23 are the rolling frames in order.
#Yeah, we have multiple. What of it?

FRAME S_SMS_ROLLT1
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = 18
DURATION = 5
NEXT = S_SMS_ROLLT2

FRAME S_SMS_ROLLT2
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = M
DURATION = 4
NEXT = S_SMS_ROLLT3
 
FRAME S_SMS_ROLLT3
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = 24
DURATION = 4
NEXT = S_SMS_ROLLT4

FRAME S_SMS_ROLLT4
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = 23
DURATION = 4
NEXT = S_SMS_ROLLT5

#Falling Frame 1 = 14

FRAME S_SMS_ROLLT5
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = 14 
DURATION = 3
NEXT = S_SMS_ROLLT6

#Falling Frame 2 = 27

FRAME S_SMS_ROLLT6
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = 27
DURATION = 3
NEXT = S_SMS_ROLLT5

#A third homing T?!
#Insert overused MLG airhorn here.

FRAME S_SMS_FLIPT1
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = N
DURATION = 9
NEXT = S_SMS_FLIPT2

FRAME S_SMS_FLIPT2
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = M
DURATION = 4
NEXT = S_SMS_FLIPT3

FRAME S_SMS_FLIPT3
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = M
DURATION = 4
NEXT = S_SMS_FLIPT4

FRAME S_SMS_FLIPT4
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = M
DURATION = 4
NEXT = S_SMS_FLIPT5

FRAME S_SMS_FLIPT5
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = O
DURATION = 3
NEXT = S_SMS_FLIPT6

FRAME S_SMS_FLIPT6
SPRITENUMBER = SPR_SMSO
SPRITESUBNUMBER = P
DURATION = 3
NEXT = S_SMS_FLIPT5

#Omg, a 4th trick?!
#Yep, thanks, Lua!

FRAME S_SMS_SIDET
SPRITENUMBER = SPR_PLAY
SPRITESUBNUMBER = 18
DURATION = 24
NEXT = S_SMS_FLIPT5

#SMS also has a custom homing-attack trail.
#SA2 homing thok, anyone?

Thing MT_SMSHOMINGTAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_SMS_TAURA1
SPAWNHEALTH = 1000
SEESTATE = S_SMS_TAURA2
REACTIONTIME = 8
SPEED = 0
RADIUS = 16*FRACUNIT
HEIGHT = 16*FRACUNIT
MASS = 100
DAMAGE = 0
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_SCENERY

FRAME S_SMS_TAURA1
SPRITENAME = SPR_THOK
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 2
NEXT = S_SMS_TAURA2

FRAME S_SMS_TAURA2
SPRITENAME = SPR_THOK
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS90
DURATION = 3
NEXT = S_SMS_TAURA3

FRAME S_SMS_TAURA3
SPRITENAME = SPR_THOK
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS90
DURATION = 2
NEXT = S_NULL

#SMS has a little stomping animation. Neat!

FRAME S_SMS_STOMP1
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = P
DURATION = 1
NEXT = S_SMS_STOMP2

FRAME S_SMS_STOMP2
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = O
DURATION = 1
NEXT = S_SMS_STOMP1

#When SMS goes into his airboost, you get this!

FRAME S_SMS_AIRBOOST
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = R
DURATION = 30
NEXT = S_PLAY_FALL

#Same airboost animation for ring burst, but different purpose.

FRAME S_SMS_RINGBURSTSLIDE
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = Q
DURATION = 2
NEXT = S_PLAY_WALK

FRAME S_SMS_VERTICALRINGBURST
SPRITENAME = SPR_PLAY
SPRITESUBNUMBER = P
DURATION = 4
NEXT = S_PLAY_ROLL

FRAME S_SMS_HORIZONTALRINGBURST
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = R
DURATION = 13
NEXT = S_PLAY_ROLL

#A spinning radial boost effect to signify
#that you've picked up some SERIOUS speed!

Thing MT_RADIALBOOST
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSSPINBOOST0
SPAWNHEALTH = 1000
REACTIONTIME = 8
SPEED = 0
RADIUS = 1
HEIGHT = 1
MASS = 100
DAMAGE = 0
FLAGS = MF_SCENERY|MF_NOGRAVITY|MF_NOBLOCKMAP

FRAME S_SMSSPINBOOST0
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSSPINBOOST1

FRAME S_SMSSPINBOOST1
SPRITENAME = SPR_SPBS
SPRITEFRAME = A|TR_TRANS40
DURATION = 1
NEXT = S_SMSSPINBOOST2
ACTION A_SetScale
Var1 = 5*FRACUNIT
Var2 = 1

FRAME S_SMSSPINBOOST2
SPRITENAME = SPR_SPBS
SPRITEFRAME = B|TR_TRANS50
DURATION = 2
NEXT = S_SMSSPINBOOST3

FRAME S_SMSSPINBOOST3
SPRITENAME = SPR_SPBS
SPRITEFRAME = C|TR_TRANS60
DURATION = 3
NEXT = S_SMSSPINBOOST4

FRAME S_SMSSPINBOOST4
SPRITENAME = SPR_SPBS
SPRITEFRAME = D|TR_TRANS70
DURATION = 4
NEXT = S_NULL

#SMS briefly enters a walljump frame before spinning again.

FRAME S_SMS_WALLJUMP
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = L
DURATION = 7
NEXT = S_PLAY_ROLL

#Falling off something? Go into this state!

FRAME S_SMS_ADVFALL1
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = P
DURATION = 3
NEXT = S_SMS_ADVFALL2

FRAME S_SMS_ADVFALL2
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = O
DURATION = 3
NEXT = S_SMS_ADVFALL1

#SMS goes into fancy handstand movements when dodging
#Yep...he's definitly still Sonic in the end.

FRAME S_SMS_SIDEDODGE1
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = N
DURATION = 10
NEXT = S_PLAY_ROLL

FRAME S_SMS_SIDEDODGE2
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = N
DURATION = 3
NEXT = S_PLAY_ROLL

#Got the lightdash shoes? 
#Wow, you're way in style!

FRAME S_SMS_LIGHTDASH
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = R
DURATION = 1
NEXT = S_SMS_LIGHTDASH
ACTION A_HomingChase
Var1 = 60*FRACUNIT
Var2 = 0

#Currently dashing over the water at certain speeds? Here we go!

FRAME S_SMSWATERGRIND1
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = L
DURATION = 1
NEXT = S_SMSWATERGRIND2

FRAME S_SMSWATERGRIND2
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = M
DURATION = 1
NEXT = S_SMSWATERGRIND1

#Duplicate Grind pose!

FRAME S_SMSGRINDPOSE1
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = L
DURATION = 2
NEXT = S_SMSGRINDPOSE2

FRAME S_SMSGRINDPOSE2
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = M
DURATION = 2
NEXT = S_SMSGRINDPOSE1

#This is SMS' Blinddash smoke.

Thing MT_SMSBLINDDASH
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSBDASH
SPAWNHEALTH = 1000
SEESTATE = S_SMSBDASH
REACTIONTIME = 8
SPEED = 0
RADIUS = 1
HEIGHT = 1
MASS = 100
DAMAGE = 0
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP

Thing MT_SMSBLINDDASHCHARGE
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSBDASH
SPAWNHEALTH = 1000
SEESTATE = S_SMSBDASH
REACTIONTIME = 8
SPEED = 0
RADIUS = 1
HEIGHT = 1
DAMAGE = 0
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP

FRAME S_SMSBDASH
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS30
DURATION = 4
NEXT = S_SMSBDASH2

FRAME S_SMSBDASH2
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS50
DURATION = 4
NEXT = S_SMSBDASH3

FRAME S_SMSBDASH3
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS70
DURATION = 4
NEXT = S_SMSBDASH4

FRAME S_SMSBDASH4
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS90
DURATION = 4
NEXT = S_NULL

#SMS' Power Aura, shows up for powershare!

Thing MT_SMSPOWERAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSPOWA0
SPAWNHEALTH = 1000
SEESTATE = S_SMSPOWA1
SEESOUND = 0
REACTIONTIME = 8
RADIUS = 64*FRACUNIT
HEIGHT = 64*FRACUNIT
MASS = 100
DAMAGE = 0
DispOffset = 1
FLAGS = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_RUNSPAWNFUNC

FRAME S_SMSPOWA0
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSPOWA1
ACTION A_FINDTARGET
VAR1 = MT_PLAYER
VAR2 = 0

FRAME S_SMSPOWA1
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSPOWA2
ACTION A_CHANGECOLORABSOLUTE
VAR1 = 13
VAR2 = 0

FRAME S_SMSPOWA2
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_SMSPOWA3
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA3
SPRITENAME = SPR_POWA
SPRITEFRAME = B|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_SMSPOWA4
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA4
SPRITENAME = SPR_POWA
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_SMSPOWA5
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA5
SPRITENAME = SPR_POWA
SPRITEFRAME = D|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_SMSPOWA6
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA6
SPRITENAME = SPR_POWA
SPRITEFRAME = E|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_SMSPOWA7
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA7
SPRITENAME = SPR_POWA
SPRITEFRAME = F|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_SMSPOWA8
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA8
SPRITENAME = SPR_POWA
SPRITEFRAME = G|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_NULL
NEXT = S_SMSPOWA9
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA9
SPRITENAME = SPR_POWA
SPRITEFRAME = H|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_SMSPOWA10
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

FRAME S_SMSPOWA10
SPRITENAME = SPR_POWA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS60
DURATION = 2
NEXT = S_NULL
ACTION A_CAPECHASE
VAR1 = 0
VAR2 = 0

#When homing onto enemies, use a scenery item.

Thing MT_SMSHOMING
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSHOMING
SPAWNHEALTH = 1000
SEESTATE = S_SMSHOMING
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY

FRAME S_SMSHOMING
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS70
DURATION = 8
NEXT = S_NULL

#This spawns during SMS' airboost! A Sonic Boom shockwave!
#After it explodes, let's give it a neat fading effect.

Thing MT_SMSAIRBOOST
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSAIRBOOST1
SPAWNHEALTH = 1000
SEESTATE = S_SMSAIRBOOST2
RADIUS = 1
HEIGHT = 1
MASS = 100
FLAGS = MF_NOGRAVITY|MF_SCENERY

FRAME S_SMSAIRBOOST1
SPRITENAME = SPR_ARBO
SPRITEFRAME = A|TR_TRANS50
DURATION = 2
NEXT = S_SMSAIRBOOST2

FRAME S_SMSAIRBOOST2
SPRITENAME = SPR_ARBO
SPRITEFRAME = B|TR_TRANS60
DURATION = 3
NEXT = S_SMSAIRBOOST3

FRAME S_SMSAIRBOOST3
SPRITENAME = SPR_ARBO
SPRITEFRAME = C|TR_TRANS70
DURATION = 9
NEXT = S_SMSAIRBOOST4
ACTION A_Setscale
VAR1 = 2*FRACUNIT
VAR2 = MT_SMSAIRBOOST

FRAME S_SMSAIRBOOST4
SPRITENAME = SPR_ARBO
SPRITEFRAME = C|TR_TRANS80
DURATION = 9
NEXT = S_SMSAIRBOOST5
ACTION A_Setscale
VAR1 = 3*FRACUNIT
VAR2 = MT_SMSAIRBOOST

FRAME S_SMSAIRBOOST5
SPRITENAME = SPR_ARBO
SPRITEFRAME = C|TR_TRANS90
DURATION = 7
NEXT = S_NULL
ACTION A_Setscale
VAR1 = 4*FRACUNIT
VAR2 = MT_SMSAIRBOOST

Thing MT_SMSSTOMPLINE
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSLINE0
SPAWNHEALTH = 1000
SPEED = 8
RADIUS = 524288
HEIGHT = 524288
MASS = 100
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY|MF_FIRE

FRAME S_SMSLINE0
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSLINE1

FRAME S_SMSLINE1
SPRITENAME = SPR_SMST
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SMSLINE2

FRAME S_SMSLINE2
SPRITENAME = SPR_SMST
SPRITEFRAME = B|TR_TRANS50|FF_FULLBRIGHT
DURATION = 1
NEXT = S_SMSLINE3

FRAME S_SMSLINE3
SPRITENAME = SPR_SMST
SPRITEFRAME = C|TR_TRANS60|FF_FULLBRIGHT
DURATION = 2
NEXT = S_SMSLINE4

FRAME S_SMSLINE4
SPRITENAME = SPR_SMST
SPRITEFRAME = B|TR_TRANS70|FF_FULLBRIGHT
DURATION = 1
NEXT = S_SMSLINE5

FRAME S_SMSLINE5
SPRITENAME = SPR_SMST
SPRITEFRAME = A|TR_TRANS80|FF_FULLBRIGHT
DURATION = 2
NEXT = S_NULL

#Things need to blow up faster on the ground,
#So hence a "groundboost" variation.

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

FRAME S_SMSGROUNDBOOST
SPRITENAME = SPR_ARBO
SPRITEFRAME = A|TR_TRANS70
DURATION = 1
NEXT = S_SMSAIRBOOST3


#If you use the homing thok, this will be our thokitem.
#It spawns an invisible kamikaze missile that will check if we can walljump.

Thing MT_SMSWALLJUMP
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSWALLJUMP1
SPAWNHEALTH = 1000
REACTIONTIME = 8
PAINCHANCE = 1
DEATHSTATE = S_SMSWALLJUMP5
DEATHSOUND = 0
XDEATHSTATE = S_SMSWALLJUMP5
SPEED = 7*FRACUNIT
RADIUS = 10*FRACUNIT
HEIGHT = 9*FRACUNIT
MASS = 100
DAMAGE = 0
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_RUNSPAWNFUNC

#This is the spawn frame. Let's target SMS.

FRAME S_SMSWALLJUMP1
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 1
NEXT = S_SMSWALLJUMP3
ACTION None
VAR1 = 0
VAR2 = 0

#Boost our hero and savior forwards...

FRAME S_SMSWALLJUMP3
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 1
NEXT = S_SMSWALLJUMP4
ACTION A_Thrust
VAR1 = 7
VAR2 = 0

#And become a kamikaze missile for the greater good! If it doesn't hit anything, it'll go just home and dissappear.

FRAME S_SMSWALLJUMP4
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 1
NEXT = S_NULL
ACTION A_SetObjectFlags
VAR1 = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE
VAR2 = 0

#Our heroic missile committed suicide! God rest his soul.
#Let's use a custom Lua'd action too!

FRAME S_SMSWALLJUMP5
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 1
NEXT = S_SMSWALLJUMP6
ACTION A_MATCHORNOTSPAWN
VAR1 = 45*FRACUNIT
VAR2 = 26*FRACUNIT

#Now we play a sound that can be heard even after the actual object is gone, hence remoteaction.
#A_RemoteAction
#VAR1 = -1
#VAR2 = S_SMSWALLJUMPS

FRAME S_SMSWALLJUMP6
SPRITENAME = SPR_AURA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 3
NEXT = S_SMSWALLJUMPF

#This is the final state, taking away player control for a bit.
#This prevents walljump-strafing on the same wall, and an LUA script
#will use pw_tailsfly as reference to take away multithok for a while.

FRAME S_SMSWALLJUMPF
SPRITENAME = SPR_AURA
SPRITEFRAME = A
DURATION = 1
NEXT = S_NULL
ACTION A_CUSTOMPOWER
VAR1 = pw_tailsfly
VAR2 = 1

#SMS gets sprint lines when going incredibly fast!
#Think of Sonic Adventure 2's running effect.

Thing MT_SMSSPRINTLINE
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSSPRINTLINE1
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP

FRAME S_SMSSPRINTLINE1
SPRITENAME = SPR_SFIR
SPRITEFRAME = D|FF_PAPERSPRITE|TR_TRANS20
DURATION = 1
NEXT = S_SMSSPRINTLINE2

FRAME S_SMSSPRINTLINE2
SPRITENAME = SPR_SFIR
SPRITEFRAME = E|FF_PAPERSPRITE|TR_TRANS20
DURATION = 1
NEXT = S_SMSSPRINTLINE3

FRAME S_SMSSPRINTLINE3
SPRITENAME = SPR_SFIR
SPRITEFRAME = F|FF_PAPERSPRITE|TR_TRANS30
DURATION = 2
NEXT = S_SMSSPRINTLINE4

FRAME S_SMSSPRINTLINE4
SPRITENAME = SPR_SFIR
SPRITEFRAME = G|FF_PAPERSPRITE|TR_TRANS40
DURATION = 2
NEXT = S_SMSSPRINTLINE5

FRAME S_SMSSPRINTLINE5
SPRITENAME = SPR_SFIR
SPRITEFRAME = H|FF_PAPERSPRITE|TR_TRANS60
DURATION = 1
NEXT = S_NULL

#This is what we get for not having a stupid flip function....

FRAME S_SMSSPRINTLINE1M
SPRITENAME = SPR_SFIR
SPRITEFRAME = I|FF_PAPERSPRITE|TR_TRANS20
DURATION = 1
NEXT = S_SMSSPRINTLINE2M

FRAME S_SMSSPRINTLINE2M
SPRITENAME = SPR_SFIR
SPRITEFRAME = J|FF_PAPERSPRITE|TR_TRANS20
DURATION = 1
NEXT = S_SMSSPRINTLINE3M

FRAME S_SMSSPRINTLINE3M
SPRITENAME = SPR_SFIR
SPRITEFRAME = K|FF_PAPERSPRITE|TR_TRANS30
DURATION = 2
NEXT = S_SMSSPRINTLINE4M

FRAME S_SMSSPRINTLINE4M
SPRITENAME = SPR_SFIR
SPRITEFRAME = L|FF_PAPERSPRITE|TR_TRANS40
DURATION = 2
NEXT = S_SMSSPRINTLINE5M

FRAME S_SMSSPRINTLINE5M
SPRITENAME = SPR_SFIR
SPRITEFRAME = M|FF_PAPERSPRITE|TR_TRANS60
DURATION = 1
NEXT = S_NULL

#A smaller version for the initial sprint

FRAME S_SMSSPRINTLINE1S
SPRITENAME = SPR_SFIR
SPRITEFRAME = N|FF_PAPERSPRITE|TR_TRANS30
DURATION = 1
NEXT = S_SMSSPRINTLINE2S

FRAME S_SMSSPRINTLINE2S
SPRITENAME = SPR_SFIR
SPRITEFRAME = O|FF_PAPERSPRITE|TR_TRANS40
DURATION = 2
NEXT = S_SMSSPRINTLINE3S

FRAME S_SMSSPRINTLINE3S
SPRITENAME = SPR_SFIR
SPRITEFRAME = P|FF_PAPERSPRITE|TR_TRANS50
DURATION = 3
NEXT = S_SMSSPRINTLINE4S

FRAME S_SMSSPRINTLINE4S
SPRITENAME = SPR_SFIR
SPRITEFRAME = Q|FF_PAPERSPRITE|TR_TRANS60
DURATION = 2
NEXT = S_NULL

#When you're manually transformed into SMS, you get these sparkles.
#Basic and easy little sparks, but they can add some visual flair.

Thing MT_SMSTSPARK
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSTSPARK1
SPAWNHEALTH = 1000
REACTIONTIME = 8
RADIUS = 1
HEIGHT = 1
MASS = 100
DAMAGE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY

FRAME S_SMSTSPARK1
SPRITENAME = SPR_NULL
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 1
NEXT = S_SMSTSPARK2

FRAME S_SMSTSPARK2
SPRITENAME = SPR_SMSP
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 3
NEXT = S_SMSTSPARK3

FRAME S_SMSTSPARK3
SPRITENAME = SPR_SMSP
SPRITEFRAME = B|FF_FULLBRIGHT|TR_TRANS40
DURATION = 4
NEXT = S_SMSTSPARK4

FRAME S_SMSTSPARK4
SPRITENAME = SPR_SMSP
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS40
DURATION = 5
NEXT = S_SMSTSPARK5

FRAME S_SMSTSPARK5
SPRITENAME = SPR_SMSP
SPRITEFRAME = D|FF_FULLBRIGHT|TR_TRANS40
DURATION = 4
NEXT = S_SMSTSPARK6

FRAME S_SMSTSPARK6
SPRITENAME = SPR_SMSP
SPRITEFRAME = D|FF_FULLBRIGHT|TR_TRANS60
DURATION = 4
NEXT = S_SMSTSPARK7

FRAME S_SMSTSPARK7
SPRITENAME = SPR_SMSP
SPRITEFRAME = D|FF_FULLBRIGHT|TR_TRANS80
DURATION = 4
NEXT = S_NULL

#Good old powershare. It works almost the same as it
#did in SMSunleashed20, but it's easier to use this time.
#Lua will do most of the work for us.

Thing MT_POWERSHARE
MAPTHINGNUM = -1
SPAWNSTATE = S_POWERSHARE
SPAWNHEALTH = 1000
SEESTATE = S_POWERSHARE
SPEED = 0
RADIUS = 250*FRACUNIT
HEIGHT = 200*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_SPECIAL

FRAME S_POWERSHARE
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 2
NEXT = S_NULL

#Silver rings in my classic Sonic?

Thing MT_SMSSILVERRING
MAPTHINGNUM = 937
SPAWNSTATE = S_RRNG1
SPAWNHEALTH = 1
REACTIONTIME = 5
PAINCHANCE = 8
DEATHSTATE = S_SPRK1
DEATHSOUND = sfx_s3kb0
SPEED = 60*FRACUNIT
MASS = 1
RADIUS = 24*FRACUNIT
HEIGHT = 24*FRACUNIT
DAMAGE = 2*TICRATE
FLAGS = MF_SLIDEME|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT

#So, you got speedshoes? 
#...welp. Here we go then. This is SMS' sparkle aura!

Thing MT_SMSSPARKLESPAWN
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSSPARKLESPAWN
SPAWNHEALTH = 1000
PAINCHANCE = 1
REACTIONTIME = 8
DEATHSOUND = SFX_NONE
MASS = 16
RADIUS = 30*FRACUNIT
HEIGHT = 46*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

FRAME S_SMSSPARKLESPAWN
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSSPARKLESPAWN2
ACTION A_BossScream
Var1 = 1
Var2 = MT_SMSSPEEDSPARKLE
				
#Constant loop. The Lua kills it when it needs to stop.

FRAME S_SMSSPARKLESPAWN2
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSSPARKLESPAWN
ACTION A_BossScream
Var1 = 1
Var2 = MT_SMSSPEEDSPARKLE

Thing MT_SMSSPEEDSPARKLE
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSSSS1
SPAWNHEALTH = 1000
SPEED = 10*FRACUNIT
RADIUS = 1*FRACUNIT
HEIGHT = 1*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_RUNSPAWNFUNC

FRAME S_SMSSSSA
ACTION A_SetFuse
VAR1 = 8
VAR2 = 0

FRAME S_SMSSSSB
ACTION A_FindTarget
VAR1 = MT_PLAYER
VAR2 = 0

FRAME S_SMSSSS1
SPRITENAME = SPR_SSPK
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 1
NEXT = S_SMSSSS2
ACTION A_DualAction
VAR1 = S_SMSSSSA
VAR2 = S_SMSSSSB


#ACTION A_DualAction
#VAR1 = S_SMSSSSA
#VAR2 = S_SMSSSSB

FRAME S_SMSSSS2
SPRITENAME = SPR_SSPK
SPRITEFRAME = B|FF_FULLBRIGHT|TR_TRANS60
DURATION = 1
NEXT = S_SMSSSS3

FRAME S_SMSSSS3
SPRITENAME = SPR_SSPK
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS80
DURATION = 1
NEXT = S_SMSSSS4

FRAME S_SMSSSS4
SPRITENAME = SPR_SSPK
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS60
DURATION = 1
NEXT = S_SMSSSS2

#Just some steam coming off SMS when he gets out of water. Nothing special.

Thing MT_SMSSTEAM
MAPTHINGNUM = -1
SPAWNSTATE = S_PARTICLESMS
SPEED = 4*FRACUNIT
RADIUS = 4*FRACUNIT
HEIGHT = 4*FRACUNIT
MASS = 4
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP

FRAME S_PARTICLESMS
SPRITENAME = SPR_PRTL
SPRITEFRAME = A|TR_TRANS70
DURATION = 70
NEXT = S_NULL

#This one is SMS' fire blast, replacing his red ring manuevre.
#It's slightly different from HMS'.

Thing MT_SMSFIREBLAST
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSFIRE1
SPAWNHEALTH = 1000
SEESTATE = S_SMSFIRE1
MELEESTATE = S_SMSFIRE1
MISSILESTATE = S_SMSFIRE1
DEATHSTATE = S_SMSFIRE3
DEATHSOUND = SFX_SMEX
XDEATHSTATE = S_SMSFIRE3
SPEED = 70*FRACUNIT
RADIUS = 22*FRACUNIT
HEIGHT = 20*FRACUNIT
MASS = 100
PAINCHANCE = 101*FRACUNIT
DAMAGE = 101*FRACUNIT
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOGRAVITY|MF_MISSILE

FRAME S_SMSFIRE1
SPRITENAME = SPR_SFIRE
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS20
DURATION = 2
NEXT = S_SMSFIRE2
ACTION A_THROWNRING

FRAME S_SMSFIRE2
SPRITENAME = SPR_SFIR
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 5
NEXT = S_SMSFIRE1
ACTION A_THROWNRING

FRAME S_SMSFIRE3
SPRITENAME = SPR_SFIR
SPRITEFRAME = B|FF_FULLBRIGHT
DURATION = 6
NEXT = S_SMSFIRE4
ACTION A_PLAYSOUND
VAR1 = sfx_smex
VAR2 = 1

FRAME S_SMSFIRE4
SPRITENAME = SPR_SFIR
SPRITEFRAME = C|FF_FULLBRIGHT
DURATION = 4
NEXT = S_NULL

#SMS can now taunt! Best feature ever!!

FRAME S_SMSTAUNT1
SPRITENAME = SPR_PLAY
SPRITEFRAME = A
DURATION = 61
NEXT = S_SMSTAUNT1

#When SMS touches a sign while yellow, we'll need a new sign.

FRAME S_SMSYELLOWSIGN
SPRITENAME = SPR_AURA
SPRITEFRAME = I
DURATION = -1
NEXT = S_NULL

#When in toss position, go into these frames respectively.

FRAME S_SMSTOSSREADY
SPRITENAME = SPR_SMSO
SPRITEFRAME = Q
DURATION = 2
NEXT = S_PLAY_STND

FRAME S_SMSTOSSING
SPRITENAME = SPR_PLAY
SPRITEFRAME = 16
DURATION = 6
NEXT = S_PLAY_WALK

#SMS' Atom Dive float sprite.

FRAME S_SMS_ATOMDIVE
SPRITENAME = SPR_PLAY
SPRITEFRAME = 13
DURATION = 140
NEXT = S_PLAY_FALL

#This is an invisible missile that turns into a reticule.

Thing MT_ATOMDIVETARGET
MAPTHINGNUM = -1
SPAWNSTATE = S_SMS_ATOMTARGETDED
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = FRACUNIT
MASS = 100
DAMAGE = 1
FLAGS = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY


FRAME S_SMS_ATOMTARGETDED
SPRITENAME = SPR_TARG
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS30
DURATION = 1
NEXT = S_NULL

#SMS takes a second to recover from the landing.
#Even HMS will take this pause.

FRAME S_SMS_ATOMLAND1
SPRITENAME = SPR_SMSO
SPRITEFRAME = Q
DURATION = 26
NEXT = S_SMS_ATOMLAND2
ACTION A_CUSTOMPOWER
VAR1 = pw_nocontrol
VAR2 = 32

FRAME S_SMS_ATOMLAND2
SPRITENAME = SPR_SMSO
SPRITEFRAME = Q
DURATION = 5
NEXT = S_PLAY_STND

FRAME S_HMS_ATOMLAND
SPRITENAME = SPR_HMSO
SPRITEFRAME = F
DURATION = 26
NEXT = S_PLAY_STND

FRAME S_SMS_DODGELAND
SPRITENAME = SPR_SMSO
SPRITEFRAME = Q
DURATION = 2
NEXT = S_PLAY_RUN

#The highest level of the Atomic Dive crashes!
#The Power Bomb! ...huh, sounds familiar.

Thing MT_SMSDIVEBOMB
MAPTHINGNUM = -1
SPAWNSTATE = S_CYBRAKDEMONVILEEXPLOSION1
SPEED = 1*FRACUNIT
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY

Thing MT_SMSPOWERBOMB
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSPOWERBOMB1
DEATHSTATE = S_SMSPOWERBOMB2
SPEED = 0
RADIUS = 1
HEIGHT = 1
MASS = 100
DAMAGE = 1
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT

FRAME S_SMSPOWERBOMB1
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS10
DURATION = 2
NEXT = S_SMSPOWERBOMB1A


FRAME S_SMSPOWERBOMB1A
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 4
NEXT = S_SMSPOWERBOMB2


FRAME S_SMSPOWERBOMB2
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS60
DURATION = 10
NEXT = S_SMSPOWERBOMB3

#ACTION A_Setscale
#VAR1 = 30*FRACUNIT
#VAR2 = MT_SMSPOWERBOMB

FRAME S_SMSPOWERBOMB3
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 20
NEXT = S_SMSPOWERBOMB4


FRAME S_SMSPOWERBOMB4
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS10
DURATION = 10
NEXT = S_SMSPOWERBOMB5


FRAME S_SMSPOWERBOMB5
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS50
DURATION = 10
NEXT = S_SMSPOWERBOMB6


FRAME S_SMSPOWERBOMB6
SPRITENAME = SPR_PWBM
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 10
NEXT = S_NULL


#A light that bursts into dozens of little particles.
#Used for walljumping and some attacks.

Thing MT_BURSTLIGHT
MAPTHINGNUM = -1
SPAWNSTATE = S_BURSTLIGHT1
SPAWNHEALTH = 1000
SPEED = 0
RADIUS = 24*FRACUNIT
HEIGHT = 24*FRACUNIT
DEATHSTATE = S_NULL
MASS = 100
DAMAGE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY

FRAME S_BURSTLIGHT1
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_BURSTLIGHT2


FRAME S_BURSTLIGHT2
SPRITENAME = SPR_SBRT
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 2
NEXT = S_BURSTLIGHT3


FRAME S_BURSTLIGHT3
SPRITENAME = SPR_SBRT
SPRITEFRAME = B|FF_FULLBRIGHT
DURATION = 3
NEXT = S_BURSTLIGHT4


FRAME S_BURSTLIGHT4
SPRITENAME = SPR_SBRT
SPRITEFRAME = C|FF_FULLBRIGHT
DURATION = 3
NEXT = S_BURSTLIGHT5


FRAME S_BURSTLIGHT5
SPRITENAME = SPR_SBRT
SPRITEFRAME = D|FF_FULLBRIGHT|TR_TRANS10
DURATION = 4
NEXT = S_BURSTLIGHT6


FRAME S_BURSTLIGHT6
SPRITENAME = SPR_SBRT
SPRITEFRAME = E|FF_FULLBRIGHT|TR_TRANS20
DURATION = 5
NEXT = S_BURSTLIGHT7


FRAME S_BURSTLIGHT7
SPRITENAME = SPR_SBRT
SPRITEFRAME = E|FF_FULLBRIGHT|TR_TRANS40
DURATION = 8
NEXT = S_NULL


#A force wave that bursts open and expands!

Thing MT_BURSTWAVE
MAPTHINGNUM = -1
SPAWNSTATE = S_BURSTWAVE1
SPEED = 0
RADIUS = 24*FRACUNIT
HEIGHT = 24*FRACUNIT
DEATHSTATE = S_NULL
DAMAGE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY

FRAME S_BURSTWAVE1
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_BURSTWAVE2

FRAME S_BURSTWAVE2
SPRITENAME = SPR_SBST
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 2
NEXT = S_BURSTWAVE3


FRAME S_BURSTWAVE3
SPRITENAME = SPR_SBST
SPRITEFRAME = B|FF_FULLBRIGHT|TR_TRANS10
DURATION = 3
NEXT = S_BURSTWAVE4


FRAME S_BURSTWAVE4
SPRITENAME = SPR_SBST
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS30
DURATION = 4
NEXT = S_BURSTWAVE5


FRAME S_BURSTWAVE5
SPRITENAME = SPR_SBST
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS50
DURATION = 4
NEXT = S_BURSTWAVE6

FRAME S_BURSTWAVE6
SPRITENAME = SPR_SBST
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS70
DURATION = 5
NEXT = S_NULL

#The to-go-to-sprite for tornadoes and other neat effects.
#The good ol' classic smoke and dust clouds!

Thing MT_SMMK
SPAWNHEALTH = 1
SPAWNSTATE = S_SMMK0
SPEED = 0
RADIUS = 32*FRACUNIT
HEIGHT = 32*FRACUNIT
MASS = 100
DAMAGE = 1
FLAGS = MF_SCENERY|MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT

FRAME S_SMMK0
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMMK1

FRAME S_SMMK1
SPRITENAME = SPR_SMMK
SPRITEFRAME = A|TR_TRANS40
DURATION = 2
NEXT = S_SMMK2

FRAME S_SMMK2
SPRITENAME = SPR_SMMK
SPRITEFRAME = B|TR_TRANS50
DURATION = 2
NEXT = S_SMMK3

FRAME S_SMMK3
SPRITENAME = SPR_SMMK
SPRITEFRAME = B|TR_TRANS60
DURATION = 1
NEXT = S_SMMK4

FRAME S_SMMK4
SPRITENAME = SPR_SMMK
SPRITEFRAME = C|TR_TRANS70
DURATION = 2
NEXT = S_SMMK5

FRAME S_SMMK5
SPRITENAME = SPR_SMMK
SPRITEFRAME = C|TR_TRANS80
DURATION = 3
NEXT = S_NULL

#SMS' ultimate move, the Comet Haymaker!
#This is merely the animation.

FRAME S_SMSCOMETHAYMAKER1
SPRITENAME = SPR_SMSO
SPRITEFRAME = R|FF_FULLBRIGHT
DURATION = 25
NEXT = S_SMSCOMETHAYMAKER2

FRAME S_SMSCOMETHAYMAKER2
SPRITENAME = SPR_SMSO
SPRITEFRAME = S|FF_FULLBRIGHT
DURATION = 14
NEXT = S_SMS_ADVFALL1
ACTION A_Thrust
VAR1 = 3*FRACUNIT
VAR2 = 1

FRAME S_SMSHUGEFLAMETOSS
SPRITENAME = SPR_SMSO
SPRITEFRAME = S|FF_FULLBRIGHT
DURATION = 10
NEXT = S_SMS_ADVFALL1

#This is the radius of SMS' CoMet PuncH. If an enemy gets hit,
#They'll be send flying like fireworks.
#Even though it's marked "solid", Lua negates all collissions.

Thing MT_CMPHRADIUS
MAPTHINGNUM = -1
SPAWNSTATE = S_CMPHRADIUS
SEESTATE = S_CMPHRADIUS
SPAWNHEALTH = 1000
REACTIONTIME = 8
SPEED = 3*FRACUNIT
RADIUS = 650*FRACUNIT
HEIGHT = 650*FRACUNIT
DEATHSTATE = S_CMPHRADIUS
XDEATHSTATE = S_CMPHRADIUS
MASS = 100
DAMAGE = 0
FLAGS = MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_GRENADEBOUNCE

FRAME S_CMPHRADIUS
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 3
NEXT = S_CMPHRADIUS2

FRAME S_CMPHRADIUS2
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_NULL

#When an enemy gets hit, we use this item to keep track of them.
#This is usefull for giving the punch an area effect without lag.
#With Lua, this tracker will decide our victim's fate.

Thing MT_CMPHTRACKER
SPAWNHEALTH = 1000
SPAWNSTATE = S_CMPHTRACKER
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
FLAGS = MF_NOGRAVITY|MF_NOSECTOR|MF_NOCLIP

Thing MT_SMSTHROWTRACKER
SPAWNHEALTH = 1000
SPAWNSTATE = S_CMPHTRACKER
SPEED = 0
RADIUS = 0
HEIGHT = 0
MASS = 100
FLAGS = MF_NOGRAVITY|MF_NOSECTOR|MF_NOCLIP

Thing MT_SMSDUMMYTRACKER
SPAWNHEALTH = 1000
SPAWNSTATE = S_CMPHTRACKER
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
FLAGS = MF_NOGRAVITY|MF_NOSECTOR|MF_SOLID

FRAME S_CMPHTRACKER
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 350
NEXT = S_NULL

#The Revenge Missile tracker! 
#Turns reflected HMS missiles into homing death missiles. Ow!

Thing MT_RVGMISSILE
SPAWNHEALTH = 1000
SPAWNSTATE = S_RVGMISSILE
SPEED = 0
RADIUS = 0
HEIGHT = 0
MASS = 100
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR

FRAME S_RVGMISSILE
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 350
NEXT = S_NULL

#SMS has a slightly modified spinfire when dashing!
#It's accompanied by A_SMSSpinFire.

Thing MT_SMSSPINFIRE
SPAWNHEALTH = 1000
SPAWNSTATE = S_SPINFIRE1
RADIUS = 8*FRACUNIT
HEIGHT = 14*FRACUNIT
SPEED = 0
DEATHSTATE = S_NULL
MASS = 100
DAMAGE = 1
FLAGS = MF_SPECIAL|MF_RUNSPAWNFUNC


#HMS' Comet Haymaker! It's the same move,
#but with an even more explosive effect.

FRAME S_HMSCOMETHAYMAKER1
SPRITENAME = SPR_HMSO
SPRITEFRAME = E|FF_FULLBRIGHT
DURATION = 25
NEXT = S_HMSCOMETHAYMAKER2

FRAME S_HMSCOMETHAYMAKER2
SPRITENAME = SPR_HMSO
SPRITEFRAME = G|FF_FULLBRIGHT
DURATION = 11
NEXT = S_PLAY_RUN
ACTION A_Thrust
VAR1 = 3*FRACUNIT
VAR2 = 1

#This is the slightly more deadly HMS version of the fireblast.

Thing MT_HMSFIREBLAST
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSFIRE1
REACTIONTIME = 8
DEATHSTATE = S_HMSFIRE3
DEATHSOUND = SFX_SMEX
XDEATHSTATE = S_HMSFIRE3
SPEED = 80*FRACUNIT
RADIUS = 40*FRACUNIT
HEIGHT = 40*FRACUNIT
MASS = 100
DAMAGE = 9
FLAGS = MF_NOGRAVITY|MF_MISSILE

FRAME S_HMSFIRE1
SPRITENAME = SPR_SFIRE
SPRITEFRAME = A|TR_TRANS40|FF_FULLBRIGHT
DURATION = 2
NEXT = S_HMSFIRE2
ACTION NONE

FRAME S_HMSFIRE2
SPRITENAME = SPR_SFIR
SPRITEFRAME = A|TR_TRANS20|FF_FULLBRIGHT
DURATION = 5
NEXT = S_HMSFIRE1
ACTION NONE

FRAME S_HMSFIRE3
SPRITENAME = SPR_SFIR
SPRITEFRAME = B|FF_FULLBRIGHT
DURATION = 8
NEXT = S_HMSFIRE4


FRAME S_HMSFIRE4
SPRITENAME = SPR_SFIR
SPRITEFRAME = C|FF_FULLBRIGHT
DURATION = 6
NEXT = S_NULL

#These are HMS' flame pillars, left when flying fast over the ground

FRAME S_HMSFPILLAR1
SPRITENAME = SPR_SFIR
SPRITEFRAME = R|FF_FULLBRIGHT|TR_TRANS20
DURATION = 7
NEXT = S_HMSFPILLAR2

FRAME S_HMSFPILLAR2
SPRITENAME = SPR_SFIR
SPRITEFRAME = S|FF_FULLBRIGHT|TR_TRANS10
DURATION = 5
NEXT = S_HMSFPILLAR3

FRAME S_HMSFPILLAR3
SPRITENAME = SPR_SFIR
SPRITEFRAME = T|FF_FULLBRIGHT|TR_TRANS10
DURATION = 3
NEXT = S_HMSFPILLAR4

FRAME S_HMSFPILLAR4
SPRITENAME = SPR_SFIR
SPRITEFRAME = S|FF_FULLBRIGHT|TR_TRANS30
DURATION = 5
NEXT = S_HMSFPILLAR5

FRAME S_HMSFPILLAR5
SPRITENAME = SPR_SFIR
SPRITEFRAME = R|FF_FULLBRIGHT|TR_TRANS40
DURATION = 7
NEXT = S_NULL

#The almighty hypernova blast!  SFX_BRAKRX
#This is HMS' signature move! NovablastHB is the actual hitbox!

Thing MT_HMSNOVABLAST
MAPTHINGNUM = -1
SPAWNSTATE = S_NOVABLAST
PAINSOUND = sfx_bgxpld
DEATHSTATE = S_NOVAEXPLODE1
SPEED = 98*FRACUNIT
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 0
DAMAGE = 1201*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE

Thing MT_HMSNOVABLASTHB
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSWARPPOINT
MASS = 0
RADIUS = 340*FRACUNIT
HEIGHT = 340*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR

FRAME S_NOVABLAST
SPRITENAME = SPR_NOVA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS20
DURATION = -1
NEXT = S_NOVAEXPLODE1

#When it hits anything, there's a massive explosion. LUA should help!

FRAME S_NOVAEXPLODE1
SPRITENAME = SPR_NOVA
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 1
NEXT = S_NOVAEXPLODE2

FRAME S_NOVAEXPLODE2
SPRITENAME = SPR_NOVA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS20
DURATION = 15
NEXT = S_NOVAEXPLODE3
ACTION A_Setscale
VAR1 = 13*FRACUNIT
VAR2 = MT_HMSNOVABLAST

FRAME S_NOVAEXPLODE3
SPRITENAME = SPR_NOVA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 6
NEXT = S_NOVAEXPLODE4


FRAME S_NOVAEXPLODE4
SPRITENAME = SPR_NOVA
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS60
DURATION = 4
NEXT = S_NULL


#Finally, HMS' animation when he uses this move.

FRAME S_HMSNOVAFIRE1
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = A
DURATION = 20
NEXT = S_HMSNOVAFIRE2

FRAME S_HMSNOVAFIRE2
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = B
DURATION = 60
NEXT = S_PLAY_RUN

#Oh, and the shockwaves AFTER the Nova Blast!

Thing MT_HMSNOVAWAVE
MAPTHINGNUM = -1
SPAWNSTATE = S_NOVAWAVE1
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY

FRAME S_NOVAWAVE1
SPRITENAME = SPR_NOVA
SPRITEFRAME = B|FF_FULLBRIGHT|TR_TRANS40
DURATION = 14
NEXT = S_NOVAWAVE2

FRAME S_NOVAWAVE2
SPRITENAME = SPR_NOVA
SPRITEFRAME = C|FF_FULLBRIGHT|TR_TRANS70
DURATION = 6
NEXT = S_NULL


#HMS' devastating black hole attack!
#Lua will make this kill anything instantly.

Thing MT_HMSBLACKHOLE
MAPTHINGNUM = -1
SPAWNSTATE = S_BLACKHOLE0
SPAWNHEALTH = 1000
SEESTATE = S_BLACKHOLE1
RADIUS = 200*FRACUNIT
HEIGHT = 190*FRACUNIT
DEATHSTATE = S_BLACKHOLE1
DAMAGE = 10000
MASS = 100
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_PAIN|MF_NOCLIPHEIGHT

FRAME S_BLACKHOLE0
SPRITENAME = SPR_BKHL
SPRITEFRAME = D|FF_FULLBRIGHT
DURATION = 1
NEXT = S_BLACKHOLE2
ACTION A_FINDTARGET
VAR1 = MT_PLAYER
VAR2 = 0

FRAME S_BLACKHOLE1
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 5
NEXT = S_BLACKHOLE2
ACTION A_FINDTARGET
VAR1 = MT_PLAYER
VAR2 = 0

FRAME S_BLACKHOLE2
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 12
NEXT = S_BLACKHOLE3
ACTION A_Setscale
VAR1 = 30*FRACUNIT
VAR2 = MT_HMSBLACKHOLE

FRAME S_BLACKHOLE3
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 16
NEXT = S_BLACKHOLE4

FRAME S_BLACKHOLE4
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 16
NEXT = S_BLACKHOLE5

FRAME S_BLACKHOLE5
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS20
DURATION = 16
NEXT = S_BLACKHOLE6

FRAME S_BLACKHOLE6
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS20
DURATION = 16
NEXT = S_BLACKHOLE7

FRAME S_BLACKHOLE7
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS40
DURATION = 16
NEXT = S_BLACKHOLE8

FRAME S_BLACKHOLE8
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS60
DURATION = 16
NEXT = S_BLACKHOLE9

FRAME S_BLACKHOLE9
SPRITENAME = SPR_BKHL
SPRITEFRAME = A|FF_FULLBRIGHT|TR_TRANS80
DURATION = 16
NEXT = S_NULL
ACTION A_NapalmScatter
Var1 = MT_HMS_NAPALM_FLAMES
Var2 = 256

#This is the animation of HMS' black hole rush.

FRAME S_HMSBLACKHOLE
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = A
DURATION = 120
NEXT = S_PLAY_RUN
ACTION A_PlaySound
VAR1 = SFX_BKHL
VAR2 = 1

#This is THE atomic blast. Yes, that one. ..oh...my...god.
#Probably the biggest explosion SRB2 will ever see.
#Scratch that. Most games in general.

Thing MT_HMSPOWERBOMB
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSPOWERBOMB1
DEATHSTATE = S_HMSPOWERBOMB1A
SPEED = 0
RADIUS = 2000*FRACUNIT
HEIGHT = 2000*FRACUNIT
MASS = 100
DAMAGE = 4000*FRACUNIT
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT

FRAME S_HMSPOWERBOMB1
SPRITENAME = SPR_NUEX
SPRITEFRAME = A
DURATION = 1
NEXT = S_HMSPOWERBOMB1A


#These are purely to spawn things with in Lua!

FRAME S_HMSPOWERBOMB1A
SPRITENAME = SPR_NUEX
SPRITEFRAME = A
DURATION = 3
NEXT = S_HMSPOWERBOMB1B


FRAME S_HMSPOWERBOMB1B
SPRITENAME = SPR_NUEX
SPRITEFRAME = A
DURATION = 5
NEXT = S_HMSPOWERBOMB1C


FRAME S_HMSPOWERBOMB1C
SPRITENAME = SPR_NUEX
SPRITEFRAME = A
DURATION = 2
NEXT = S_HMSPOWERBOMB2


FRAME S_HMSPOWERBOMB2
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS20
DURATION = 85
NEXT = S_HMSPOWERBOMB3
ACTION A_Setscale
VAR1 = 40*FRACUNIT
VAR2 = MT_HMSPOWERBOMB

FRAME S_HMSPOWERBOMB3
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS40
DURATION = 70
NEXT = S_HMSPOWERBOMB4

FRAME S_HMSPOWERBOMB4
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS60
DURATION = 50
NEXT = S_HMSPOWERBOMB5

FRAME S_HMSPOWERBOMB5
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS80
DURATION = 5
NEXT = S_NULL

Thing MT_HMSLIPILLAR
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSLIPILLAR0
SPEED = 0
RADIUS = 35*FRACUNIT
HEIGHT = 50*FRACUNIT
MASS = 100
DAMAGE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIPHEIGHT

FRAME S_HMSLIPILLAR0
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_HMSLIPILLAR1

FRAME S_HMSLIPILLAR1
SPRITENAME = SPR_LIGB
SPRITEFRAME = A|TR_TRANS50|FF_FULLBRIGHT
DURATION = 1
NEXT = S_HMSLIPILLAR2

FRAME S_HMSLIPILLAR2
SPRITENAME = SPR_LIGB
SPRITEFRAME = B|TR_TRANS40|FF_FULLBRIGHT
DURATION = 1
NEXT = S_HMSLIPILLAR1

#This invisible object pops monitors.

Thing MT_ATOMDIVEPOP
MAPTHINGNUM = -1
SPAWNSTATE = S_ATOMDIVEPOP
RADIUS = 477*FRACUNIT
HEIGHT = 222*FRACUNIT
FLAGS = MF_NOGRAVITY

FRAME S_ATOMDIVEPOP
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 16
NEXT = S_NULL

Thing MT_HMSPBC
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSPBC0
SPEED = 18*FRACUNIT
RADIUS = 1
HEIGHT = 1
MASS = 100
DAMAGE = 0
FLAGS = MF_NOGRAVITY|MF_SCENERY|MF_NOCLIPHEIGHT|MF_NOCLIP

FRAME S_HMSPBC0
SPRITENAME = SPR_NUEX
SPRITEFRAME = A
DURATION = 1
NEXT = S_HMSPBC1

FRAME S_HMSPBC1
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS10
DURATION = 55
NEXT = S_HMSPBC2
ACTION A_Setscale
VAR1 = 12*FRACUNIT
VAR2 = MT_HMSPBC

FRAME S_HMSPBC2
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS30
DURATION = 45
NEXT = S_HMSPBC3
ACTION A_Setscale
VAR1 = 12*FRACUNIT
VAR2 = MT_HMSPBC

FRAME S_HMSPBC3
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS50
DURATION = 35
NEXT = S_HMSPBC4

FRAME S_HMSPBC4
SPRITENAME = SPR_NUEX
SPRITEFRAME = A|TR_TRANS80
DURATION = 65
NEXT = S_NULL

#HMS has a deadly combo only for bosses or players in match/CTF!

FRAME S_PLAY_HMSCOMBO1
SPRITENAME = SPR_NULL
SPRITESUBNUMBER = A
DURATION = 3
NEXT = S_PLAY_WALK

FRAME S_PLAY_HMSCOMBO2
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = A
DURATION = 3
NEXT = S_PLAY_RUN

FRAME S_PLAY_HMSCOMBO3
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = B
DURATION = 3
NEXT = S_PLAY_WALK

#It's not only HMS', but you'll see it with HMS the most.
#This is the electric aura. It's appearance is heavily randomized.

Thing MT_HMSWAVEAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSWAVEAURA1
SPAWNHEALTH = 1000
PAINCHANCE = 1
REACTIONTIME = 8
DEATHSOUND = SFX_NONE
RADIUS = 0
HEIGHT = 0
DispOffset = 1
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT

FRAME S_HMSWAVEAURA1
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_HMSWAVEAURA2

FRAME S_HMSWAVEAURA2
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSWAVEAURA3
VAR2 = S_HMSWAVEAURA4

FRAME S_HMSWAVEAURA3
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL

FRAME S_HMSWAVEAURA4
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSWAVEAURA3
VAR2 = S_HMSWAVEAURA5

FRAME S_HMSWAVEAURA5
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSWAVEAURA3
VAR2 = S_HMSWAVEAURA7

#Skip 6 for now.

FRAME S_HMSWAVEAURA6
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSWAVEAURA3
VAR2 = S_HMSELAURA5

#Congrats, you survived! Now what will you become?

FRAME S_HMSWAVEAURA7
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSWAVEAURA8
VAR2 = S_HMSWAVEAURA9

FRAME S_HMSWAVEAURA8
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSWAVEAURA9
VAR2 = S_HMSWAVEAURA10

FRAME S_HMSWAVEAURA9
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSELAURA1
VAR2 = S_HMSELAURA2

FRAME S_HMSWAVEAURA10
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSELAURA3
VAR2 = S_HMSWAVEAURA11

FRAME S_HMSWAVEAURA11
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 0
NEXT = S_NULL
ACTION A_RandomState
VAR1 = S_HMSELAURA4
VAR2 = S_HMSWAVEAURA12

FRAME S_HMSWAVEAURA12
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_HMSELAURA5
ACTION A_RandomState
VAR1 = S_HMSELAURA5
VAR2 = S_HMSELAURA6

FRAME S_HMSWAVEAURAG
SPRITENAME = SPR_AURA
SPRITEFRAME = I|FF_FULLBRIGHT|TR_TRANS40
DURATION = 8
NEXT = S_NULL

#Now for the actual sparks. Could this have been any more needlessly complicated?

FRAME S_HMSELAURA1
SPRITENAME = SPR_ELAU
SPRITEFRAME = A|TR_TRANS40
DURATION = 12
NEXT = S_HMSELAURA1A

FRAME S_HMSELAURA1A
SPRITENAME = SPR_ELAU
SPRITEFRAME = A|TR_TRANS70|FF_FULLBRIGHT
DURATION = 11
NEXT = S_NULL

FRAME S_HMSELAURA2
SPRITENAME = SPR_ELAU
SPRITEFRAME = B|TR_TRANS40|FF_FULLBRIGHT
DURATION = 10
NEXT = S_HMSELAURA2A

FRAME S_HMSELAURA2A
SPRITENAME = SPR_ELAU
SPRITEFRAME = A|TR_TRANS70|FF_FULLBRIGHT
DURATION = 8
NEXT = S_NULL

FRAME S_HMSELAURA3
SPRITENAME = SPR_ELAU
SPRITEFRAME = G|TR_TRANS40|FF_FULLBRIGHT
DURATION = 8
NEXT = S_HMSELAURA3A

FRAME S_HMSELAURA3A
SPRITENAME = SPR_ELAU
SPRITEFRAME = G|TR_TRANS70|FF_FULLBRIGHT
DURATION = 6
NEXT = S_NULL

FRAME S_HMSELAURA4
SPRITENAME = SPR_ELAU
SPRITEFRAME = F|TR_TRANS40|FF_FULLBRIGHT
DURATION = 11
NEXT = S_HMSELAURA4A

FRAME S_HMSELAURA4A
SPRITENAME = SPR_ELAU
SPRITEFRAME = F|TR_TRANS70|FF_FULLBRIGHT
DURATION = 9
NEXT = S_NULL

FRAME S_HMSELAURA5
SPRITENAME = SPR_ELAU
SPRITEFRAME = H|TR_TRANS40|FF_FULLBRIGHT
DURATION = 12
NEXT = S_HMSELAURA5A

FRAME S_HMSELAURA5A
SPRITENAME = SPR_ELAU
SPRITEFRAME = H|TR_TRANS20|FF_FULLBRIGHT
DURATION = 4
NEXT = S_HMSELAURA5B
ACTION A_PlaySound
Var1 = sfx_beelec
Var2 = 1

FRAME S_HMSELAURA5B
SPRITENAME = SPR_ELAU
SPRITEFRAME = H|TR_TRANS70|FF_FULLBRIGHT
DURATION = 17
NEXT = S_NULL

FRAME S_HMSELAURA6
SPRITENAME = SPR_ELAU
SPRITEFRAME = C|TR_TRANS30|FF_FULLBRIGHT
DURATION = 7
NEXT = S_HMSELAURA6A

FRAME S_HMSELAURA6A
SPRITENAME = SPR_ELAU
SPRITEFRAME = D|TR_TRANS50|FF_FULLBRIGHT
DURATION = 6
NEXT = S_HMSELAURA6B

FRAME S_HMSELAURA6B
SPRITENAME = SPR_ELAU
SPRITEFRAME = E|TR_TRANS70|FF_FULLBRIGHT
DURATION = 20
NEXT = S_NULL

#HMS stomps like a real ninja. Silent and unsuspected.

Thing MT_HMSSTOMPEXPLODE
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSSTOMPEXPLODE
SPEED = 0
RADIUS = 1
HEIGHT = 1
MASS = 100
DAMAGE = 1501*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_RUNSPAWNFUNC

FRAME S_HMSSTOMPEXPLODE
SPRITENAME = SPR_BOM1
SPRITESUBNUMBER = 0
DURATION = 2
NEXT = S_XPLD2


#Because the Eggbrak flames are not meant to be used in-game, we'll make close enough
#replicas that CAN be modified properly for in-game.

Thing MT_HMS_NAPALM_FLAMES
SPAWNHEALTH = 1000
SPAWNSTATE = S_CYBRAKDEMONNAPALMFLAME_FLY1
SPEED = 10*FRACUNIT
RADIUS = 24*FRACUNIT
HEIGHT = 24*FRACUNIT
DEATHSTATE = S_HMSNAPALMFLAME_DIE
DAMAGE = 1501*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_MISSILE

FRAME S_HMSNAPALMFLAME_DIE
SPRITENAME = SPR_SFLM
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 3
NEXT = S_NULL

#HMS' flames resting on the ground, given 8 seconds to burn up.

Thing MT_HMSFLAMEREST
SPAWNHEALTH = 1000
SPAWNSTATE = S_HMSFLAMEREST
SEESOUND = sfx_s3kc2s
RADIUS = 11*FRACUNIT
HEIGHT = 24*FRACUNIT
SPEED = 20*FRACUNIT
DEATHSTATE = S_NULL
MASS = 100
DAMAGE = 999
FLAGS = MF_SPECIAL|MF_RUNSPAWNFUNC|MF_SOLID

FRAME S_HMSFLAMEREST
SPRITENAME = SPR_SFIR
SPRITEFRAME = U|FF_FULLBRIGHT
DURATION = 1
NEXT = S_HMSFREST1
ACTION A_SetFuse
VAR1 = 260
VAR2 = 0

FRAME S_HMSFREST1
SPRITENAME = SPR_SFIR
SPRITEFRAME = U|FF_FULLBRIGHT|TR_TRANS10
DURATION = 2
NEXT = S_HMSFREST2

FRAME S_HMSFREST2
SPRITENAME = SPR_SFIR
SPRITEFRAME = V|FF_FULLBRIGHT|TR_TRANS20
DURATION = 2
NEXT = S_HMSFREST3

FRAME S_HMSFREST3
SPRITENAME = SPR_SFIR
SPRITEFRAME = W|FF_FULLBRIGHT|TR_TRANS30
DURATION = 2
NEXT = S_HMSFREST4

FRAME S_HMSFREST4
SPRITENAME = SPR_SFIR
SPRITEFRAME = X|FF_FULLBRIGHT|TR_TRANS20
DURATION = 2
NEXT = S_HMSFREST1


#These are HMS' instant movement sprites. The actions are called in LUA rather than the SOC here.

FRAME S_HMS_INSTANTMOVE1
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = A
DURATION = 4
NEXT = S_HMS_INSTANTMOVE2

FRAME S_HMS_INSTANTMOVE2
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = B
DURATION = 3
NEXT = S_PLAY_RUN

#HMS spawns an item to warp to!

Thing MT_HMSWARPPOINT
SPAWNSTATE = S_HMSWARPPOINT
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
SPEED = 140*FRACUNIT
DEATHSTATE = S_NULL
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING

FRAME S_HMSWARPPOINT
SPRITEFRAME = SPR_NULL
SPRITESUBNUMBER = A
DURATION = 5
NEXT = S_NULL

Thing MT_HMSWARPPOINTRETURN
SPAWNSTATE = S_HMSWARPPOINTRETURN
RADIUS = 1
HEIGHT = 0
SPEED = 0
DEATHSTATE = S_NULL
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_SCENERY

FRAME S_HMSWARPPOINTRETURN
SPRITEFRAME = SPR_NULL
SPRITESUBNUMBER = A
DURATION = 10
NEXT = S_NULL

#These are HMS' instant short-warp sprites!

FRAME S_HMS_INSTANTWARP1
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = I|FF_FULLBRIGHT
DURATION = 3
NEXT = S_HMS_INSTANTWARP2

FRAME S_HMS_INSTANTWARP2
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = J|FF_FULLBRIGHT|TR_TRANS40
DURATION = 2
NEXT = S_HMS_INSTANTWARP3

FRAME S_HMS_INSTANTWARP3
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = I|FF_FULLBRIGHT|TR_TRANS20
DURATION = 2
NEXT = S_PLAY_RUN

#The transformation frames into HMS!
#HMS doesn't use the SRB2's super system at all, so this needs to be custom.

FRAME S_HMSTRANSFORM1
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = T|FF_FULLBRIGHT
DURATION = 9
NEXT = S_HMSTRANSFORM2

FRAME S_HMSTRANSFORM2
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = U|FF_FULLBRIGHT
DURATION = 3
NEXT = S_HMSTRANSFORM3

FRAME S_HMSTRANSFORM3
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = V|FF_FULLBRIGHT
DURATION = 3
NEXT = S_HMSTRANSFORM4

FRAME S_HMSTRANSFORM4
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = W|FF_FULLBRIGHT
DURATION = 3
NEXT = S_HMSTRANSFORM5

FRAME S_HMSTRANSFORM5
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = X|FF_FULLBRIGHT
DURATION = 3
NEXT = S_HMSTRANSFORM6

FRAME S_HMSTRANSFORM6
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = Y|FF_FULLBRIGHT
DURATION = 4
NEXT = S_HMSTRANSFORM7

FRAME S_HMSTRANSFORM7
SPRITENAME = SPR_SMSO
SPRITESUBNUMBER = Z|FF_FULLBRIGHT
DURATION = 5
NEXT = S_HMSTRANSFORM8

FRAME S_HMSTRANSFORM8
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = A|FF_FULLBRIGHT
DURATION = 4
NEXT = S_HMSTRANSFORM9

FRAME S_HMSTRANSFORM9
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = B|FF_FULLBRIGHT
DURATION = 20
NEXT = S_PLAY_WALK

Thing MT_SMSBOOSTAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSBOOSTAURA1
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY

FRAME S_SMSBOOSTAURA1
SPRITENAME = SPR_SMBO
SPRITESUBNUMBER = A|FF_FULLBRIGHT
DURATION = 5
NEXT = S_NULL

Thing MT_SSXA
MAPTHINGNUM = -1
SPAWNSTATE = S_THOK
SPEED = 0
RADIUS = FRACUNIT
HEIGHT = FRACUNIT
DAMAGE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY

#Radius and height are set manually by Lua when doing colission check for rings/enemies.

Thing MT_SMSECHECK
SPAWNSTATE = S_SMSECHECK
SPEED = 0
RADIUS = FRACUNIT
HEIGHT = FRACUNIT
FLAGS = MF_NOCLIPHEIGHT|MF_NOGRAVITY

FRAME S_SMSECHECK
SPRITENAME = SPR_NULL
SPRITESUBNUMBER = A
DURATION = 2
NEXT = S_NULL

Thing MT_SMSSOUNDOBJ
SPAWNSTATE = S_SMSSOUNDOBJ
SPEED = 0
RADIUS = FRACUNIT
HEIGHT = FRACUNIT
FLAGS = MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_NOSECTOR|MF_NOBLOCKMAP

FRAME S_SMSSOUNDOBJ
SPRITENAME = SPR_NULL
SPRITESUBNUMBER = A
DURATION = -1
NEXT = S_NULL

Thing MT_HMSRISEAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSRISEAURA1
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 32*FRACUNIT
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

FRAME S_HMSRISEAURA1
SPRITENAME = SPR_AURA
SPRITESUBNUMBER = E|FF_FULLBRIGHT|TR_TRANS40
DURATION = 4
NEXT = S_HMSRISEAURA2

FRAME S_HMSRISEAURA2
SPRITENAME = SPR_AURA
SPRITESUBNUMBER = D|FF_FULLBRIGHT|TR_TRANS20
DURATION = 2
NEXT = S_HMSRISEAURA1

Thing MT_HMSSTOMPAURA
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSSTOMPAURA
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 24*FRACUNIT
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

FRAME S_HMSSTOMPAURA
SPRITENAME = SPR_AURA
SPRITESUBNUMBER = F|FF_FULLBRIGHT|TR_TRANS30
DURATION = 2
NEXT = S_NULL

Thing MT_HMSLIGHTNING1
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSLIGHTNING
SPEED = 10*FRACUNIT
RADIUS = 4*FRACUNIT
HEIGHT = 1
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT

Thing MT_HMSLIGHTNING2
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSLIGHTNING
SPEED = 0
RADIUS = 5*FRACUNIT
HEIGHT = 30*FRACUNIT
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_SOLID|MF_NOCLIPHEIGHT

FRAME S_HMSLIGHTNING
SPRITENAME = SPR_HMSL
SPRITESUBNUMBER = A|FF_FULLBRIGHT|TR_TRANS10
DURATION = 350
NEXT = S_NULL

Thing MT_SMSRGORESPAWN
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSLIGHTNING
DEATHSTATE = S_NULL
RADIUS = 5*FRACUNIT
HEIGHT = 5*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

Thing MT_SMSRGORE
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSLIGHTNING
DEATHSTATE = S_NULL
ACTIVESOUND = sfx_gentrg
RADIUS = 5*FRACUNIT
HEIGHT = 5*FRACUNIT
FLAGS = MF_SOLID|MF_BOUNCE|MF_GRENADEBOUNCE

Thing MT_SMSSWAVE
MAPTHINGNUM = -1
SPAWNSTATE = S_SMSSWAVE
DEATHSTATE = S_NULL
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP|MF_SCENERY

FRAME S_SMSSWAVE
SPRITENAME = SPR_AURA
SPRITESUBNUMBER = R|FF_PAPERSPRITE|TR_TRANS30
DURATION = 4
NEXT = S_SMSSWAVE2

FRAME S_SMSSWAVE2
SPRITENAME = SPR_AURA
SPRITESUBNUMBER = Q|FF_PAPERSPRITE|TR_TRANS40
DURATION = 90
NEXT = S_NULL

Thing MT_THEMYSTICEMERALD
MAPTHINGNUM = 829
SPAWNSTATE = S_SMSME1
DEATHSTATE = S_SPRK1
SPAWNHEALTH = 1
SPEED = 0
RADIUS = 30*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 0
DAMAGE = 0
ACTIVESOUND = 0
RAISESTATE = 0
FLAGS = MF_SOLID|MF_NOGRAVITY|MF_SLIDEME|MF_SPECIAL

FRAME S_SMSME1
SPRITENAME = SPR_SMME
SPRITEFRAME = A|FF_FULLBRIGHT
DURATION = 8
NEXT = S_SMSME2

FRAME S_SMSME2
SPRITENAME = SPR_SMME
SPRITEFRAME = B|FF_FULLBRIGHT
DURATION = 8
NEXT = S_SMSME1

#Subtle little animation shift when thokking

FRAME S_SMSTHOKANIM
SPRITENAME = SPR_SMSO
SPRITEFRAME = 26
DURATION = 3
NEXT = S_PLAY_ROLL

#HMS Galaxy Storm! 4 piece complicated new HMS attack for SMSreborn 1.1.
#Starting with the galaxy that spawns all the asteroids, planets, and hitboxes.

Thing MT_HMSGAX
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSGAX
PAINSOUND = sfx_bgxpld
SPEED = 98*FRACUNIT
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
FLAGS = MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY

FRAME S_HMSGAX
SPRITENAME = SPR_SGAX
SPRITEFRAME = A|TR_TRANS10|FF_FULLBRIGHT
DURATION = 190
NEXT = S_NULL

#Asteroids, stars and planets. Purely visual, but their hitbox size does count.

Thing MT_HMSGAXA
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSGAXA
MASS = 0
RADIUS = 5*FRACUNIT
HEIGHT = 5*FRACUNIT
FLAGS = MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY

FRAME S_HMSGAXA
SPRITENAME = SPR_SGAX
SPRITEFRAME = B|TR_TRANS10|FF_FULLBRIGHT
DURATION = 70
NEXT = S_NULL

#HMS' animation upon using Galaxy Storm, transitioning into a flipkick

FRAME S_HMSGAXANIM
SPRITENAME = SPR_HMSO
SPRITESUBNUMBER = B
DURATION = 16
NEXT = S_PLAY_ROLL

#Hitbox. Stays on the asteroids, collides and then passes it over HMSGAXT.

Thing MT_HMSGAXHB
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSWARPPOINT
MASS = 0
RADIUS = 50*FRACUNIT
HEIGHT = 50*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR|MF_BOUNCE

#Tracker. It's the object that does murder effects in Lua

Thing MT_HMSGAXT
MAPTHINGNUM = -1
SPAWNSTATE = S_HMSWARPPOINT
MASS = 0
RADIUS = 50*FRACUNIT
HEIGHT = 50*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR

#Extra visual effect for the RingBurst.

Thing MT_GOLDENSHINE
MAPTHINGNUM = -1
SPAWNSTATE = S_GOLDENSHINE
MASS = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY

FRAME S_GOLDENSHINE
SPRITENAME = SPR_AURA
SPRITESUBNUMBER = U
DURATION = 75
NEXT = S_NULL

#SMS' signature overglow.

Thing MT_SMSROVERGLOW
MAPTHINGNUM = -1
SPAWNSTATE = S_THOK
RADIUS = 32*FRACUNIT
HEIGHT = 16*FRACUNIT
DispOffset = -7
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_SCENERY