Path: blob/master/Sonic 2/Scripts/HPZ/SinkingPlatform.txt
1478 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Sinking Platform Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value1 : object.sinkPos.y12private alias object.value2 : object.collisionOffset.y13private alias object.value3 : object.stood1415// States16private alias 0 : SINKINGPLATFORM_IDLE17private alias 1 : SINKINGPLATFORM_SINKING1819// Player Aliases20private alias object.ypos : player.ypos21private alias object.yvel : player.yvel222324// ========================25// Function Declarations26// ========================2728reserve function SinkingPlatform_DebugDraw29reserve function SinkingPlatform_DebugSpawn303132// ========================33// Function Definitions34// ========================3536private function SinkingPlatform_DebugDraw37DrawSprite(0)38end function394041private function SinkingPlatform_DebugSpawn42CreateTempObject(TypeName[Sinking Platform], 0, object.xpos, object.ypos)43object[tempObjectPos].sinkPos.y = object[tempObjectPos].ypos44end function454647// ========================48// Events49// ========================5051event ObjectUpdate52temp6 = object.ypos5354switch object.state55case SINKINGPLATFORM_IDLE56if object.ypos <= object.sinkPos.y57object.ypos = object.sinkPos.y58object.yvel = 059if object.stood == true60object.yvel = 0x1000061object.state = SINKINGPLATFORM_SINKING62end if63else64object.yvel -= 0x380065if object.yvel < -0x8000066object.yvel = -0x8000067end if68object.ypos += object.yvel69end if70break7172case SINKINGPLATFORM_SINKING73object.ypos += object.yvel74if object.stood == false75object.state = SINKINGPLATFORM_IDLE76end if77break7879end switch80object.stood = false8182temp0 = object.ypos83temp6 &= 0xFFFF000084object.collisionOffset.y = object.ypos85object.collisionOffset.y &= 0xFFFF000086object.collisionOffset.y -= temp687object.ypos = temp68889foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)90if player[currentPlayer].yvel < 091if object.yvel < player[currentPlayer].yvel92temp1 = true93else94temp1 = false95end if96else97temp1 = false98end if99100if temp1 == true101temp1 = player[currentPlayer].yvel102BoxCollisionTest(C_TOUCH, object.entityPos, -32, -20, 32, 20, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)103if checkResult == true104player[currentPlayer].yvel = 0x10000105end if106107BoxCollisionTest(C_SOLID2, object.entityPos, -32, -20, 32, -4, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)108if checkResult == COL_TOP109player[currentPlayer].ypos += object.collisionOffset.y110object.stood |= true111else112player[currentPlayer].yvel = temp1113end if114else115BoxCollisionTest(C_SOLID2, object.entityPos, -32, -20, 32, 20, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)116if checkResult == COL_TOP117player[currentPlayer].yvel = 0x70000118player[currentPlayer].ypos += object.collisionOffset.y119object.stood |= true120end if121end if122next123124object.ypos = temp0125end event126127128event ObjectDraw129DrawSprite(0)130end event131132133event ObjectStartup134LoadSpriteSheet("HPZ/Objects.gif")135SpriteFrame(-32, -20, 64, 40, 1, 183)136137foreach (TypeName[Sinking Platform], arrayPos0, ALL_ENTITIES)138object[arrayPos0].sinkPos.y = object[arrayPos0].ypos139next140141SetTableValue(TypeName[Sinking Platform], DebugMode_ObjCount, DebugMode_TypesTable)142SetTableValue(SinkingPlatform_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)143SetTableValue(SinkingPlatform_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)144DebugMode_ObjCount++145end event146147148// ========================149// Editor Events150// ========================151152event RSDKDraw153DrawSprite(0)154end event155156157event RSDKLoad158LoadSpriteSheet("HPZ/Objects.gif")159SpriteFrame(-32, -20, 64, 40, 1, 183)160161SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")162end event163164165