#==================================================================================
#Freeslots! Due to Lua usually taking priority, not EVERYTHING is freeslotted here, especially THING and SFX freeslots.

#Some minor performance boosts I've found, since I had to go to extreme lengths for SMSreborn v3.0 optimization.
#MF_NOGRAVITY: Object won't have to calculate gravity.
#MF_NOCLIPHEIGHT: Object won't have to calculate floor/ceiling collissions.
#MF_CLIPTHING: Only has to calculate wall collission.
#MF_NOCLIP: Won't have to calculate any collision.
#MF_NOSECTOR: Saves performance if object needs to be invisible all the time anyway.
#MF_NOBLOCKMAP: Only matters for BlockMapSearches, so this is always a performance saver unless you need to do that. 
#It is NOT an MF_NOCLIP clone, collissions can still happen, so stack it with MF_NOCLIP.
#
#Desperate risky performance boosts:
#MF_SCENERY: Saves performance if you mainly use Lua. It nullifies SOC actions, and checks like MF_FIRE and MF_MISSILE,
#and even crashes SRB2 under some conditions. Thoroughly test objects with it!
#		
#RADIUS = 0: Saves performance scaling objects. Crashes SRB2 if object moves into wall without MF_NOCLIP
#HEIGHT = 0: Saves performance scaling objects. Can crash without MF_NOCLIPHEIGHT, sometimes without MF_NOCLIP. Object will not detect FOFs!
#==================================================================================

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_STOMP1
S_SMS_STOMP2
S_SMS_ADVFALL1
S_SMS_ADVFALL2
S_SMS_AIRBOOST
S_SMS_RINGBURSTSLIDE
S_SMS_VERTICALRINGBURST
S_SMS_HORIZONTALRINGBURST
S_SMS_WALLJUMP
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_HMSCOMETHAYMAKER1
S_HMSCOMETHAYMAKER2
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_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_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_SMSAUTOFRAME
S_SMS_THOK
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_GPLZ
SPR_SMX1
SPR_SMX2
SPR_SMX3
SPR_SMX4
SPR_SMX5
SPR_SMME
SPR_SMSO
SPR_HMSO
SPR2_GRND

#For another mod.

Sprite2 SPR2_GRND
Default = SPR2_ROLL

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_SMSROVERGLOWRED
NAME = SMSROVERGLOWRED
RAMP = 38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38
INVCOLOR = SKINCOLOR_BLACK
INVSHADE = 12
CHATCOLOR = V_REDMAP
ACCESSIBLE = FALSE

#Start of the new 3.0 SMS skincolors

