Path: blob/main/Scripts/R4/BlockRowsB.txt
1319 views
//----------------Sonic CD Block Rows B 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// States12#alias 0 : BLOCKROWSB_MOVE_RIGHT13#alias 1 : BLOCKROWSB_MOVE_LEFT1415// Time Periods16#alias 0 : TIME_PRESENT17#alias 1 : TIME_PAST18#alias 2 : TIME_GOOD_FUTURE19#alias 3 : TIME_BAD_FUTURE2021// Collision22#alias 1 : PLAYER_COL_FLOOR23#alias 2 : PLAYER_COL_LWALL24#alias 3 : PLAYER_COL_RWALL25#alias 4 : PLAYER_COL_ROOF2627// Gravity28#alias 1 : GRAVITY_AIR2930// Priority31#alias 3 : PRIORITY_XBOUNDS32333435sub ObjectMain36if Object.State == BLOCKROWSB_MOVE_RIGHT37Object.XVelocity += 0x800038if Object.XVelocity >= 0xC0000039Object.XVelocity = 0xC0000040Object.State = BLOCKROWSB_MOVE_LEFT41end if42else43Object.XVelocity -= 0x800044if Object.XVelocity <= 045Object.XVelocity = 046Object.State = BLOCKROWSB_MOVE_RIGHT47end if48end if49end sub505152sub ObjectPlayerInteraction53TempValue0 = Object.XPos54TempValue1 = 055TempValue2 = 056Object.XPos -= 0x60000057Object.XPos += Object.XVelocity5859PlayerObjectCollision(C_BOX, -32, -32, 32, 32)60switch CheckResult61case PLAYER_COL_FLOOR62if Object.State == BLOCKROWSB_MOVE_RIGHT63Player.XPos += 0x800064else65Player.XPos -= 0x800066end if6768if Player.Speed == 069if Object.OnObject == false70// Truncate these values71Player.XPos &= 0xFFFF000072Object.XVelocity &= 0xFFFF000073Object.OnObject = true74end if75else76Object.OnObject = false77end if78break7980case PLAYER_COL_LWALL81TempValue1 = true82break8384case PLAYER_COL_RWALL85TempValue2 = true86break8788end switch8990Object.XPos = TempValue091if Object.PropertyValue > 192PlayerObjectCollision(C_BOX, -160, -32, -128, 32)93if CheckResult == PLAYER_COL_RWALL94TempValue2 = true95end if96end if9798PlayerObjectCollision(C_BOX, 128, -32, 160, 32)99if CheckResult == PLAYER_COL_LWALL100TempValue1 = true101end if102103if TempValue1 == true104if TempValue2 == true105CallFunction(Player_Kill)106end if107end if108109if Player.Gravity == GRAVITY_AIR110Object.OnObject = false111end if112end sub113114115sub ObjectDraw116TempValue0 = Object.XPos117TempValue0 -= 0x600000118TempValue0 += Object.XVelocity119DrawSpriteXY(0, TempValue0, Object.YPos)120DrawSpriteXY(1, TempValue0, Object.YPos)121DrawSpriteXY(2, TempValue0, Object.YPos)122DrawSpriteXY(3, TempValue0, Object.YPos)123end sub124125126sub ObjectStartup127switch HUD.CurrentTimePeriod128case TIME_PRESENT129LoadSpriteSheet("R4/Objects.gif")130TempValue0 = 163131TempValue1 = 1132TempValue2 = 196133break134135case TIME_PAST136LoadSpriteSheet("R4/Objects2.gif")137TempValue0 = 1138TempValue1 = 157139TempValue2 = 34140break141142case TIME_GOOD_FUTURE143LoadSpriteSheet("R4/Objects2.gif")144TempValue0 = 1145TempValue1 = 190146TempValue2 = 34147break148149case TIME_BAD_FUTURE150LoadSpriteSheet("R4/Objects2.gif")151TempValue0 = 1152TempValue1 = 223153TempValue2 = 34154break155156end switch157158// Cube of blocks159SpriteFrame(-32, -32, 32, 32, TempValue0, TempValue1)160SpriteFrame(0, -32, 32, 32, TempValue0, TempValue1)161SpriteFrame(-32, 0, 32, 32, TempValue0, TempValue1)162SpriteFrame(0, 0, 32, 32, TempValue0, TempValue1)163164165ArrayPos0 = 32166while ArrayPos0 < 1056167if Object[ArrayPos0].Type == TypeName[Block Rows B]168Object[ArrayPos0].Priority = PRIORITY_XBOUNDS169switch Object[ArrayPos0].PropertyValue170case 1171Object[ArrayPos0].XVelocity = 0x400000172break173174case 2175Object[ArrayPos0].XVelocity = 0x800000176break177178case 3179Object[ArrayPos0].XVelocity = 0xC00000180Object[ArrayPos0].State = BLOCKROWSB_MOVE_LEFT181break182183case 4184Object[ArrayPos0].XVelocity = 0x800000185Object[ArrayPos0].State = BLOCKROWSB_MOVE_LEFT186break187188end switch189end if190ArrayPos0++191loop192end sub193194195// ========================196// Editor Subs197// ========================198199sub RSDKDraw200TempValue0 = Object.XPos201TempValue0 -= 0x600000202switch object.PropertyValue203case 1204Tempvalue0 += 0x400000205break206case 2207Tempvalue0 += 0x800000208break209case 3210Tempvalue0 += 0xC00000211break212case 4213Tempvalue0 += 0x800000214break215end switch216DrawSpriteXY(0, TempValue0, Object.YPos)217DrawSpriteXY(1, TempValue0, Object.YPos)218DrawSpriteXY(2, TempValue0, Object.YPos)219DrawSpriteXY(3, TempValue0, Object.YPos)220TempValue1 = Object.XPos221TempValue1 -= 0x600000222TempValue1 += 0xC00000223TempValue2 = Object.XPos224TempValue2 -= 0x600000225if object.PropertyValue < 3226DrawArrow(Tempvalue0, Object.YPos, Tempvalue1, Object.YPos, 255, 128, 0)227else228DrawArrow(Tempvalue0, Object.YPos, TempValue2, Object.YPos, 255, 128, 0)229end if230231if Editor.ShowGizmos == true232TempValue3 = Object.YPos233TempValue3 -= 0x200000234TempValue4 = Object.XPos235TempValue4 -= 0x600000236Editor.DrawingOverlay = true237DrawRectOutline(TempValue4, TempValue3, 0xC0, 0x40, 255, 255, 255, 255)238TempValue4 -= 0x200000239DrawRectOutline(TempValue4, TempValue3, 0x100, 0x40, 255, 255, 0, 255)240if object.PropertyValue < 3241DrawArrow(Object.XPos, Object.YPos, TempValue2, Object.YPos, 255, 255, 255)242else243DrawArrow(Object.XPos, Object.YPos, TempValue1, Object.YPos, 255, 255, 255)244end if245Editor.DrawingOverlay = false246end if247end sub248249250sub RSDKLoad251CallFunction(EditorHelpers_FindTimePeriod)252switch CheckResult253case TIME_PRESENT254LoadSpriteSheet("R4/Objects.gif")255TempValue0 = 163256TempValue1 = 1257TempValue2 = 196258break259260case TIME_PAST261LoadSpriteSheet("R4/Objects2.gif")262TempValue0 = 1263TempValue1 = 157264TempValue2 = 34265break266267case TIME_GOOD_FUTURE268LoadSpriteSheet("R4/Objects2.gif")269TempValue0 = 1270TempValue1 = 190271TempValue2 = 34272break273274case TIME_BAD_FUTURE275LoadSpriteSheet("R4/Objects2.gif")276TempValue0 = 1277TempValue1 = 223278TempValue2 = 34279break280281end switch282283// Cube of blocks284SpriteFrame(-32, -32, 32, 32, TempValue0, TempValue1)285SpriteFrame(0, -32, 32, 32, TempValue0, TempValue1)286SpriteFrame(-32, 0, 32, 32, TempValue0, TempValue1)287SpriteFrame(0, 0, 32, 32, TempValue0, TempValue1)288289SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")290end sub291292293