Path: blob/master/Sonic 2/Scripts/HTZ/OneWayDoor.txt
1478 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 == 047if object.movePos > 048object.movePos -= 0x8000049end if50else51if object.movePos < 0x40000052object.movePos += 0x8000053end if54end if5556object.ypos -= object.movePos57if object.movePos == 058foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)59BoxCollisionTest(C_SOLID, object.entityPos, -8, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)60next61else62foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)63BoxCollisionTest(C_SOLID, object.entityPos, -8, -32, 8, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)64next65end if6667object.ypos += object.movePos68object.isOpen = false69if object.propertyValue == 070foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)71if player[currentPlayer].xvel < 0x6000072BoxCollisionTest(C_TOUCH, object.entityPos, -64, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)73else74BoxCollisionTest(C_TOUCH, object.entityPos, -88, -32, 8, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)75end if76object.isOpen |= checkResult77next78else79foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)80if player[currentPlayer].xvel > -0x6000081BoxCollisionTest(C_TOUCH, object.entityPos, -8, -32, 64, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)82else83BoxCollisionTest(C_TOUCH, object.entityPos, -8, -32, 88, 32, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)84end if85object.isOpen |= checkResult86next87end if88end event899091event ObjectDraw92temp0 = object.movePos93FlipSign(temp0)94temp0 += object.ypos95DrawSpriteFX(0, FX_FLIP, object.xpos, temp0)96end event979899event ObjectStartup100LoadSpriteSheet("HTZ/Objects.gif")101SpriteFrame(-8, -32, 16, 64, 91, 157)102103foreach (TypeName[One Way Door], arrayPos0, ALL_ENTITIES)104if object[arrayPos0].propertyValue == 1105object[arrayPos0].direction = FLIP_X106end if107next108109SetTableValue(TypeName[One Way Door], DebugMode_ObjCount, DebugMode_TypesTable)110SetTableValue(OneWayDoor_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)111SetTableValue(OneWayDoor_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)112DebugMode_ObjCount++113end event114115116// ========================117// Editor Events118// ========================119120event RSDKEdit121if editor.returnVariable == true122switch editor.variableID123case EDIT_VAR_PROPVAL // property value124checkResult = object.propertyValue125break126127case 0 // type128checkResult = object.propertyValue129break130131end switch132else133switch editor.variableID134case EDIT_VAR_PROPVAL // property value135object.propertyValue = editor.variableValue136break137138case 0 // type139object.propertyValue = editor.variableValue140break141142end switch143end if144end event145146147event RSDKDraw148GetBit(object.direction, object.propertyValue, 0)149DrawSpriteFX(0, FX_FLIP, object.xpos, object.ypos)150end event151152153event RSDKLoad154LoadSpriteSheet("HTZ/Objects.gif")155SpriteFrame(-8, -32, 16, 64, 91, 157)156157AddEditorVariable("type")158SetActiveVariable("type")159AddEnumVariable("Left Only", 0)160AddEnumVariable("Right Only", 1)161end event162163164