Still no daylight on my local compilation problem, but works fine with chopped up source files. Wanted to document some usability fixes I needed to make. I was primarily engaging to take advantage of Enterable ComplexContainers (ECContainer in the module’s parlance). I noticed two behaviors that seemed slightly off:
-
When attempting to get in/on/under/behind anything forbidden, the error message was
You cannot stand {in/on/behind/under} that.
Even for>SIT BEHIND
,>LIE UNDER
etc The appropriate sit/lie error messages are provisioned in the code. -
When attempting to
>WALK OVER TO SOMEOBJ
in a room without a definedconnectionGroup
, you got the standardThe someobj is too far away.
error message. Even though you are in the same room with SOMEOBJ. (Note, without a true ConSpace implementation,>WALK OVER TO
doesn’t do much, but according to my sensibilities it shouldn’t FAIL with deceptive message.)
Both issues I traced to the new verifyStandClose
method in ConSpace.t
Locally hacked fixes below:
verifyStandClose(pos, post)
{
local locProp = whichLocProp(pos);
if(self.(locProp) == nil) {
// (1) Modified to get sit/stand/lie messaging correct - JJMcC
//
//illogical(&cannotStandCloseMsg, pos); // original code
switch(post) {
case sitting:
illogical(&cannotSitCloseMsg, pos);
break;
case lying:
illogical(&cannotLieCloseMsg, pos);
break;
default:
illogical(&cannotStandCloseMsg, pos);
break;
}
}
if(gActor.isIn(self.(locProp))
&& !gActor.roomLocation.ofKind(NestedRoom)
&& gActor.posture == post)
illogicalAlready(&actorPostureThereMsg, self, pos);
/* Don't allow this kind of travel to occur unless
* the object is within the same connectionGroup
* as the actor, and autoApproach is allowed (true)
* for this object, unless the actor is in one of the
* locations specified in my extraApproachRooms list.
*/
/* Also allow if in same room! JJMcC */
if (((gActor.CSGetOutermostRoom.connectionGroup == nil
|| !inSameConnectionGroup(gActor)
|| !autoApproach)
&& extraApproachRooms.indexOf(gActor.CSGetOutermostRoom) == nil)
// (2) Needed to add test for same room, as otherwise fails here without
// defined connectionGroup! - JJMcC
&& (!gActor.isIn(self.(locProp))))
illogical(&tooDistantMsg, self);
}
Other than these glitches, ECContainers do pretty much exactly what I wanted, and even without a true ConSpace implementation, the new verbs are nicely flexible. Think I still prefer Open Door Patterns as lighter to customize than ConSpace’s SpaceConnectorDoor
. Though this could just be sunk cost fallacy.