Path: blob/main/Scripts/R4/FanElevator.txt
1319 views
//----------------Sonic CD Fan Elevator Script----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.MinHeight6#alias Object.Value2 : Object.YVelocity78// HUD alias9#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1011// States12#alias 0 : FAN_ELEVATOR_CLOSED13#alias 1 : FAN_ELEVATOR_OPEN1415// Stage SFX16#alias 8 : SFX_S_SWITCH1718// Time Periods19#alias 0 : TIME_PRESENT20#alias 1 : TIME_PAST21#alias 2 : TIME_GOOD_FUTURE22#alias 3 : TIME_BAD_FUTURE2324// Priority25#alias 3 : PRIORITY_XBOUNDS262728sub ObjectMain29if Object.State == FAN_ELEVATOR_CLOSED30if Object.YVelocity < 0x1000031Object.YVelocity += 0x200032end if33if Object.YPos == Object.MinHeight34TempValue0 = Player.YPos35TempValue0 -= Object.YPos36if TempValue0 < 0xA0000037Object.YVelocity = 038end if39else40TempValue0 = Object.YPos41TempValue0 -= Object.MinHeight42if TempValue0 > 0x2A0000043Object.YPos = Object.MinHeight44end if45end if46end if47Object.YPos += Object.YVelocity48end sub495051sub ObjectPlayerInteraction52PlayerObjectCollision(C_PLATFORM, -32, -28, 32, 8)53if CheckResult == true54Object.YVelocity = -0x2000055if Object.State == FAN_ELEVATOR_CLOSED56PlayStageSfx(SFX_S_SWITCH, false)57end if58Object.State = FAN_ELEVATOR_OPEN59else60if Object.YVelocity < 061Object.YVelocity = 062end if63Object.State = FAN_ELEVATOR_CLOSED64end if65end sub666768sub ObjectDraw69if Object.State == FAN_ELEVATOR_CLOSED70DrawSprite(0)71DrawSprite(1)72DrawSpriteFX(0, FX_FLIP, Object.XPos, Object.YPos)73DrawSpriteFX(1, FX_FLIP, Object.XPos, Object.YPos)74else75DrawSprite(2)76DrawSprite(3)77DrawSpriteFX(2, FX_FLIP, Object.XPos, Object.YPos)78DrawSpriteFX(3, FX_FLIP, Object.XPos, Object.YPos)79end if80end sub818283sub ObjectStartup84LoadSpriteSheet("R4/Objects3.gif")85if HUD.CurrentTimePeriod < 2 // Present or Past86SpriteFrame(-32, -32, 32, 48, 84, 46) // #0 - Fan Elevator Body87SpriteFrame(-32, 16, 32, 16, 110, 144) // #1 - Fan closed looking down88SpriteFrame(-32, -32, 32, 48, 84, 95) // #2 - Fan Elevator Body pressed89SpriteFrame(-32, 16, 32, 16, 110, 161) // #3 - Fan open looking down90else91SpriteFrame(-32, -32, 32, 48, 84, 46) // #0 - Fan Elevator Body92SpriteFrame(-32, 16, 32, 16, 126, 228) // #1 - Fan closed looking down93SpriteFrame(-32, -32, 32, 48, 84, 95) // #2 - Fan Elevator Body pressed94SpriteFrame(-32, 16, 32, 16, 158, 228) // #3 - Fan open looking down95end if9697ArrayPos0 = 3298while ArrayPos0 < 105699if Object[ArrayPos0].Type == TypeName[Fan Elevator]100Object[ArrayPos0].Direction = FACING_LEFT101Object[ArrayPos0].Priority = PRIORITY_XBOUNDS102Object[ArrayPos0].MinHeight = Object[ArrayPos0].YPos103end if104ArrayPos0++105loop106end sub107108109// ========================110// Editor Subs111// ========================112113sub RSDKDraw114DrawSprite(0)115DrawSprite(1)116Object.Direction = FACING_LEFT117DrawSpriteFX(0, FX_FLIP, Object.XPos, Object.YPos)118DrawSpriteFX(1, FX_FLIP, Object.XPos, Object.YPos)119end sub120121122sub RSDKLoad123LoadSpriteSheet("R4/Objects3.gif")124CallFunction(EditorHelpers_FindTimePeriod)125if CheckResult < 2 // Present or Past126SpriteFrame(-32, -32, 32, 48, 84, 46) // #0 - Fan Elevator Body127SpriteFrame(-32, 16, 32, 16, 110, 144) // #1 - Fan closed looking down128SpriteFrame(-32, -32, 32, 48, 84, 95) // #2 - Fan Elevator Body pressed129SpriteFrame(-32, 16, 32, 16, 110, 161) // #3 - Fan open looking down130else131SpriteFrame(-32, -32, 32, 48, 84, 46) // #0 - Fan Elevator Body132SpriteFrame(-32, 16, 32, 16, 126, 228) // #1 - Fan closed looking down133SpriteFrame(-32, -32, 32, 48, 84, 95) // #2 - Fan Elevator Body pressed134SpriteFrame(-32, 16, 32, 16, 158, 228) // #3 - Fan open looking down135end if136137SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")138end sub139140141