Path: blob/main/Scripts/R4/FallingBlocks.txt
1319 views
//----------------Sonic CD Falling Blocks 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.YVelocity7#alias Object.Value2 : Object.YOriginPos8#alias Object.Value3 : Object.TargetHeight9#alias Object.Value4 : Object.R4BlockSheet10#alias Object.Value5 : Object.SpikeSheet1112// HUD alias13#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1415// States16#alias 0 : FALLINGBLOCKS_SETUP17#alias 1 : FALLINGBLOCKS_CRUMBLE18#alias 2 : FALLINGBLOCKS_DELAY19#alias 3 : FALLINGBLOCKS_FALL2021// Time Periods22#alias 0 : TIME_PRESENT23#alias 1 : TIME_PAST24#alias 2 : TIME_GOOD_FUTURE25#alias 3 : TIME_BAD_FUTURE2627// Priority28#alias 0 : PRIORITY_BOUNDS29#alias 1 : PRIORITY_ACTIVE3031// Collision Sides32#alias 0 : CSIDE_FLOOR3334// Collision35#alias 4 : PLAYER_COL_ROOF3637// Gravity38#alias 1 : GRAVITY_AIR394041sub ObjectMain42switch Object.State43case FALLINGBLOCKS_SETUP44PlayerObjectCollision(C_TOUCH, -16, -64, 16, 192)45if CheckResult == true46Object.Priority = PRIORITY_ACTIVE4748Object.YVelocity = 04950Object.TargetHeight = Object.YPos51Object.TargetHeight += 0x2000005253Object.State++54end if55break5657case FALLINGBLOCKS_CRUMBLE58Object.YVelocity += 0x200059Object.YPos += Object.YVelocity60if Object.YPos >= Object.TargetHeight61Object.YPos = Object.TargetHeight62Object.YVelocity = 06364Object.State++65end if66break6768case FALLINGBLOCKS_DELAY69if Object.Timer < 3070Object.Timer++71else72Object.Timer = 073Object.State++74end if75break7677case FALLINGBLOCKS_FALL78Object.YVelocity += 0x200079Object.YPos += Object.YVelocity8081ObjectTileCollision(CSIDE_FLOOR, 0, 32, 0)82if CheckResult == true83Object.State++84end if85break8687end switch8889if Object.OutOfBounds == true90Object.YPos = Object.YOriginPos91Object.Priority = PRIORITY_BOUNDS9293Object.State = FALLINGBLOCKS_SETUP94end if95end sub969798sub ObjectPlayerInteraction99PlayerObjectCollision(C_BOX, -16, -64, 16, 62)100if CheckResult == PLAYER_COL_ROOF101if Player.Gravity == GRAVITY_AIR102CallFunction(Player_Hit)103else104CallFunction(Player_Kill)105end if106end if107end sub108109110sub ObjectDraw111Object.SpriteSheet = Object.R4BlockSheet112DrawSpriteXY(0, Object.XPos, Object.YPos)113DrawSpriteXY(1, Object.XPos, Object.YPos)114DrawSpriteXY(2, Object.XPos, Object.YPos)115116Object.SpriteSheet = Object.SpikeSheet117DrawSpriteXY(3, Object.XPos, Object.YPos)118end sub119120121sub ObjectStartup122switch HUD.CurrentTimePeriod123case TIME_PRESENT124LoadSpriteSheet("R4/Objects.gif")125TempValue0 = 163126TempValue1 = 1127TempValue2 = 196128SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1129SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2130SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1) // #2 - R4 Block 3131break132133case TIME_PAST134LoadSpriteSheet("R4/Objects2.gif")135TempValue0 = 1136TempValue1 = 157137TempValue2 = 34138SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1139SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2140SpriteFrame(-16, 0, 32, 32, TempValue2, TempValue1) // #2 - R4 Block 3141break142143case TIME_GOOD_FUTURE144LoadSpriteSheet("R4/Objects2.gif")145TempValue0 = 1146TempValue1 = 190147TempValue2 = 34148SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1149SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2150SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1) // #2 - R4 Block 3151break152153case TIME_BAD_FUTURE154LoadSpriteSheet("R4/Objects2.gif")155TempValue0 = 1156TempValue1 = 223157TempValue2 = 34158SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1159SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2160SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1) // #2 - R4 Block 3161break162163end switch164TempValue0 = Object.SpriteSheet165166LoadSpriteSheet("Global/Items3.gif")167TempValue1 = Object.SpriteSheet168SpriteFrame(-16, 32, 32, 32, 50, 100) // #3 - Spikes169170ArrayPos0 = 32171while ArrayPos0 < 1056172if Object[ArrayPos0].Type == TypeName[Falling Blocks]173Object[ArrayPos0].R4BlockSheet = TempValue0174Object[ArrayPos0].SpikeSheet = TempValue1175Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos176end if177ArrayPos0++178loop179end sub180181182// ========================183// Editor Subs184// ========================185186sub RSDKDraw187LoadSpriteSheet("R4/Objects.gif")188TempValue0 = Object.SpriteSheet189LoadSpriteSheet("Global/Items3.gif")190TempValue1 = Object.SpriteSheet191192Object.SpriteSheet = TempValue0193DrawSpriteXY(0, Object.XPos, Object.YPos)194DrawSpriteXY(1, Object.XPos, Object.YPos)195DrawSpriteXY(2, Object.XPos, Object.YPos)196197Object.SpriteSheet = TempValue1198DrawSpriteXY(3, Object.XPos, Object.YPos)199end sub200201202sub RSDKLoad203CallFunction(EditorHelpers_FindTimePeriod)204switch CheckResult205case TIME_PRESENT206LoadSpriteSheet("R4/Objects.gif")207TempValue0 = 163208TempValue1 = 1209TempValue2 = 196210SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1211SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2212SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1) // #2 - R4 Block 3213break214215case TIME_PAST216LoadSpriteSheet("R4/Objects2.gif")217TempValue0 = 1218TempValue1 = 157219TempValue2 = 34220SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1221SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2222SpriteFrame(-16, 0, 32, 32, TempValue2, TempValue1) // #2 - R4 Block 3223break224225case TIME_GOOD_FUTURE226LoadSpriteSheet("R4/Objects2.gif")227TempValue0 = 1228TempValue1 = 190229TempValue2 = 34230SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1231SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2232SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1) // #2 - R4 Block 3233break234235case TIME_BAD_FUTURE236LoadSpriteSheet("R4/Objects2.gif")237TempValue0 = 1238TempValue1 = 223239TempValue2 = 34240SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1) // #0 - R4 Block 1241SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1) // #1 - R4 Block 2242SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1) // #2 - R4 Block 3243break244245end switch246TempValue0 = Object.SpriteSheet247248LoadSpriteSheet("Global/Items3.gif")249TempValue1 = Object.SpriteSheet250SpriteFrame(-16, 32, 32, 32, 50, 100) // #3 - Spikes251252SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")253end sub254255256