Path: blob/main/Scripts/R6/R6BossDSetup.txt
1319 views
//---------------Sonic CD R6 Boss D Setup Script--------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.PaletteBank6#alias Object.Value2 : Object.AlarmTimer7#alias Object.Value3 : Object.AlarmTile8#alias Object.Value4 : Object.LightTile9#alias Object.Value5 : Object.ElectricTile10#alias Object.Value6 : Object.BounceFloorAnim11#alias Object.Value7 : Object.BounceFloorTile12#alias Object.Scale : Object.BounceFloorFlag13#alias Object.Direction : Object.WebDirection1415// Player Aliases16#alias Player.Value4 : Player.InvincibleTimer1718// States19#alias 2 : R6D_SETUP_WEB_SHOCK // Unused in boss stages2021// Web Directions22#alias 0 : VERTICAL_WEB23#alias 1 : HORIZONTAL_WEB24#alias 2 : DIAGONAL_WEB2526// Gravity27#alias 1 : GRAVITY_AIR2829// Stage SFX30#alias 0 : SFX_S_BOUNCEFLOOR31#alias 2 : SFX_S_CATCH3233// Priority34#alias 1 : PRIORITY_ACTIVE3536// Tile Info37#alias 8 : TILEINFO_ANGLEB383940sub ObjectMain41switch Object.AlarmTile42case 043if Object.AlarmTimer < 1544Object.AlarmTimer++45else46Copy16x16Tile(646, 841)47Copy16x16Tile(809, 841)48Object.AlarmTimer = 049Object.AlarmTile++50end if51break52case 153if Object.AlarmTimer < 454Object.AlarmTimer++55else56Copy16x16Tile(646, 842)57Copy16x16Tile(809, 842)58Object.AlarmTimer = 059Object.AlarmTile++60end if61break62case 263if Object.AlarmTimer < 964Object.AlarmTimer++65else66Copy16x16Tile(646, 843)67Copy16x16Tile(809, 843)68Object.AlarmTimer = 069Object.AlarmTile++70end if71break72case 373if Object.AlarmTimer < 474Object.AlarmTimer++75else76Copy16x16Tile(646, 840)77Copy16x16Tile(809, 840)78Object.AlarmTimer = 079Object.AlarmTile = 080end if81break82end switch8384TempValue0 = Object.LightTile85TempValue0 &= 186if TempValue0 == 087TempValue0 = Object.LightTile88TempValue0 >>= 189TempValue0 += 84490Copy16x16Tile(647, TempValue0)91end if92Object.LightTile++93Object.LightTile %= 249495TempValue0 = Object.ElectricTile96TempValue0 %= 597if TempValue0 == 098TempValue0 = Object.ElectricTile99TempValue0 /= 5100TempValue0 += 856101Copy16x16Tile(648, TempValue0)102TempValue0 += 3103Copy16x16Tile(649, TempValue0)104end if105Object.ElectricTile++106Object.ElectricTile %= 15107108TempValue0 = Object.BounceFloorAnim109TempValue0 &= 1110if TempValue0 == 0111TempValue0 = Object.BounceFloorTile112TempValue0 += 862113Object.BounceFloorTile++114Object.BounceFloorTile %= 6115Copy16x16Tile(543, TempValue0)116end if117Object.BounceFloorAnim++118Object.BounceFloorAnim &= 511119120Object.BounceFloorFlag = true121122TempValue0 = Object.PaletteBank123TempValue0 >>= 1124SetActivePalette(TempValue0, 0, Screen.YSize)125Object.PaletteBank++126Object.PaletteBank %= 6127end sub128129130sub ObjectPlayerInteraction131TempValue2 = Player.XPos132TempValue2 >>= 16133TempValue2 += Player.CollisionRight134TempValue3 = Player.YPos135TempValue3 >>= 16136TempValue3 += Player.CollisionBottom137TempValue3 += 2138Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)139140TempValue2 = Player.XPos141TempValue2 >>= 16142TempValue2 += Player.CollisionLeft143Get16x16TileInfo(TempValue1, TempValue2, TempValue3, TILEINFO_ANGLEB)144// Bug Details:145// Sonic Team updated the normal bounce floor (which is R6BounceFloor in Origins for the Past and Present)146// to prevent Knuckles from disabling his collisions when climbing onto the floor (they knew about this bug)147// However, they didn't update it here and in R6BossCSetup.148TempValue0 |= TempValue1149if TempValue0 == true150if Object.BounceFloorFlag == true151if Player.YVelocity > -1152Player.Animation = ANI_JUMPING153Player.Gravity = GRAVITY_AIR154Player.Timer = 0155Player.YVelocity = -0x160000156157#platform: Use_Origins158Player.State = Player_State_Air_NoDropDash159#endplatform160161#platform: Use_Standalone162Player.State = Player_State_Air163#endplatform164PlayStageSfx(SFX_S_BOUNCEFLOOR, false)165166#platform: Use_Haptics167HapticEffect(60, 0, 0, 0)168#endplatform169170end if171end if172end if173TempValue2 -= Player.CollisionLeft174TempValue3 -= Player.CollisionBottom175TempValue3 -= 2176// You will see constant checks for R6D_SETUP_WEB_SHOCK state177// but the code to reach that state is removed, since there are no shock webs on the boss stage178Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)179switch TempValue0180case 2181if Player.InvincibleTimer == 0182Player.State = Player_State_GotHit183if Player.Direction == FACING_LEFT184Player.Speed = 0x20000185else186Player.Speed = -0x20000187end if188end if189break190case 5191if Object.State == R6D_SETUP_WEB_SHOCK192if Player.InvincibleTimer == 0193Player.State = Player_State_GotHit194if Player.Direction == FACING_LEFT195Player.Speed = 0x20000196else197Player.Speed = -0x20000198end if199end if200end if201break202case 6203if Object.State == R6D_SETUP_WEB_SHOCK204if Object.WebDirection == VERTICAL_WEB205if Player.InvincibleTimer == 0206Player.State = Player_State_GotHit207if Player.Direction == FACING_LEFT208Player.Speed = 0x20000209else210Player.Speed = -0x20000211end if212end if213end if214end if215break216case 7217if Object.State == R6D_SETUP_WEB_SHOCK218if Object.WebDirection == HORIZONTAL_WEB219if Player.InvincibleTimer == 0220Player.State = Player_State_GotHit221if Player.Direction == FACING_LEFT222Player.Speed = 0x20000223else224Player.Speed = -0x20000225end if226end if227end if228end if229break230case 8231if Object.State == R6D_SETUP_WEB_SHOCK232if Object.WebDirection == DIAGONAL_WEB233if Player.InvincibleTimer == 0234Player.State = Player_State_GotHit235if Player.Direction == FACING_LEFT236Player.Speed = 0x20000237else238Player.Speed = -0x20000239end if240end if241end if242end if243break244end switch245246TempValue3 -= 4247Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)248switch TempValue0249case 2250if Player.InvincibleTimer == 0251Player.State = Player_State_GotHit252if Player.Direction == FACING_LEFT253Player.Speed = 0x20000254else255Player.Speed = -0x20000256end if257end if258break259case 5260if Object.State == R6D_SETUP_WEB_SHOCK261if Player.InvincibleTimer == 0262Player.State = Player_State_GotHit263if Player.Direction == FACING_LEFT264Player.Speed = 0x20000265else266Player.Speed = -0x20000267end if268end if269end if270break271case 6272if Object.State == R6D_SETUP_WEB_SHOCK273if Object.WebDirection == VERTICAL_WEB274if Player.InvincibleTimer == 0275Player.State = Player_State_GotHit276if Player.Direction == FACING_LEFT277Player.Speed = 0x20000278else279Player.Speed = -0x20000280end if281end if282end if283end if284break285case 7286if Object.State == R6D_SETUP_WEB_SHOCK287if Object.WebDirection == HORIZONTAL_WEB288if Player.InvincibleTimer == 0289Player.State = Player_State_GotHit290if Player.Direction == FACING_LEFT291Player.Speed = 0x20000292else293Player.Speed = -0x20000294end if295end if296end if297end if298break299case 8300if Object.State == R6D_SETUP_WEB_SHOCK301if Object.WebDirection == DIAGONAL_WEB302if Player.InvincibleTimer == 0303Player.State = Player_State_GotHit304if Player.Direction == FACING_LEFT305Player.Speed = 0x20000306else307Player.Speed = -0x20000308end if309end if310end if311end if312break313end switch314315TempValue3 += 4316TempValue3 += Player.CollisionTop317Get16x16TileInfo(TempValue0, TempValue2, TempValue3, TILEINFO_ANGLEB)318if TempValue0 == 3319TempValue4 = TempValue3320TempValue4 &= 15321if TempValue4 < 8322if Player.State != Player_State_HangBar323Player.State = Player_State_HangBar324Player.YVelocity = 0325Player.Animation = ANI_HANGING326TempValue3 &= 0x7FF0327TempValue3 += 4328TempValue3 -= Player.CollisionTop329Player.iYPos = TempValue3330PlayStageSfx(SFX_S_CATCH, false)331Screen.AdjustCameraY = 0332end if333end if334end if335end sub336337338sub ObjectStartup339Object[19].Type = TypeName[R6 Setup]340Object[19].Priority = PRIORITY_ACTIVE341Object[19].DrawOrder = 2342343TempValue0 = 1344while TempValue0 < 3345RotatePalette(161, 163, 0)346CopyPalette(0, TempValue0)347TempValue0++348loop349RotatePalette(161, 163, 0)350end sub351352353// ========================354// Editor Subs355// ========================356357sub RSDKDraw358DrawSprite(0)359end sub360361362sub RSDKLoad363LoadSpriteSheet("Global/Display.gif")364SpriteFrame(-16, -16, 32, 32, 1, 143) // #0 - "Script" Icon365366SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")367end sub368369370