|
ReedN Wizard
Joined: 04 Jan 2006 Posts: 1279 Location: Portland, Oregon
|
Posted: Tue Jul 28, 2009 5:24 am
[3.10 Pro] %roomportal inadequate for creating properly linked 'other' exits |
Procedure:
1) Enter a new session and open a clean map.
2) Place the map in edit mode.
How Normal Rooms are properly Linked:
3) Create two rooms.
4) Link the two rooms together with:
5) Note how the return exits properly reference each other. Open the Room Properties box to see how there are no extra exit links and they reference to each other properly.
Trying to accomplish the same thing with 'Other' Exits:
5) Define 'in' and 'out' other type exits:
Code: |
<class name="directions" id="8">
<dir name="i" reverse="o" dir="other" id="3">in</dir>
<dir name="o" reverse="i" dir="other" id="4">out</dir>
</class>
|
6) Delete the link between the two rooms created in step #4.
7) Attempt to create a reciprocating 'in' and 'out' link between the two rooms with:
Code: |
%roomportal(1,"in",2) |
8) Despite the fact that 'in' has a defined reverse exit 'out' it doesn't create the appropriate returning 'out' link in the destination room. When a roomportal command is used to create a defined 'other' exit with a defined return, it should create that defined return link in the destination room in the same way that %roomlink does with the standard exits.
It is my understanding that %roomlink cannot be used to create non-standard exits, and so that leaves only %roomportal to create these links. Now if %roomportal isn't using the definitions given regarding return links then it is impossible to work with 'other' exits in the same way we can work with standard exits. This compounds with other similar 'Other' exit type issues to make using non-standard exits a pain in the butt. |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Tue Jul 28, 2009 4:52 pm |
Actually, %roomlink shouldn't care whether it's non-standard or not. If you have a defined "direction" object, then %roomlink will use it. The only reason %roomlink knows about the "n" direction is because that direction is defined in the "English Directions" package. CMUD doesn't have any hard-coded directions within the code...it's all Direction objects.
So you should be able to use:
Code: |
%roomlink(1,"in",2) |
once you have created the other exit types.
The %roomportal command is completely different. It is intended to only create one-way "portal" links. Most portals (like "enter painting", or other commands like that) are only one-way. That is why it doesn't create the return link. For a 2-way link, you should use %roomlink and not %roomportal. Let me know if you have any problem with %roomlink. |
|
|
|
ReedN Wizard
Joined: 04 Jan 2006 Posts: 1279 Location: Portland, Oregon
|
Posted: Tue Jul 28, 2009 11:20 pm |
The more I thought about this post after making the initial post, the more I thought that it should really be handled by the %roomlink function. Originally in Zmud I did use %roomlink for all exit types, including the 'other' type. I believe at the transition between Zmud and Cmud %roomlink stopped working for 'other' type exits. At the time I assumed that was because %roomportal was supposed to be the more correct way of handling those exits. But the more I thought about it after the post the more I started suspecting what you subsequently said in your post, that they should be handled through %roomlink.
I think my thinking on this got warped because of the following sequence of bugs:
- There were no exit stubs for 'other' type exits, and this caused me to miss seeing some exits in the map
- So I started manually adding exit stubs myself. %roomlink didn't work so I started using %roomportal to create the stub.
- There is a bug that messes up proper linking if you follow an 'other' type exit stubs when creating a new room.
- So I then started trying to use %roomportal to fix these broken exit links (since %roomlink didn't work) and it didn't work correctly either.
- So there was quite a list of this bug led to that and ultimately left me with a patchwork of fixes on top of fixes to try to get 'other' exits to work like normal exits.
I'll give %roomlink another try to see if it works in the current version.
Edit: I gave %roomlink a try and confirmed it still doesn't work (I believe it stopped working at the Zmud to Cmud transition time). I've posted a bug report on the issue. |
|
Last edited by ReedN on Wed Jul 29, 2009 4:12 pm; edited 2 times in total |
|
|
|
Moo Apprentice
Joined: 10 Apr 2009 Posts: 145
|
Posted: Wed Jul 29, 2009 1:19 am |
Zugg wrote: |
The %roomportal command is completely different. It is intended to only create one-way "portal" links. Most portals (like "enter painting", or other commands like that) are only one-way. That is why it doesn't create the return link. For a 2-way link, you should use %roomlink and not %roomportal. |
Is this also true for the ">" exit creation syntax? Only intended for one-way links?
|
|
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|