Path: blob/main/Scripts/R4/HOBlocks.txt
1319 views
//--------------Sonic CD Horizontal Blocks Script-------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.XDrawPos6#alias Object.Value2 : Object.XOffSet7#alias Object.Value3 : Object.Angle8#alias Object.Value4 : Object.AgainstBlock910// HUD alias11#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1213// Time Periods14#alias 0 : TIME_PRESENT15#alias 1 : TIME_PAST16#alias 2 : TIME_GOOD_FUTURE17#alias 3 : TIME_BAD_FUTURE1819// Collision20#alias 1 : PLAYER_COL_FLOOR21#alias 2 : PLAYER_COL_LWALL22#alias 3 : PLAYER_COL_RWALL232425sub ObjectMain26Object.Angle = Oscillation27Object.Angle += Object.PropertyValue28Object.Angle <<= 12930Cos(Object.XOffSet, Object.Angle)31Object.XOffSet <<= 1232Object.XOffSet += Object.XPos33Object.XOffSet &= 0xFFFF0000 // Truncate the value34Object.XOffSet -= Object.XDrawPos3536Object.AgainstBlock = false37end sub383940sub ObjectPlayerInteraction41TempValue0 = Object.XPos42Object.XPos = Object.XDrawPos4344PlayerObjectCollision(C_BOX, -64, -16, 64, 16)45switch CheckResult46case PLAYER_COL_FLOOR47Player.XPos += Object.XOffSet48break4950case PLAYER_COL_LWALL51// Check the previous block's collision52if Object[-1].AgainstBlock == true53CallFunction(Player_Kill)54end if55break5657case PLAYER_COL_RWALL58Object.AgainstBlock = true59break60end switch6162Object.XPos = TempValue063end sub646566sub ObjectDraw67Cos(Object.XDrawPos, Object.Angle)68Object.XDrawPos <<= 1269Object.XDrawPos += Object.XPos70Object.XDrawPos &= 0xFFFF0000 // Truncate the value7172DrawSpriteXY(0, Object.XDrawPos, Object.YPos)73DrawSpriteXY(1, Object.XDrawPos, Object.YPos)74DrawSpriteXY(2, Object.XDrawPos, Object.YPos)75DrawSpriteXY(3, Object.XDrawPos, Object.YPos)76end sub777879sub ObjectStartup80switch HUD.CurrentTimePeriod81case TIME_PRESENT82LoadSpriteSheet("R4/Objects.gif")83TempValue0 = 16384TempValue1 = 185TempValue2 = 19686break8788case TIME_PAST89LoadSpriteSheet("R4/Objects2.gif")90TempValue0 = 191TempValue1 = 15792TempValue2 = 3493break9495case TIME_GOOD_FUTURE96LoadSpriteSheet("R4/Objects2.gif")97TempValue0 = 198TempValue1 = 19099TempValue2 = 34100break101102case TIME_BAD_FUTURE103LoadSpriteSheet("R4/Objects2.gif")104TempValue0 = 1105TempValue1 = 223106TempValue2 = 34107break108end switch109110// R4 Blocks111SpriteFrame(-64, -16, 32, 32, TempValue0, TempValue1)112SpriteFrame(-32, -16, 32, 32, TempValue0, TempValue1)113SpriteFrame(0, -16, 32, 32, TempValue0, TempValue1)114SpriteFrame(32, -16, 32, 32, TempValue0, TempValue1)115end sub116117118// ========================119// Editor Subs120// ========================121122sub RSDKDraw123DrawSpriteXY(0, Object.XPos, Object.YPos)124DrawSpriteXY(1, Object.XPos, Object.YPos)125DrawSpriteXY(2, Object.XPos, Object.YPos)126DrawSpriteXY(3, Object.XPos, Object.YPos)127end sub128129130sub RSDKLoad131CallFunction(EditorHelpers_FindTimePeriod)132switch CheckResult133case TIME_PRESENT134LoadSpriteSheet("R4/Objects.gif")135TempValue0 = 163136TempValue1 = 1137TempValue2 = 196138break139140case TIME_PAST141LoadSpriteSheet("R4/Objects2.gif")142TempValue0 = 1143TempValue1 = 157144TempValue2 = 34145break146147case TIME_GOOD_FUTURE148LoadSpriteSheet("R4/Objects2.gif")149TempValue0 = 1150TempValue1 = 190151TempValue2 = 34152break153154case TIME_BAD_FUTURE155LoadSpriteSheet("R4/Objects2.gif")156TempValue0 = 1157TempValue1 = 223158TempValue2 = 34159break160end switch161162// R4 Blocks163SpriteFrame(-64, -16, 32, 32, TempValue0, TempValue1)164SpriteFrame(-32, -16, 32, 32, TempValue0, TempValue1)165SpriteFrame(0, -16, 32, 32, TempValue0, TempValue1)166SpriteFrame(32, -16, 32, 32, TempValue0, TempValue1)167168SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")169end sub170171172