Path: blob/master/Sonic 1/Scripts/SYZ/PushButton.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Push Button Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.propertyValue : object.stood1213// Player Aliases14private alias object.ypos : player.ypos15private alias object.yvel : player.yvel16private alias object.gravity : player.gravity17private alias object.collisionBottom : player.collisionBottom1819// ========================20// Function Declarations21// ========================2223reserve function PushButton_DebugDraw24reserve function PushButton_DebugSpawn252627private function PushButton_DebugDraw28DrawSprite(0)29end function303132private function PushButton_DebugSpawn33CreateTempObject(TypeName[Push Button], 0, object.xpos, object.ypos)34end function353637// ========================38// Events39// ========================4041event ObjectUpdate42object.stood = false4344foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)45if object.frame == 046BoxCollisionTest(C_SOLID, object.entityPos, -14, -4, 14, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)47if checkResult == COL_TOP48object.stood = true49player[currentPlayer].ypos += 0x6000050PlaySfx(SfxName[Button Press], false)51end if52else53if player[currentPlayer].yvel >= 054BoxCollisionTest(C_PLATFORM, object.entityPos, -14, -4, 14, 12, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)55if checkResult == true56object.stood = true57player[currentPlayer].ypos += 0x2000058else59BoxCollisionTest(C_TOUCH, object.entityPos, -20, -12, 20, 8, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)60if checkResult == true61player[currentPlayer].ypos = player[currentPlayer].collisionBottom62FlipSign(player[currentPlayer].ypos)63player[currentPlayer].ypos <<= 1664player[currentPlayer].ypos += object.ypos65player[currentPlayer].ypos -= 0x2000066player[currentPlayer].gravity = GRAVITY_AIR67end if68end if69end if70end if71next7273foreach (TypeName[Push Block], arrayPos0, ACTIVE_ENTITIES)74BoxCollisionTest(C_TOUCH, object.entityPos, -16, -12, 16, 8, arrayPos0, -16, -16, 16, 16)75if checkResult == true76object.stood = true77if object.frame == 078PlaySfx(SfxName[Button Press], false)79end if80end if81next82end event838485event ObjectDraw86object.frame = object.stood87DrawSprite(object.frame)88end event899091event ObjectStartup92LoadSpriteSheet("SYZ/Objects.gif")93SpriteFrame(-16, -8, 32, 16, 1, 161)94SpriteFrame(-16, -2, 32, 10, 34, 167)9596SetTableValue(TypeName[Push Button], DebugMode_ObjCount, DebugMode_TypesTable)97SetTableValue(PushButton_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)98SetTableValue(PushButton_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)99DebugMode_ObjCount++100end event101102103// ========================104// Editor Events105// ========================106107event RSDKDraw108DrawSprite(0)109end event110111112event RSDKLoad113LoadSpriteSheet("SYZ/Objects.gif")114SpriteFrame(-16, -8, 32, 16, 1, 161)115116SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")117end event118119120