Path: blob/master/Sonic 1/Scripts/LZ/CurrentTunnel.txt
1482 views
// ----------------------------------1// RSDK Project: Sonic 12// Script Description: Current Tunnel Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.propertyValue : object.isEnd1213private alias object.value0 : object.startPos.x14private alias object.value1 : object.endPos.x15private alias object.value2 : object.startPos.y16private alias object.value3 : object.endPos.y17private alias object.value4 : object.waterfallLoopTimer1819// Player Aliases20private alias object.state : player.state21private alias object.animation : player.animation22private alias object.tileCollisions : player.tileCollisions23private alias object.xpos : player.xpos24private alias object.ypos : player.ypos25private alias object.xvel : player.xvel26private alias object.yvel : player.yvel27private alias object.speed : player.speed282930// ========================31// Static Values32// ========================3334public value CurrentTunnel_activateDelay = 0353637// ========================38// Events39// ========================4041event ObjectUpdate42temp6 = PRIORITY_BOUNDS43temp7 = false4445foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)46CheckLower(player[currentPlayer].xpos, object.startPos.x)47temp0 = checkResult48CheckGreater(player[currentPlayer].xpos, object.endPos.x)49temp0 |= checkResult50CheckLower(player[currentPlayer].ypos, object.startPos.y)51temp0 |= checkResult52CheckGreater(player[currentPlayer].ypos, object.endPos.y)53temp0 |= checkResult5455if temp0 == false56temp7 = true5758if CurrentTunnel_activateDelay == 059temp6 = PRIORITY_ACTIVE6061CheckEqual(player[currentPlayer].state, Player_State_GotHit)62temp0 = checkResult63CheckEqual(player[currentPlayer].state, Player_State_Hurt)64temp0 |= checkResult65CheckEqual(player[currentPlayer].state, Player_State_Death)66temp0 |= checkResult67CheckEqual(player[currentPlayer].state, Player_State_Drown)68temp0 |= checkResult69CheckEqual(player[currentPlayer].state, Player_State_Clinging)70temp0 |= checkResult7172if temp0 == false73player[currentPlayer].state = Player_State_Clinging74player[currentPlayer].animation = ANI_FANROTATE75player[currentPlayer].tileCollisions = true76end if7778if player[currentPlayer].animation == ANI_FANROTATE79if player[currentPlayer].xvel == 080temp1 = object.endPos.y81temp1 -= object.startPos.y82temp1 >>= 183temp1 += object.startPos.y84if player[currentPlayer].ypos < temp185player[currentPlayer].ypos += 0x4000086else87player[currentPlayer].ypos -= 0x4000088end if89end if90end if91else92CurrentTunnel_activateDelay--9394if player[currentPlayer].state == Player_State_Clinging95#platform: USE_STANDALONE96player[currentPlayer].state = Player_State_Air97#endplatform98#platform: USE_ORIGINS99player[currentPlayer].state = Player_State_Air_NoDropDash100#endplatform101player[currentPlayer].xvel = 0x40000102player[currentPlayer].speed = 0x40000103end if104end if105else106if player[currentPlayer].state == Player_State_Clinging107#platform: USE_STANDALONE108player[currentPlayer].state = Player_State_Air109#endplatform110#platform: USE_ORIGINS111player[currentPlayer].state = Player_State_Air_NoDropDash112#endplatform113player[currentPlayer].xvel = 0x40000114player[currentPlayer].speed = 0x40000115end if116end if117next118119object.priority = temp6120if object.isEnd == false121object[+1].priority = temp6122else123object[-1].priority = temp6124end if125126if temp7 == false127object.waterfallLoopTimer = 0128end if129130if object.waterfallLoopTimer != 0131object.waterfallLoopTimer--132133if temp7 == true134if object.waterfallLoopTimer <= 0135if object.isEnd == false136temp0 = object[+1].waterfallLoopTimer137else138temp0 = object[-1].waterfallLoopTimer139end if140141if temp0 == false142StopSfx(SfxName[Waterfall])143PlaySfx(SfxName[Waterfall Loop], false)144object.waterfallLoopTimer = 31145end if146end if147end if148else149if temp7 == true150if object.isEnd == false151temp0 = object[+1].waterfallLoopTimer152else153temp0 = object[-1].waterfallLoopTimer154end if155156if temp0 == false157PlaySfx(SfxName[Waterfall], false)158object.waterfallLoopTimer = 31159end if160end if161end if162end event163164165event ObjectStartup166CurrentTunnel_activateDelay = 0167168foreach (TypeName[Current Tunnel], arrayPos0, ALL_ENTITIES)169if object[arrayPos0].isEnd == false170arrayPos1 = arrayPos0171arrayPos1++172object[arrayPos0].startPos.x = object[arrayPos0].xpos173object[arrayPos0].endPos.x = object[arrayPos1].xpos174temp1 = object[arrayPos0].ypos175temp2 = object[arrayPos0].ypos176else177arrayPos1 = arrayPos0178arrayPos1--179object[arrayPos0].startPos.x = object[arrayPos1].xpos180object[arrayPos0].endPos.x = object[arrayPos0].xpos181temp1 = object[arrayPos0].ypos182temp2 = object[arrayPos0].ypos183end if184185if temp1 < temp2186object[arrayPos0].startPos.y = temp1187object[arrayPos0].endPos.y = temp2188else189object[arrayPos0].startPos.y = temp2190object[arrayPos0].endPos.y = temp1191end if192193object[arrayPos0].startPos.y -= 0x600000194object[arrayPos0].endPos.y += 0x600000195next196end event197198199// ========================200// Editor Events201// ========================202203event RSDKEdit204if editor.returnVariable == true205switch editor.variableID206case EDIT_VAR_PROPVAL // property value207checkResult = object.propertyValue208checkResult &= 1209break210211case 0 // isEnd212checkResult = object.propertyValue213checkResult &= 1214break215216end switch217else218switch editor.variableID219case EDIT_VAR_PROPVAL // property value220object.propertyValue = editor.variableValue221object.propertyValue &= 1222break223224case 0 // isEnd225object.propertyValue = editor.variableValue226object.propertyValue &= 1227break228229end switch230end if231end event232233234event RSDKDraw235DrawSprite(0)236237if editor.showGizmos == true238editor.drawingOverlay = true239240if object.isEnd == false241DrawLine(object.xpos, object.ypos, object[+1].xpos, object[+1].ypos, 0xFF, 0xFF, 0x00)242else243DrawLine(object.xpos, object.ypos, object[-1].xpos, object[-1].ypos, 0xFF, 0xFF, 0x00)244end if245246#platform: DUMMY247// TODO: draw box idk248249if object.isEnd == false250object.startPos.x = object.xpos251object.endPos.x = object[+1].xpos252temp1 = object.ypos253temp2 = object.ypos254else255object.startPos.x = object[-1].xpos256object.endPos.x = object.xpos257temp1 = object.ypos258temp2 = object.ypos259end if260261if temp1 < temp2262object.startPos.y = temp1263object.endPos.y = temp2264else265object.startPos.y = temp2266object.endPos.y = temp1267end if268269object.startPos.y -= 0x600000270object.endPos.y += 0x600000271#endplatform272273editor.drawingOverlay = false274end if275end event276277278event RSDKLoad279LoadSpriteSheet("Global/Display.gif")280SpriteFrame(-8, -8, 16, 16, 165, 141)281282AddEditorVariable("isEnd")283SetActiveVariable("isEnd")284AddEnumVariable("false", false)285AddEnumVariable("true", true)286end event287288289