Path: blob/master/Sonic 1/Scripts/LZ/SlidingFloor.txt
1483 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Sliding Floor Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.timer12private alias object.value1 : object.collisionOffset.x13private alias object.value2 : object.collisionOffset.y1415private alias 0 : SLIDINGFLOOR_AWAITBUTTON16private alias 1 : SLIDINGFLOOR_SLIDING17private alias 2 : SLIDINGFLOOR_FINISHEDSLIDING1819// Player Aliases20private alias object.xpos : player.xpos21private alias object.ixpos : player.ixpos22private alias object.ypos : player.ypos23private alias object.iypos : player.iypos24private alias object.right : player.right25private alias object.pushing: player.pushing26private alias object.collisionRight: player.collisionRight27private alias object.collisionBottom: player.collisionBottom2829// Push Button aliases30private alias object.value0 : pushButton.stood313233// ========================34// Function Declarations35// ========================3637reserve function SlidingFloor_DebugDraw38reserve function SlidingFloor_DebugSpawn394041// ========================42// Tables43// ========================4445private function SlidingFloor_DebugDraw46DrawSprite(0)47end function484950private function SlidingFloor_DebugSpawn51CreateTempObject(TypeName[Sliding Floor], 0, object.xpos, object.ypos)52end function535455// ========================56// Events57// ========================5859event ObjectUpdate60switch object.state61case SLIDINGFLOOR_AWAITBUTTON62if pushButton[+1].stood == true63object.state++64object.timer = 25665end if6667case SLIDINGFLOOR_FINISHEDSLIDING68foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)69BoxCollisionTest(C_SOLID, object.entityPos, -128, -64, 128, 64, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)7071BoxCollisionTest(C_TOUCH, object.entityPos, -128, -64, 128, 64, currentPlayer, 2, 2, 2, 2)72if checkResult == true73if player[currentPlayer].ypos > object.ypos74player[currentPlayer].ixpos = player[currentPlayer].collisionRight75FlipSign(player[currentPlayer].xpos)76player[currentPlayer].xpos -= 0x80000077player[currentPlayer].xpos += object.xpos78else79player[currentPlayer].iypos = player[currentPlayer].collisionBottom80FlipSign(player[currentPlayer].ypos)81player[currentPlayer].ypos -= 0x40000082player[currentPlayer].ypos += object.ypos83end if84end if8586BoxCollisionTest(C_TOUCH, object.entityPos, -130, -63, 130, 63, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)87if checkResult == true88if player[currentPlayer].xpos < object.xpos89if player[currentPlayer].right == true90player[currentPlayer].pushing = 291player[currentPlayer].ixpos = player[currentPlayer].collisionRight92FlipSign(player[currentPlayer].xpos)93player[currentPlayer].xpos -= 0x80000094player[currentPlayer].xpos += object.xpos95if player[currentPlayer].ypos == 0x16D000096player[currentPlayer].ypos -= 0x1000097end if98if player[currentPlayer].ypos == 0x171000099player[currentPlayer].ypos -= 0x10000100end if101end if102end if103end if104next105break106107case SLIDINGFLOOR_SLIDING108temp0 = object.xpos109temp0 &= 0xFFFF0000110temp1 = object.ypos111temp1 &= 0xFFFF0000112object.xpos -= 0x10000113object.ypos += 0x8000114object.timer--115if object.timer < 0116object.state++117end if118119object.collisionOffset.x = object.xpos120object.collisionOffset.x &= 0xFFFF0000121object.collisionOffset.x -= temp0122object.collisionOffset.y = object.ypos123object.collisionOffset.y &= 0xFFFF0000124object.collisionOffset.y -= temp1125126temp2 = object.xpos127object.xpos = temp0128temp3 = object.ypos129object.ypos = temp1130foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)131BoxCollisionTest(C_SOLID, object.entityPos, -128, -64, 128, 64, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)132if checkResult == COL_TOP133player[currentPlayer].xpos += object.collisionOffset.x134player[currentPlayer].ypos += object.collisionOffset.y135end if136137BoxCollisionTest(C_TOUCH, object.entityPos, -128, -64, 128, 64, currentPlayer, 2, 2, 2, 2)138if checkResult == true139if player[currentPlayer].ypos > object.ypos140player[currentPlayer].ixpos = player[currentPlayer].collisionRight141FlipSign(player[currentPlayer].xpos)142player[currentPlayer].xpos -= 0x800000143player[currentPlayer].xpos += object.xpos144else145player[currentPlayer].iypos = player[currentPlayer].collisionBottom146FlipSign(player[currentPlayer].ypos)147player[currentPlayer].ypos -= 0x400000148player[currentPlayer].ypos += object.ypos149end if150end if151152BoxCollisionTest(C_TOUCH, object.entityPos, -130, -63, 130, 63, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)153if checkResult == true154if player[currentPlayer].xpos < object.xpos155if player[currentPlayer].right == true156player[currentPlayer].pushing = 2157player[currentPlayer].ixpos = player[currentPlayer].collisionRight158FlipSign(player[currentPlayer].xpos)159player[currentPlayer].xpos -= 0x800000160player[currentPlayer].xpos += object.xpos161end if162end if163end if164next165166object.xpos = temp2167object.ypos = temp3168break169170end switch171end event172173174event ObjectDraw175DrawSprite(0)176end event177178179event ObjectStartup180LoadSpriteSheet("LZ/Objects2.gif")181SpriteFrame(-128, -64, 256, 125, 0, 0)182183SetTableValue(TypeName[Sliding Floor], DebugMode_ObjCount, DebugMode_TypesTable)184SetTableValue(SlidingFloor_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)185SetTableValue(SlidingFloor_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)186DebugMode_ObjCount++187end event188189190// ========================191// Editor Events192// ========================193194event RSDKDraw195DrawSprite(0)196end event197198199event RSDKLoad200LoadSpriteSheet("LZ/Objects2.gif")201SpriteFrame(-128, -64, 256, 125, 0, 0)202end event203204205