Path: blob/master/Sonic 2/Scripts/Global/PSwitch_H.txt
1485 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Plane Sw H 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.state : player.state22private alias object.yvel : player.yvel23private alias object.gravity : player.gravity24private alias object.collisionPlane : player.collisionPlane25private alias object.value18 :player.sortedDrawOrder262728// ========================29// Events30// ========================3132event ObjectUpdate33foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)34CheckEqual(object.onGround, false)35temp0 = checkResult36CheckEqual(player[currentPlayer].gravity, GRAVITY_GROUND)37temp0 |= checkResult38CheckEqual(player[currentPlayer].state, Player_State_Climb)39temp0 |= checkResult4041if temp0 == true42BoxCollisionTest(C_TOUCH, object.entityPos, object.extendTop, -12, object.extendBottom, 12, currentPlayer, 0, 0, 0, 0)43if checkResult == true44if player[currentPlayer].yvel > 045GetBit(temp0, object.propertyValue, 6)46if temp0 == false47player[currentPlayer].collisionPlane = object.planeL48end if49player[currentPlayer].sortedDrawOrder = object.drawOrderL50else51GetBit(temp0, object.propertyValue, 6)52if temp0 == false53player[currentPlayer].collisionPlane = object.planeR54end if55player[currentPlayer].sortedDrawOrder = object.drawOrderR56end if57end if58end if59next60end event616263event ObjectStartup64LoadSpriteSheet("Global/Display.gif")6566SpriteFrame(-8, -8, 16, 16, 42, 130)67SpriteFrame(-8, -8, 16, 16, 59, 130)68SpriteFrame(-8, -8, 16, 16, 76, 130)69SpriteFrame(-8, -8, 16, 16, 93, 130)70SpriteFrame(-8, -8, 16, 16, 110, 130)71SpriteFrame(-8, -8, 16, 16, 127, 130)72SpriteFrame(-8, -8, 16, 16, 144, 130)73SpriteFrame(-8, -8, 16, 16, 161, 130)74SpriteFrame(-8, -8, 16, 16, 42, 147)75SpriteFrame(-8, -8, 16, 16, 59, 147)76SpriteFrame(-8, -8, 16, 16, 76, 147)77SpriteFrame(-8, -8, 16, 16, 93, 147)78SpriteFrame(-8, -8, 16, 16, 110, 147)79SpriteFrame(-8, -8, 16, 16, 127, 147)80SpriteFrame(-8, -8, 16, 16, 144, 147)81SpriteFrame(-8, -8, 16, 16, 161, 147)82SpriteFrame(-8, -8, 16, 16, 42, 164)83SpriteFrame(-8, -8, 16, 16, 59, 164)84SpriteFrame(-8, -8, 16, 16, 76, 164)85SpriteFrame(-8, -8, 16, 16, 93, 164)86SpriteFrame(-8, -8, 16, 16, 93, 113)8788foreach (TypeName[Plane Sw H], arrayPos0, ALL_ENTITIES)89temp0 = object[arrayPos0].propertyValue90temp0 &= 391temp0 += 292object[arrayPos0].extendTop = 193object[arrayPos0].extendTop <<= temp094object[arrayPos0].extendTop <<= 395object[arrayPos0].extendBottom = object[arrayPos0].extendTop96FlipSign(object[arrayPos0].extendTop)97GetBit(object[arrayPos0].planeR, object[arrayPos0].propertyValue, 2)98GetBit(object[arrayPos0].planeL, object[arrayPos0].propertyValue, 3)99100GetBit(object[arrayPos0].drawOrderR, object[arrayPos0].propertyValue, 4)101object[arrayPos0].drawOrderR += 4102GetBit(object[arrayPos0].drawOrderL, object[arrayPos0].propertyValue, 5)103object[arrayPos0].drawOrderL += 4104105GetBit(object[arrayPos0].onGround, object[arrayPos0].propertyValue, 7)106next107end event108109// This Object's kinda weird... its Draw comes after its Startup for some reason110event ObjectDraw111if player[0].type == TypeName[Debug Mode]112temp1 = object.propertyValue113temp1 &= 3114temp1 += 2115temp0 = 1116temp0 <<= temp1117temp1 = temp0118temp0 <<= 19119FlipSign(temp0)120temp0 += object.xpos121temp0 += 0x80000122GetBit(temp2, object.propertyValue, 7)123temp3 = object.propertyValue124temp3 >>= 2125temp3 &= 15126GetBit(temp4, object.propertyValue, 6)127if temp4 == true128temp3 >>= 2129temp3 += 16130end if131132temp4 = 0133while temp4 < temp1134if temp2 == true135DrawSpriteXY(20, temp0, object.ypos)136end if137DrawSpriteXY(temp3, temp0, object.ypos)138temp0 += 0x100000139temp4++140loop141142if temp1 == 0143DrawSprite(temp3)144end if145end if146end event147148149// ========================150// Editor Events & Aliases151// ========================152153private alias 0 : VAR_ID_SIZE154private alias 1 : VAR_ID_PLANEL155private alias 2 : VAR_ID_PLANER156private alias 3 : VAR_ID_DRAWL157private alias 4 : VAR_ID_DRAWR158private alias 5 : VAR_ID_ONLYDRAWORDER159private alias 6 : VAR_ID_ONGROUND160161162event RSDKEdit163if editor.returnVariable == true164switch editor.variableID165case EDIT_VAR_PROPVAL // property value166checkResult = object.propertyValue167break168169case VAR_ID_SIZE // size170checkResult = object.propertyValue171checkResult &= 3172break173174case VAR_ID_PLANEL // collisionPlaneL175GetBit(checkResult, object.propertyValue, 2)176break177178case VAR_ID_PLANER // collisionPlaneR179GetBit(checkResult, object.propertyValue, 3)180break181182case VAR_ID_DRAWL // drawOrderL183GetBit(checkResult, object.propertyValue, 4)184break185186case VAR_ID_DRAWR // drawOrderR187GetBit(checkResult, object.propertyValue, 5)188break189190case VAR_ID_ONLYDRAWORDER // onlyDrawOrder191GetBit(checkResult, object.propertyValue, 6)192break193194case VAR_ID_ONGROUND // onGround195GetBit(checkResult, object.propertyValue, 7)196break197198end switch199else200switch editor.variableID201case EDIT_VAR_PROPVAL // property value202object.propertyValue = editor.variableValue203break204205case VAR_ID_SIZE // size206temp1 = 3207Not(temp1)208object.propertyValue &= temp1209210temp0 = editor.variableValue211temp0 &= 3212object.propertyValue |= temp0213break214215case VAR_ID_PLANEL // collisionPlaneL216CheckNotEqual(editor.variableValue, false)217SetBit(object.propertyValue, 2, checkResult)218break219220case VAR_ID_PLANER // collisionPlaneR221CheckNotEqual(editor.variableValue, false)222SetBit(object.propertyValue, 3, checkResult)223break224225case VAR_ID_DRAWL // drawOrderL226CheckNotEqual(editor.variableValue, false)227SetBit(object.propertyValue, 4, checkResult)228break229230case VAR_ID_DRAWR // drawOrderR231CheckNotEqual(editor.variableValue, false)232SetBit(object.propertyValue, 5, checkResult)233break234235case VAR_ID_ONLYDRAWORDER // onlyDrawOrder236CheckNotEqual(editor.variableValue, false)237SetBit(object.propertyValue, 6, checkResult)238break239240case VAR_ID_ONGROUND // onGround241CheckNotEqual(editor.variableValue, false)242SetBit(object.propertyValue, 7, checkResult)243break244245end switch246end if247end event248249250event RSDKDraw251temp1 = object.propertyValue252temp1 &= 3253temp1 += 2254temp0 = 1255temp0 <<= temp1256temp1 = temp0257temp0 <<= 19258FlipSign(temp0)259temp0 += object.xpos260temp0 += 0x80000261GetBit(temp2, object.propertyValue, 7)262temp3 = object.propertyValue263temp3 >>= 2264temp3 &= 15265GetBit(temp4, object.propertyValue, 6)266if temp4 == true267temp3 >>= 2268temp3 += 16269end if270271temp4 = 0272while temp4 < temp1273if temp2 == true274DrawSpriteXY(20, temp0, object.ypos)275end if276DrawSpriteXY(temp3, temp0, object.ypos)277temp0 += 0x100000278temp4++279loop280281if temp1 == 0282DrawSprite(temp3)283end if284end event285286287event RSDKLoad288LoadSpriteSheet("Global/Display.gif")289290temp0 = 0291temp1 = 42292while temp0 < 8293SpriteFrame(-8, -8, 16, 16, temp1, 130)294temp0++295temp1 += 17296loop297298temp0 = 0299temp1 = 42300while temp0 < 8301SpriteFrame(-8, -8, 16, 16, temp1, 147)302temp0++303temp1 += 17304loop305306SpriteFrame(-8, -8, 16, 16, 42, 164) // #16 - LL307SpriteFrame(-8, -8, 16, 16, 59, 164) // #17 - LH308SpriteFrame(-8, -8, 16, 16, 76, 164) // #18 - HL309SpriteFrame(-8, -8, 16, 16, 93, 164) // #19 - HH310311SpriteFrame(-8, -8, 16, 16, 93, 113) // #20 - back312313AddEditorVariable("size")314SetActiveVariable("size")315AddEnumVariable("4 Nodes", 0)316AddEnumVariable("8 Nodes", 1)317AddEnumVariable("16 Nodes", 2)318AddEnumVariable("32 Nodes", 3)319320AddEditorVariable("collisionPlaneL")321SetActiveVariable("collisionPlaneL")322AddEnumVariable("Plane A", 0)323AddEnumVariable("Plane B", 1)324325AddEditorVariable("collisionPlaneR")326SetActiveVariable("collisionPlaneR")327AddEnumVariable("Plane A", 0)328AddEnumVariable("Plane B", 1)329330AddEditorVariable("drawOrderL")331SetActiveVariable("drawOrderL")332AddEnumVariable("Low Layer", 0)333AddEnumVariable("High Layer", 1)334335AddEditorVariable("drawOrderR")336SetActiveVariable("drawOrderR")337AddEnumVariable("Low Layer", 0)338AddEnumVariable("High Layer", 1)339340AddEditorVariable("onlyDrawOrder")341SetActiveVariable("onlyDrawOrder")342AddEnumVariable("false", false)343AddEnumVariable("true", true)344345AddEditorVariable("onGround")346SetActiveVariable("onGround")347AddEnumVariable("false", false)348AddEnumVariable("true", true)349end event350351352