Path: blob/main/Scripts/Global/TouchControls.txt
1319 views
//----------Sonic CD DebugMode / TouchControls Script---------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Fade6#alias Object.Value1 : Object.PauseFade7#alias Object.Value2 : Object.PauseXPos8#alias Object.Value3 : Object.AButtonXPos9#alias Object.Value4 : Object.DPadXPos10#alias Object.Value6 : Object.HelperSprite11#alias Object.Rotation : Object.CurrentSelection1213// Ink Effects14#alias 2 : INK_ALPHA1516// Player17#alias 1 : PLAYER_TAILS_A1819// Control Mode20#alias 0 : CONTROLMODE_NORMAL2122// Priority23#alias 1 : PRIORITY_ACTIVE24#alias 4 : PRIORITY_BOUNDS_DESTROY2526// Function declarations27#function DebugMode_ChangeItem2829function DebugMode_ChangeItem30switch Object.CurrentSelection31case 032case 133case 234case 335case 436case 537case 638case 739case 840case 941case 1042case 1143case 1244case 1345case 1446case 1547case 1648case 1749case 1850case 1951case 2052case 2153case 2254case 2355case 2456case 2557Object.Frame = Object.CurrentSelection58Object.HelperSprite = 059break6061case 2662Object.Frame = 2663Object.HelperSprite = 2764break6566case 2767Object.Frame = 2868Object.HelperSprite = 2969break70end switch71end function727374sub ObjectMain75// a bit messy, isn't it? blame mobile version for not having debug mode :)76#platform: Standard77TempValue0 = false78if KeyDown[1].Left == true79Player.XPos -= Player.YVelocity80TempValue0 = true81end if8283if KeyDown[1].Right == true84Player.XPos += Player.YVelocity85TempValue0 = true86end if8788if KeyDown[1].Up == true89Player.YPos -= Player.YVelocity90TempValue0 = true91end if9293if KeyDown[1].Down == true94Player.YPos += Player.YVelocity95TempValue0 = true96end if9798if TempValue0 == true99Player.YVelocity += 0xC00100if Player.YVelocity > 0x100000101Player.YVelocity = 0x100000102end if103else104Player.YVelocity = 0105end if106#endplatform107108if KeyPress[1].ButtonB == true109#platform: Standard110Object.HelperSprite = 0111Object.Type = TypeName[Player Object]112// THEY #FIXED HIM!!!113if Stage.PlayerListPos == PLAYER_TAILS_A // PLAYER_TAILS in origins114Object[+1].Type = TypeName[Tails Object]115end if116Player.Speed = 0117Player.Rotation = 0118Player.XVelocity = 0119Player.YVelocity = 0120#endplatform121122#platform: Use_Origins123Player.State = Player_State_Air_NoDropDash124#endplatform125126#platform: Use_Standalone127#platform: Standard128Player.State = Player_State_Air129#endplatform130#endplatform131132#platform: Standard133Player.Animation = ANI_WALKING134Player.AnimationSpeed = 0135Player.Frame = 0136137Player.ControlMode = CONTROLMODE_NORMAL138Player.ObjectInteraction = true139#endplatform140else141if KeyPress[0].ButtonA == true142#platform: Standard143Object.CurrentSelection++144#endplatform145146#platform: Use_Origins147// These two checks were introduced in Origins 1.0.4, to prevent the player from spawning Coin Monitors in Debug Mode148if Object.CurrentSelection == 5149Object.CurrentSelection++150end if151152if Object.CurrentSelection == 7153Object.CurrentSelection++154end if155#endplatform156#platform: Standard157if Object.CurrentSelection > 27158Object.CurrentSelection = 0159end if160CallFunction(DebugMode_ChangeItem)161#endplatform162end if163164if KeyDown[0].ButtonA == true165if KeyPress[0].ButtonC == true166#platform: Standard167Object.CurrentSelection--168#endplatform169170#platform: Use_Origins171// Similarly to above, this part's also new to Origins 1.0.4 and prevents coin inflation172if Object.CurrentSelection == 5173Object.CurrentSelection--174end if175176if Object.CurrentSelection == 7177Object.CurrentSelection--178end if179#endplatform180#platform: Standard181if Object.CurrentSelection < 0182Object.CurrentSelection = 27183end if184CallFunction(DebugMode_ChangeItem)185#endplatform186end if187else188#platform: Standard189if KeyPress[0].ButtonC == true190switch Object.CurrentSelection191case 0192CreateTempObject(TypeName[Ring], 0, Player.XPos, Player.YPos)193Object[TempObjectPos].DrawOrder = 4194break195196case 1197case 2198case 3199case 4200case 5201case 6202case 7203case 8204CreateTempObject(TypeName[Monitor], Object.CurrentSelection, Player.XPos, Player.YPos)205break206207case 9208case 10209case 11210case 12211case 13212case 14213case 15214case 16215TempValue0 = Object.CurrentSelection216TempValue0 -= 9217CreateTempObject(TypeName[Red Spring], TempValue0, Player.XPos, Player.YPos)218break219220case 17221case 18222case 19223case 20224case 21225case 22226case 23227case 24228TempValue0 = Object.CurrentSelection229TempValue0 -= 17230CreateTempObject(TypeName[Yellow Spring], TempValue0, Player.XPos, Player.YPos)231break232233case 25234CreateTempObject(TypeName[Lamp Post], 0, Player.XPos, Player.YPos)235break236237case 26238CreateTempObject(TypeName[Future Post], 0, Player.XPos, Player.YPos)239break240241case 27242CreateTempObject(TypeName[Past Post], 0, Player.XPos, Player.YPos)243break244end switch245246Object[TempObjectPos].Priority = PRIORITY_BOUNDS_DESTROY247end if248#endplatform249end if250end if251end sub252253254sub ObjectDraw255256#platform: Standard257DrawSpriteXY(Object.Frame, Player.XPos, Player.YPos)258259if Object.HelperSprite > 0260DrawSpriteXY(Object.HelperSprite, Player.XPos, Player.YPos)261end if262#endplatform263264#platform: Mobile265if Options.TouchControls == false266TempValue0 = -1267else268TempValue0 = Player.ControlMode269end if270271if TempValue0 == false272if Stage.State != STAGE_PAUSED273if Object.Fade < 160274Object.Fade += 4275Object.PauseFade = Object.Fade276Object.PauseFade <<= 1277end if278279Object.Alpha = Object.Fade280DrawSpriteScreenFX(0, FX_INK, Object.DPadXPos, 160)281282if Player.Left == true283Object.Alpha = 160284DrawSpriteScreenFX(7, FX_INK, Object.DPadXPos, 160)285else286Object.Alpha = Object.Fade287DrawSpriteScreenFX(3, FX_INK, Object.DPadXPos, 160)288end if289290if Player.Down == true291Object.Alpha = 160292DrawSpriteScreenFX(6, FX_INK, Object.DPadXPos, 160)293else294Object.Alpha = Object.Fade295DrawSpriteScreenFX(2, FX_INK, Object.DPadXPos, 160)296end if297298if Player.Right == true299Object.Alpha = 160300DrawSpriteScreenFX(8, FX_INK, Object.DPadXPos, 160)301else302Object.Alpha = Object.Fade303DrawSpriteScreenFX(4, FX_INK, Object.DPadXPos, 160)304end if305306if Player.Up == true307Object.Alpha = 160308DrawSpriteScreenFX(5, FX_INK, Object.DPadXPos, 160)309else310Object.Alpha = Object.Fade311DrawSpriteScreenFX(1, FX_INK, Object.DPadXPos, 160)312end if313314if Player.JumpHold == true315Object.Alpha = 160316DrawSpriteScreenFX(10, FX_INK, Object.AButtonXPos, 176)317else318Object.Alpha = Object.Fade319DrawSpriteScreenFX(9, FX_INK, Object.AButtonXPos, 176)320end if321else322Object.Fade = 0323end if324325if Object.PauseFade < 256326Object.Alpha = Object.PauseFade327DrawSpriteScreenFX(11, FX_INK, Object.PauseXPos, 8)328else329DrawSpriteScreenXY(11, Object.PauseXPos, 8)330end if331else332if Object.Fade > 0333Object.Fade -= 4334Object.PauseFade -= 8335end if336337Object.Alpha = Object.Fade338if Object.Alpha > 0339DrawSpriteScreenFX(0, FX_INK, Object.DPadXPos, 160)340DrawSpriteScreenFX(1, FX_INK, Object.DPadXPos, 160)341DrawSpriteScreenFX(4, FX_INK, Object.DPadXPos, 160)342DrawSpriteScreenFX(2, FX_INK, Object.DPadXPos, 160)343DrawSpriteScreenFX(3, FX_INK, Object.DPadXPos, 160)344DrawSpriteScreenFX(9, FX_INK, Object.AButtonXPos, 176)345end if346347if Object.PauseFade < 0348Object.Alpha = 0349else350Object.Alpha = Object.PauseFade351end if352353if Object.PauseFade < 256354Object.Alpha = Object.PauseFade355DrawSpriteScreenFX(11, FX_INK, Object.PauseXPos, 8)356else357DrawSpriteScreenXY(11, Object.PauseXPos, 8)358end if359end if360#endplatform361end sub362363364sub ObjectStartup365#platform: Standard366LoadSpriteSheet("Global/Items.gif")367368SpriteFrame(-8, -8, 16, 16, 1, 1) // #0 - Ring369// Monitors370SpriteFrame(-16, -16, 32, 32, 18, 1) // #1 - Ring Monitor371SpriteFrame(-16, -16, 32, 32, 18, 34) // #2 - Shield Monitor372SpriteFrame(-16, -16, 32, 32, 18, 67) // #3 - Invincibility Monitor373SpriteFrame(-16, -16, 32, 32, 18, 100) // #4 - Power Sneakers Monitor374375#endplatform376377#platform: Use_Origins378CheckEqual(game.coinMode, false)379#endplatform380381#platform: Use_Standalone382CheckResult = true383#endplatform384385#platform: Standard386// Originally game.coinMode == false, adapted for compatibility reasons387if CheckResult == true388SpriteFrame(-16, -16, 32, 32, 18, 133) // #5 - Sonic Monitor389SpriteFrame(-16, -16, 32, 32, 18, 166) // #6 - Time Monitor390SpriteFrame(-16, -16, 32, 32, 51, 100) // #7 - Tails Monitor391SpriteFrame(-16, -16, 32, 32, 51, 133) // #8 - S Monitor392else393SpriteFrame(-16, -16, 32, 32, 84, 200) // #5 - Coin Monitor394SpriteFrame(-16, -16, 32, 32, 18, 166) // #6 - Time Monitor395SpriteFrame(-16, -16, 32, 32, 84, 200) // #7 - Coin Monitor396SpriteFrame(-16, -16, 32, 32, 51, 133) // #8 - S Monitor397end if398399// Springs400SpriteFrame(-16, -8, 32, 16, 84, 1) // #9 - Red Spring facing up401SpriteFrame(-8, -16, 16, 32, 117, 1) // #10 - Red Spring facing right402SpriteFrame(-8, -16, 16, 32, 175, 1) // #11 - Red Spring facing left403SpriteFrame(-16, -8, 32, 16, 84, 59) // #12 - Red Spring facing down404SpriteFrame(-16, -16, 32, 32, 84, 117) // #13 - Red Spring facing diagonal right405SpriteFrame(-16, -16, 32, 32, 117, 165) // #14 - Red Spring facing diagonal left406SpriteFrame(-16, -16, 32, 32, 84, 117) // #15 - Red Spring facing diagonal right 2407SpriteFrame(-16, -16, 32, 32, 117, 165) // #16 - Red Spring facing diagonal left 2408409// Springs410SpriteFrame(-16, -8, 32, 16, 84, 183) // #17 - Yellow Spring facing up411SpriteFrame(-8, -16, 16, 32, 215, 116) // #18 - Yellow Spring facing right412SpriteFrame(-8, -16, 16, 32, 232, 116) // #19 - Yellow Spring facing left413SpriteFrame(-16, -8, 32, 16, 184, 239) // #20 - Yellow Spring facing down414SpriteFrame(-16, -16, 32, 32, 183, 165) // #21 - Yellow Spring facing diagonal right415SpriteFrame(-16, -16, 32, 32, 216, 182) // #22 - Yellow Spring facing diagonal left416SpriteFrame(-16, -16, 32, 32, 183, 165) // #23 - Yellow Spring facing diagonal right 2417SpriteFrame(-16, -16, 32, 32, 216, 182) // #24 - Yellow Spring facing diagonal left 2418419SpriteFrame(-8, -40, 16, 64, 1, 137) // #25 - Lamp Post420SpriteFrame(-8, -24, 16, 48, 35, 204) // #26 - Time Post Body421SpriteFrame(-16, -40, 32, 16, 52, 239) // #27 - Future Post422SpriteFrame(-8, -24, 16, 48, 35, 204) // #28 - Time Post Body423SpriteFrame(-16, -40, 32, 16, 118, 239) // #29 - Past Post424#endplatform425426#platform: Mobile427if Options.AttractMode == false428LoadSpriteSheet("Global/DPad.gif")429430Object[25].Type = TypeName[Debug Mode]431Object[25].Priority = PRIORITY_ACTIVE432Object[25].DrawOrder = 6433Object[25].InkEffect = INK_ALPHA434Object[25].Fade = 0435Object[25].PauseFade = 0436Object[25].PauseXPos = Screen.XSize437Object[25].PauseXPos -= 68438Object[25].AButtonXPos = Screen.XSize439440if Engine.PlatformID == RETRO_WP7441Object[25].AButtonXPos -= 69442Object[25].DPadXPos = 24443Options.DPadX = 56444else445Object[25].AButtonXPos -= 61446Object[25].DPadXPos = 16447Options.DPadX = 48448end if449450// This script is only ever used in normal stages, Special Stages have their own TouchControls script451// and yet, this check exists anyway...452if Stage.ActiveList == SPECIAL_STAGE453Object[25].PauseXPos += 42454end if455456SpriteFrame(0, 0, 64, 64, 0, 64) // #0 - D-Pad457SpriteFrame(26, 0, 12, 25, 26, 0) // #1 - Up458SpriteFrame(26, 38, 12, 26, 26, 38) // #2 - Down459SpriteFrame(0, 25, 26, 13, 0, 25) // #3 - Left460SpriteFrame(38, 25, 26, 13, 38, 25) // #4 - Right461SpriteFrame(26, 0, 12, 25, 116, 64) // #5 - Pressed Up462SpriteFrame(26, 38, 12, 26, 116, 102) // #6 - Pressed Down463SpriteFrame(0, 25, 26, 13, 89, 101) // #7 - Pressed Left464SpriteFrame(38, 25, 26, 13, 89, 115) // #8 - Presset Right465SpriteFrame(0, 0, 48, 48, 65, 0) // #9 - A Button466SpriteFrame(0, 0, 48, 48, 65, 49) // #10 - Pressed A Button467SpriteFrame(0, 0, 16, 16, 72, 111) // #11 - Pause468end if469#endplatform470end sub471472473// ========================474// Editor Subs475// ========================476477sub RSDKDraw478DrawSprite(0)479end sub480481482sub RSDKLoad483LoadSpriteSheet("Global/Items.gif")484SpriteFrame(-8, -8, 16, 16, 1, 1) // #0 - Ring485486SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")487end sub488489490