SKINCOLOR SKINCOLOR_ZENITH1
NAME = ZENITH1
RAMP = 0,0,0,1,1,1,128,128,120,120,120,120,121,121,121,121
INVCOLOR = SKINCOLOR_EMERALD
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZENITH2
NAME = ZENITH2
RAMP = 0,1,1,128,128,128,129,129,129,129,121,121,140,141,141,124
INVCOLOR = SKINCOLOR_EMERALD
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZENITH3
NAME = ZENITH3
RAMP = 0,1,128,128,128,129,129,129,130,130,121,121,140,141,124,125
INVCOLOR = SKINCOLOR_EMERALD
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZENITH4
NAME = ZENITH4
RAMP = 0,1,128,128,129,129,129,130,130,131,140,140,141,142,142,143
INVCOLOR = SKINCOLOR_EMERALD
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_ZENITH5
NAME = ZENITH5
RAMP = 0,1,128,128,129,129,130,130,131,132,141,141,142,142,137,138
INVCOLOR = SKINCOLOR_EMERALD
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MOONSLAMMER1
NAME = MOONSLAMMER1
RAMP = 31,30,254,254,253,169,158,158,157,156,155,155,154,153,153,151
INVCOLOR = SKINCOLOR_AZURE
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MOONSLAMMER2
NAME = MOONSLAMMER2
RAMP = 171,171,172,167,155,156,157,158,169,169,169,159,159,253,253,253
INVCOLOR = SKINCOLOR_AZURE
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MOONSLAMMER3
NAME = MOONSLAMMER3
RAMP = 146,148,149,151,154,168,169,169,169,169,253,254,254,254,30,31
INVCOLOR = SKINCOLOR_AZURE
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MOONSLAMMER4
NAME = MOONSLAMMER4
RAMP = 145,147,148,149,150,167,167,167,157,158,159,253,253,254,30,31
INVCOLOR = SKINCOLOR_AZURE
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_MOONSLAMMER5
NAME = MOONSLAMMER5
RAMP = 144,145,146,148,149,150,150,150,155,156,157,158,159,253,254,31
INVCOLOR = SKINCOLOR_AZURE
INVSHADE = 16
CHATCOLOR = V_AZUREMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_BREEZY1
NAME = BREEZY1
RAMP = 0,0,0,120,120,120,120,121,121,121,121,96,97,97,98
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 16
CHATCOLOR = V_GREENMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_BREEZY2
NAME = BREEZY2
RAMP = 0,0,128,120,120,121,121,96,97,98,99,99,100,101,101,102
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 16
CHATCOLOR = V_GREENMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_BREEZY3
NAME = BREEZY3
RAMP = 0,0,120,120,121,96,97,98,112,113,114,114,115,115,116,116
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 16
CHATCOLOR = V_GREENMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_BREEZY4
NAME = BREEZY4
RAMP = 0,0,88,89,96,98,99,113,114,114,115,115,116,117,117,118
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 16
CHATCOLOR = V_GREENMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_BREEZY5
NAME = BREEZY5
RAMP = 0,120,96,97,112,113,113,114,115,116,116,117,118,119,111,31
INVCOLOR = SKINCOLOR_PURPLE
INVSHADE = 16
CHATCOLOR = V_GREENMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SOLAR1
NAME = SOLAR1
RAMP = 0,0,0,0,0,0,200,32,34,35,33,201,200,211,214,39
INVCOLOR = SKINCOLOR_AQUA
INVSHADE = 16
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SOLAR2
NAME = SOLAR2
RAMP = 0,0,0,0,0,252,252,252,200,201,32,34,34,34,35,35
INVCOLOR = SKINCOLOR_AQUA
INVSHADE = 16
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SOLAR3
NAME = SOLAR3
RAMP = 0,0,0,252,252,252,200,209,210,32,33,34,36,37,39,40
INVCOLOR = SKINCOLOR_AQUA
INVSHADE = 16
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SOLAR4
NAME = SOLAR4
RAMP = 0,0,252,252,176,200,201,32,33,34,34,35,37,39,42,45
INVCOLOR = SKINCOLOR_AQUA
INVSHADE = 16
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_SOLAR5
NAME = SOLAR5
RAMP = 0,252,176,200,201,202,33,34,35,37,39,41,44,46,47,31
INVCOLOR = SKINCOLOR_AQUA
INVSHADE = 16
CHATCOLOR = V_REDMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_GALACTIC1
NAME = GALACTIC1
RAMP = 0,0,0,1,128,128,128,128,145,145,160,160,161,161,162,163
INVCOLOR = SKINCOLOR_TEAL
INVSHADE = 16
CHATCOLOR = V_MAGENTAMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_GALACTIC2
NAME = GALACTIC2
RAMP = 0,1,252,176,176,160,160,161,161,162,162,163,194,184,166,167
INVCOLOR = SKINCOLOR_TEAL
INVSHADE = 16
CHATCOLOR = V_MAGENTAMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_GALACTIC3
NAME = GALACTIC3
RAMP = 0,252,252,176,177,177,178,178,179,193,184,167,167,168,169,254
INVCOLOR = SKINCOLOR_TEAL
INVSHADE = 16
CHATCOLOR = V_MAGENTAMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_GALACTIC4
NAME = GALACTIC4
RAMP = 0,252,176,177,178,192,193,194,184,167,168,168,169,187,199,254
INVCOLOR = SKINCOLOR_TEAL
INVSHADE = 16
CHATCOLOR = V_MAGENTAMAP
ACCESSIBLE = TRUE

SKINCOLOR SKINCOLOR_GALACTIC5
NAME = GALACTIC5
RAMP = 0,3,7,193,194,185,167,168,168,168,169,187,199,29,30,31
INVCOLOR = SKINCOLOR_TEAL
INVSHADE = 16
CHATCOLOR = V_MAGENTAMAP
ACCESSIBLE = TRUE

#End of 3.0 SMS skincolors.

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_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_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_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

#Easy splat or underlay sprite.

Thing MT_SMSSPLAT
SPAWNSTATE = S_SMSAUTOFRAME
SPEED = 0
RADIUS = FRACUNIT
HEIGHT = FRACUNIT
DISPOFFSET = -1
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPTHING

#Easy frame advancer so I don't have to make new objects and states for every single basic effect.

