Path: blob/main/Scripts/R1/InvBlock.txt
1319 views
//---------------Sonic CD Invisible Block Script--------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.OnObject6#alias Object.Value2 : Object.YOriginPos78// HUD Alias9#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1011// State12#alias 0 : INVBLOCK_IDLE13#alias 1 : INVBLOCK_FALL14#alias 2 : INVBLOCK_RESTORE1516// Priority17#alias 0 : PRIORITY_BOUNDS18#alias 1 : PRIORITY_ACTIVE1920// Time Periods21#alias 0 : TIME_PRESENT22#alias 1 : TIME_PAST23#alias 2 : TIME_GOOD_FUTURE24#alias 3 : TIME_BAD_FUTURE252627sub ObjectPlayerInteraction28if Object.State < INVBLOCK_RESTORE29PlayerObjectCollision(C_PLATFORM, -12, -12, 12, 12)30Object.OnObject = CheckResult31end if3233if HUD.CurrentTimePeriod > 1 // Inv Blocks in the future fall upon contact34switch Object.State35case INVBLOCK_IDLE36if Object.OnObject == true37Object.State = INVBLOCK_FALL38Object.Priority = PRIORITY_ACTIVE39Player.YPos += 0x2000040end if41break4243case INVBLOCK_FALL44if Object.OnObject == true45Player.YPos += 0x2000046end if47break48end switch49end if50end sub515253sub ObjectDraw54switch Object.State55case INVBLOCK_FALL56Object.YPos += 0x2000057if Object.OutOfBounds == true58Object.State = INVBLOCK_RESTORE59Object.YPos = Object.YOriginPos60end if61break6263case INVBLOCK_RESTORE64if Object.OutOfBounds == true65Object.State = INVBLOCK_IDLE66Object.Priority = PRIORITY_BOUNDS67end if68break6970end switch7172switch HUD.CurrentTimePeriod // they are invisible only in the present73case TIME_PRESENT74if Object.OnObject == true75if Object.Frame < 2476Object.Frame++77end if78else79if Object.Frame > 080Object.Frame--81end if82end if83DrawSprite(Object.Frame)84break8586case TIME_PAST87DrawSprite(5)88break8990case TIME_GOOD_FUTURE91case TIME_BAD_FUTURE92if Object.State < INVBLOCK_RESTORE93DrawSprite(5)94end if95break9697end switch98end sub99100101sub ObjectStartup102LoadSpriteSheet("R1/Objects.gif")103104SpriteFrame(0, 0, 4, 4, 68, 162) // #0 - Cheat Sprite105SpriteFrame(-12, -12, 24, 24, 93, 142) // #1 - Inv Block Appearing Frame 0106SpriteFrame(-12, -12, 24, 24, 93, 142) // #2 - Inv Block Appearing Frame 1107SpriteFrame(-12, -12, 24, 24, 93, 142) // #3 - Inv Block Appearing Frame 2108SpriteFrame(-12, -12, 24, 24, 93, 142) // #4 - Inv Block Appearing Frame 3109SpriteFrame(-12, -12, 24, 24, 68, 142) // #5 - Inv Block Appearing Frame 4 / Main Frame in other time zones110SpriteFrame(-12, -12, 24, 24, 68, 142) // #6 - Inv Block Appearing Frame 5111SpriteFrame(-12, -12, 24, 24, 68, 142) // #7 - Inv Block Appearing Frame 6112SpriteFrame(-12, -12, 24, 24, 68, 142) // #8 - Inv Block Appearing Frame 7113SpriteFrame(-12, -12, 24, 24, 118, 142) // #9 - Inv Block Appearing Frame 8114SpriteFrame(-12, -12, 24, 24, 118, 142) // #10 - Inv Block Appearing Frame 9115SpriteFrame(-12, -12, 24, 24, 118, 142) // #11 - Inv Block Appearing Frame 10116SpriteFrame(-12, -12, 24, 24, 68, 142) // #12 - Inv Block Appearing Frame 11117SpriteFrame(-12, -12, 24, 24, 68, 142) // #13 - Inv Block Appearing Frame 12118SpriteFrame(-12, -12, 24, 24, 68, 142) // #14 - Inv Block Appearing Frame 13119SpriteFrame(-12, -12, 24, 24, 143, 142) // #15 - Inv Block Appearing Frame 14120SpriteFrame(-12, -12, 24, 24, 143, 142) // #16 - Inv Block Appearing Frame 15121SpriteFrame(-12, -12, 24, 24, 143, 142) // #17 - Inv Block Appearing Frame 16122SpriteFrame(-12, -12, 24, 24, 68, 142) // #18 - Inv Block Appearing Frame 17123SpriteFrame(-12, -12, 24, 24, 68, 142) // #19 - Inv Block Appearing Frame 18124SpriteFrame(-12, -12, 24, 24, 68, 142) // #20 - Inv Block Appearing Frame 19125SpriteFrame(-12, -12, 24, 24, 168, 142) // #21 - Inv Block Appearing Frame 20126SpriteFrame(-12, -12, 24, 24, 168, 142) // #22 - Inv Block Appearing Frame 21127SpriteFrame(-12, -12, 24, 24, 168, 142) // #23 - Inv Block Appearing Frame 22128SpriteFrame(-12, -12, 24, 24, 68, 142) // #24 - Inv Block Appearing Frame 23 / Main Frame in the Present129130// Used to be below LoadSpriteSheet, moved here for consistency131ArrayPos0 = 32132while ArrayPos0 < 1056133if Object[ArrayPos0].Type == TypeName[Invisible Block]134Object[ArrayPos0].YOriginPos = Object[ArrayPos0].YPos135end if136ArrayPos0++137loop138139end sub140141142// ========================143// Editor Subs144// ========================145146sub RSDKDraw147DrawSprite(0)148end sub149150151sub RSDKLoad152LoadSpriteSheet("R1/Objects.gif")153SpriteFrame(-12, -12, 24, 24, 68, 142) // #0 - Inv Block Appearing Frame 23 / Main Frame in the Present154155SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")156end sub157158159