I didn't know that room names automatically get capitalized both in the main window and in the status line until I recently used the CanGo library extension.

This is good default behavior, since we may want to use room names in other contexts, as CanGo.h does. Best practice would be always to enter room names in lower-case.

I can see a difficulty. If you want room names capitalized in book-title style, only the first word is automatically capitalized. You could capitalize the important words in the strings themselves, but then other code (including CanGo.h) will inappropriately print the caps in a sentence.

I wish I could get notifications every time someone starts a thread in this base! Just saw this today.

The good news is that the groundwork for this is halfway supported in Roodylib already. DescribePlace calls Rlibmessage for the room name printing, at which point you can copy the name to a string and use the string capitalization (right now, one only exists to capitalize the first letter of every word but I could throw one together to capitalize by book title rules).

Unfortunately, the same thing doesn't currently exist for PrintStatusLine, but you're right, I should throw a message hook in there.

Of course, you could also just alter the messages so the first letters of rooms are *not* capitalized if that floats your boat. I took a look at book title capitalization rules, and it really seems like more of a hassle to code than it is worth. In a game where you really want room names to be *right*, it might be worth it to give those rooms an extra name property with the proper capitalization and alter the messages to print from the other property instead.

Also, you'll notice that my above code doesn't do anything about ", in the <parent> of player" text so if your game has stuff like that, you might have to alter the code to accommodate that to your tastes.

So, this thread got me thinking that I should add some message routine calls to my versions of CanGo, too, but taking a look at them, it looks like I already put a mechanic in them for alternate text, an additional room property called cango_name. Just have it return the text you want rooms to be listed as from other rooms. You can also turn it into a property routine so it returns different text depending on different circumstances.

The only thing is that they use a SKIP routine which clashes with a local variable I added to Roodylib recently, so I changed the Roodylib local variable so now there's a new version of roodylib.h at the above link.

In a game where you really want room names to be *right*, it might be worth it to give those rooms an extra name property with the proper capitalization and alter the messages to print from the other property instead.

That makes sense. In a more complicated situation, you might need the printed names for rooms to differ in other ways from their status-line descriptors.

Roody_Yogurt wrote:

it looks like I already put a mechanic in them for alternate text, an additional room property called cango_name. Just have it return the text you want rooms to be listed as from other rooms. You can also turn it into a property routine so it returns different text depending on different circumstances.

Perfect, that should allow for more dynamic room listing than the Scott Adams-type exit list provided by the original CanGo code.

To be honest though, I'm too tired to look at your code right now. I used CanGo.h for a quick and dirty mock-up of a level design for a Source Engine mod that I'm working on with two other students in my videogame design class. (It's a custom Portal 2 campaign.) Valve's level editor is a miserable piece of software -- it barely works on my hardware even after I upgraded to a better used laptop, it crashes and freezes, it has unpredictable bugs, it's complicated and almost completely undocumented. I'd rather work with Hugo any day, and hopefully I'll find the time and motivation to do so again eventually.