Thing MT_SMSAUTOFRAME
SPAWNSTATE = S_SMSAUTOFRAME
SPEED = 0
RADIUS = 0
HEIGHT = 0
DISPOFFSET = 1
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

#Set a fuse to end it, otherwise it's basically permanent!

FRAME S_SMSAUTOFRAME
SPRITENAME = SPR_THOK
SPRITEFRAME = A
DURATION = 50000
NEXT = S_NULL

#Version of MT_THOK that doesn't use the same thinker.
Thing MT_SMS_THOK
SPAWNSTATE = S_SMS_THOK
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOSECTOR

#Copy of thok frame to avoid mods messing with our thok sprites.

FRAME S_SMS_THOK
SPRITENAME = SPR_SMX1
SPRITEFRAME = Z|FF_TRANS50
DURATION = 8
NEXT = S_NULL

#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
SPAWNSTATE = S_SMSAURATRAIL
SPEED = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT

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! This one's the roundhouse spin!

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?! This one rolls into a handstand!

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

#Now I have 4 lovely Homing Tricks. Count them! FOUR!! Muhahahaha

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

#SMS' stomping animation.

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

#Initial State SMS goes into during airboost

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
SPAWNSTATE = S_SMSSPINBOOST0
SPEED = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIP

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!
#Still using SPR_SMSO because SPR_PLAY has annoying hardcoded quirks I'd rather avoid.

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
SPAWNSTATE = S_SMSBDASH
SPEED = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

Thing MT_SMSBLINDDASHCHARGE
SPAWNSTATE = S_SMSBDASH
SPEED = 0
RADIUS = FRACUNIT
HEIGHT = FRACUNIT
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY

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
SPAWNSTATE = S_SMSPOWA0
SEESTATE = S_SMSPOWA1
RADIUS = 64*FRACUNIT
HEIGHT = 64*FRACUNIT
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
SPAWNSTATE = S_SMSHOMING
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP

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
SPAWNSTATE = S_SMSAIRBOOST1
SEESTATE = S_SMSAIRBOOST2
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP

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
SPAWNSTATE = S_SMSLINE0
SPEED = 8
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT

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, hence a groundboost variation.

Thing MT_SMSGROUNDBOOST
SPAWNSTATE = S_SMSGROUNDBOOST
RADIUS = FRACUNIT
HEIGHT = FRACUNIT
FLAGS = MF_NOGRAVITY|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP|MF_SCENERY

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

#This is an invisible kamikaze missile that will check if we can walljump after it hits something.
#It looks like way back from final demo, my original method is still the most reliable method of wallchecking!

Thing MT_SMSWALLJUMP
SPAWNSTATE = S_SMSWALLJUMP1
REACTIONTIME = 1
PAINCHANCE = 1
DEATHSTATE = S_NULL
SPEED = 7*FRACUNIT
RADIUS = 10*FRACUNIT
HEIGHT = 9*FRACUNIT
DAMAGE = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_RUNSPAWNFUNC|MF_NOSECTOR

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

FRAME S_SMSWALLJUMP1
SPRITENAME = SPR_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_SMSWALLJUMP3
ACTION None
VAR1 = 0
VAR2 = 0

#Boost our hero and savior forwards...don't ask what happened to S_SMSWALLJUMP2.

FRAME S_SMSWALLJUMP3
SPRITENAME = SPR_NULL
SPRITEFRAME = A
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_NULL
SPRITEFRAME = A
DURATION = 1
NEXT = S_NULL
ACTION A_SetObjectFlags
VAR1 = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_MISSILE|MF_NOSECTOR
VAR2 = 0

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

Thing MT_SMSSPRINTLINE
SPAWNSTATE = S_SMSSPRINTLINE1
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY|MF_NOCLIPHEIGHT

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

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

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

FRAME S_SMSSPRINTLINE4
SPRITENAME = SPR_SFIR
SPRITEFRAME = G|FF_PAPERSPRITE|TR_TRANS50
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
SPAWNSTATE = S_SMSTSPARK1
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY|MF_NOCLIPHEIGHT

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
SPAWNSTATE = S_POWERSHARE
SPEED = 0
RADIUS = 250*FRACUNIT
HEIGHT = 200*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_SPECIAL|MF_NOBLOCKMAP|MF_NOSECTOR

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
SPAWNSTATE = S_SMSSPARKLESPAWN
PAINCHANCE = 1
MASS = 16
RADIUS = 30*FRACUNIT
HEIGHT = 46*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOSECTOR

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
SPAWNSTATE = S_SMSSSS1
SPEED = 10*FRACUNIT
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_RUNSPAWNFUNC|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP|MF_SCENERY

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

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
SPAWNSTATE = S_PARTICLESMS
SPEED = 4*FRACUNIT
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY

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
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
PAINCHANCE = 101*FRACUNIT
DAMAGE = 101*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_MISSILE

