Path: blob/main/Scripts/R7/SpeedBooster.txt
1319 views
//---------------Sonic CD Speed Booster 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.DrawOffsetX78// Booster Cartridge Aliases9#alias Object.Value1 : Object.XVelocity10#alias Object.Value2 : Object.YVelocity1112// Base State13#alias 0 : SPEEDBOOSTER_IDLE1415// Pair of States for when the player is shot right16#alias 1 : SPEEDBOOSTER_RECOIL_R17#alias 2 : SPEEDBOOSTER_RECOVER_R1819// Pair of States for when the player is shot left20#alias 3 : SPEEDBOOSTER_RECOIL_L21#alias 4 : SPEEDBOOSTER_RECOVER_L2223// Priority24#alias 0 : PRIORITY_BOUNDS25#alias 1 : PRIORITY_ACTIVE2627// Stage SFX28#alias 0 : SFX_S_LARGEBOOSTER // In origins, this SFX is Launcher29#alias 1 : SFX_S_SWITCH303132sub ObjectMain33switch Object.State34case SPEEDBOOSTER_RECOIL_R35if Object.Timer < 636Object.DrawOffsetX -= 0x8000037Object.Timer++38else39Object.Timer = 040Object.State++41end if42break4344case SPEEDBOOSTER_RECOVER_R45if Object.Timer < 646Object.DrawOffsetX += 0x8000047Object.Timer++48else49Object.Timer = 050Object.State = SPEEDBOOSTER_IDLE51Object.Priority = PRIORITY_BOUNDS52end if53break5455case SPEEDBOOSTER_RECOIL_L56if Object.Timer < 657Object.DrawOffsetX += 0x8000058Object.Timer++59else60Object.Timer = 061Object.State++62end if63break6465case SPEEDBOOSTER_RECOVER_L66if Object.Timer < 667Object.DrawOffsetX -= 0x8000068Object.Timer++69else70Object.Timer = 071Object.State = SPEEDBOOSTER_IDLE72Object.Priority = PRIORITY_BOUNDS73end if74break7576end switch77end sub787980sub ObjectPlayerInteraction8182if Object.State == SPEEDBOOSTER_IDLE83if Player.State != Player_State_Air84PlayerObjectCollision(C_TOUCH, -32, -12, 32, 4)85if CheckResult == true8687// Make the Speed Boster always active for the next few frames88Object.Priority = PRIORITY_ACTIVE8990PlayStageSfx(SFX_S_LARGEBOOSTER, false)9192#platform: Use_Haptics93HapticEffect(30, 0, 0, 0)94#endplatform9596// Different actions for the different directions the player will be sent97if Player.Speed > 098Object.State = SPEEDBOOSTER_RECOIL_R99Player.Speed = 0x100000100Player.Direction = FACING_RIGHT101102CreateTempObject(TypeName[Fire Trail], 0, Object.XPos, Object.YPos)103Object[TempObjectPos].XPos -= 0x180000104Object[TempObjectPos].YPos -= 0x60000105106CreateTempObject(TypeName[BoosterCartridge], 0, Object.XPos, Object.YPos)107Object[TempObjectPos].XVelocity = -0x20000108Object[TempObjectPos].YVelocity = -0x70000109else110Object.State = SPEEDBOOSTER_RECOIL_L111Player.Speed = -0x100000112Player.Direction = FACING_LEFT113114CreateTempObject(TypeName[Fire Trail], 0, Object.XPos, Object.YPos)115Object[TempObjectPos].XPos += 0x180000116Object[TempObjectPos].YPos -= 0x60000117Object[TempObjectPos].Direction = FACING_LEFT118119CreateTempObject(TypeName[BoosterCartridge], 0, Object.XPos, Object.YPos)120Object[TempObjectPos].XVelocity = 0x20000121Object[TempObjectPos].YVelocity = -0x70000122Object[TempObjectPos].Direction = FACING_LEFT123end if124end if125end if126end if127128end sub129130131sub ObjectDraw132133TempValue0 = Object.DrawOffsetX134TempValue0 += Object.XPos135DrawSpriteXY(0, TempValue0, Object.YPos)136137end sub138139140sub ObjectStartup141142LoadSpriteSheet("R7/Objects.gif")143144// Booster Frame145SpriteFrame(-32, -12, 64, 24, 34, 96)146147ArrayPos0 = 32148while ArrayPos0 < 1056149if Object[ArrayPos0].Type == TypeName[Speed Booster]150Object[ArrayPos0].DrawOrder = 4151end if152153ArrayPos0++154loop155156end sub157158159// ========================160// Editor Subs161// ========================162163sub RSDKDraw164DrawSprite(0)165166if Editor.ShowGizmos == true167// Draw the Booster's activation box168169TempValue0 = Object.iXPos170TempValue0 -= 32171TempValue1 = Object.iYPos172TempValue1 -= 12173DrawRectOutline(TempValue0, TempValue1, 64, 16, 255, 255, 255, 255)174end if175end sub176177178sub RSDKLoad179LoadSpriteSheet("R7/Objects.gif")180SpriteFrame(-32, -12, 64, 24, 34, 96)181182SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")183end sub184185186