Path: blob/master/Sonic 2/Scripts/CPZ/TransportTube.txt
1480 views
// ----------------------------------1// RSDK Project: Sonic 22// Script Description: Transport Tube Object3// Script Author: Christian Whitehead/Simon Thomley4// Unpacked by Rubberduckycooly's script unpacker5// ----------------------------------67// ========================8// Aliases9// ========================1011private alias object.value0 : object.targetPlayer12private alias object.value1 : object.newPos.x13private alias object.value2 : object.newPos.y14private alias object.value3 : object.timer15private alias object.value7 : object.hitboxRight16private alias object.value8 : object.tubeType17private alias object.value9 : object.transportPath18private alias object.value10 : object.transportTable19private alias object.value11 : object.tablePos20private alias object.value12 : object.transportDelay2122private alias 0 : TRANSPORTTUBE_AWAITPLAYER23private alias 1 : TRANSPORTTUBE_BLANK24private alias 2 : TRANSPORTTUBE_HASPLAYER25private alias 3 : TRANSPORTTUBE_TRANSPORTING26private alias 4 : TRANSPORTTUBE_EXITNODE2728// Player Aliases29private alias object.type : player.type30private alias object.state : player.state31private alias object.xpos : player.xpos32private alias object.ypos : player.ypos33private alias object.xvel : player.xvel34private alias object.yvel : player.yvel35private alias object.speed : player.speed36private alias object.gravity : player.gravity37private alias object.animationSpeed : player.animationSpeed38private alias object.animation : player.animation39private alias object.interaction : player.interaction40private alias object.scrollTracking : player.scrollTracking41private alias object.tileCollisions : player.tileCollisions42private alias object.value1 : player.timer43private alias object.value5 : player.rollAnimationSpeed44private alias object.value18 : player.sortedDrawOrder4546// ========================47// Function Declarations48// ========================4950reserve function TransportTube_HandleVelChange5152// ========================53// Tables54// ========================5556private table TransportTube_sizeTable57160, 256, 28858end table5960private table TransportTube_pathsTable612, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 1, 2, 162end table6364private table TransportTube_transportDelays16529, 23, 29, 23, 28, 23, 28, 23, 29, 23, 29, 2366end table6768private table TransportTube_transportDelays2695, 5, 10, 5, 5, 5, 4, 6, 6, 4, 4, 6, 5, 3, 770end table7172private table TransportTube_nodeFlagsTable732, 1, 0, 074-1, 3, 0, 0754, -2, 0, 076-3, -4, 0, 077-5, -5, 0, 0787, 6, 0, 079-7, -6, 0, 0808, 9, 0, 081-8, -9, 0, 08211, 10, 0, 08312, 0, 0, 084-11, -10, 0, 085-12, 0, 0, 0860, 13, 0, 087-13, 14, 0, 0880, -14, 0, 089end table9091private table TransportTube_transportTables1[12]9293private table TransportTube_transportTables2[15]9495// Lots of large tables here...96// They store all9798private table TransportTube_transportPath1_0990x900000, 0x1000001000x900000, 0x7000001010x400000, 0x7000001020x350000, 0x6F00001030x280000, 0x6A00001040x1E0000, 0x6200001050x150000, 0x5800001060x110000, 0x4A00001070x100000, 0x4000001080x110000, 0x3500001090x150000, 0x2700001100x1E0000, 0x1E00001110x280000, 0x1500001120x350000, 0x1100001130x400000, 0x1000001140x500000, 0x1000001150x5E0000, 0x1200001160x680000, 0x1800001170x6D0000, 0x2400001180x700000, 0x3000001190x6D0000, 0x3D00001200x680000, 0x4800001210x5E0000, 0x4E00001220x500000, 0x5000001230x300000, 0x5000001240x220000, 0x5200001250x170000, 0x5A00001260x110000, 0x6300001270x100000, 0x700000128end table129130private table TransportTube_transportPath1_11310x900000, 0x1000001320x900000, 0x7000001330x400000, 0x7000001340x2E0000, 0x6E00001350x1D0000, 0x6200001360x130000, 0x5300001370x100000, 0x4000001380x130000, 0x2D00001390x1D0000, 0x1E00001400x2E0000, 0x1300001410x400000, 0x1000001420x580000, 0x1000001430x640000, 0x1400001440x6C0000, 0x1A00001450x700000, 0x2800001460x6C0000, 0x3600001470x640000, 0x3C00001480x580000, 0x4000001490x4B0000, 0x3D00001500x400000, 0x3800001510x360000, 0x3200001520x280000, 0x3000001530x100000, 0x300000154end table155156private table TransportTube_transportPath1_21570x100000, 0x7000001580x110000, 0x6300001590x170000, 0x5A00001600x220000, 0x5200001610x300000, 0x5000001620x500000, 0x5000001630x5E0000, 0x4E00001640x680000, 0x4800001650x6D0000, 0x3D00001660x700000, 0x3000001670x6D0000, 0x2400001680x680000, 0x1800001690x5E0000, 0x1200001700x500000, 0x1000001710x400000, 0x1000001720x350000, 0x1100001730x280000, 0x1500001740x1E0000, 0x1E00001750x150000, 0x2700001760x110000, 0x3500001770x100000, 0x4000001780x110000, 0x4A00001790x150000, 0x5800001800x1E0000, 0x6200001810x280000, 0x6A00001820x350000, 0x6F00001830x400000, 0x7000001840x900000, 0x7000001850x900000, 0x100000186end table187188private table TransportTube_transportPath1_31890x100000, 0x3000001900x280000, 0x3000001910x360000, 0x3200001920x400000, 0x3800001930x4B0000, 0x3D00001940x580000, 0x4000001950x640000, 0x3C00001960x6C0000, 0x3600001970x700000, 0x2800001980x6C0000, 0x1A00001990x640000, 0x1400002000x580000, 0x1000002010x400000, 0x1000002020x2E0000, 0x1300002030x1D0000, 0x1E00002040x130000, 0x2D00002050x100000, 0x4000002060x130000, 0x5300002070x1D0000, 0x6200002080x2E0000, 0x6E00002090x400000, 0x7000002100x900000, 0x7000002110x900000, 0x100000212end table213214private table TransportTube_transportPath1_42150x100000, 0x1000002160x100000, 0x7000002170xC00000, 0x7000002180xCA0000, 0x6F00002190xD40000, 0x6C00002200xDB0000, 0x6800002210xE30000, 0x6200002220xE80000, 0x5A00002230xED0000, 0x5200002240xEF0000, 0x4800002250xF00000, 0x4000002260xEF0000, 0x3600002270xED0000, 0x2E00002280xE80000, 0x2600002290xE30000, 0x1E00002300xDB0000, 0x1700002310xD40000, 0x1400002320xCA0000, 0x1200002330xC00000, 0x1000002340xB70000, 0x1100002350xAF0000, 0x1200002360xA60000, 0x1700002370x9E0000, 0x1E00002380x970000, 0x2600002390x930000, 0x2E00002400x910000, 0x3600002410x900000, 0x4000002420x900000, 0x700000243end table244245private table TransportTube_transportPath1_52460x100000, 0x1000002470x100000, 0x7000002480xC00000, 0x7000002490xD20000, 0x6E00002500xE30000, 0x6200002510xED0000, 0x5300002520xF00000, 0x4000002530xED0000, 0x2D00002540xE30000, 0x1E00002550xD20000, 0x1300002560xC00000, 0x1000002570xA80000, 0x1000002580x9C0000, 0x1400002590x940000, 0x1A00002600x900000, 0x2800002610x940000, 0x3600002620x9C0000, 0x3C00002630xA80000, 0x4000002640xB50000, 0x3D00002650xC00000, 0x3800002660xCA0000, 0x3200002670xD80000, 0x3000002680xF00000, 0x300000269end table270271private table TransportTube_transportPath1_62720x900000, 0x7000002730x900000, 0x4000002740x910000, 0x3600002750x930000, 0x2E00002760x970000, 0x2600002770x9E0000, 0x1E00002780xA60000, 0x1700002790xAF0000, 0x1200002800xB70000, 0x1100002810xC00000, 0x1000002820xCA0000, 0x1200002830xD40000, 0x1400002840xDB0000, 0x1700002850xE30000, 0x1E00002860xE80000, 0x2600002870xED0000, 0x2E00002880xEF0000, 0x3600002890xF00000, 0x4000002900xEF0000, 0x4800002910xED0000, 0x5200002920xE80000, 0x5A00002930xE30000, 0x6200002940xDB0000, 0x6800002950xD40000, 0x6C00002960xCA0000, 0x6F00002970xC00000, 0x7000002980x100000, 0x7000002990x100000, 0x100000300end table301302private table TransportTube_transportPath1_73030xF00000, 0x3000003040xD80000, 0x3000003050xCA0000, 0x3200003060xC00000, 0x3800003070xB50000, 0x3D00003080xA80000, 0x4000003090x9C0000, 0x3C00003100x940000, 0x3600003110x900000, 0x2800003120x940000, 0x1A00003130x9C0000, 0x1400003140xA80000, 0x1000003150xC00000, 0x1000003160xD20000, 0x1300003170xE30000, 0x1E00003180xED0000, 0x2D00003190xF00000, 0x4000003200xED0000, 0x5300003210xE30000, 0x6200003220xD20000, 0x6E00003230xC00000, 0x7000003240x100000, 0x7000003250x100000, 0x100000326end table327328private table TransportTube_transportPath1_83290x1100000, 0x1000003300x1100000, 0x7000003310x400000, 0x7000003320x350000, 0x6F00003330x280000, 0x6A00003340x1E0000, 0x6200003350x150000, 0x5800003360x110000, 0x4A00003370x100000, 0x4000003380x110000, 0x3500003390x150000, 0x2700003400x1E0000, 0x1E00003410x280000, 0x1500003420x350000, 0x1100003430x400000, 0x1000003440x500000, 0x1000003450x5E0000, 0x1200003460x680000, 0x1800003470x6D0000, 0x2400003480x700000, 0x3000003490x6D0000, 0x3D00003500x680000, 0x4800003510x5E0000, 0x4E00003520x500000, 0x5000003530x300000, 0x5000003540x220000, 0x5200003550x170000, 0x5A00003560x110000, 0x6300003570x100000, 0x700000358end table359360private table TransportTube_transportPath1_93610x1100000, 0x1000003620x1100000, 0x7000003630x400000, 0x7000003640x2E0000, 0x6E00003650x1D0000, 0x6200003660x130000, 0x5300003670x100000, 0x4000003680x130000, 0x2D00003690x1D0000, 0x1E00003700x2E0000, 0x1300003710x400000, 0x1000003720x580000, 0x1000003730x640000, 0x1400003740x6C0000, 0x1A00003750x700000, 0x2800003760x6C0000, 0x3600003770x640000, 0x3C00003780x580000, 0x4000003790x4B0000, 0x3D00003800x400000, 0x3800003810x360000, 0x3200003820x280000, 0x3000003830x100000, 0x300000384end table385386private table TransportTube_transportPath1_103870x100000, 0x7000003880x110000, 0x6300003890x170000, 0x5A00003900x220000, 0x5200003910x300000, 0x5000003920x500000, 0x5000003930x5E0000, 0x4E00003940x680000, 0x4800003950x6D0000, 0x3D00003960x700000, 0x3000003970x6D0000, 0x2400003980x680000, 0x1800003990x5E0000, 0x1200004000x500000, 0x1000004010x400000, 0x1000004020x350000, 0x1100004030x280000, 0x1500004040x1E0000, 0x1E00004050x150000, 0x2700004060x110000, 0x3500004070x100000, 0x4000004080x110000, 0x4A00004090x150000, 0x5800004100x1E0000, 0x6200004110x280000, 0x6A00004120x350000, 0x6F00004130x400000, 0x7000004140x1100000, 0x7000004150x1100000, 0x100000416end table417418private table TransportTube_transportPath1_114190x100000, 0x3000004200x280000, 0x3000004210x360000, 0x3200004220x400000, 0x3800004230x4B0000, 0x3D00004240x580000, 0x4000004250x640000, 0x3C00004260x6C0000, 0x3600004270x700000, 0x2800004280x6C0000, 0x1A00004290x640000, 0x1400004300x580000, 0x1000004310x400000, 0x1000004320x2E0000, 0x1300004330x1D0000, 0x1E00004340x130000, 0x2D00004350x100000, 0x4000004360x130000, 0x5300004370x1D0000, 0x6200004380x2E0000, 0x6E00004390x400000, 0x7000004400x1100000, 0x7000004410x1100000, 0x100000442end table443444private table TransportTube_transportPath2_04450x7900000, 0x3B000004460x7100000, 0x3B000004470x7100000, 0x6B000004480xA900000, 0x6B000004490xA900000, 0x6700000450end table451452private table TransportTube_transportPath2_14530x7900000, 0x3F000004540x7900000, 0x4B000004550xA000000, 0x4B000004560xC100000, 0x4B000004570xC100000, 0x33000004580xD900000, 0x33000004590xD900000, 0x1B000004600xF100000, 0x1B000004610xF100000, 0x2B000004620xF900000, 0x2B00000463end table464465private table TransportTube_transportPath2_24660xAF00000, 0x63000004670xE900000, 0x63000004680xE900000, 0x6B000004690xF900000, 0x6B000004700xF900000, 0x6700000471end table472473private table TransportTube_transportPath2_34740xF900000, 0x2F000004750xF900000, 0x4B000004760xF100000, 0x4B000004770xF100000, 0x63000004780xF900000, 0x6300000479end table480481private table TransportTube_transportPath2_44820x14100000, 0x53000004830x11900000, 0x53000004840x11900000, 0x6B000004850x14100000, 0x6B000004860x14100000, 0x5700000487end table488489private table TransportTube_transportPath2_54900x1AF00000, 0x53000004910x1B900000, 0x53000004920x1B900000, 0x33000004930x1E100000, 0x3300000494end table495496private table TransportTube_transportPath2_64970x1A900000, 0x57000004980x1A900000, 0x5B000004990x1C100000, 0x5B000005000x1C100000, 0x43000005010x1E100000, 0x43000005020x1E100000, 0x3700000503end table504505private table TransportTube_transportPath2_75060x24900000, 0x37000005070x24900000, 0x3D000005080x23900000, 0x3D000005090x23900000, 0x5D000005100x25100000, 0x5D000005110x25100000, 0x5700000512end table513514private table TransportTube_transportPath2_85150x24F00000, 0x33000005160x25900000, 0x33000005170x25900000, 0x53000005180x25700000, 0x5300000519end table520521private table TransportTube_transportPath2_95220x3100000, 0x33000005230x2900000, 0x33000005240x2900000, 0x23000005250x4900000, 0x2300000526end table527528private table TransportTube_transportPath2_105290x3100000, 0x37000005300x3100000, 0x3B000005310x4100000, 0x3B000005320x4100000, 0x2B000005330x4900000, 0x2B000005340x4900000, 0x2700000535end table536537private table TransportTube_transportPath2_115380x4900000, 0x6F000005390x4900000, 0x73000005400x6900000, 0x73000005410x8900000, 0x73000005420x8900000, 0x6F00000543end table544545private table TransportTube_transportPath2_125460xBF00000, 0x33000005470xD900000, 0x33000005480xD900000, 0x2F00000549end table550551private table TransportTube_transportPath2_135520xD900000, 0x2B000005530xC900000, 0x2B000005540xC900000, 0xB000005550xE800000, 0xB000005560x11100000, 0xB000005570x11100000, 0x23000005580x10F00000, 0x2300000559end table560561562// ========================563// Function Definitions564// ========================565566private function TransportTube_HandleVelChange567temp0 = object.newPos.x568temp2 = 0x800569temp0 -= player[currentPlayer].xpos570if temp0 < 0571FlipSign(temp0)572FlipSign(temp2)573end if574temp0 >>= 16575576temp1 = object.newPos.y577temp3 = 0x800578temp1 -= player[currentPlayer].ypos579if temp1 < 0580FlipSign(temp1)581FlipSign(temp3)582end if583temp1 >>= 16584585if temp1 >= temp0586temp1 = object.newPos.y587temp1 -= player[currentPlayer].ypos588temp1 &= 0xFFFF0000589temp1 /= temp3590temp0 = object.newPos.x591temp0 -= player[currentPlayer].xpos592if temp0 != 0593temp0 &= 0xFFFF0000594temp0 /= temp1595end if596temp0 <<= 8597temp3 <<= 8598temp1 >>= 8599player[currentPlayer].xvel = temp0600player[currentPlayer].yvel = temp3601Abs(temp1)602object.timer = temp1603else604temp0 = object.newPos.x605temp0 -= player[currentPlayer].xpos606temp0 &= 0xFFFF0000607temp0 /= temp2608temp1 = object.newPos.y609temp1 -= player[currentPlayer].ypos610if temp1 != 0611temp1 &= 0xFFFF0000612temp1 /= temp0613end if614temp1 <<= 8615temp2 <<= 8616temp0 >>= 8617player[currentPlayer].xvel = temp2618player[currentPlayer].yvel = temp1619Abs(temp0)620object.timer = temp0621end if622end function623624625// ========================626// Events627// ========================628629event ObjectUpdate630switch object.state631case TRANSPORTTUBE_AWAITPLAYER632foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)633arrayPos0 = object.entityPos634arrayPos0 += currentPlayer635arrayPos0++636if player[currentPlayer].state != Player_State_Static637if player[currentPlayer].yvel > -0x40000638temp0 = object.hitboxright639BoxCollisionTest(C_TOUCH, object.entityPos, 0, 0, object.hitboxRight, 128, currentPlayer, 0, 0, 0, 0)640if checkResult == true641if object[arrayPos0].state == Player_State_Static642temp0 = player[currentPlayer].xpos643temp0 -= object.xpos644if object.hitboxRight == 256645FlipSign(temp0)646temp0 += 0x1000000647end if648649if temp0 >= 0x800000650// We're entering the tube651if object.transportPath != 2652temp3 = object.transportPath653else654temp3 = stage.seconds655temp3 &= 1656end if657else658// We're about to exit the tube659temp1 = player[currentPlayer].ypos660temp1 -= object.ypos661if temp1 >= 0x400000662temp3 = 2663else664temp3 = 3665end if666end if667668object[arrayPos0].transportPath = temp3669670temp3 += object.tubetype671GetTableValue(object[arrayPos0].transportTable, temp3, TransportTube_transportTables1)672GetTableValue(object[arrayPos0].transportDelay, temp3, TransportTube_transportDelays1)673object[arrayPos0].transportDelay--674675object[arrayPos0].tablePos = 0676GetTableValue(player[currentPlayer].xpos, object[arrayPos0].tablePos, object[arrayPos0].transportTable)677player[currentPlayer].xpos += object.xpos678679object[arrayPos0].tablePos++680GetTableValue(player[currentPlayer].ypos, object[arrayPos0].tablePos, object[arrayPos0].transportTable)681player[currentPlayer].ypos += object.ypos682683object[arrayPos0].tablePos++684temp0 = object[arrayPos0].tablePos685GetTableValue(object.newPos.x, temp0, object[arrayPos0].transportTable)686object.newPos.x += object.xpos687temp0++688689GetTableValue(object.newPos.y, temp0, object[arrayPos0].transportTable)690object.newPos.y += object.ypos691692CallFunction(TransportTube_HandleVelChange)693object[arrayPos0].timer = object.timer694object[arrayPos0].state = TRANSPORTTUBE_HASPLAYER695object[arrayPos0].propertyValue = object.propertyValue696object[arrayPos0].priority = PRIORITY_ACTIVE697object[arrayPos0].hitboxRight = object.hitboxRight698object[arrayPos0].targetPlayer = currentPlayer699700player[currentPlayer].speed = 0701player[currentPlayer].timer = 0702player[currentPlayer].state = Player_State_Static703player[currentPlayer].tileCollisions = false704player[currentPlayer].interaction = false705player[currentPlayer].animation = ANI_JUMPING706player[currentPlayer].rollAnimationSpeed = 0707player[currentPlayer].animationSpeed = 0708player[currentPlayer].gravity = GRAVITY_AIR709player[currentPlayer].scrollTracking = true710player[currentPlayer].sortedDrawOrder = 4711PlaySfx(SfxName[Rolling], false)712end if713end if714end if715end if716next717break718719case TRANSPORTTUBE_BLANK720break721722case TRANSPORTTUBE_HASPLAYER723currentPlayer = object.targetPlayer724object.timer--725if object.timer >= 0726// waiting... (I think)727else728GetTableValue(player[currentPlayer].xpos, object.tablePos, object.transportTable)729player[currentPlayer].xpos += object.xpos730object.tablePos++731GetTableValue(player[currentPlayer].ypos, object.tablePos, object.transportTable)732player[currentPlayer].ypos += object.ypos733object.tablePos++734if object.transportPath < 0735object.tablePos -= 4736end if737738object.transportDelay--739if object.transportDelay == 0740if object.transportPath >= 4741object.state = TRANSPORTTUBE_EXITNODE742player[currentPlayer].ypos &= 0x7FF0000743#platform: USE_STANDALONE744player[currentPlayer].state = Player_State_Air745#endplatform746#platform: USE_ORIGINS747player[currentPlayer].state = Player_State_Air_NoDropDash748#endplatform749player[currentPlayer].tileCollisions = true750player[currentPlayer].interaction = true751player[currentPlayer].xvel = 0752player[currentPlayer].yvel = -0x80000753754PlaySfx(SfxName[Release], false)755else756temp0 = object.propertyValue757temp0 &= 0xFC // (~3)758temp0 += object.transportPath759object.transportPath = 4760761GetTableValue(temp1, temp0, TransportTube_nodeFlagsTable)762if temp1 == 0763object.state = TRANSPORTTUBE_EXITNODE764player[currentPlayer].ypos &= 0x7FF0000765#platform: USE_STANDALONE766player[currentPlayer].state = Player_State_Air767#endplatform768#platform: USE_ORIGINS769player[currentPlayer].state = Player_State_Air_NoDropDash770#endplatform771player[currentPlayer].tileCollisions = true772player[currentPlayer].interaction = true773player[currentPlayer].xvel = 0774player[currentPlayer].yvel = -0x80000775776PlaySfx(SfxName[Release], false)777else778if temp1 < 0779FlipSign(temp1)780object.transportPath = -4781GetTableValue(object.transportTable, temp1, TransportTube_transportTables2)782GetTableValue(object.transportDelay, temp1, TransportTube_transportDelays2)783object.transportDelay--784object.tablePos = object.transportDelay785object.tablePos <<= 1786else787GetTableValue(object.transportTable, temp1, TransportTube_transportTables2)788GetTableValue(object.transportDelay, temp1, TransportTube_transportDelays2)789object.transportDelay--790object.tablePos = 0791end if792793GetTableValue(player[currentPlayer].xpos, object.tablePos, object.transportTable)794object.tablePos++795796GetTableValue(player[currentPlayer].ypos, object.tablePos, object.transportTable)797object.tablePos++798799if object.transportPath < 0800object.tablePos -= 4801end if802803temp0 = object.tablePos804GetTableValue(object.newPos.x, temp0, object.transportTable)805temp0++806GetTableValue(object.newPos.y, temp0, object.transportTable)807CallFunction(TransportTube_HandleVelChange)808PlaySfx(SfxName[Rolling], false)809object.state = TRANSPORTTUBE_TRANSPORTING810end if811end if812else813temp0 = object.tablePos814GetTableValue(object.newPos.x, temp0, object.transportTable)815object.newPos.x += object.xpos816temp0++817818GetTableValue(object.newPos.y, temp0, object.transportTable)819object.newPos.y += object.ypos820CallFunction(TransportTube_HandleVelChange)821end if822end if823824if player[currentPlayer].state != Player_State_Static825object.state = TRANSPORTTUBE_BLANK826object.priority = PRIORITY_BOUNDS827end if828829if player[currentPlayer].type == TypeName[Debug Mode]830object.state = TRANSPORTTUBE_BLANK831object.priority = PRIORITY_BOUNDS832end if833break834835case TRANSPORTTUBE_TRANSPORTING836currentPlayer = object.targetPlayer837838object.timer--839if object.timer >= 0840// waiting... (I think)841else842GetTableValue(player[currentPlayer].xpos, object.tablePos, object.transportTable)843object.tablePos++844845GetTableValue(player[currentPlayer].ypos, object.tablePos, object.transportTable)846object.tablePos++847if object.transportPath < 0848object.tablePos -= 4849end if850851object.transportDelay--852if object.transportDelay == 0853object.state = TRANSPORTTUBE_EXITNODE854player[currentPlayer].ypos &= 0x7FF0000855#platform: USE_STANDALONE856player[currentPlayer].state = Player_State_Air857#endplatform858#platform: USE_ORIGINS859player[currentPlayer].state = Player_State_Air_NoDropDash860#endplatform861player[currentPlayer].tileCollisions = true862player[currentPlayer].interaction = true863player[currentPlayer].xvel = 0864player[currentPlayer].yvel = -0x80000865866PlaySfx(SfxName[Release], false)867else868temp0 = object.tablePos869GetTableValue(object.newPos.x, temp0, object.transportTable)870temp0++871872GetTableValue(object.newPos.y, temp0, object.transportTable)873CallFunction(TransportTube_HandleVelChange)874end if875end if876877if player[currentPlayer].state != TRANSPORTTUBE_BLANK878object.state = TRANSPORTTUBE_BLANK879object.priority = PRIORITY_BOUNDS880end if881882if player[currentPlayer].type == TypeName[Debug Mode]883object.state = TRANSPORTTUBE_BLANK884object.priority = PRIORITY_BOUNDS885end if886break887888case TRANSPORTTUBE_EXITNODE889BoxCollisionTest(C_TOUCH, object.entityPos, 0, 0, object.hitboxRight, 128, currentPlayer, 0, 0, 0, 0)890if checkResult == false891object.state = TRANSPORTTUBE_BLANK892object.priority = PRIORITY_BOUNDS893end if894break895896end switch897end event898899900event ObjectStartup901// That's neat, you don't see many in-game objects that use the script box902// Well I suppose "use" would be a strech since the object doesn't ever actually draw anything, but903LoadSpriteSheet("Global/Display.gif")904SpriteFrame(-16, -16, 32, 32, 1, 143)905906SetTableValue(TransportTube_transportPath1_0, 0, TransportTube_transportTables1)907SetTableValue(TransportTube_transportPath1_1, 1, TransportTube_transportTables1)908SetTableValue(TransportTube_transportPath1_2, 2, TransportTube_transportTables1)909SetTableValue(TransportTube_transportPath1_3, 3, TransportTube_transportTables1)910SetTableValue(TransportTube_transportPath1_4, 4, TransportTube_transportTables1)911SetTableValue(TransportTube_transportPath1_5, 5, TransportTube_transportTables1)912SetTableValue(TransportTube_transportPath1_6, 6, TransportTube_transportTables1)913SetTableValue(TransportTube_transportPath1_7, 7, TransportTube_transportTables1)914SetTableValue(TransportTube_transportPath1_8, 8, TransportTube_transportTables1)915SetTableValue(TransportTube_transportPath1_9, 9, TransportTube_transportTables1)916SetTableValue(TransportTube_transportPath1_10, 10, TransportTube_transportTables1)917SetTableValue(TransportTube_transportPath1_11, 11, TransportTube_transportTables1)918919SetTableValue(TransportTube_transportPath2_0, 0, TransportTube_transportTables2)920SetTableValue(TransportTube_transportPath2_0, 1, TransportTube_transportTables2)921SetTableValue(TransportTube_transportPath2_1, 2, TransportTube_transportTables2)922SetTableValue(TransportTube_transportPath2_2, 3, TransportTube_transportTables2)923SetTableValue(TransportTube_transportPath2_3, 4, TransportTube_transportTables2)924SetTableValue(TransportTube_transportPath2_4, 5, TransportTube_transportTables2)925SetTableValue(TransportTube_transportPath2_5, 6, TransportTube_transportTables2)926SetTableValue(TransportTube_transportPath2_6, 7, TransportTube_transportTables2)927SetTableValue(TransportTube_transportPath2_7, 8, TransportTube_transportTables2)928SetTableValue(TransportTube_transportPath2_8, 9, TransportTube_transportTables2)929SetTableValue(TransportTube_transportPath2_9, 10, TransportTube_transportTables2)930SetTableValue(TransportTube_transportPath2_10, 11, TransportTube_transportTables2)931SetTableValue(TransportTube_transportPath2_11, 12, TransportTube_transportTables2)932SetTableValue(TransportTube_transportPath2_12, 13, TransportTube_transportTables2)933SetTableValue(TransportTube_transportPath2_13, 14, TransportTube_transportTables2)934935foreach (TypeName[Transport Tube], arrayPos0, ALL_ENTITIES)936if object[arrayPos0].propertyValue == 0xFF937object[arrayPos0].state = TRANSPORTTUBE_BLANK938object[arrayPos0].propertyValue = 0939else940object[arrayPos0].tubetype = object[arrayPos0].propertyValue941object[arrayPos0].tubetype &= 3942GetTableValue(object[arrayPos0].hitboxRight, object[arrayPos0].tubetype, TransportTube_sizeTable)943object[arrayPos0].tubetype <<= 2944945temp0 = object[arrayPos0].propertyValue946temp0 >>= 2947temp0 &= 15948GetTableValue(object[arrayPos0].transportPath, temp0, TransportTube_pathsTable)949end if950next951end event952953954// ========================955// Editor Events956// ========================957958event RSDKEdit959if editor.returnVariable == true960switch editor.variableID961case EDIT_VAR_PROPVAL // property value962checkResult = object.propertyValue963break964965case 0 // type966checkResult = object.propertyValue967if object.propertyValue != 0xFF968checkResult &= 3969end if970break971972case 1 // path973checkResult = 0974if object.propertyValue != 0xFF975checkResult = object.propertyValue976checkResult >>= 2977checkResult &= 0x0F978end if979break980981end switch982else983switch editor.variableID984case EDIT_VAR_PROPVAL // property value985object.propertyValue = editor.variableValue986break987988case 0 // type989if editor.variableValue == 0xFF990object.propertyValue = editor.variableValue991else992if object.propertyValue != 0xFF993// Not Transporter, keep our path value994temp0 = 3995Not(temp0)996object.propertyValue &= temp0997else998// was Transporter, reset property value999object.propertyValue = 01000end if10011002editor.variableValue &= 31003object.propertyValue |= editor.variableValue1004end if1005break10061007case 1 // path1008if object.propertyValue != 0xFF1009temp0 = 0x0F1010temp0 <<= 21011Not(temp0)1012object.propertyValue &= temp010131014editor.variableValue &= 0x0F1015editor.variableValue <<= 21016object.propertyValue |= editor.variableValue1017end if1018break10191020end switch1021end if1022end event102310241025event RSDKDraw1026DrawSprite(0)1027end event102810291030event RSDKLoad1031LoadSpriteSheet("Global/Display.gif")1032SpriteFrame(-16, -16, 32, 32, 1, 143)10331034AddEditorVariable("type")1035SetActiveVariable("type")1036AddEnumVariable("Entry", 0)1037AddEnumVariable("Entry1", 1)1038AddEnumVariable("Entry2", 2)1039AddEnumVariable("Entry3", 3)1040AddEnumVariable("Transporter", 0xFF)10411042AddEditorVariable("path")1043SetActiveVariable("path")1044end event104510461047