Path: blob/master/Sonic 2/Scripts/Global/PSwitch_V.txt
1485 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Plane Sw V Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.extendTop12private alias object.value1 : object.extendBottom13private alias object.value2 : object.planeR14private alias object.value3 : object.planeL15private alias object.value4 : object.drawOrderR16private alias object.value5 : object.drawOrderL17private alias object.value6 : object.onGround1819// Player Aliases20private alias object.type : player.type21private alias object.xvel : player.xvel22private alias object.gravity : player.gravity23private alias object.collisionPlane : player.collisionPlane24private alias object.value18 : player.sortedDrawOrder252627// ========================28// Events29// ========================3031event ObjectUpdate32foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)33CheckEqual(object.onGround, false)34temp0 = checkResult35CheckEqual(player[currentPlayer].gravity, GRAVITY_GROUND)36temp0 |= checkResult37if temp0 == true38BoxCollisionTest(C_TOUCH, object.entityPos, -12, object.extendTop, 12, object.extendBottom, currentPlayer, 0, 0, 0, 0)39if checkResult == true40if player[currentPlayer].xvel > 041GetBit(temp0, object.propertyValue, 6)42if temp0 == false43player[currentPlayer].collisionPlane = object.planeL44end if4546player[currentPlayer].sortedDrawOrder = object.drawOrderL47else48#platform: USE_ORIGINS49if object[currentPlayer].xvel < 050#endplatform51GetBit(temp0, object.propertyValue, 6)52if temp0 == false53player[currentPlayer].collisionPlane = object.planeR54end if5556player[currentPlayer].sortedDrawOrder = object.drawOrderR57#platform: USE_ORIGINS58end if59#endplatform60end if61end if62end if63next64end event656667event ObjectStartup68LoadSpriteSheet("Global/Display.gif")6970SpriteFrame(-8, -8, 16, 16, 42, 130)71SpriteFrame(-8, -8, 16, 16, 59, 130)72SpriteFrame(-8, -8, 16, 16, 76, 130)73SpriteFrame(-8, -8, 16, 16, 93, 130)74SpriteFrame(-8, -8, 16, 16, 110, 130)75SpriteFrame(-8, -8, 16, 16, 127, 130)76SpriteFrame(-8, -8, 16, 16, 144, 130)77SpriteFrame(-8, -8, 16, 16, 161, 130)78SpriteFrame(-8, -8, 16, 16, 42, 147)79SpriteFrame(-8, -8, 16, 16, 59, 147)80SpriteFrame(-8, -8, 16, 16, 76, 147)81SpriteFrame(-8, -8, 16, 16, 93, 147)82SpriteFrame(-8, -8, 16, 16, 110, 147)83SpriteFrame(-8, -8, 16, 16, 127, 147)84SpriteFrame(-8, -8, 16, 16, 144, 147)85SpriteFrame(-8, -8, 16, 16, 161, 147)86SpriteFrame(-8, -8, 16, 16, 42, 164)87SpriteFrame(-8, -8, 16, 16, 59, 164)88SpriteFrame(-8, -8, 16, 16, 76, 164)89SpriteFrame(-8, -8, 16, 16, 93, 164)90SpriteFrame(-8, -8, 16, 16, 93, 113)9192foreach (TypeName[Plane Sw V], arrayPos0, ALL_ENTITIES)93temp0 = object[arrayPos0].propertyValue94temp0 &= 395temp0 += 296object[arrayPos0].extendTop = 197object[arrayPos0].extendTop <<= temp098object[arrayPos0].extendTop <<= 399object[arrayPos0].extendBottom = object[arrayPos0].extendTop100FlipSign(object[arrayPos0].extendTop)101102GetBit(object[arrayPos0].planeR, object[arrayPos0].propertyValue, 2)103GetBit(object[arrayPos0].planeL, object[arrayPos0].propertyValue, 3)104105GetBit(object[arrayPos0].drawOrderR, object[arrayPos0].propertyValue, 4)106object[arrayPos0].drawOrderR += 4107GetBit(object[arrayPos0].drawOrderL, object[arrayPos0].propertyValue, 5)108object[arrayPos0].drawOrderL += 4109110GetBit(object[arrayPos0].onGround, object[arrayPos0].propertyValue, 7)111next112end event113114115// This Object's kinda weird... its Draw comes after its Startup for some reason116event ObjectDraw117if player[0].type == TypeName[Debug Mode]118temp1 = object.propertyValue119temp1 &= 3120temp1 += 2121temp0 = 1122temp0 <<= temp1123temp1 = temp0124temp0 <<= 19125FlipSign(temp0)126temp0 += object.ypos127temp0 += 0x80000128GetBit(temp2, object.propertyValue, 7)129temp3 = object.propertyValue130temp3 >>= 2131temp3 &= 15132GetBit(temp4, object.propertyValue, 6)133if temp4 == true134temp3 >>= 2135temp3 += 16136end if137138temp4 = 0139while temp4 < temp1140if temp2 == true141DrawSpriteXY(20, object.xpos, temp0)142end if143DrawSpriteXY(temp3, object.xpos, temp0)144temp0 += 0x100000145temp4++146loop147148if temp1 == 0149DrawSprite(temp3)150end if151end if152end event153154155// ========================156// Editor Events & Aliases157// ========================158159private alias 0 : VAR_ID_SIZE160private alias 1 : VAR_ID_PLANEL161private alias 2 : VAR_ID_PLANER162private alias 3 : VAR_ID_DRAWL163private alias 4 : VAR_ID_DRAWR164private alias 5 : VAR_ID_ONLYDRAWORDER165private alias 6 : VAR_ID_ONGROUND166167168event RSDKEdit169if editor.returnVariable == true170switch editor.variableID171case EDIT_VAR_PROPVAL // property value172checkResult = object.propertyValue173break174175case VAR_ID_SIZE // size176checkResult = object.propertyValue177checkResult &= 3178break179180case VAR_ID_PLANEL // collisionPlaneL181GetBit(checkResult, object.propertyValue, 2)182break183184case VAR_ID_PLANER // collisionPlaneR185GetBit(checkResult, object.propertyValue, 3)186break187188case VAR_ID_DRAWL // drawOrderL189GetBit(checkResult, object.propertyValue, 4)190break191192case VAR_ID_DRAWR // drawOrderR193GetBit(checkResult, object.propertyValue, 5)194break195196case VAR_ID_ONLYDRAWORDER // onlyDrawOrder197GetBit(checkResult, object.propertyValue, 6)198break199200case VAR_ID_ONGROUND // onGround201GetBit(checkResult, object.propertyValue, 7)202break203204end switch205else206switch editor.variableID207case EDIT_VAR_PROPVAL // property value208object.propertyValue = editor.variableValue209break210211case VAR_ID_SIZE // size212temp1 = 3213Not(temp1)214object.propertyValue &= temp1215216temp0 = editor.variableValue217temp0 &= 3218object.propertyValue |= temp0219break220221case VAR_ID_PLANEL // collisionPlaneL222CheckNotEqual(editor.variableValue, false)223SetBit(object.propertyValue, 2, checkResult)224break225226case VAR_ID_PLANER // collisionPlaneR227CheckNotEqual(editor.variableValue, false)228SetBit(object.propertyValue, 3, checkResult)229break230231case VAR_ID_DRAWL // drawOrderL232CheckNotEqual(editor.variableValue, false)233SetBit(object.propertyValue, 4, checkResult)234break235236case VAR_ID_DRAWR // drawOrderR237CheckNotEqual(editor.variableValue, false)238SetBit(object.propertyValue, 5, checkResult)239break240241case VAR_ID_ONLYDRAWORDER // onlyDrawOrder242CheckNotEqual(editor.variableValue, false)243SetBit(object.propertyValue, 6, checkResult)244break245246case VAR_ID_ONGROUND // onGround247CheckNotEqual(editor.variableValue, false)248SetBit(object.propertyValue, 7, checkResult)249break250251end switch252end if253end event254255256event RSDKDraw257// size258temp1 = object.propertyValue259temp1 &= 3260temp1 += 2261262temp0 = 1263temp0 <<= temp1264temp1 = temp0265temp0 <<= 19266FlipSign(temp0)267temp0 += object.ypos268temp0 += 0x80000269270// onGround271GetBit(temp2, object.propertyValue, 7)272temp3 = object.propertyValue273temp3 >>= 2274temp3 &= 15275276// onlyDrawOrder277GetBit(temp4, object.propertyValue, 6)278if temp4 == true279temp3 >>= 2280temp3 += 16281end if282283temp4 = 0284while temp4 < temp1285if temp2 == true286DrawSpriteXY(20, object.xpos, temp0)287end if288DrawSpriteXY(temp3, object.xpos, temp0)289temp0 += 0x100000290temp4++291loop292293if temp1 == 0294DrawSprite(temp3)295end if296end event297298299event RSDKLoad300LoadSpriteSheet("Global/Display.gif")301302temp0 = 0303temp1 = 42304while temp0 < 8305SpriteFrame(-8, -8, 16, 16, temp1, 130)306temp0++307temp1 += 17308loop309310temp0 = 0311temp1 = 42312while temp0 < 8313SpriteFrame(-8, -8, 16, 16, temp1, 147)314temp0++315temp1 += 17316loop317318SpriteFrame(-8, -8, 16, 16, 42, 164) // #16 - LL319SpriteFrame(-8, -8, 16, 16, 59, 164) // #17 - LH320SpriteFrame(-8, -8, 16, 16, 76, 164) // #18 - HL321SpriteFrame(-8, -8, 16, 16, 93, 164) // #19 - HH322323SpriteFrame(-8, -8, 16, 16, 93, 113) // #20 - back324325AddEditorVariable("size")326SetActiveVariable("size")327AddEnumVariable("4 Nodes", 0)328AddEnumVariable("8 Nodes", 1)329AddEnumVariable("16 Nodes", 2)330AddEnumVariable("32 Nodes", 3)331332AddEditorVariable("collisionPlaneL")333SetActiveVariable("collisionPlaneL")334AddEnumVariable("Plane A", 0)335AddEnumVariable("Plane B", 1)336337AddEditorVariable("collisionPlaneR")338SetActiveVariable("collisionPlaneR")339AddEnumVariable("Plane A", 0)340AddEnumVariable("Plane B", 1)341342AddEditorVariable("drawOrderL")343SetActiveVariable("drawOrderL")344AddEnumVariable("Low Layer", 0)345AddEnumVariable("High Layer", 1)346347AddEditorVariable("drawOrderR")348SetActiveVariable("drawOrderR")349AddEnumVariable("Low Layer", 0)350AddEnumVariable("High Layer", 1)351352AddEditorVariable("onlyDrawOrder")353SetActiveVariable("onlyDrawOrder")354AddEnumVariable("false", false)355AddEnumVariable("true", true)356357AddEditorVariable("onGround")358SetActiveVariable("onGround")359AddEnumVariable("false", false)360AddEnumVariable("true", true)361end event362363364