Path: blob/main/Scripts/R8/OneWayDoor.txt
1319 views
//---------------Sonic CD One Way Door Script-----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value1 : Object.YOffset67// States8#alias 0 : ONEWAYDOOR_CLOSE9#alias 1 : ONEWAYDOOR_OPEN1011// Property Values12#alias 1 : OPEN_FROM_LEFT13#alias 2 : OPEN_FROM_RIGHT14#alias 3 : OPEN_FROM_LEFT_NO_LIGHTS1516// Collision17#alias 1 : PLAYER_COL_FLOOR18#alias 2 : PLAYER_COL_LWALL19#alias 3 : PLAYER_COL_RWALL20#alias 4 : PLAYER_COL_ROOF212223sub ObjectMain24if Object.State == ONEWAYDOOR_CLOSE25if Object.YOffset > 026Object.YOffset -= 0x2000027end if28else29if Object.YOffset < 0x20000030Object.YOffset += 0x2000031end if32end if33end sub343536sub ObjectPlayerInteraction37TempValue0 = Object.YPos38TempValue1 = Player.YPos39Object.YPos -= Object.YOffset40PlayerObjectCollision(C_BOX, -8, -48, 8, -16)41if CheckResult > PLAYER_COL_FLOOR42Player.YPos = TempValue143end if4445Object.YPos = TempValue046Object.YPos += Object.YOffset47PlayerObjectCollision(C_BOX, -8, -16, 8, 16)48if CheckResult > PLAYER_COL_FLOOR49Player.YPos = TempValue150end if5152Object.YPos = TempValue053if Object.PropertyValue == OPEN_FROM_RIGHT54PlayerObjectCollision(C_TOUCH, -96, -48, 8, 16)55else56PlayerObjectCollision(C_TOUCH, -8, -48, 96, 16)57end if5859Object.State = CheckResult60end sub616263sub ObjectDraw64Object.Frame = Object.AnimationTimer65Object.Frame /= 366switch Object.PropertyValue67case OPEN_FROM_LEFT68TempValue0 = Object.YOffset69FlipSign(TempValue0)70TempValue0 += Object.YPos71DrawSpriteXY(0, Object.XPos, TempValue0)72Object.Frame += 673DrawSpriteXY(Object.Frame, Object.XPos, TempValue0)74TempValue0 = Object.YOffset75TempValue0 += Object.YPos76DrawSpriteXY(1, Object.XPos, TempValue0)77Object.Frame += 278DrawSpriteXY(Object.Frame, Object.XPos, TempValue0)79break8081case OPEN_FROM_RIGHT82TempValue0 = Object.YOffset83FlipSign(TempValue0)84TempValue0 += Object.YPos85DrawSpriteXY(0, Object.XPos, TempValue0)86Object.Frame += 287DrawSpriteXY(Object.Frame, Object.XPos, TempValue0)88TempValue0 = Object.YOffset89TempValue0 += Object.YPos90DrawSpriteXY(1, Object.XPos, TempValue0)91Object.Frame += 292DrawSpriteXY(Object.Frame, Object.XPos, TempValue0)93break9495case OPEN_FROM_LEFT_NO_LIGHTS96TempValue0 = Object.YOffset97FlipSign(TempValue0)98TempValue0 += Object.YPos99DrawSpriteXY(0, Object.XPos, TempValue0)100TempValue0 = Object.YOffset101TempValue0 += Object.YPos102DrawSpriteXY(1, Object.XPos, TempValue0)103break104end switch105106Object.AnimationTimer++107Object.AnimationTimer %= 6108end sub109110111sub ObjectStartup112LoadSpriteSheet("R8/Objects.gif")113114SpriteFrame(-8, -48, 16, 32, 58, 131) // #0 - Left One Way Door115SpriteFrame(-8, -16, 16, 32, 58, 131) // #1 - Right One Way Door116117SpriteFrame(-16, -36, 8, 8, 50, 173) // #2 - Left Door Lights (left side) frame 0118SpriteFrame(-16, -36, 8, 8, 59, 173) // #3 - Left Door Lights (left side) frame 1119SpriteFrame(-16, -4, 8, 8, 50, 173) // #4 - Right Door Lights (left side) frame 0120SpriteFrame(-16, -4, 8, 8, 59, 173) // #5 - Right Door Lights (left side) frame 1121122SpriteFrame(8, -36, 8, 8, 50, 164) // #6 - Left Door Lights (right side) frame 0123SpriteFrame(8, -36, 8, 8, 59, 164) // #7 - Left Door Lights (right side) frame 1124SpriteFrame(8, -4, 8, 8, 50, 164) // #8 - Right Door Lights (right side) frame 0125SpriteFrame(8, -4, 8, 8, 59, 164) // #9 - Right Door Lights (right side) frame 1126end sub127128129// ========================130// Editor Subs131// ========================132133sub RSDKEdit134if Editor.ReturnVariable == true135switch Editor.VariableID136case EDIT_VAR_PROPVAL // Property Value137CheckResult = Object.PropertyValue138CheckResult &= 3139break140case 0 // type141CheckResult = Object.PropertyValue142CheckResult &= 3143break144end switch145else146switch Editor.VariableID147case EDIT_VAR_PROPVAL // Property Value148Object.PropertyValue = Editor.VariableValue149Object.PropertyValue &= 3150break151case 0 // type152Object.PropertyValue = Editor.VariableValue153Object.PropertyValue &= 3154break155end switch156end if157end sub158159sub RSDKDraw160DrawSprite(0)161DrawSprite(1)162163switch Object.PropertyValue164case 1165DrawSprite(6)166DrawSprite(8)167break168case 2169DrawSprite(2)170DrawSprite(4)171break172end switch173end sub174175176sub RSDKLoad177LoadSpriteSheet("R8/Objects.gif")178179SpriteFrame(-8, -48, 16, 32, 58, 131) // #0 - Left One Way Door180SpriteFrame(-8, -16, 16, 32, 58, 131) // #1 - Right One Way Door181182SpriteFrame(-16, -36, 8, 8, 50, 173) // #2 - Left Door Lights (left side) frame 0183SpriteFrame(-16, -36, 8, 8, 59, 173) // #3 - Left Door Lights (left side) frame 1184SpriteFrame(-16, -4, 8, 8, 50, 173) // #4 - Right Door Lights (left side) frame 0185SpriteFrame(-16, -4, 8, 8, 59, 173) // #5 - Right Door Lights (left side) frame 1186187SpriteFrame(8, -36, 8, 8, 50, 164) // #6 - Left Door Lights (right side) frame 0188SpriteFrame(8, -36, 8, 8, 59, 164) // #7 - Left Door Lights (right side) frame 1189SpriteFrame(8, -4, 8, 8, 50, 164) // #8 - Right Door Lights (right side) frame 0190SpriteFrame(8, -4, 8, 8, 59, 164) // #9 - Right Door Lights (right side) frame 1191192AddEditorVariable("type")193SetActiveVariable("type")194AddEnumVariable("Null", 0) // why do i need this?195AddEnumVariable("Open from the left", OPEN_FROM_LEFT)196AddEnumVariable("Open from the right", OPEN_FROM_RIGHT)197AddEnumVariable("Open from the left (no lights)", OPEN_FROM_LEFT_NO_LIGHTS)198end sub199200201