Path: blob/main/Scripts/R4/BlockRowsC.txt
1319 views
//----------------Sonic CD Block Rows C Script----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.XVelocity6#alias Object.Value2 : Object.OnObject78// HUD Alias9#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1011// Time Periods12#alias 0 : TIME_PRESENT13#alias 1 : TIME_PAST14#alias 2 : TIME_GOOD_FUTURE15#alias 3 : TIME_BAD_FUTURE1617// Priority18#alias 0 : PRIORITY_BOUNDS1920// Collision21#alias 1 : PLAYER_COL_FLOOR22#alias 2 : PLAYER_COL_LWALL23#alias 3 : PLAYER_COL_RWALL24#alias 4 : PLAYER_COL_ROOF2526// Gravity27#alias 1 : GRAVITY_AIR282930sub ObjectMain31Object.XVelocity += 0x2000032Object.XVelocity %= 0x100000033Object.Priority = PRIORITY_BOUNDS34end sub353637sub ObjectPlayerInteraction38TempValue0 = Object.XPos39Object.XPos -= 0x100000040Object.XPos -= Object.XVelocity41TempValue1 = 042TempValue2 = 043TempValue3 = 044while TempValue1 < 345PlayerObjectCollision(C_BOX, -64, -64, 64, -32)46switch CheckResult47case PLAYER_COL_FLOOR48Player.XPos -= 0x2000049if Player.Speed == 050if Object.OnObject == false51Object.OnObject = true52// Truncate these values53Player.XPos &= 0xFFFF000054Object.XVelocity &= 0xFFFF000055end if56else57Object.OnObject = false58end if59break6061case PLAYER_COL_LWALL62TempValue2 = true63break6465case PLAYER_COL_RWALL66TempValue3 = true67break6869end switch70Object.XPos += 0x100000071TempValue1++72loop73Object.XPos = TempValue074Object.XPos -= 0x100000075Object.XPos += Object.XVelocity7677TempValue1 = 078while TempValue1 < 379PlayerObjectCollision(C_BOX, -64, 32, 64, 64)80switch CheckResult81case PLAYER_COL_FLOOR82Player.XPos += 0x2000083if Player.Speed == 084if Object.OnObject == false85Object.OnObject = true86Player.XPos &= 0xFFFF0000 // Truncate the value87Object.XVelocity &= 0xFFFF0000 // Truncate the value88end if89else90Object.OnObject = false91end if92break9394case PLAYER_COL_LWALL95TempValue2 = true96break9798case PLAYER_COL_RWALL99TempValue3 = true100break101102end switch103Object.XPos += 0x1000000104TempValue1++105loop106107if Player.Gravity == GRAVITY_AIR108Object.OnObject = false109end if110111Object.XPos = TempValue0112PlayerObjectCollision(C_BOX, -224, -128, -192, 128)113switch CheckResult114case PLAYER_COL_LWALL115TempValue2 = true116break117118case PLAYER_COL_RWALL119TempValue3 = true120break121122end switch123PlayerObjectCollision(C_BOX, 192, -128, 224, 128)124switch CheckResult125case PLAYER_COL_LWALL126TempValue2 = true127break128129case PLAYER_COL_RWALL130TempValue3 = true131break132133end switch134135if TempValue2 == true136if TempValue3 == true137CallFunction(Player_Kill)138end if139end if140end sub141142143sub ObjectDraw144TempValue0 = Object.XPos145TempValue0 -= 0x1000000146TempValue0 -= Object.XVelocity147148TempValue1 = Object.YPos149TempValue1 -= 0x300000150151TempValue2 = 0152while TempValue2 < 3153DrawSpriteXY(0, TempValue0, TempValue1)154DrawSpriteXY(1, TempValue0, TempValue1)155DrawSpriteXY(2, TempValue0, TempValue1)156DrawSpriteXY(3, TempValue0, TempValue1)157TempValue0 += 0x1000000158TempValue2++159loop160161TempValue0 = Object.XPos162TempValue0 -= 0x1000000163TempValue0 += Object.XVelocity164165TempValue1 = Object.YPos166TempValue1 += 0x300000167168TempValue2 = 0169while TempValue2 < 3170DrawSpriteXY(0, TempValue0, TempValue1)171DrawSpriteXY(1, TempValue0, TempValue1)172DrawSpriteXY(2, TempValue0, TempValue1)173DrawSpriteXY(3, TempValue0, TempValue1)174TempValue0 += 0x1000000175TempValue2++176loop177end sub178179180sub ObjectStartup181switch HUD.CurrentTimePeriod182case TIME_PRESENT183LoadSpriteSheet("R4/Objects.gif")184TempValue0 = 163185TempValue1 = 1186TempValue2 = 196187break188189case TIME_PAST190LoadSpriteSheet("R4/Objects2.gif")191TempValue0 = 1192TempValue1 = 157193TempValue2 = 34194break195196case TIME_GOOD_FUTURE197LoadSpriteSheet("R4/Objects2.gif")198TempValue0 = 1199TempValue1 = 190200TempValue2 = 34201break202203case TIME_BAD_FUTURE204LoadSpriteSheet("R4/Objects2.gif")205TempValue0 = 1206TempValue1 = 223207TempValue2 = 34208break209210end switch211212// Cube of blocks213SpriteFrame(-64, -16, 32, 32, TempValue0, TempValue1)214SpriteFrame(-32, -16, 32, 32, TempValue0, TempValue1)215SpriteFrame(0, -16, 32, 32, TempValue0, TempValue1)216SpriteFrame(32, -16, 32, 32, TempValue0, TempValue1)217end sub218219220// ========================221// Editor Subs222// ========================223224sub RSDKDraw225TempValue0 = Object.XPos226TempValue0 -= 0x1000000227228TempValue1 = Object.YPos229TempValue1 -= 0x300000230231TempValue2 = 0232while TempValue2 < 3233DrawSpriteXY(0, TempValue0, TempValue1)234DrawSpriteXY(1, TempValue0, TempValue1)235DrawSpriteXY(2, TempValue0, TempValue1)236DrawSpriteXY(3, TempValue0, TempValue1)237TempValue0 += 0x1000000238TempValue2++239loop240TempValue3 = Object.XPos241TempValue3 -= 0x2000000242DrawArrow(Object.XPos, TempValue1, TempValue3, TempValue1, 255, 255, 0)243TempValue3 = TempValue0244245246TempValue0 = Object.XPos247TempValue0 -= 0x1000000248TempValue1 = Object.YPos249TempValue1 += 0x300000250251TempValue2 = 0252while TempValue2 < 3253DrawSpriteXY(0, TempValue0, TempValue1)254DrawSpriteXY(1, TempValue0, TempValue1)255DrawSpriteXY(2, TempValue0, TempValue1)256DrawSpriteXY(3, TempValue0, TempValue1)257TempValue0 += 0x1000000258TempValue2++259loop260DrawArrow(Object.XPos, TempValue1, TempValue0, TempValue1, 255, 255, 0)261262if Editor.ShowGizmos == true263Editor.DrawingOverlay = true264TempValue2 = Object.YPos265TempValue2 -= 0x300000266DrawArrow(TempValue3, TempValue2, Object.XPos, TempValue2, 255, 255, 255)267TempValue2 = Object.XPos268TempValue2 -= 0x2000000269DrawArrow(TempValue2, TempValue1, Object.XPos, TempValue1, 255, 255, 255)270TempValue0 = Object.XPos271TempValue0 -= 0x2000000272TempValue1 = Object.YPos273TempValue1 -= 0x400000274DrawRectOutline(TempValue0, TempValue1, 0x400, 0x80, 255, 255, 0, 255)275Editor.DrawingOverlay = false276end if277end sub278279280sub RSDKLoad281CallFunction(EditorHelpers_FindTimePeriod)282switch CheckResult283case TIME_PRESENT284LoadSpriteSheet("R4/Objects.gif")285TempValue0 = 163286TempValue1 = 1287TempValue2 = 196288break289290case TIME_PAST291LoadSpriteSheet("R4/Objects2.gif")292TempValue0 = 1293TempValue1 = 157294TempValue2 = 34295break296297case TIME_GOOD_FUTURE298LoadSpriteSheet("R4/Objects2.gif")299TempValue0 = 1300TempValue1 = 190301TempValue2 = 34302break303304case TIME_BAD_FUTURE305LoadSpriteSheet("R4/Objects2.gif")306TempValue0 = 1307TempValue1 = 223308TempValue2 = 34309break310311end switch312313// Cube of blocks314SpriteFrame(-64, -16, 32, 32, TempValue0, TempValue1)315SpriteFrame(-32, -16, 32, 32, TempValue0, TempValue1)316SpriteFrame(0, -16, 32, 32, TempValue0, TempValue1)317SpriteFrame(32, -16, 32, 32, TempValue0, TempValue1)318319SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")320end sub321322323