Path: blob/master/Sonic 2/Scripts/MPZ/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)59end if60else61if player[currentPlayer].yvel >= 062BoxCollisionTest(C_PLATFORM, object.entityPos, -14, -6, 14, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)63if checkResult == true64object.stood = true65player[currentPlayer].ypos += 0x2000066else67BoxCollisionTest(C_TOUCH, object.entityPos, -20, -12, 20, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)68if checkResult == true69player[currentPlayer].ypos = player[currentPlayer].collisionBottom70FlipSign(player[currentPlayer].ypos)71player[currentPlayer].ypos <<= 1672player[currentPlayer].ypos += object.ypos73player[currentPlayer].ypos -= 0x2000074player[currentPlayer].gravity = GRAVITY_AIR75end if76end if77end if78end if79next80end event818283event ObjectDraw84object.frame = object.stood85DrawSprite(object.frame)86end event878889event ObjectStartup90LoadSpriteSheet("MPZ/Objects.gif")91SpriteFrame(-16, -8, 32, 16, 317, 190)92SpriteFrame(-16, -4, 32, 8, 317, 190)9394SetTableValue(TypeName[Push Button], DebugMode_ObjCount, DebugMode_TypesTable)95SetTableValue(PushButton_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)96SetTableValue(PushButton_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)97DebugMode_ObjCount++98end event99100101// ========================102// Editor Events103// ========================104105event RSDKDraw106DrawSprite(0)107end event108109110event RSDKLoad111LoadSpriteSheet("MPZ/Objects.gif")112SpriteFrame(-16, -8, 32, 16, 317, 190)113114SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")115end event116117118