FRAME S_SMSFIRE1
SPRITENAME = SPR_SFIRE
SPRITEFRAME = A|FF_FULLBRIGHT|FF_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|FF_TRANS20
DURATION = 6
NEXT = S_SMSFIRE4
ACTION A_PLAYSOUND
VAR1 = sfx_smex
VAR2 = 1

FRAME S_SMSFIRE4
SPRITENAME = SPR_SFIR
SPRITEFRAME = C|FF_FULLBRIGHT|FF_TRANS20
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
SPAWNSTATE = S_SMS_ATOMTARGETDED
SPEED = 0
RADIUS = 1
HEIGHT = 1
DAMAGE = 1
FLAGS = MF_NOBLOCKMAP|MF_NOCLIPTHING|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
SPAWNSTATE = S_CYBRAKDEMONVILEEXPLOSION1
SPEED = FRACUNIT
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY

Thing MT_SMSPOWERBOMB
SPAWNSTATE = S_SMSPOWERBOMB1
DEATHSTATE = S_SMSPOWERBOMB2
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
DAMAGE = 1
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP

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

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
SPAWNSTATE = S_BURSTLIGHT1
SPEED = 0
RADIUS = 24*FRACUNIT
HEIGHT = 24*FRACUNIT
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
SPAWNSTATE = S_BURSTWAVE1
SPEED = 0
RADIUS = 24*FRACUNIT
HEIGHT = 24*FRACUNIT
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|TR_TRANS10
DURATION = 2
NEXT = S_BURSTWAVE3


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


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


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

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

#The to-go-to-sprite for tornadoes and other neat effects.
#The good ol' classic smoke and dust clouds! Acts sort of like a noclipping missile.

Thing MT_SMMK
SPAWNHEALTH = 1
SPAWNSTATE = S_SMMK0
SPEED = 0
RADIUS = 32*FRACUNIT
HEIGHT = 32*FRACUNIT
MASS = 100
DAMAGE = 1
FLAGS = 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
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
SPAWNSTATE = S_CMPHTRACKER
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
FLAGS = MF_NOGRAVITY|MF_NOSECTOR|MF_NOCLIP

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

Thing MT_SMSTHROWTRACKER
SPAWNHEALTH = 1
SPAWNSTATE = S_CMPHTRACKER
SPEED = 0
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 100
FLAGS = MF_NOGRAVITY|MF_NOSECTOR|MF_NOCLIPHEIGHT

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

#The deadlier HMS fireblasts! It unleashed waves of 7 fanned flames!
Thing MT_HMSFIREBLAST
SPAWNSTATE = S_HMSFIRE1
REACTIONTIME = 8
DEATHSTATE = S_HMSFIRE3
DEATHSOUND = SFX_SMEX
SPEED = 140*FRACUNIT
RADIUS = 40*FRACUNIT
HEIGHT = 40*FRACUNIT
DAMAGE = 9999
FLAGS = MF_NOGRAVITY|MF_MISSILE|MF_NOBLOCKMAP

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

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

FRAME S_HMSFIRE3
SPRITENAME = SPR_SFIR
SPRITEFRAME = B|FF_FULLBRIGHT|FF_TRANS90
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 behind when running 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
SPAWNSTATE = S_NOVABLAST
PAINSOUND = sfx_bgxpld
DEATHSTATE = S_NOVAEXPLODE1
SPEED = 106*FRACUNIT
RADIUS = 8*FRACUNIT
HEIGHT = 8*FRACUNIT
MASS = 0
DAMAGE = 1201*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_MISSILE|MF_NOBLOCKMAP

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

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
SPAWNSTATE = S_NOVAWAVE1
SPEED = 0
RADIUS = 0
HEIGHT = 0
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
SPAWNSTATE = S_BLACKHOLE0
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|MF_NOBLOCKMAP|MF_RUNSPAWNFUNC

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
SPAWNSTATE = S_HMSPOWERBOMB1
DEATHSTATE = S_HMSPOWERBOMB1A
SPEED = 0
RADIUS = 2000*FRACUNIT
HEIGHT = 2000*FRACUNIT
DAMAGE = 4000*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP

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
SPAWNSTATE = S_HMSLIPILLAR0
SPEED = 0
RADIUS = 35*FRACUNIT
HEIGHT = 50*FRACUNIT
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
SPAWNSTATE = S_ATOMDIVEPOP
RADIUS = 477*FRACUNIT
HEIGHT = 222*FRACUNIT
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP|MF_SCENERY

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

