Path: blob/main/Scripts/R6/R6Setup.txt
1319 views
//------------------Sonic CD R6 Setup 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.PaletteBank7#alias Object.Value2 : Object.AlarmTimer8#alias Object.Value3 : Object.AlarmTile9#alias Object.Value4 : Object.LightTile10#alias Object.Value5 : Object.ElectricTile11#alias Object.Value6 : Object.BounceFloorAnim12#alias Object.Value7 : Object.BounceFloorTile13#alias Object.Scale : Object.BounceFloorFlag14#alias Object.Direction : Object.WebDirection1516// Player Aliases17#alias Player.Value4 : Player.InvincibleTimer1819// States20#alias 0 : R6_SETUP_PREPARE_CHARGE21#alias 1 : R6_SETUP_WEB_CHARGE22#alias 2 : R6_SETUP_WEB_SHOCK2324// Web Directions25#alias 0 : VERTICAL_WEB26#alias 1 : HORIZONTAL_WEB27#alias 2 : DIAGONAL_WEB2829// Gravity30#alias 1 : GRAVITY_AIR3132// Stage SFX33#alias 0 : SFX_S_BOUNCEFLOOR34#alias 1 : SFX_S_ELECTRICITY35#alias 2 : SFX_S_CATCH3637// Priority38#alias 1 : PRIORITY_ACTIVE3940// Tile Info41#alias 8 : TILEINFO_ANGLEB424344sub ObjectMain45switch Object.State46case R6_SETUP_PREPARE_CHARGE47if Object.Timer < 48048Object.Timer++49else50PlayStageSfx(SFX_S_ELECTRICITY, false)51Object.Timer = 052Object.State = R6_SETUP_WEB_CHARGE53end if54break5556case R6_SETUP_WEB_CHARGE57if Object.Timer < 9058Object.Timer++59Object.Frame++60Object.Frame &= 161else62Object.Timer = 063Object.Frame = 264Object.State = R6_SETUP_WEB_SHOCK65end if66break6768case R6_SETUP_WEB_SHOCK69if Object.Timer < 12070Object.Timer++71Object.Frame++72if Object.Frame == 973Object.Frame = 274end if75else76Object.Timer = 077Object.Frame = 078Object.State = R6_SETUP_PREPARE_CHARGE79Object.WebDirection++80Object.WebDirection %= 381end if82break83end switch8485switch Object.AlarmTile86case 087if Object.AlarmTimer < 1588Object.AlarmTimer++89else90Copy16x16Tile(578, 801)91Copy16x16Tile(677, 801)92Object.AlarmTimer = 093Object.AlarmTile++94end if95break96case 197if Object.AlarmTimer < 498Object.AlarmTimer++99else100Copy16x16Tile(578, 802)101Copy16x16Tile(677, 802)102Object.AlarmTimer = 0103Object.AlarmTile++104end if105break106case 2107if Object.AlarmTimer < 9108Object.AlarmTimer++109else110Copy16x16Tile(578, 803)111Copy16x16Tile(677, 803)112Object.AlarmTimer = 0113Object.AlarmTile++114end if115break116case 3117if Object.AlarmTimer < 4118Object.AlarmTimer++119else120Copy16x16Tile(578, 800)121Copy16x16Tile(677, 800)122Object.AlarmTimer = 0123Object.AlarmTile = 0124end if125break126end switch127128TempValue0 = Object.LightTile129TempValue0 &= 1130if TempValue0 == 0131TempValue0 = Object.LightTile132TempValue0 >>= 1133TempValue0 += 804134Copy16x16Tile(579, TempValue0)135end if136Object.LightTile++137Object.LightTile %= 24138139TempValue0 = Object.ElectricTile140TempValue0 %= 5141if TempValue0 == 0142TempValue0 = Object.ElectricTile143TempValue0 /= 5144TempValue0 += 816145Copy16x16Tile(580, TempValue0)146TempValue0 += 3147Copy16x16Tile(581, TempValue0)148end if149Object.ElectricTile++150Object.ElectricTile %= 15151152if Object.BounceFloorAnim < 32153Object.BounceFloorAnim++154Object.BounceFloorFlag = false155else156if Object.BounceFloorAnim < 212157TempValue0 = Object.BounceFloorAnim158TempValue0 &= 1159if TempValue0 == 0160TempValue0 = Object.BounceFloorTile161TempValue0 += 822162Object.BounceFloorTile++163Object.BounceFloorTile %= 6164Copy16x16Tile(543, TempValue0)165end if166Object.BounceFloorAnim++167Object.BounceFloorFlag = true168else169Object.BounceFloorAnim = 0170Object.BounceFloorFlag = false171Copy16x16Tile(543, 822)172end if173end if174175TempValue0 = Object.PaletteBank176TempValue0 >>= 1177SetActivePalette(TempValue0, 0, 240)178Object.PaletteBank++179Object.PaletteBank %= 6180end sub181182183sub ObjectPlayerInteraction184// They changed up how the Bounce Floor works in Origins Plus, see the new R6BounceFloor object185// This is just (most of) the code from Standalone here.186187TempValue2 = Player.XPos188TempValue2 >>= 16189#platform: Use_Standalone190TempValue2 += Player.CollisionRight191#endplatform192TempValue3 = Player.YPos193TempValue3 >>= 16194#platform: Use_Standalone195TempValue3 += Player.CollisionBottom196TempValue3 += 2197Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)198199TempValue2 = Player.XPos200TempValue2 >>= 16201TempValue2 += Player.CollisionLeft202Get16x16TileInfo(TempValue1, TempValue2, TempValue3, TILEINFO_ANGLEB)203204TempValue0 |= TempValue1205if TempValue0 == 1206if Object.BounceFloorFlag == true207if Player.YVelocity > -1208Player.Animation = ANI_JUMPING209Player.Gravity = GRAVITY_AIR210Player.Timer = 0211Player.YVelocity = -0x160000212213Player.State = Player_State_Air214215PlayStageSfx(SFX_S_BOUNCEFLOOR, false)216#endplatform217#platform: Use_Haptics218HapticEffect(60, 0, 0, 0)219#endplatform220#platform: Use_Standalone221end if222end if223end if224TempValue2 -= Player.CollisionLeft225TempValue3 -= Player.CollisionBottom226TempValue3 -= 2227#endplatform228229Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)230switch TempValue0231case 2232if Player.InvincibleTimer == 0233Player.State = Player_State_GotHit234if Player.Direction == FACING_LEFT235Player.Speed = 0x20000236else237Player.Speed = -0x20000238end if239end if240break241242case 5243if Object.State == R6_SETUP_WEB_SHOCK244if Player.InvincibleTimer == 0245Player.State = Player_State_GotHit246if Player.Direction == FACING_LEFT247Player.Speed = 0x20000248else249Player.Speed = -0x20000250end if251end if252end if253break254255case 6256if Object.State == R6_SETUP_WEB_SHOCK257if Object.WebDirection == VERTICAL_WEB258if Player.InvincibleTimer == 0259Player.State = Player_State_GotHit260if Player.Direction == FACING_LEFT261Player.Speed = 0x20000262else263Player.Speed = -0x20000264end if265end if266end if267end if268break269270case 7271if Object.State == R6_SETUP_WEB_SHOCK272if Object.WebDirection == HORIZONTAL_WEB273if Player.InvincibleTimer == 0274Player.State = Player_State_GotHit275if Player.Direction == FACING_LEFT276Player.Speed = 0x20000277else278Player.Speed = -0x20000279end if280end if281end if282end if283break284285case 8286if Object.State == R6_SETUP_WEB_SHOCK287if Object.WebDirection == DIAGONAL_WEB288if Player.InvincibleTimer == 0289Player.State = Player_State_GotHit290if Player.Direction == FACING_LEFT291Player.Speed = 0x20000292else293Player.Speed = -0x20000294end if295end if296end if297end if298break299end switch300301TempValue3 -= 4302Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)303switch TempValue0304case 2305if Player.InvincibleTimer == 0306Player.State = Player_State_GotHit307if Player.Direction == FACING_LEFT308Player.Speed = 0x20000309else310Player.Speed = -0x20000311end if312end if313break314315case 5316if Object.State == R6_SETUP_WEB_SHOCK317if Player.InvincibleTimer == 0318Player.State = Player_State_GotHit319if Player.Direction == FACING_LEFT320Player.Speed = 0x20000321else322Player.Speed = -0x20000323end if324end if325end if326break327328case 6329if Object.State == R6_SETUP_WEB_SHOCK330if Object.WebDirection == VERTICAL_WEB331if Player.InvincibleTimer == 0332Player.State = Player_State_GotHit333if Player.Direction == FACING_LEFT334Player.Speed = 0x20000335else336Player.Speed = -0x20000337end if338end if339end if340end if341break342343case 7344if Object.State == R6_SETUP_WEB_SHOCK345if Object.WebDirection == HORIZONTAL_WEB346if Player.InvincibleTimer == 0347Player.State = Player_State_GotHit348if Player.Direction == FACING_LEFT349Player.Speed = 0x20000350else351Player.Speed = -0x20000352end if353end if354end if355end if356break357358case 8359if Object.State == R6_SETUP_WEB_SHOCK360if Object.WebDirection == DIAGONAL_WEB361if Player.InvincibleTimer == 0362Player.State = Player_State_GotHit363if Player.Direction == FACING_LEFT364Player.Speed = 0x20000365else366Player.Speed = -0x20000367end if368end if369end if370end if371break372end switch373374TempValue3 += 4375TempValue3 += Player.CollisionTop376Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)377if TempValue0 == 3378TempValue4 = TempValue3379TempValue4 &= 15380if TempValue4 < 8381if Player.State != Player_State_HangBar382Player.State = Player_State_HangBar383Player.YVelocity = 0384Player.Animation = ANI_HANGING385TempValue3 &= 0x7FF0386TempValue3 += 4387TempValue3 -= Player.CollisionTop388Player.iYPos = TempValue3389PlayStageSfx(SFX_S_CATCH, false)390Screen.AdjustCameraY = 0391end if392end if393end if394end sub395396397sub ObjectDraw398if Object.State == R6_SETUP_WEB_SHOCK399switch Object.Frame400case 2401DrawRect(0, 0, Screen.XSize, Screen.YSize, 128, 0, 64, 64)402break403404case 3405DrawRect(0, 0, Screen.XSize, Screen.YSize, 128, 0, 64, 32)406break407408case 4409DrawRect(0, 0, Screen.XSize, Screen.YSize, 255, 128, 255, 32)410break411412case 5413DrawRect(0, 0, Screen.XSize, Screen.YSize, 128, 0, 64, 64)414break415416case 6417DrawRect(0, 0, Screen.XSize, Screen.YSize, 128, 0, 64, 32)418break419420case 7421DrawRect(0, 0, Screen.XSize, Screen.YSize, 255, 128, 255, 32)422break423424case 8425DrawRect(0, 0, Screen.XSize, Screen.YSize, 128, 0, 64, 32)426break427end switch428end if429end sub430431432sub ObjectStartup433Object[19].Type = TypeName[R6 Setup]434Object[19].Priority = PRIORITY_ACTIVE435Object[19].DrawOrder = 2436437TempValue0 = 1438while TempValue0 < 3439RotatePalette(161, 163, 0)440CopyPalette(0, TempValue0)441TempValue0++442loop443RotatePalette(161, 163, 0)444end sub445446447// ========================448// Editor Subs449// ========================450451sub RSDKDraw452DrawSprite(0)453end sub454455456sub RSDKLoad457LoadSpriteSheet("Global/Display.gif")458SpriteFrame(-16, -16, 32, 32, 1, 143) // #0 - "Script" Icon459460SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")461end sub462463464