Path: blob/main/Scripts/R4/MultiDoor.txt
1319 views
//-----------------Sonic CD Multi Door Script-----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.Value0 : Object.Timer6#alias Object.Value1 : Object.YOffset78// Push Button alias9#alias Object.PropertyValue : PushButton.Pressed1011// HUD alias12#alias Object[24].PropertyValue : HUD.CurrentTimePeriod1314// States15#alias 0 : MULTIDOOR_INACTIVE16#alias 1 : MULTIDOOR_OPEN1718// Collision19#alias 1 : PLAYER_COL_FLOOR2021// Time Periods22#alias 0 : TIME_PRESENT23#alias 1 : TIME_PAST24#alias 2 : TIME_GOOD_FUTURE25#alias 3 : TIME_BAD_FUTURE262728sub ObjectMain29switch Object.State30case MULTIDOOR_INACTIVE31Object.YOffset = Object.YPos32// Check if the previous or next button got pressed33if PushButton[-1].Pressed == true34Object.State++35end if36if PushButton[+1].Pressed == true37Object.State++38end if39break4041case MULTIDOOR_OPEN42if Object.Timer < 12843Object.Timer++44Object.YPos += 0x1000045Object.YOffset -= 0x1000046else47Object.State++48end if49break5051end switch52end sub535455sub ObjectPlayerInteraction56#platform: Use_Standalone57PlayerObjectCollision(C_BOX, -32, -65, 0, 64)58if CheckResult == PLAYER_COL_FLOOR59Player.YPos += 0x1000060end if6162PlayerObjectCollision(C_BOX, 32, -65, 64, 64)63if CheckResult == PLAYER_COL_FLOOR64Player.YPos += 0x1000065end if6667TempValue0 = Object.YPos68Object.YPos = Object.YOffset69PlayerObjectCollision(C_BOX, -64, -64, -32, 64)70PlayerObjectCollision(C_BOX, 0, -64, 32, 64)71Object.YPos = TempValue072#endplatform7374#platform: Use_Origins75// well would you look at that, origins dev using unused collision types76PlayerObjectCollision(C_BOX2, -32, -65, 0, 64)77if CheckResult == PLAYER_COL_FLOOR78Player.YPos += 0x1000079end if8081PlayerObjectCollision(C_BOX2, 32, -65, 64, 64)82if CheckResult == PLAYER_COL_FLOOR83Player.YPos += 0x1000084end if8586TempValue0 = Object.YPos87Object.YPos = Object.YOffset88PlayerObjectCollision(C_BOX2, -64, -64, -32, 64)89PlayerObjectCollision(C_BOX2, 0, -64, 32, 64)90Object.YPos = TempValue091#endplatform92end sub939495sub ObjectDraw96TempValue0 = Object.XPos97TempValue0 -= 0x30000098DrawSpriteXY(0, TempValue0, Object.YOffset)99DrawSpriteXY(1, TempValue0, Object.YOffset)100DrawSpriteXY(2, TempValue0, Object.YOffset)101DrawSpriteXY(3, TempValue0, Object.YOffset)102103TempValue0 += 0x200000104DrawSpriteXY(4, TempValue0, Object.YPos)105DrawSpriteXY(5, TempValue0, Object.YPos)106DrawSpriteXY(6, TempValue0, Object.YPos)107DrawSpriteXY(7, TempValue0, Object.YPos)108109TempValue0 += 0x200000110DrawSpriteXY(0, TempValue0, Object.YOffset)111DrawSpriteXY(1, TempValue0, Object.YOffset)112DrawSpriteXY(2, TempValue0, Object.YOffset)113DrawSpriteXY(3, TempValue0, Object.YOffset)114115TempValue0 += 0x200000116DrawSpriteXY(4, TempValue0, Object.YPos)117DrawSpriteXY(5, TempValue0, Object.YPos)118DrawSpriteXY(6, TempValue0, Object.YPos)119DrawSpriteXY(7, TempValue0, Object.YPos)120end sub121122123sub ObjectStartup124switch HUD.CurrentTimePeriod125case TIME_PRESENT126LoadSpriteSheet("R4/Objects.gif")127TempValue0 = 163128TempValue1 = 1129TempValue2 = 196130break131132case TIME_PAST133LoadSpriteSheet("R4/Objects2.gif")134TempValue0 = 1135TempValue1 = 157136TempValue2 = 34137break138139case TIME_GOOD_FUTURE140LoadSpriteSheet("R4/Objects2.gif")141TempValue0 = 1142TempValue1 = 190143TempValue2 = 34144break145146case TIME_BAD_FUTURE147LoadSpriteSheet("R4/Objects2.gif")148TempValue0 = 1149TempValue1 = 223150TempValue2 = 34151break152end switch153154// R4 blocks155SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1)156SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1)157SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1)158SpriteFrame(-16, 32, 32, 32, TempValue0, TempValue1)159SpriteFrame(-16, -64, 32, 32, TempValue2, TempValue1)160SpriteFrame(-16, -32, 32, 32, TempValue2, TempValue1)161SpriteFrame(-16, 0, 32, 32, TempValue2, TempValue1)162SpriteFrame(-16, 32, 32, 32, TempValue2, TempValue1)163end sub164165166// ========================167// Editor Subs168// ========================169170sub RSDKDraw171TempValue0 = Object.XPos172TempValue0 -= 0x300000173DrawSpriteXY(0, TempValue0, Object.YPos)174DrawSpriteXY(1, TempValue0, Object.YPos)175DrawSpriteXY(2, TempValue0, Object.YPos)176DrawSpriteXY(3, TempValue0, Object.YPos)177178TempValue0 += 0x200000179DrawSpriteXY(4, TempValue0, Object.YPos)180DrawSpriteXY(5, TempValue0, Object.YPos)181DrawSpriteXY(6, TempValue0, Object.YPos)182DrawSpriteXY(7, TempValue0, Object.YPos)183184TempValue0 += 0x200000185DrawSpriteXY(0, TempValue0, Object.YPos)186DrawSpriteXY(1, TempValue0, Object.YPos)187DrawSpriteXY(2, TempValue0, Object.YPos)188DrawSpriteXY(3, TempValue0, Object.YPos)189190TempValue0 += 0x200000191DrawSpriteXY(4, TempValue0, Object.YPos)192DrawSpriteXY(5, TempValue0, Object.YPos)193DrawSpriteXY(6, TempValue0, Object.YPos)194DrawSpriteXY(7, TempValue0, Object.YPos)195end sub196197198sub RSDKLoad199CallFunction(EditorHelpers_FindTimePeriod)200switch CheckResult201case TIME_PRESENT202LoadSpriteSheet("R4/Objects.gif")203TempValue0 = 163204TempValue1 = 1205TempValue2 = 196206break207208case TIME_PAST209LoadSpriteSheet("R4/Objects2.gif")210TempValue0 = 1211TempValue1 = 157212TempValue2 = 34213break214215case TIME_GOOD_FUTURE216LoadSpriteSheet("R4/Objects2.gif")217TempValue0 = 1218TempValue1 = 190219TempValue2 = 34220break221222case TIME_BAD_FUTURE223LoadSpriteSheet("R4/Objects2.gif")224TempValue0 = 1225TempValue1 = 223226TempValue2 = 34227break228end switch229230// R4 blocks231SpriteFrame(-16, -64, 32, 32, TempValue0, TempValue1)232SpriteFrame(-16, -32, 32, 32, TempValue0, TempValue1)233SpriteFrame(-16, 0, 32, 32, TempValue0, TempValue1)234SpriteFrame(-16, 32, 32, 32, TempValue0, TempValue1)235SpriteFrame(-16, -64, 32, 32, TempValue2, TempValue1)236SpriteFrame(-16, -32, 32, 32, TempValue2, TempValue1)237SpriteFrame(-16, 0, 32, 32, TempValue2, TempValue1)238SpriteFrame(-16, 32, 32, 32, TempValue2, TempValue1)239240SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")241end sub242243244