Path: blob/master/Sonic 1/Scripts/Global/PSwitch_V.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 12// 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.xvel : player.xvel21private alias object.gravity : player.gravity22private alias object.collisionPlane : player.collisionPlane23private alias object.value18 : player.sortedDrawOrder242526// ========================27// Events28// ========================2930event ObjectUpdate31foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)32CheckEqual(object.onGround, false)33temp0 = checkResult34CheckEqual(player[currentPlayer].gravity, GRAVITY_GROUND)35temp0 |= checkResult36if temp0 == true37BoxCollisionTest(C_TOUCH, object.entityPos, -12, object.extendTop, 12, object.extendBottom, currentPlayer, C_BOX, C_BOX, C_BOX, C_BOX)38if checkResult == true39if player[currentPlayer].xvel > 040player[currentPlayer].collisionPlane = object.planeL41player[currentPlayer].sortedDrawOrder = object.drawOrderL42else43player[currentPlayer].collisionPlane = object.planeR44player[currentPlayer].sortedDrawOrder = object.drawOrderR45end if46end if47end if48next49end event505152event ObjectStartup53foreach (TypeName[Plane Sw V], arrayPos0, ALL_ENTITIES)54temp0 = object[arrayPos0].propertyValue55temp0 &= 356temp0 += 257object[arrayPos0].extendTop = 158object[arrayPos0].extendTop <<= temp059object[arrayPos0].extendTop <<= 360object[arrayPos0].extendTop += 861object[arrayPos0].extendBottom = object[arrayPos0].extendTop62FlipSign(object[arrayPos0].extendTop)6364GetBit(object[arrayPos0].planeR, object[arrayPos0].propertyValue, 2)65GetBit(object[arrayPos0].planeL, object[arrayPos0].propertyValue, 3)6667GetBit(object[arrayPos0].drawOrderR, object[arrayPos0].propertyValue, 4)68object[arrayPos0].drawOrderR <<= 169object[arrayPos0].drawOrderR += 470GetBit(object[arrayPos0].drawOrderL, object[arrayPos0].propertyValue, 5)71object[arrayPos0].drawOrderL <<= 172object[arrayPos0].drawOrderL += 47374GetBit(object[arrayPos0].onGround, object[arrayPos0].propertyValue, 7)75next76end event7778// ========================79// Editor Events & Aliases80// ========================8182private alias 0 : VAR_ID_SIZE83private alias 1 : VAR_ID_PLANEL84private alias 2 : VAR_ID_PLANER85private alias 3 : VAR_ID_DRAWL86private alias 4 : VAR_ID_DRAWR87private alias 5 : VAR_ID_ONGROUND888990event RSDKEdit91if editor.returnVariable == true92switch editor.variableID93case EDIT_VAR_PROPVAL // property value94checkResult = object.propertyValue95break9697case VAR_ID_SIZE // size98checkResult = object.propertyValue99checkResult &= 3100break101102case VAR_ID_PLANEL // collisionPlaneL103GetBit(checkResult, object.propertyValue, 2)104break105106case VAR_ID_PLANER // collisionPlaneR107GetBit(checkResult, object.propertyValue, 3)108break109110case VAR_ID_DRAWL // drawOrderL111GetBit(checkResult, object.propertyValue, 4)112break113114case VAR_ID_DRAWR // drawOrderR115GetBit(checkResult, object.propertyValue, 5)116break117118case VAR_ID_ONGROUND // onGround119GetBit(checkResult, object.propertyValue, 7)120break121122end switch123else124switch editor.variableID125case EDIT_VAR_PROPVAL // property value126object.propertyValue = editor.variableValue127break128129case VAR_ID_SIZE // size130temp1 = 3131Not(temp1)132object.propertyValue &= temp1133134temp0 = editor.variableValue135temp0 &= 3136object.propertyValue |= temp0137break138139case VAR_ID_PLANEL // collisionPlaneL140CheckNotEqual(editor.variableValue, false)141SetBit(object.propertyValue, 2, checkResult)142break143144case VAR_ID_PLANER // collisionPlaneR145CheckNotEqual(editor.variableValue, false)146SetBit(object.propertyValue, 3, checkResult)147break148149case VAR_ID_DRAWL // drawOrderL150CheckNotEqual(editor.variableValue, false)151SetBit(object.propertyValue, 4, checkResult)152break153154case VAR_ID_DRAWR // drawOrderR155CheckNotEqual(editor.variableValue, false)156SetBit(object.propertyValue, 5, checkResult)157break158159case VAR_ID_ONGROUND // onGround160CheckNotEqual(editor.variableValue, false)161SetBit(object.propertyValue, 7, checkResult)162break163164end switch165end if166end event167168169event RSDKDraw170// Grabbed this from S2's debug view, since S1 doesn't have one, works the same though171172// size173temp1 = object.propertyValue174temp1 &= 3175temp1 += 2176177temp0 = 1178temp0 <<= temp1179temp1 = temp0180temp0 <<= 19181FlipSign(temp0)182temp0 += object.ypos183temp0 += 0x80000184185// onGround186GetBit(temp2, object.propertyValue, 7)187temp3 = object.propertyValue188temp3 >>= 2189temp3 &= 15190191if editor.showGizmos == true192// hitbox view goes here193end if194195temp4 = 0196while temp4 < temp1197if temp2 == true198DrawSpriteXY(16, object.xpos, temp0)199end if200DrawSpriteXY(temp3, object.xpos, temp0)201temp0 += 0x100000202temp4++203loop204205if temp1 == 0206DrawSprite(temp3)207end if208end event209210211event RSDKLoad212LoadSpriteSheet("Global/Display.gif")213214temp0 = 0215temp1 = 46216while temp0 < 8217SpriteFrame(-8, -8, 16, 16, temp1, 158)218temp0++219temp1 += 17220loop221222temp0 = 0223temp1 = 46224while temp0 < 8225SpriteFrame(-8, -8, 16, 16, temp1, 175)226temp0++227temp1 += 17228loop229230SpriteFrame(-8, -8, 16, 16, 182, 141) // #16 - back231232AddEditorVariable("size")233SetActiveVariable("size")234AddEnumVariable("4 Nodes", 0)235AddEnumVariable("8 Nodes", 1)236AddEnumVariable("16 Nodes", 2)237AddEnumVariable("32 Nodes", 3)238239AddEditorVariable("collisionPlaneL")240SetActiveVariable("collisionPlaneL")241AddEnumVariable("Plane A", 0)242AddEnumVariable("Plane B", 1)243244AddEditorVariable("collisionPlaneR")245SetActiveVariable("collisionPlaneR")246AddEnumVariable("Plane A", 0)247AddEnumVariable("Plane B", 1)248249AddEditorVariable("drawOrderL")250SetActiveVariable("drawOrderL")251AddEnumVariable("Low Layer", 0)252AddEnumVariable("High Layer", 1)253254AddEditorVariable("drawOrderR")255SetActiveVariable("drawOrderR")256AddEnumVariable("Low Layer", 0)257AddEnumVariable("High Layer", 1)258259AddEditorVariable("onGround")260SetActiveVariable("onGround")261AddEnumVariable("false", false)262AddEnumVariable("true", true)263end event264265266