#Nuclear Explosion clouds...
Thing MT_HMSPBC
SPAWNSTATE = S_HMSPBC0
SPEED = 18*FRACUNIT
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_SCENERY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_NOBLOCKMAP

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
SPAWNSTATE = S_HMSWAVEAURA1
PAINCHANCE = 1
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 ninja. Silent and unsuspected.
Thing MT_HMSSTOMPEXPLODE
SPAWNSTATE = S_HMSSTOMPEXPLODE
SPEED = 0
RADIUS = 0
HEIGHT = 1
MASS = 100
DAMAGE = 1501*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_RUNSPAWNFUNC|MF_SCENERY|MF_NOCLIP

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
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.
#I barely use this in 3.0 since they're laggy as hell with all their collission calls.
Thing MT_HMSFLAMEREST
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|MF_NOBLOCKMAP

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
FLAGS = MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING

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

#An item to warp BACK to incase we wrongwarp.
Thing MT_HMSWARPPOINTRETURN
SPAWNSTATE = S_HMSWARPPOINTRETURN
RADIUS = 1
HEIGHT = 1
SPEED = 0
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIPTHING

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

#SMS' boost aura! The first attempt at an SRB2 boost aura rather than just doing thok trails!
Thing MT_SMSBOOSTAURA
SPAWNSTATE = S_SMSBOOSTAURA1
SPEED = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT

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

#Sonic X-style aura when you hold custom 1!
Thing MT_SSXA
SPAWNSTATE = S_THOK
SPEED = 0
RADIUS = 0
HEIGHT = 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|MF_NOBLOCKMAP|MF_NOSECTOR

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

#Stupid object that spawns sounds!
Thing MT_SMSSOUNDOBJ
SPAWNSTATE = S_SMSSOUNDOBJ
SPEED = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOGRAVITY|MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY

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

Thing MT_HMSRISEAURA
SPAWNSTATE = S_HMSRISEAURA1
SPEED = 0
RADIUS = 0
HEIGHT = 0
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
SPAWNSTATE = S_HMSSTOMPAURA
SPEED = 0
RADIUS = 0
HEIGHT = 0
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
SPAWNSTATE = S_HMSLIGHTNING
SPEED = 10*FRACUNIT
RADIUS = 4*FRACUNIT
HEIGHT = 1
DispOffset = 1
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOBLOCKMAP

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

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

Thing MT_SMSRGORESPAWN
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

#Choosing to not let this stuff bounce off objects to save performance....
Thing MT_SMSRGORE
SPAWNSTATE = S_HMSLIGHTNING
DEATHSTATE = S_NULL
ACTIVESOUND = sfx_gentrg
RADIUS = 5*FRACUNIT
HEIGHT = 5*FRACUNIT
FLAGS = MF_BOUNCE|MF_GRENADEBOUNCE|MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_SCENERY

Thing MT_SMSSWAVE
SPAWNSTATE = S_SMSSWAVE
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
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
SPAWNSTATE = S_HMSGAX
PAINSOUND = sfx_bgxpld
SPEED = 98*FRACUNIT
RADIUS = 0
HEIGHT = 0
FLAGS = MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_NOBLOCKMAP

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
SPAWNSTATE = S_HMSGAXA
MASS = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_NOBLOCKMAP

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
SPAWNSTATE = S_HMSWARPPOINT
MASS = 0
RADIUS = 50*FRACUNIT
HEIGHT = 50*FRACUNIT
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOSECTOR|MF_BOUNCE|MF_NOCLIPHEIGHT

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

Thing MT_HMSGAXT
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
SPAWNSTATE = S_GOLDENSHINE
MASS = 0
RADIUS = 0
HEIGHT = 0
FLAGS = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY

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

#SMS' signature overglow.

Thing MT_SMSROVERGLOW
SPAWNSTATE = S_THOK
RADIUS = 0
HEIGHT = 0
DispOffset = -7
FLAGS = MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP|MF_SCENERY|MF_NOBLOCKMAP

