Path: blob/master/Sonic 1/Scripts/LZ/HorizontalDoor.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Door Horizontal Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.collisionOffset.y1314// States15private alias 0 : HORIZONTALDOOR_AWAITBUTTON16private alias 1 : HORIZONTALDOOR_MOVING17private alias 2 : HORIZONTALDOOR_MOVED18private alias 3 : HORIZONTALDOOR_AWAITWATER1920// Player Aliases21private alias object.xpos : player.xpos2223// Push Button aliases24private alias object.value0 : pushButton.stood252627// ========================28// Function Declarations29// ========================3031reserve function DoorHorizontal_DebugDraw32reserve function DoorHorizontal_DebugSpawn333435// ========================36// Function Definitions37// ========================3839private function DoorHorizontal_DebugDraw40DrawSprite(0)41end function424344private function DoorHorizontal_DebugSpawn45CreateTempObject(TypeName[Door Horizontal], 0, object.xpos, object.ypos)46object[tempObjectPos].direction = object.direction47object[tempObjectPos].priority = PRIORITY_ACTIVE48object[tempObjectPos].timer = 6449end function505152// ========================53// Events54// ========================5556event ObjectUpdate57switch object.state58case HORIZONTALDOOR_AWAITWATER59if Water_activateFlag == true60object.state = HORIZONTALDOOR_MOVING61end if62// [Fall-through]63case HORIZONTALDOOR_AWAITBUTTON64if pushButton[+1].stood == true65object.state++66end if67// [Fall-through]68case HORIZONTALDOOR_MOVED69foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)70BoxCollisionTest(C_SOLID, object.entityPos, -64, -16, 64, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)71next72break7374case HORIZONTALDOOR_MOVING75temp0 = object.xpos76temp0 &= 0xFFFF000077if object.direction == FLIP_NONE78object.xpos -= 0x2000079else80object.xpos += 0x2000081end if8283object.timer--84if object.timer < 085object.state++86end if8788object.collisionOffset.y = object.xpos89object.collisionOffset.y &= 0xFFFF000090object.collisionOffset.y -= temp091temp1 = object.xpos9293object.xpos = temp094foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)95BoxCollisionTest(C_SOLID, object.entityPos, -64, -16, 64, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)96if checkResult == COL_TOP97player[currentPlayer].xpos += object.collisionOffset.y98end if99next100101object.xpos = temp1102break103104end switch105end event106107108event ObjectDraw109DrawSprite(0)110end event111112113event ObjectStartup114LoadSpriteSheet("LZ/Objects.gif")115SpriteFrame(-64, -16, 128, 32, 84, 223)116117foreach (TypeName[Door Horizontal], arrayPos0, ALL_ENTITIES)118object[arrayPos0].priority = PRIORITY_ACTIVE119object[arrayPos0].timer = 64120if object[arrayPos0].propertyValue == 1121object[arrayPos0].state = HORIZONTALDOOR_AWAITWATER122end if123next124125// Add this object to the debug item list126SetTableValue(TypeName[Door Horizontal], DebugMode_ObjCount, DebugMode_TypesTable)127SetTableValue(DoorHorizontal_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)128SetTableValue(DoorHorizontal_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)129DebugMode_ObjCount++130end event131132133// ========================134// Editor Events135// ========================136137event RSDKEdit138if editor.returnVariable == true139switch editor.variableID140case EDIT_VAR_PROPVAL // property value141checkResult = object.propertyValue142checkResult &= 1143break144145case 0 // activationType146checkResult = object.propertyValue147checkResult &= 1148break149150end switch151else152switch editor.variableID153case EDIT_VAR_PROPVAL // property value154object.propertyValue = editor.variableValue155object.propertyValue &= 1156break157158case 0 // activationType159object.propertyValue = editor.variableValue160object.propertyValue &= 1161break162163end switch164end if165end event166167168event RSDKDraw169DrawSprite(0)170171if editor.showGizmos == true172editor.drawingOverlay = true173174// Draw a line connecting the door to its trigger button175DrawLine(object.xpos, object.ypos, object[+1].xpos, object[+1].ypos, 255, 255, 255)176177editor.drawingOverlay = false178end if179end event180181182event RSDKLoad183LoadSpriteSheet("LZ/Objects.gif")184SpriteFrame(-64, -16, 128, 32, 84, 223)185186AddEditorVariable("activationType")187SetActiveVariable("activationType")188AddEnumVariable("Button", 0)189AddEnumVariable("Water", 1)190end event191192193