Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

[Script] Teleport - from scratch teleport token.

Pat said: The pad number is a state variable, just there to prevent an accidental duplication of pad names. Any time a pad is created or there is an attempt to create, it increments. Pad ids are unique as they are token ids, the number increment is just to avoid having "new pad token" as the name of a bunch of pads. It has nothing to do with the actual targeting of teleport pads.  I'm curious about this and what it means:  Nicolas G. said:  And sometimes, some of my pages can't receive new teleport pad without making a crash of the API. I am obliged to create a new page redraw all I have done with the previous and delete the previous one... If it was possible to clear the memories, it will act like it was the first time I create a teleport pad... Is it stupid ? "...can't receive new teleport pad without making a crash of the API" All of the information on a teleport pad is stored in the teleport pad. If you create a pad and link it, and then copy and paste it into a new page or into the same page, any pads linked to it will have their links "broken" unless they are unlinked and re-linked, because the new teleport token has a new token id, which is how links are managed. The pasted teleport pad will not have its outgoing links broken (they are also by token id, and those "outgoing" ids have not changed) but any pad linked to this copied and pasted pad will no longer work , as the token id of this pad is now different (part of the Roll20 create object method, to prevent a collision of object ids). None of that should require redrawing a page entirely...   So I'm curious - what's the message on the API crash, so I can troubleshoot it?  Of course, I never try to copy paste some pad. For my actual game, I have deleted all the teleport token, if I create a new token called teleport 81, then I switch to a second page called teleport 81 (I don't know why the incrementation is not made...). When my player try the teleport, I got this error: TypeError: Cannot read property 'get' of undefined TypeError: Cannot read property 'get' of undefined at apiscript.js:807:35 at Function.each (/home/node/d20-api-server/node_modules/underscore/underscore.js:188:9) at limboSwap (apiscript.js:805:15) at teleportToken (apiscript.js:884:23) at apiscript.js:698:25 at Function.each (/home/node/d20-api-server/node_modules/underscore/underscore.js:188:9) at teleportPadCheck (apiscript.js:679:15) at autoTeleportCheck (apiscript.js:1193:17) at eval (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:65:16) at Object.publish (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:70:8) And if a create a new page, create a new teleport token, create a second new page, a second new teleport token,take the player on the first new page, when the player goes on the first teleport pad, the token travel good, but the player stay on the first new page and I have to manualy move him to the second new page but no error occur... I am not sure to be completely clear because my birth language is french... But I can do more test or try to follow a step by step to try something to reproduce the crash...
1606537637
Pat
Pro
API Scripter
Thank you, I think I can track it from there - I'm going to continue to work on why the cross-page teleport is not moving player ribbons... I have not been able to diagnose it yet, but I'm working on it this weekend. 
1606579486
Pat
Pro
API Scripter
Update Attempted the following in the -=>  new gist  <=- (hopefully) caught for script error when checking for limbo on target page Substituted cross-page teleport character move with new algorithm - still not sure it's working, it should be but for some reason it isn't... Refactor of all quotes and apostrophes to normalize script to standard JS.  Reduction of object params to individual function arguments
1606956327

Edited 1606971635
Pat
Pro
API Scripter
Thanks to The_Aaron for helping and troubleshooting and providing several functions Update It appears that cross-page teleport is now working in the gist . If others can test this and confirm, I'll upload so it will be available in one-click on next Tuesday. Corrected issues: Bug with more than one player controlling a token Bug with evaluation of token player Bug with correct application of player ID to playerspecificpages Bug with controlling token when GM moves player token to select list option multi-teleport Bug with text display due to undeclared variable under "use strict" Bug with "find" ping not appearing on same page as teleport pad page Bug with select list constructor using passed values in incorrect order Other bugs in declaration Added "Purge" under Configuration to purge playerspecificpages if there is an issue from previous declarations Reduced uptick of portal id number increments If it fails to work , and you used the one-click or previous gist version , you may have to go to Main Menu => Config Menu => and press Purge if you've used this previously and there is bad data (i.e. if you use this new script and it fails to work). Once you purge, you'll have to re-start the sandbox , and all players and the GM will have to reload if you are doing it "live."  New Gist Here   Not yet reconciled: Player crowding/collision on destination pads Re-joining separated player ribbons automatically to the main player ribbon Toggle to pull along all of that player's tokens (followers/pets/henchpersons/constructs/droids/etc) (per pad or systemwide?)
1607006408
Pat
Pro
API Scripter
After multiple passes through multiple validators, and testing of all existing functions, posted version 1.2 up to repository change #1138
1607021260

Edited 1607022139
Tested out the latest update, and after purging, restarting API, and refreshing the browsers, cross-page teleport seemed to work at first, except the player ribbon and individual player icon both 'moved' to the same page they started on. So from the player perspective, it seemed like it went to a new map, but instead the initial map reloaded. The tokens swapped layers on both pages as expected, so the player then sees nothing since the token gets moved to the GM layer when they stay on the initial map. Other than that, everything seems to be working fantastically! EDIT: If the player ribbon is on a page other than one of the two maps being moved between, and the player starts on that one alone, then that player is moved to the pages correctly, but there are some issues: The player doesn't get pinged to their token. Dragging their icon from their current page to the player ribbon doesn't change the page for them. Their icon is gone from the page menu, but they are still on a separate page than the player ribbon. They must be dragged to the ribbon page without merging them with the ribbon, then merged with the ribbon after, or their avatar needs to be dragged from the bottom of the screen directly to the ribbon.
1607022130
The Aaron
Roll20 Production Team
API Scripter
Did you run the Purge command?  Try that and see if it works afterwards.
1607031204
Pat
Pro
API Scripter
I'll keep digging on this, however I'm not sure how much I can do - at some point I'm fighting the API implementation and the drag-drop on screen implementation. 
1607102403
Pat
Pro
API Scripter
Persephone said: Tested out the latest update, and after purging, restarting API, and refreshing the browsers, cross-page teleport seemed to work at first, except the player ribbon and individual player icon both 'moved' to the same page they started on. So from the player perspective, it seemed like it went to a new map, but instead the initial map reloaded. The tokens swapped layers on both pages as expected, so the player then sees nothing since the token gets moved to the GM layer when they stay on the initial map. Other than that, everything seems to be working fantastically! EDIT: If the player ribbon is on a page other than one of the two maps being moved between, and the player starts on that one alone, then that player is moved to the pages correctly, but there are some issues: The player doesn't get pinged to their token. Dragging their icon from their current page to the player ribbon doesn't change the page for them. Their icon is gone from the page menu, but they are still on a separate page than the player ribbon. They must be dragged to the ribbon page without merging them with the ribbon, then merged with the ribbon after, or their avatar needs to be dragged from the bottom of the screen directly to the ribbon. Regarding token ping, that may have to be on a delayed start - I'm not sure if there is an event you can listen for regarding a player changing pages... but I suspect more of a delay for the ping and FX might be in order when changing pages. I'll try and test it out. 
No worries, I'm still really enjoying using the script! Just wanted to share what I found when testing cross-page. Same-page teleportation on its own is still extremely helpful. Thank you for sharing such an awesome script :)
1607109339
Pat
Pro
API Scripter
Persephone said: No worries, I'm still really enjoying using the script! Just wanted to share what I found when testing cross-page. Same-page teleportation on its own is still extremely helpful. Thank you for sharing such an awesome script :) Any and all feedback helps! It's still in active development, so a future version (in a week or so) may have as many issues corrected - if you use one-click after next tuesday, it will be the current script. 
1607384907

Edited 1607547223
Pat
Pro
API Scripter
Update Version 1.2 is out on One Click Next thing to figure out: how to filter graphic:change  events for changes of left and top and not rotation, status select, etc. Only move onto pad from other destination. I figure I have to change the "last" value to detect if it teleported to here and ignore all motions until that changes (last not equal to current token change left and top). Players are rotating their tokens, and then teleporting...  As well as a crowding mechanism that respects token boundaries in square and both hex modes and somehow also works in "free" mode too...  So, for version 1.2.1:  Don't teleport unless the graphic change is a left and top Avoid crowding Adding:  Add check for player online for cross-page teleport, provide warning and possible button to confirm if player is offline.
1607550088
Pat
Pro
API Scripter
A user has reported a crash of the sandbox on display of global teleport list - is this a general issue? Has anyone else reported this, or can help in re-creating this? 
Just tried the command !teleport --globalpdlist and didn't have any issues.
1607590280
Pat
Pro
API Scripter
Persephone said: Just tried the command !teleport --globalpdlist and didn't have any issues. Okay - thank you - that confirms what I think is with that issue.  I'm still looking at the teleport issue, and there seems to be a dichotomy between setting Campaign().playerspecificpages and how the tabletop handles drag-drops of players onto pages. They may look similar, but from what I'm looking at on the teleportations that happen with the teleport.js script:  If a player leaves when they have their individual player ribbon on another page due to using teleport.js, they get re-merged to the main player ribbon when they return (even though their individual player ribbon remains on the target page), and do not return to the page they were teleported to which had their individual player ribbon. Also, if the GM reloads the campaign after they leave (refresh) their individual player ribbon disappears.   If a player leaves when their individual player ribbon is moved by dragging their player image to a page, this doesn't happen - they retain their individual player ribbon, but they cannot be teleported by teleport.js across pages anymore until they are re-merged with the main player ribbon. The upshot is, player individual page teleports through teleport.js work, but do not persist between sessions, and I'm not sure why there is a difference. This also lies, I believe, at the difficulty of re-merging an individual player ribbon with the main player ribbon. 
1607700798

Edited 1607712827
Pat
Pro
API Scripter
Update Version 1.2.1 has been  uploaded to the repository and should be out on one-click on Tuesday, December 15th. If you need the error catching before that, you can get it at the gist . It corrects crashing the API Sandbox when encountering a teleport token with invalid link data It no longer triggers auto-teleport when a player token is rotated or has other graphic change events occur when on a teleport pad. 
1607846956
Pat
Pro
API Scripter
Update Version 1.2.2 is up on the gist . It addresses the source of some invalid data: deleted teleport tokens. On graphic: destroy, this script checks to see if the graphic was a teleport token. If it was, it puts a note in chat with a confirmation button asking if you want to delete all references (now invalid data). If confirmed, it announces the number of references removed and presents a main menu button.
1607938455
Pat
Pro
API Scripter
All changes folded into version 1.2.1 to be released on December 15th. Fixes for cross-page (cross my fingers), fixes for invalid data, check for graphic: destroy to get rid of invalid data on other teleport pads that may be pointing to invalid data. 
1607971891
Pat
Pro
API Scripter
What's Next if this version is stable:  crowding integration of optional alternative token marker handling integration of optional token copying integration of selected token passthrough any other integrations that make sense
Last test today... Wonderfull ! No probleme, all is perfect. For me, there is no  need for changing. Except one little improvement, when I create a wide teleport (more than one square), the token have to make  more than one move, so after the first move, he can be teleport again and not be able to leave the teleport. I am not sure to be clear. Thanks a lot for all the work you made. It is very pleasant and it allows me to focus on players, combats and RP and not taking care of the ribbon. Beside, it is very fun for player, they all thanks you to.
1608783609
Pat
Pro
API Scripter
Nicolas G. said: Last test today... Wonderfull ! No probleme, all is perfect. For me, there is no  need for changing. Except one little improvement, when I create a wide teleport (more than one square), the token have to make  more than one move, so after the first move, he can be teleport again and not be able to leave the teleport. I am not sure to be clear. Thanks a lot for all the work you made. It is very pleasant and it allows me to focus on players, combats and RP and not taking care of the ribbon. Beside, it is very fun for player, they all thanks you to. Love to hear that it's working so well for you, and yes - I can see about that: I can check to see if its last move was also within the teleport token, and halt a teleport in that instance - I'll work on that for the next release, although I may ask if you can test that version too! 
1608798081

Edited 1608835955
Pat
Pro
API Scripter
Update Teleport no longer auto-teleports if a token is moved within the same teleport token and not to another space between checks. This means a player token or other token is free to move around in the space of a destination token without setting it off until they fully leave and return to the space.  Check out the Gist here , please test with larger portals.  Edited to Add: This has been submitted to the Roll20 One-Click repository as version 1.2.2.  
1608891613
Pat
Pro
API Scripter
Known issue: Teleport doesn't work with emojibubbles currently... tokens leave them behind when teleported within the same page, or lose them if teleported to a new page as well as leaving them behind -meaning orphaned emojibubbles all over the place... I may put in a check to delete emojibubbles on teleport in teleport... it's a check to see if it exists, and firing a "clear" command automatically if it is. 
Waw, this new feather is exactly what i want. I have notice something elese but I am not sure that is your Script the problem. For the record I note it here : A player use Altbar to heal his character, just after that, I Switch the player ribbon (without the player involved) to an other map. And the heal was annulled. Thanks again.
1609203756
Pat
Pro
API Scripter
Nicolas G. said: Waw, this new feather is exactly what i want. I have notice something elese but I am not sure that is your Script the problem. For the record I note it here : A player use Altbar to heal his character, just after that, I Switch the player ribbon (without the player involved) to an other map. And the heal was annulled. Thanks again. I hope the new feature works for you and your group!  So... the Teleport script only shifts the position (left and top) and layer of player and NPC tokens - when a token is "teleported" between pages, it's shifting the player ribbon and moving two different tokens in top and left and between layers. The synchronization of tokens between pages isn't part of that - that's due to the character sheet and any synchronization that happens there.  So, there's nothing I can do for desynching between healing on tokens. 
Pat said: Update Teleport no longer auto-teleports if a token is moved within the same teleport token and not to another space between checks. This means a player token or other token is free to move around in the space of a destination token without setting it off until they fully leave and return to the space.  Check out the Gist here , please test with larger portals.  Edited to Add: This has been submitted to the Roll20 One-Click repository as version 1.2.2.   I can provide feed back that this may not work as intended. With just a single token, the teleported token will land in the center of the destination pad. Any single square grid movement causes the auto teleport to trigger. It does not seem to matter if its cross page or within the same page.  Example Telepad 1 linked to Telepad 2 and Telepad 2 linked back to Telepad 1. Both graphics are 3x3 squares (70px each square).  I or the test player can pick up the token and move out of the pad and its find. Within that 3x3 square on the pad if its moved just a single space it teleports back to the other pad. This is with the one click installed Version 1.2.2.
1609397824

Edited 1609430499
Pat
Pro
API Scripter
Mark (GM) said: Pat said: Update Teleport no longer auto-teleports if a token is moved within the same teleport token and not to another space between checks. This means a player token or other token is free to move around in the space of a destination token without setting it off until they fully leave and return to the space.  Check out the Gist here , please test with larger portals.  Edited to Add: This has been submitted to the Roll20 One-Click repository as version 1.2.2.   I can provide feed back that this may not work as intended. With just a single token, the teleported token will land in the center of the destination pad. Any single square grid movement causes the auto teleport to trigger. It does not seem to matter if its cross page or within the same page.  Example Telepad 1 linked to Telepad 2 and Telepad 2 linked back to Telepad 1. Both graphics are 3x3 squares (70px each square).  I or the test player can pick up the token and move out of the pad and its find. Within that 3x3 square on the pad if its moved just a single space it teleports back to the other pad. This is with the one click installed Version 1.2.2. Okay, I'll take a look. I'd tested it and it seemed to work, so I apologize if I didn't pick this up properly - it's checking for the lastmove property and comparing its position to see if it's in the radius of the same token and if both the lastmove and the current position are within the same token, it shouldn't teleport.  Edit: are you sure you're using 1.2.2 - one-click only shows 1.2.1 available - I don't know if they've published 1.2.2 yet... the holidays and all.  Edit Again: the merge was just fifteen hours ago, so 1.2.2 won't be available likely until late Thursday or Friday.  Edit a third time: 1.2.2 should now be available - it's showing up on one-click now.  Edit a fourth time: If you add from one click, instead of import, it works like it's 1.2.1 - which I'm not sure how these things propagate, or what's involved. If you import, it works properly and is the proper script (1.2.2)  I'm not sure how to raise this as an issue with Roll20.  I've raised a help request with Roll20 over this ; however, given the time of  year and, unfortunately, previous response tails to issues like this (typically on the order of weeks) I unfortunately do not have a ready fix except to say use the "import" version for now. An additional pull request would not fix this, as it appears something was done and something was not done, and there is nothing I can do actively about it. 
Thanks Pat, good to know I'll test it and see how it works.
I tested this, with the import and it works as expected so far. Nicely done!!
1609442257
Pat
Pro
API Scripter
Mark (GM) said: Thanks Pat, good to know I'll test it and see how it works. Okay, it should be all sorted out - just installed with one-click (not import) and it appears it is on the right version now - thank you for reporting this and giving me an opportunity to get it right. 
1609444472

Edited 1609513147
Pat
Pro
API Scripter
Next change ideas for 1.2.3: Support for custom effects on teleport tokens for SFX and defaults for directional effects on teleport tokens: direction will correspond with rotation of teleport token Simpler way to create two-way tokens (most common scenario) - try and create a simple command or button to cross-link all selected tokens (to support multiple-cross-link scenarios and making elevators more quickly as well as two-way support - API access and macro? Call macro from chat button?  Reverse current linking to push a token select query instead? Click link and then fire select query? Does that work if you're on the wrong layer?   Support for status colors and custom status markers, and numbers?  Make a true control panel handout: include features like multiple-cross-link, "Create an elevator" and other things that can be automated? 
When it teleports Player tokens does it zoom the player's sight to where their token is? Like in a very large map. Or do they have to still track down the token?  Maybe this has been answered but I might have missed it.
1609569774
Pat
Pro
API Scripter
Mr. NumNums said: When it teleports Player tokens does it zoom the player's sight to where their token is? Like in a very large map. Or do they have to still track down the token?  Maybe this has been answered but I might have missed it. It will, by default, ping the token invisibly (it turns the player color transparent briefly and then back)  - it pings only the player, not everybody, by default as well. There may be some delay when teleporting to another page - that's unfortunately something I can't control for... 
Pat said: Mr. NumNums said: When it teleports Player tokens does it zoom the player's sight to where their token is? Like in a very large map. Or do they have to still track down the token?  Maybe this has been answered but I might have missed it. It will, by default, ping the token invisibly (it turns the player color transparent briefly and then back)  - it pings only the player, not everybody, by default as well. There may be some delay when teleporting to another page - that's unfortunately something I can't control for...  Awesome! thanks ^__^ I look foreward to reading further through all this and implementing it in my future games. 
1609605693
Pat
Pro
API Scripter
Mr. NumNums said: Awesome! thanks ^__^ I look foreward to reading further through all this and implementing it in my future games.  If you have any other questions on how it works or how to get the most out of it, let me know. :) So for any users or potential users -  Getting a teleport token to be a button or macro in your own space can be a little fraught - it's a multi-step process, and I was just thinking of a "timeout" or oubliette button a GM might want to have for players that get disruptive, or as a joke... I'm curious if a "make this a macro" button or capability might be desired - this would mainly be for single-direction teleports to specific tokens, but since teleport works cross-page, it might be useful to create macros and then provide them for players for moving to specific pages on their own, or for the GM to be able to macro a single location they might want to send players to on-demand: a dream realm, an oubliette, a timeout room...  So, would a make-this-a-macro one-step button help? Then the GM can put it in their macro hotbar, or call it some other way. 
1612024044

Edited 1612024174
I noticed there was no way to delete a pad from the list. I realize I can delete the token but it would be more covenant to be able to delete them  from the pad list. Would it be feasible to add this feature at some point?  Edit: To clarify, when I say delete from the pad it does not delete the graphic, it just remove it settings from both token and the pad list.
1612741399
Pat
Pro
API Scripter
Apologies for the late reply; I'm not clear on what you're looking for - I'm revisiting the way Teleport is done based on things I learned in Emojibubble regarding consoles and updating macros, so I want to understand what you're asking for. 
Pat said: Apologies for the late reply; I'm not clear on what you're looking for - I'm revisiting the way Teleport is done based on things I learned in Emojibubble regarding consoles and updating macros, so I want to understand what you're asking for.  To simply state it would be easier and more intuitive to have a trash can icon in the teleport pad list for each pad you want to delete. Instead of having to delete the actual token. Granted i might be misunderstanding how it supposed to work. The only I found to remove a pad was to delete the token. But in some case I can see where someone might want to just delete what he confugured but use the same art object with out having drag a new on to the table top. 
1612839859
Pat
Pro
API Scripter
Mark (GM) said: Pat said: Apologies for the late reply; I'm not clear on what you're looking for - I'm revisiting the way Teleport is done based on things I learned in Emojibubble regarding consoles and updating macros, so I want to understand what you're asking for.  To simply state it would be easier and more intuitive to have a trash can icon in the teleport pad list for each pad you want to delete. Instead of having to delete the actual token. Granted i might be misunderstanding how it supposed to work. The only I found to remove a pad was to delete the token. But in some case I can see where someone might want to just delete what he confugured but use the same art object with out having drag a new on to the table top.  Might be confusing - people pressing "delete" might expect the token to disappear and assume something had gone wrong if the art didn't disappear too. It's a struggle. "Deregister" could purge the token of attributes - I'm struggling. A "de-register" is something I'd have to research, since the current delete plays off of the "destroy" event to de-register any cross-linked portals, and "de-register" would have to invoke the same scripts on a trigger while the token is still around, and I'm not sure how well it would integrate. 
That's fair It was suggestion and I can see how complicated that might be. Perhaps a compromise and less work is the trashcan icon could just delete the graphic , not perfect but much easier to do from chat than having to switch pages if its cross teleport or having a high number of pads to sort through. In any case thanks for responding Pat the script works pretty well over all. I look forward to see any improvement you add over time :) 
Question: If you set up a game lobby with the teleports set up and linked, will the links remain if you copy that lobby? (I'm guessing not)
1614232262
Pat
Pro
API Scripter
It depends - the pads you copy will be "new" pads, but if they were one-way links (from the lobby to a destination) then they should still work - the only thing is any link "back" to the lobby will go to the original lobby, and not the copy. Pads in this version are not by name but by id, so they are unique but are also re-name-able without affecting a link. The upshot is if you copy a pad (and this is what happens when you copy a page, and also what happens if you delete a pad and then "undo") any links "to" that pad will still point to the original. The code is smart enough that it detects a "destroy" graphic event and checks to see if (a) the destroyed graphic was a teleport pad, and if so, it prompts to check to remove all references from all other pads.  It's a careful balance when coming up with a schema here: in one of two ways, it will act unintuitively and cause problems, and may behave in unexpected ways. I tried to aim for maximum versatility while keeping it as error free as I could; it is not perfect, and there are other features folks want and I'm working on improvements, but it's got some features that I hope make it easier to set up and maintain. 
So, best practice is to reset up the teleports in the new lobby, to make sure everything goes to the right place :)
I just added this script and started playing with it tonight, very impressive Pat!  I'd like to second the request for the ability to add a sound effect to a teleport in addition to the visual effect you've got already.
1615340742

Edited 1615341430
I've run in to a bit of trouble, and I'm wondering what I've missed.  I created a test game, no other scripts loaded.  Made 3 maps, and on the first (dungeon level) I put three teleporters (stairs) that are linked together, and when a token steps on them the player gets the option of which to go to.  Working as intended, see top half of the pic below. The next phase of testing was to be a similar test but across pages. I added another TP pad to the dungeon map, then a second (ChasmFloor) to another map that is to be linked to the maps above and below, then last a TP pad on the third map (ChasmWall). Seems legit, see second half of the previous picture. I drag one of the player token to the GM layer of all three pages, as per the instructions. In GM mode or in player mode, I use the arrow keys to move a token onto the dungeon TPpad, expecting it to move me to the ChasmFloor map.  Instead the API crashes, and the secondary links across all the pads are lost, see below: The api has popped up the error message: For reference, the error message generated was: TypeError: Cannot read property 'get' of undefined TypeError: Cannot read property 'get' of undefined at apiscript.js:692:42 at Array.forEach (<anonymous>) at reconcileTargetPageId (apiscript.js:691:25) at limboSwap (apiscript.js:675:17) at teleportToken (apiscript.js:716:23) at apiscript.js:527:25 at Function.each (/home/node/d20-api-server/node_modules/underscore/underscore.js:1310:9) at teleportPadCheck (apiscript.js:499:15) at autoTeleportCheck (apiscript.js:1101:21) at eval (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:65:16) Any thoughts what I've done wrong?
1615353598
Pat
Pro
API Scripter
Did you have tokens for the characters to be teleported on the target pages? Each page with a cross-page teleport needs the same character tokens that might cross-page teleport, as making a character token on teleport is still difficult (specifically graphics that might be from the marketplace)   Was there any other step involved, was the teleport token moved to the character layer?
1615384880

Edited 1615385121
Each page had a copy of the token of the same character (level 1, generated with the charactermancer) dragged from the journal to the GM layer.  Similarly, each teleport pad was made from a graphic dragged to each page from the art tab then converted to a Teleport pad.  If the graphic was from the marketplace, it was a free one. I don't recall moving the teleport tokens between layers after creation, just repositioned them on the GM layer. Thanks for the quick response.
1615450105
Pat
Pro
API Scripter
Okay; The symptoms are unusual, because it is acting as if the middle floor pad was ... replaced or removed or cut and pasted which should normally trigger a button for the GM to ask if they want to remove the pad, and if there is a failure state (bad data/nonexistent elements set as destination pads) it should do the same thing to recover without the gm option since in that case it wasn't triggered by a destroy operation - so I'm not sure how it's happening, but regardless the error states shouldn't be overflowing like that. 
1615489215

Edited 1615502180
I think I've narrowed it down a bit in further testing: -it does not seem to be related to whether or not the players flag is set to view the page I'm currently working on. (no reason to suspect that, just wanted to test it as I know other scripts are particular about it) -it seems to be related to changing a given portal's mode between Select and Random.  Whenever I change that setting, that portal loses any portal links after the first in the list. I haven't been able to reproduce the 'multiple portals losing the additional links at once' that I originally posted about but I suspect it's related. I've run out of time for now, will test more as I can edit: - Changing a portal's mode does not change links to it. - locking/unlocking a portal or changing it's name makes that portal lose the links after the first in the list. just like changing its mode. - pinging or using the 'teleport token' button do not cause loss of the additional portal links. - when moving a token onto a Select mode multi-linked portal, after choosing a portal from the popup menu as TP destination, it makes the API crash. That's when all the portals lose links to any additional portals after the first in the list. edit2: - additional links after the first are NOT lost if the destination pad is on the same page as the starting pad. - When the starting pad has both intra- and inter-page pad links, choosing a destination on the same page from the popup menu does not cause crash or loss of links.  Choosing a destination on a different page causes both API crash, and loss of additional links from -all- pads on all pages. I've sent you an invite to the game if you want to look further at it.  Thanks again.
1615579003
Pat
Pro
API Scripter
Okay, I see the potential problem: I don't think I set it up to have links in the same group that were same page and cross-page when using the select option. It presumes one or the other depending on the link context in general, if I recall. So that's something I'll have to look up and test. You should be able to do select when all are cross page, and select when all are same page, but mixing is not something I tested.