Path: blob/master/Sonic 2/Scripts/MBZ/PushButton.txt
1478 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Push Button Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.pressed12private alias object.value1 : object.stood1314// Player Aliases15private alias object.ypos : player.ypos16private alias object.yvel : player.yvel17private alias object.gravity : player.gravity18private alias object.collisionBottom : player.collisionBottom192021// ========================22// Function Declarations23// ========================2425reserve function PushButton_DebugDraw26reserve function PushButton_DebugSpawn272829// ========================30// Function Definitions31// ========================3233private function PushButton_DebugDraw34DrawSprite(0)35end function363738private function PushButton_DebugSpawn39CreateTempObject(TypeName[Push Button], 0, object.xpos, object.ypos)40end function414243// ========================44// Events45// ========================4647event ObjectUpdate48object.pressed = false49object.stood = false5051foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)52if object.frame == 053BoxCollisionTest(C_SOLID, object.entityPos, -14, -6, 14, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)54if checkResult == COL_TOP55object.stood = true56object.pressed = true57player[currentPlayer].ypos += 4000058PlaySfx(SfxName[Button Press], false)5960object[+1].priority = PRIORITY_ACTIVE61if object[+1].state == 062PlaySfx(SfxName[Event], false)63end if64object[+1].state = 165end if66else67if player[currentPlayer].yvel >= 068BoxCollisionTest(C_PLATFORM, object.entityPos, -14, -6, 14, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)69if checkResult == true70object.stood = true71player[currentPlayer].ypos += 0x2000072else73BoxCollisionTest(C_TOUCH, object.entityPos, -20, -12, 20, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)74if checkResult == true75player[currentPlayer].ypos = player[currentPlayer].collisionBottom76FlipSign(player[currentPlayer].ypos)77player[currentPlayer].ypos <<= 1678player[currentPlayer].ypos += object.ypos79player[currentPlayer].ypos -= 0x2000080player[currentPlayer].gravity = GRAVITY_AIR81end if82end if83end if84end if85next86end event878889event ObjectDraw90object.frame = object.stood91DrawSprite(object.frame)92end event939495event ObjectStartup96LoadSpriteSheet("MBZ/Objects.gif")9798// Button frames99SpriteFrame(-16, -8, 32, 16, 649, 933)100SpriteFrame(-16, -4, 32, 8, 649, 933)101102// Add this object to the debug mode item list103SetTableValue(TypeName[Push Button], DebugMode_ObjCount, DebugMode_TypesTable)104SetTableValue(PushButton_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)105SetTableValue(PushButton_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)106DebugMode_ObjCount++107end event108109110// ========================111// Editor Events112// ========================113114event RSDKDraw115DrawSprite(0)116117if editor.showGizmos == true118editor.drawingOverlay = true119120// Draw a line to the connecting door121DrawArrow(object.xpos, object.ypos, object[+1].xpos, object[+1].ypos, 255, 255, 0)122123editor.drawingOverlay = false124end if125end event126127128event RSDKLoad129LoadSpriteSheet("MBZ/Objects.gif")130SpriteFrame(-16, -8, 32, 16, 649, 933)131132SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")133end event134135136