Path: blob/master/Sonic 2/Scripts/ARZ/OneWayDoor.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: One Way Door Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.state : object.isOpen12private alias object.value0 : object.movePos1314// Player Aliases15private alias object.xvel : player.xvel161718// ========================19// Function Declarations20// ========================2122reserve function OneWayDoor_DebugDraw23reserve function OneWayDoor_DebugSpawn242526// ========================27// Function Definitions28// ========================2930private function OneWayDoor_DebugDraw31DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)32end function333435private function OneWayDoor_DebugSpawn36CreateTempObject(TypeName[One Way Door], object.direction, object.xpos, object.ypos)37object[tempObjectPos].direction = object.direction38end function394041// ========================42// Events43// ========================4445event ObjectUpdate46if object.isOpen == false47if object.movePos > 048object.movePos -= 0x8000049end if50else51if object.movePos < 0x40000052object.movePos += 0x8000053end if54end if5556object.ypos -= object.movePos57foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)58BoxCollisionTest(C_SOLID, object.entityPos, -8, -32, 8, 0, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)59next6061object.ypos += object.movePos62object.isOpen = false63if object.propertyValue == 064foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)65if player[currentPlayer].xvel < 0x6000066BoxCollisionTest(C_TOUCH, object.entityPos, -64, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)67else68BoxCollisionTest(C_TOUCH, object.entityPos, -88, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)69end if70object.isOpen |= checkResult71next72else73foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)74if player[currentPlayer].xvel > -0x6000075BoxCollisionTest(C_TOUCH, object.entityPos, -8, -32, 64, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)76else77BoxCollisionTest(C_TOUCH, object.entityPos, -8, -32, 88, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)78end if79object.isOpen |= checkResult80next81end if82end event838485event ObjectDraw86temp0 = object.movePos87FlipSign(temp0)88temp0 += object.ypos89DrawSpriteFX(0, FX_FLIP, object.xpos, temp0)90end event919293event ObjectStartup94LoadSpriteSheet("ARZ/Objects.gif")95SpriteFrame(-8, -32, 16, 64, 1, 78)9697foreach (TypeName[One Way Door], arrayPos0, ALL_ENTITIES)98if object[arrayPos0].propertyValue == 199object[arrayPos0].direction = FLIP_X100end if101next102103SetTableValue(TypeName[One Way Door], DebugMode_ObjCount, DebugMode_TypesTable)104SetTableValue(OneWayDoor_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)105SetTableValue(OneWayDoor_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)106DebugMode_ObjCount++107end event108109110// ========================111// Editor Events112// ========================113114event RSDKEdit115if editor.returnVariable == true116switch editor.variableID117case EDIT_VAR_PROPVAL // property value118checkResult = object.propertyValue119break120121case 0 // type122checkResult = object.propertyValue123break124125end switch126else127switch editor.variableID128case EDIT_VAR_PROPVAL // property value129object.propertyValue = editor.variableValue130break131132case 0 // type133object.propertyValue = editor.variableValue134break135136end switch137end if138end event139140141event RSDKDraw142DrawSprite(0)143end event144145146event RSDKLoad147LoadSpriteSheet("ARZ/Objects.gif")148SpriteFrame(-8, -32, 16, 64, 1, 78)149150AddEditorVariable("type")151SetActiveVariable("type")152AddEnumVariable("Left Only", 0)153AddEnumVariable("Right Only", 1)154end event155156157