Fixes a space vine runtime
Makes it so space vines can't climb stairs (because that leads to practically unkillable stacks of vines that lag the server)
Makes it so space vines can't grow on open space (because you usually can't kill vines if they're way out in open space and that doesn't make much sense anyway.)
Attempts to limit the maximum range of plant bioluminescence (having hundreds or thousands of dynamic light sources with maximum possible light range seems to lag the server)
Adds a funny dog that no one should ever actually spawn but I will one day as a joke and everyone will cry. (its base form is actually not hostile so if you kill that one the hell you earn will all be on you)
Automates the connection process a little based on how bluespace rifts work.
They also allow the portals to be linked to other portals without recursive portal-ing, or plopping people into walls or other obstructions. (It doesn't account for other conditions though, so if you put a portal next to lava or a horrible sky fall, that's on you). It only puts them immediately adjacent to linked portals or otherwise obstructed target locations.
Basically though, if there is an unlinked portal, a staff member can click it, they get a dialogue box with some instructions. They can then fly off to where they want the linked portal to go, click the appropriate options, and it will automatically set it up for you. You can select a sister portal, or just a target. Selecting a portal in this way also brings up options for the portal's sprite too, in case you don't have your own~
This should make setting up events that use the portals a little easier.
This was happening because the decision to call handle_fall was made when over the open space, but execution deferred until the next tick. By that time it is too late for the checks in handle_fall to abort falling, so lets call those in advance.
We do so in a separate proc from can_fall() because implementing it would be awkward, some types that override can_fall to avoid the anchored check would need to repeat the entire code or else delegate it.