Path: blob/master/Sonic 2/Scripts/OOZ/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 ObjectStartup90// We're in OOZ, but load the MPZ sheet?91// Not only is it the wrong zone, but does this mean the MPZ sheet was done before the OOZ one?92// With how the rest of the game is structed and coded, it looks like it was primarily started from zone 1 then onwards in level order, but there's a skip here...93LoadSpriteSheet("MPZ/Objects.gif")94SpriteFrame(-16, -8, 32, 16, 317, 190)95SpriteFrame(-16, -4, 32, 8, 317, 190)9697SetTableValue(TypeName[Push Button], DebugMode_ObjCount, DebugMode_TypesTable)98SetTableValue(PushButton_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)99SetTableValue(PushButton_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)100DebugMode_ObjCount++101end event102103104// ========================105// Editor Events106// ========================107108event RSDKDraw109DrawSprite(0)110end event111112113event RSDKLoad114// The button sprites aren't located on the OOZ sheet at all, so..115LoadSpriteSheet("MPZ/Objects.gif")116SpriteFrame(-16, -8, 32, 16, 317, 190)117118SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")119end event120121122