Path: blob/main/Scripts/Global/MovingSpikes.txt
1319 views
//---------------Sonic CD Moving Spikes Script----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer6#alias Object.Value1 : Object.OffSet78// Player Aliases9#alias Player.Value4 : Player.InvincibleTimer1011// Gravity12#alias 1 : GRAVITY_AIR1314// States15#alias 0 : MOVINGSPIKES_IDLE16#alias 1 : MOVINGSPIKES_RETRIEVE17#alias 2 : MOVINGSPIKES_HIDE18#alias 3 : MOVINGSPIKES_REVEAL1920// Property Values21#alias 0 : MOVINGSPIKES_DIRECTION_UP22#alias 1 : MOVINGSPIKES_DIRECTION_RIGHT23#alias 2 : MOVINGSPIKES_DIRECTION_LEFT24#alias 3 : MOVINGSPIKES_DIRECTION_DOWN2526// Stage SFX27#alias 4 : SFX_S_SPIKES282930sub ObjectMain31switch Object.State32case MOVINGSPIKES_IDLE33if Object.Timer < 6034Object.Timer++35else36Object.State = MOVINGSPIKES_RETRIEVE37Object.Timer = 038PlayStageSfx(SFX_S_SPIKES, false)39end if40break4142case MOVINGSPIKES_RETRIEVE43if Object.OffSet < 0x20000044Object.OffSet += 0x8000045else46Object.State = MOVINGSPIKES_HIDE47end if48break4950case MOVINGSPIKES_HIDE51if Object.Timer < 6052Object.Timer++53else54Object.State = MOVINGSPIKES_REVEAL55Object.Timer = 05657PlayStageSfx(SFX_S_SPIKES, false)58end if59break6061case MOVINGSPIKES_REVEAL62if Object.OffSet > 063Object.OffSet -= 0x8000064else65Object.State = MOVINGSPIKES_IDLE66end if67break6869end switch70end sub717273sub ObjectPlayerInteraction74TempValue0 = Object.OffSet75TempValue0 >>= 1676TempValue0 -= 1677TempValue1 = TempValue078TempValue1 += 327980switch Object.PropertyValue81case MOVINGSPIKES_DIRECTION_UP82if Player.State != Player_State_Hurt83PlayerObjectCollision(C_BOX, -16, TempValue0, 16, TempValue1)84end if8586if Object.State != MOVINGSPIKES_HIDE87if Player.YVelocity > -188if Player.InvincibleTimer == 089PlayerObjectCollision(C_TOUCH, -15, -18, 15, -12)90if CheckResult == true91Player.State = Player_State_GotHit92Player.Gravity = GRAVITY_AIR9394Player.YPos -= 0x1000095if Player.XPos > Object.XPos96Player.Speed = 0x2000097else98Player.Speed = -0x2000099end if100end if101end if102end if103end if104break105106case MOVINGSPIKES_DIRECTION_RIGHT107FlipSign(TempValue0)108FlipSign(TempValue1)109110PlayerObjectCollision(C_BOX, TempValue1, -16, TempValue0, 16)111if Object.State != MOVINGSPIKES_HIDE112if Player.InvincibleTimer == 0113114PlayerObjectCollision(C_TOUCH, 8, -15, 18, 15)115if CheckResult == true116Player.State = Player_State_GotHit117118Player.Speed = 0x20000119end if120end if121end if122break123124case MOVINGSPIKES_DIRECTION_LEFT125PlayerObjectCollision(C_BOX, TempValue0, -16, TempValue1, 16)126if Object.State != MOVINGSPIKES_HIDE127if Player.InvincibleTimer == 0128129PlayerObjectCollision(C_TOUCH, -18, -15, -8, 15)130if CheckResult == true131Player.State = Player_State_GotHit132133Player.Speed = -0x20000134end if135end if136end if137break138139case MOVINGSPIKES_DIRECTION_DOWN140FlipSign(TempValue0)141FlipSign(TempValue1)142PlayerObjectCollision(C_BOX, -16, TempValue1, 16, TempValue0)143if Object.State != MOVINGSPIKES_HIDE144if Player.YVelocity < 1145if Player.InvincibleTimer == 0146147PlayerObjectCollision(C_TOUCH, -14, 12, 14, 18)148if CheckResult == true149Player.State = Player_State_GotHit150if Player.XPos > Object.XPos151Player.Speed = 0x20000152else153Player.Speed = -0x20000154end if155end if156end if157end if158end if159break160end switch161end sub162163164sub ObjectDraw165switch Object.PropertyValue166case MOVINGSPIKES_DIRECTION_UP167TempValue0 = Object.YPos168TempValue0 += Object.OffSet169DrawSpriteXY(Object.PropertyValue, Object.XPos, TempValue0)170break171172case MOVINGSPIKES_DIRECTION_RIGHT173TempValue0 = Object.XPos174TempValue0 -= Object.OffSet175DrawSpriteXY(Object.PropertyValue, TempValue0, Object.YPos)176break177178case MOVINGSPIKES_DIRECTION_LEFT179TempValue0 = Object.XPos180TempValue0 += Object.OffSet181DrawSpriteXY(Object.PropertyValue, TempValue0, Object.YPos)182break183184case MOVINGSPIKES_DIRECTION_DOWN185TempValue0 = Object.YPos186TempValue0 -= Object.OffSet187DrawSpriteXY(Object.PropertyValue, Object.XPos, TempValue0)188break189190end switch191end sub192193194sub ObjectStartup195LoadSpriteSheet("Global/Items3.gif")196197SpriteFrame(-16, -16, 32, 32, 50, 1) // #0 - Spikes facing up198SpriteFrame(-16, -16, 32, 32, 50, 34) // #1 - Spikes facing right199SpriteFrame(-16, -16, 32, 32, 50, 67) // #2 - Spikes facing left200SpriteFrame(-16, -16, 32, 32, 50, 100) // #3 - Spikes facing down201end sub202203204// ========================205// Editor Subs206// ========================207208sub RSDKEdit209if Editor.ReturnVariable == true210switch Editor.VariableID211case EDIT_VAR_PROPVAL // Property Value212CheckResult = Object.PropertyValue213break214case 0 // Orientation215CheckResult = Object.PropertyValue216break217end switch218else219switch Editor.VariableID220case EDIT_VAR_PROPVAL // Property Value221Object.PropertyValue = Editor.VariableValue222break223case 0 // Orientation224Object.PropertyValue = Editor.VariableValue225break226end switch227end if228end sub229230231sub RSDKDraw232DrawSprite(Object.PropertyValue)233end sub234235236sub RSDKLoad237LoadSpriteSheet("Global/Items3.gif")238SpriteFrame(-16, -16, 32, 32, 50, 1) // #0 - Spikes facing up239SpriteFrame(-16, -16, 32, 32, 50, 34) // #1 - Spikes facing right240SpriteFrame(-16, -16, 32, 32, 50, 67) // #2 - Spikes facing left241SpriteFrame(-16, -16, 32, 32, 50, 100) // #3 - Spikes facing down242243AddEditorVariable("Orientation")244SetActiveVariable("Orientation")245AddEnumVariable("Up", 0)246AddEnumVariable("Right", 1)247AddEnumVariable("Left", 2)248AddEnumVariable("Down", 3)249end sub250251252