Path: blob/master/Sonic 1/Scripts/SLZ/RotatingStair.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Rotating Stair Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.blockPos1.x12private alias object.value1 : object.blockPos1.y13private alias object.value2 : object.blockPos2.x14private alias object.value3 : object.blockPos2.y15private alias object.value4 : object.blockPos3.x16private alias object.value5 : object.blockPos3.y17private alias object.value6 : object.blockPos4.x18private alias object.value7 : object.blockPos4.y19private alias object.value8 : object.blockPos5.x20private alias object.value9 : object.blockPos5.y21private alias object.value10 : object.blockPos6.x22private alias object.value11 : object.blockPos6.y23private alias object.value12 : object.blockPos7.x24private alias object.value13 : object.blockPos7.y25private alias object.value14 : object.blockPos8.x26private alias object.value15 : object.blockPos8.y2728private alias object.value16 : object.startPos.x29private alias object.value17 : object.startPos.y3031// Player Aliases32private alias object.xpos : player.xpos33private alias object.ypos : player.ypos34private alias object.gravity : player.gravity353637// ========================38// Function Declarations39// ========================4041reserve function RotatingStair_DebugDraw42reserve function RotatingStair_DebugSpawn43reserve function RotatingStair_ProcessBlock444546// ========================47// Function Definitions48// ========================4950private function RotatingStair_DebugDraw51temp0 = object.xpos52temp0 -= 0x70000053temp1 = object.ypos54temp1 -= 0x70000055temp2 = 056while temp2 < 857DrawSpriteXY(0, temp0, temp1)58temp0 += 0x20000059temp1 += 0x20000060temp2++61loop62end function636465private function RotatingStair_DebugSpawn66CreateTempObject(TypeName[Rotating Stair], 0, object.xpos, object.ypos)67object[tempObjectPos].startPos.x = object.xpos68object[tempObjectPos].startPos.y = object.ypos69end function707172private function RotatingStair_ProcessBlock73temp1 = temp574GetTableValue(temp0, temp3, StageSetup_oscillationTable)75temp0 <<= 876if temp3 == 2077temp0 >>= 178end if7980switch temp481case 082temp0 -= temp183temp0 += object.startPos.x84temp6 = temp085FlipSign(temp1)86temp1 += object.startPos.y87temp7 = temp188break8990case 191temp0 -= temp192FlipSign(temp0)93temp0 += object.startPos.y94temp7 = temp095temp1 += object.startPos.x96temp6 = temp197break9899case 2100temp0 -= temp1101FlipSign(temp0)102temp0 += object.startPos.x103temp6 = temp0104temp1 += object.startPos.y105temp7 = temp1106break107108case 3109temp0 -= temp1110temp0 += object.startPos.y111temp7 = temp0112FlipSign(temp1)113temp1 += object.startPos.x114temp6 = temp1115break116117end switch118119temp6 &= 0xFFFF0000120temp7 &= 0xFFFF0000121temp0 = temp6122temp0 -= object.xpos123temp1 = temp7124temp1 -= object.ypos125126foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)127BoxCollisionTest(C_SOLID, object.entityPos, -16, -16, 16, 16, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)128if checkResult == COL_TOP129player[currentPlayer].xpos += temp0130player[currentPlayer].ypos += temp1131end if132133if player[currentPlayer].gravity == 0134if checkResult == COL_BOTTOM135CallFunction(Player_Kill)136end if137end if138next139end function140141142// ========================143// Events144// ========================145146event ObjectUpdate147temp4 = SLZSetup_rotateTimer148temp5 = 0x100000149temp3 = 20150object.xpos = object.blockPos1.x151object.ypos = object.blockPos1.y152CallFunction(RotatingStair_ProcessBlock)153object.blockPos1.x = temp6154object.blockPos1.y = temp7155156temp4 ^= 2157object.xpos = object.blockPos2.x158object.ypos = object.blockPos2.y159CallFunction(RotatingStair_ProcessBlock)160object.blockPos2.x = temp6161object.blockPos2.y = temp7162163temp4 ^= 2164temp5 = 0x300000165temp3 = 22166object.xpos = object.blockPos3.x167object.ypos = object.blockPos3.y168CallFunction(RotatingStair_ProcessBlock)169object.blockPos3.x = temp6170object.blockPos3.y = temp7171temp4 ^= 2172173object.xpos = object.blockPos4.x174object.ypos = object.blockPos4.y175CallFunction(RotatingStair_ProcessBlock)176object.blockPos4.x = temp6177object.blockPos4.y = temp7178179temp4 ^= 2180temp5 = 0x500000181temp3 = 24182object.xpos = object.blockPos5.x183object.ypos = object.blockPos5.y184CallFunction(RotatingStair_ProcessBlock)185object.blockPos5.x = temp6186object.blockPos5.y = temp7187188temp4 ^= 2189object.xpos = object.blockPos6.x190object.ypos = object.blockPos6.y191CallFunction(RotatingStair_ProcessBlock)192object.blockPos6.x = temp6193object.blockPos6.y = temp7194195temp4 ^= 2196temp5 = 0x700000197temp3 = 26198object.xpos = object.blockPos7.x199object.ypos = object.blockPos7.y200CallFunction(RotatingStair_ProcessBlock)201object.blockPos7.x = temp6202object.blockPos7.y = temp7203204temp4 ^= 2205object.xpos = object.blockPos8.x206object.ypos = object.blockPos8.y207CallFunction(RotatingStair_ProcessBlock)208object.blockPos8.x = temp6209object.blockPos8.y = temp7210211object.xpos = object.startPos.x212object.ypos = object.startPos.y213end event214215216event ObjectDraw217DrawSpriteXY(0, object.blockPos1.x, object.blockPos1.y)218DrawSpriteXY(0, object.blockPos2.x, object.blockPos2.y)219DrawSpriteXY(0, object.blockPos3.x, object.blockPos3.y)220DrawSpriteXY(0, object.blockPos4.x, object.blockPos4.y)221DrawSpriteXY(0, object.blockPos5.x, object.blockPos5.y)222DrawSpriteXY(0, object.blockPos6.x, object.blockPos6.y)223DrawSpriteXY(0, object.blockPos7.x, object.blockPos7.y)224DrawSpriteXY(0, object.blockPos8.x, object.blockPos8.y)225end event226227228event ObjectStartup229LoadSpriteSheet("SLZ/Objects.gif")230SpriteFrame(-16, -16, 32, 32, 67, 26)231232foreach (TypeName[Rotating Stair], arrayPos0, ALL_ENTITIES)233object[arrayPos0].startPos.x = object[arrayPos0].xpos234object[arrayPos0].startPos.y = object[arrayPos0].ypos235next236237SetTableValue(TypeName[Rotating Stair], DebugMode_ObjCount, DebugMode_TypesTable)238SetTableValue(RotatingStair_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)239SetTableValue(RotatingStair_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)240DebugMode_ObjCount++241end event242243244// ========================245// Editor Events246// ========================247248event RSDKDraw249temp0 = object.xpos250temp0 -= 0x700000251temp1 = object.ypos252temp1 -= 0x700000253temp2 = 0254while temp2 < 8255DrawSpriteXY(0, temp0, temp1)256temp0 += 0x200000257temp1 += 0x200000258temp2++259loop260end event261262263event RSDKLoad264LoadSpriteSheet("SLZ/Objects.gif")265SpriteFrame(-16, -16, 32, 32, 67, 26)266267SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")268end event269270271