Path: blob/master/Sonic 2/Scripts/ARZ/PSwitch_V2.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Plane Sw V2 Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// This script is exclusive to Sonic Origins Plus8// It's... the exact same as the original Plane Sw V object, save for a single line being added in ObjectStartup910// ========================11// Aliases12// ========================1314private alias object.value0 : object.extendTop15private alias object.value1 : object.extendBottom16private alias object.value2 : object.planeR17private alias object.value3 : object.planeL18private alias object.value4 : object.drawOrderR19private alias object.value5 : object.drawOrderL20private alias object.value6 : object.onGround2122// Player Aliases23private alias object.type : player.type24private alias object.xvel : player.xvel25private alias object.gravity : player.gravity26private alias object.collisionPlane : player.collisionPlane27private alias object.value18 : player.sortedDrawOrder282930// ========================31// Events32// ========================3334event ObjectUpdate35foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)36CheckEqual(object.onGround, false)37temp0 = checkResult38CheckEqual(player[currentPlayer].gravity, GRAVITY_GROUND)39temp0 |= checkResult40if temp0 == true41BoxCollisionTest(C_TOUCH, object.entityPos, -12, object.extendTop, 12, object.extendBottom, currentPlayer, 0, 0, 0, 0)42if checkResult == true43if player[currentPlayer].xvel > 044GetBit(temp0, object.propertyValue, 6)45if temp0 == false46player[currentPlayer].collisionPlane = object.planeL47end if4849player[currentPlayer].sortedDrawOrder = object.drawOrderL50else51if player[currentPlayer].xvel < 052GetBit(temp0, object.propertyValue, 6)53if temp0 == false54player[currentPlayer].collisionPlane = object.planeR55end if5657player[currentPlayer].sortedDrawOrder = object.drawOrderR58end if59end if60end if61end if62next63end event646566event ObjectStartup67LoadSpriteSheet("Global/Display.gif")6869SpriteFrame(-8, -8, 16, 16, 42, 130)70SpriteFrame(-8, -8, 16, 16, 59, 130)71SpriteFrame(-8, -8, 16, 16, 76, 130)72SpriteFrame(-8, -8, 16, 16, 93, 130)73SpriteFrame(-8, -8, 16, 16, 110, 130)74SpriteFrame(-8, -8, 16, 16, 127, 130)75SpriteFrame(-8, -8, 16, 16, 144, 130)76SpriteFrame(-8, -8, 16, 16, 161, 130)77SpriteFrame(-8, -8, 16, 16, 42, 147)78SpriteFrame(-8, -8, 16, 16, 59, 147)79SpriteFrame(-8, -8, 16, 16, 76, 147)80SpriteFrame(-8, -8, 16, 16, 93, 147)81SpriteFrame(-8, -8, 16, 16, 110, 147)82SpriteFrame(-8, -8, 16, 16, 127, 147)83SpriteFrame(-8, -8, 16, 16, 144, 147)84SpriteFrame(-8, -8, 16, 16, 161, 147)85SpriteFrame(-8, -8, 16, 16, 42, 164)86SpriteFrame(-8, -8, 16, 16, 59, 164)87SpriteFrame(-8, -8, 16, 16, 76, 164)88SpriteFrame(-8, -8, 16, 16, 93, 164)89SpriteFrame(-8, -8, 16, 16, 93, 113)9091foreach (TypeName[Plane Sw V2], arrayPos0, ALL_ENTITIES)92temp0 = object[arrayPos0].propertyValue93temp0 &= 394temp0 += 295object[arrayPos0].extendTop = 196object[arrayPos0].extendTop <<= temp097object[arrayPos0].extendTop <<= 398object[arrayPos0].extendBottom = object[arrayPos0].extendTop99FlipSign(object[arrayPos0].extendTop)100101GetBit(object[arrayPos0].planeR, object[arrayPos0].propertyValue, 2)102GetBit(object[arrayPos0].planeL, object[arrayPos0].propertyValue, 3)103104GetBit(object[arrayPos0].drawOrderR, object[arrayPos0].propertyValue, 4)105object[arrayPos0].drawOrderR += 4106GetBit(object[arrayPos0].drawOrderL, object[arrayPos0].propertyValue, 5)107object[arrayPos0].drawOrderL += 4108109GetBit(object[arrayPos0].onGround, object[arrayPos0].propertyValue, 7)110111object[arrayPos0].priority = PRIORITY_ACTIVE // This line is the only difference between the original Plane Sw V object and this one112next113end event114115116// This Object's kinda weird... its Draw comes after its Startup for some reason117event ObjectDraw118if player[0].type == TypeName[Debug Mode]119temp1 = object.propertyValue120temp1 &= 3121temp1 += 2122temp0 = 1123temp0 <<= temp1124temp1 = temp0125temp0 <<= 19126FlipSign(temp0)127temp0 += object.ypos128temp0 += 0x80000129GetBit(temp2, object.propertyValue, 7)130temp3 = object.propertyValue131temp3 >>= 2132temp3 &= 15133GetBit(temp4, object.propertyValue, 6)134if temp4 == true135temp3 >>= 2136temp3 += 16137end if138139temp4 = 0140while temp4 < temp1141if temp2 == true142DrawSpriteXY(20, object.xpos, temp0)143end if144DrawSpriteXY(temp3, object.xpos, temp0)145temp0 += 0x100000146temp4++147loop148149if temp1 == 0150DrawSprite(temp3)151end if152end if153end event154155156// ========================157// Editor Events & Aliases158// ========================159160private alias 0 : VAR_ID_SIZE161private alias 1 : VAR_ID_PLANEL162private alias 2 : VAR_ID_PLANER163private alias 3 : VAR_ID_DRAWL164private alias 4 : VAR_ID_DRAWR165private alias 5 : VAR_ID_ONLYDRAWORDER166private alias 6 : VAR_ID_ONGROUND167168169event RSDKEdit170if editor.returnVariable == true171switch editor.variableID172case EDIT_VAR_PROPVAL // property value173checkResult = object.propertyValue174break175176case VAR_ID_SIZE // size177checkResult = object.propertyValue178checkResult &= 3179break180181case VAR_ID_PLANEL // collisionPlaneL182GetBit(checkResult, object.propertyValue, 2)183break184185case VAR_ID_PLANER // collisionPlaneR186GetBit(checkResult, object.propertyValue, 3)187break188189case VAR_ID_DRAWL // drawOrderL190GetBit(checkResult, object.propertyValue, 4)191break192193case VAR_ID_DRAWR // drawOrderR194GetBit(checkResult, object.propertyValue, 5)195break196197case VAR_ID_ONLYDRAWORDER // onlyDrawOrder198GetBit(checkResult, object.propertyValue, 6)199break200201case VAR_ID_ONGROUND // onGround202GetBit(checkResult, object.propertyValue, 7)203break204205end switch206else207switch editor.variableID208case EDIT_VAR_PROPVAL // property value209object.propertyValue = editor.variableValue210break211212case VAR_ID_SIZE // size213temp1 = 3214Not(temp1)215object.propertyValue &= temp1216217temp0 = editor.variableValue218temp0 &= 3219object.propertyValue |= temp0220break221222case VAR_ID_PLANEL // collisionPlaneL223CheckNotEqual(editor.variableValue, false)224SetBit(object.propertyValue, 2, checkResult)225break226227case VAR_ID_PLANER // collisionPlaneR228CheckNotEqual(editor.variableValue, false)229SetBit(object.propertyValue, 3, checkResult)230break231232case VAR_ID_DRAWL // drawOrderL233CheckNotEqual(editor.variableValue, false)234SetBit(object.propertyValue, 4, checkResult)235break236237case VAR_ID_DRAWR // drawOrderR238CheckNotEqual(editor.variableValue, false)239SetBit(object.propertyValue, 5, checkResult)240break241242case VAR_ID_ONLYDRAWORDER // onlyDrawOrder243CheckNotEqual(editor.variableValue, false)244SetBit(object.propertyValue, 6, checkResult)245break246247case VAR_ID_ONGROUND // onGround248CheckNotEqual(editor.variableValue, false)249SetBit(object.propertyValue, 7, checkResult)250break251252end switch253end if254end event255256257event RSDKDraw258// size259temp1 = object.propertyValue260temp1 &= 3261temp1 += 2262263temp0 = 1264temp0 <<= temp1265temp1 = temp0266temp0 <<= 19267FlipSign(temp0)268temp0 += object.ypos269temp0 += 0x80000270271// onGround272GetBit(temp2, object.propertyValue, 7)273temp3 = object.propertyValue274temp3 >>= 2275temp3 &= 15276277// onlyDrawOrder278GetBit(temp4, object.propertyValue, 6)279if temp4 == true280temp3 >>= 2281temp3 += 16282end if283284temp4 = 0285while temp4 < temp1286if temp2 == true287DrawSpriteXY(20, object.xpos, temp0)288end if289DrawSpriteXY(temp3, object.xpos, temp0)290temp0 += 0x100000291temp4++292loop293294if temp1 == 0295DrawSprite(temp3)296end if297end event298299300event RSDKLoad301LoadSpriteSheet("Global/Display.gif")302303temp0 = 0304temp1 = 42305while temp0 < 8306SpriteFrame(-8, -8, 16, 16, temp1, 130)307temp0++308temp1 += 17309loop310311temp0 = 0312temp1 = 42313while temp0 < 8314SpriteFrame(-8, -8, 16, 16, temp1, 147)315temp0++316temp1 += 17317loop318319SpriteFrame(-8, -8, 16, 16, 42, 164) // #16 - LL320SpriteFrame(-8, -8, 16, 16, 59, 164) // #17 - LH321SpriteFrame(-8, -8, 16, 16, 76, 164) // #18 - HL322SpriteFrame(-8, -8, 16, 16, 93, 164) // #19 - HH323324SpriteFrame(-8, -8, 16, 16, 93, 113) // #20 - back325326AddEditorVariable("size")327SetActiveVariable("size")328AddEnumVariable("4 Nodes", 0)329AddEnumVariable("8 Nodes", 1)330AddEnumVariable("16 Nodes", 2)331AddEnumVariable("32 Nodes", 3)332333AddEditorVariable("collisionPlaneL")334SetActiveVariable("collisionPlaneL")335AddEnumVariable("Plane A", 0)336AddEnumVariable("Plane B", 1)337338AddEditorVariable("collisionPlaneR")339SetActiveVariable("collisionPlaneR")340AddEnumVariable("Plane A", 0)341AddEnumVariable("Plane B", 1)342343AddEditorVariable("drawOrderL")344SetActiveVariable("drawOrderL")345AddEnumVariable("Low Layer", 0)346AddEnumVariable("High Layer", 1)347348AddEditorVariable("drawOrderR")349SetActiveVariable("drawOrderR")350AddEnumVariable("Low Layer", 0)351AddEnumVariable("High Layer", 1)352353AddEditorVariable("onlyDrawOrder")354SetActiveVariable("onlyDrawOrder")355AddEnumVariable("false", false)356AddEnumVariable("true", true)357358AddEditorVariable("onGround")359SetActiveVariable("onGround")360AddEnumVariable("false", false)361AddEnumVariable("true", true)362end event363364365