Path: blob/main/Scripts/R4/BlockRowsA.txt
1319 views
//----------------Sonic CD Block Rows A 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 += 0x800032Object.XVelocity %= 0x9000003334Object.Priority = PRIORITY_BOUNDS35end sub363738sub ObjectPlayerInteraction39TempValue0 = Object.XPos4041Object.XPos -= 0xA0000042Object.XPos -= Object.XVelocity4344TempValue1 = 045TempValue2 = 046TempValue3 = 04748while TempValue1 < 449PlayerObjectCollision(C_BOX, -32, -64, 32, 0)50switch CheckResult51case PLAYER_COL_FLOOR52Player.XPos -= 0x800053if Player.Speed == 054if Object.OnObject == false55Object.OnObject = true56// Round these values57Player.XPos &= 0xFFFF000058Object.XVelocity &= 0xFFFF000059end if60else61Object.OnObject = false62end if63break6465case PLAYER_COL_LWALL66TempValue2 = true67break6869case PLAYER_COL_RWALL70TempValue3 = true71break7273end switch74Object.XPos += 0x90000075TempValue1++76loop7778Object.XPos = TempValue079Object.XPos -= 0x130000080Object.XPos += Object.XVelocity8182TempValue1 = 083while TempValue1 < 484PlayerObjectCollision(C_BOX, -32, 0, 32, 64)85switch CheckResult86case PLAYER_COL_FLOOR87Player.XPos += 0x800088if Player.Speed == 089if Object.OnObject == false90Object.OnObject = true91// Truncate these values92Player.XPos &= 0xFFFF000093Object.XVelocity &= 0xFFFF000094end if95else96Object.OnObject = false97end if98break99100case PLAYER_COL_LWALL101TempValue2 = true102break103104case PLAYER_COL_RWALL105TempValue3 = true106break107108end switch109Object.XPos += 0x900000110TempValue1++111loop112113if Player.Gravity == GRAVITY_AIR114Object.OnObject = false115end if116117Object.XPos = TempValue0118PlayerObjectCollision(C_BOX, -224, -128, -192, 128)119switch CheckResult120case PLAYER_COL_LWALL121TempValue2 = true122break123124case PLAYER_COL_RWALL125TempValue3 = true126break127128end switch129130PlayerObjectCollision(C_BOX, 192, -128, 224, 128)131switch CheckResult132case PLAYER_COL_LWALL133TempValue2 = true134break135136case PLAYER_COL_RWALL137TempValue3 = true138break139140end switch141142if TempValue2 == true143if TempValue3 == true144CallFunction(Player_Kill)145end if146end if147end sub148149150sub ObjectDraw151TempValue0 = Object.XPos152TempValue0 -= 0xA00000153TempValue0 -= Object.XVelocity154155TempValue1 = Object.YPos156TempValue1 -= 0x200000157TempValue2 = 0158while TempValue2 < 4159DrawSpriteXY(0, TempValue0, TempValue1)160DrawSpriteXY(1, TempValue0, TempValue1)161DrawSpriteXY(2, TempValue0, TempValue1)162DrawSpriteXY(3, TempValue0, TempValue1)163TempValue0 += 0x900000164TempValue2++165loop166167TempValue0 = Object.XPos168TempValue0 -= 0x1300000169TempValue0 += Object.XVelocity170171TempValue1 = Object.YPos172TempValue1 += 0x200000173TempValue2 = 0174while TempValue2 < 4175DrawSpriteXY(0, TempValue0, TempValue1)176DrawSpriteXY(1, TempValue0, TempValue1)177DrawSpriteXY(2, TempValue0, TempValue1)178DrawSpriteXY(3, TempValue0, TempValue1)179TempValue0 += 0x900000180TempValue2++181loop182end sub183184185sub ObjectStartup186switch HUD.CurrentTimePeriod187case TIME_PRESENT188LoadSpriteSheet("R4/Objects.gif")189TempValue0 = 163190TempValue1 = 1191TempValue2 = 196192break193194case TIME_PAST195LoadSpriteSheet("R4/Objects2.gif")196TempValue0 = 1197TempValue1 = 157198TempValue2 = 34199break200201case TIME_GOOD_FUTURE202LoadSpriteSheet("R4/Objects2.gif")203TempValue0 = 1204TempValue1 = 190205TempValue2 = 34206break207208case TIME_BAD_FUTURE209LoadSpriteSheet("R4/Objects2.gif")210TempValue0 = 1211TempValue1 = 223212TempValue2 = 34213break214215end switch216217// Cube of blocks218SpriteFrame(-32, -32, 32, 32, TempValue0, TempValue1)219SpriteFrame(0, -32, 32, 32, TempValue0, TempValue1)220SpriteFrame(-32, 0, 32, 32, TempValue0, TempValue1)221SpriteFrame(0, 0, 32, 32, TempValue0, TempValue1)222end sub223224225// ========================226// Editor Subs227// ========================228229sub RSDKDraw230TempValue0 = Object.XPos231TempValue0 -= 0xA00000232233TempValue1 = Object.YPos234TempValue1 -= 0x200000235TempValue2 = 0236while TempValue2 < 4237DrawSpriteXY(0, TempValue0, TempValue1)238DrawSpriteXY(1, TempValue0, TempValue1)239DrawSpriteXY(2, TempValue0, TempValue1)240DrawSpriteXY(3, TempValue0, TempValue1)241TempValue0 += 0x900000242TempValue2++243loop244TempValue3 = TempValue0245TempValue3 -= 0x900000246247TempValue0 = Object.XPos248TempValue0 -= 0x1300000249DrawArrow(Object.XPos, TempValue1, TempValue0, TempValue1, 255, 128, 0)250251TempValue1 = Object.YPos252TempValue1 += 0x200000253TempValue2 = 0254while TempValue2 < 4255DrawSpriteXY(0, TempValue0, TempValue1)256DrawSpriteXY(1, TempValue0, TempValue1)257DrawSpriteXY(2, TempValue0, TempValue1)258DrawSpriteXY(3, TempValue0, TempValue1)259TempValue0 += 0x900000260TempValue2++261loop262DrawArrow(Object.XPos, TempValue1, TempValue0, TempValue1, 255, 128, 0)263264if Editor.ShowGizmos == true265Editor.DrawingOverlay = true266TempValue2 = Object.YPos267TempValue2 -= 0x200000268DrawArrow(TempValue3, TempValue2, Object.XPos, TempValue2, 255, 255, 255)269TempValue2 = Object.XPos270TempValue2 -= 0x1300000271DrawArrow(TempValue2, TempValue1, Object.XPos, TempValue1, 255, 255, 255)272TempValue0 = Object.XPos273TempValue0 -= 0x1300000274TempValue1 = Object.YPos275TempValue1 -= 0x400000276DrawRectOutline(TempValue0, TempValue1, 0x240, 0x80, 255, 255, 0, 255)277Editor.DrawingOverlay = false278end if279end sub280281282sub RSDKLoad283CallFunction(EditorHelpers_FindTimePeriod)284switch CheckResult285case TIME_PRESENT286LoadSpriteSheet("R4/Objects.gif")287TempValue0 = 163288TempValue1 = 1289TempValue2 = 196290break291292case TIME_PAST293LoadSpriteSheet("R4/Objects2.gif")294TempValue0 = 1295TempValue1 = 157296TempValue2 = 34297break298299case TIME_GOOD_FUTURE300LoadSpriteSheet("R4/Objects2.gif")301TempValue0 = 1302TempValue1 = 190303TempValue2 = 34304break305306case TIME_BAD_FUTURE307LoadSpriteSheet("R4/Objects2.gif")308TempValue0 = 1309TempValue1 = 223310TempValue2 = 34311break312313end switch314315// Cube of blocks316SpriteFrame(-32, -32, 32, 32, TempValue0, TempValue1)317SpriteFrame(0, -32, 32, 32, TempValue0, TempValue1)318SpriteFrame(-32, 0, 32, 32, TempValue0, TempValue1)319SpriteFrame(0, 0, 32, 32, TempValue0, TempValue1)320321SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")322end sub323324325326