Awesome! And yeah, the Revelation Space series has long been my main source of inspiration as far as writing, tone, aesthetics, world, etc. Of course, since I’m melding it with cyberpunk for my first game, it will be far more earthbound and street level than Reynolds’ typical grand space opera, which is why I referenced Chasm City particularly, but the influence is strong nonetheless. I do have my own thematic and philosophical fish to fry, however.
Afterthought: I found this to be much less important for leaf node locations/dead ends where you arrive, do something and leave the way you came. Maybe provided that there’s not twenty things they’ll need to “x”, and that it’s not too long, you can probably get away without writing a separate conciseDesc for locs like that. But almost anything that connects to more than one other loc, yes…
TADS note: I defined conciseDesc to print regular desc by default, so you don’t have to override a conciseDesc on every room to keep things working…
Annoyingly, upon further research it doesn’t look like adv3Lite has the concept of a first and subsequent description for rooms, or anything akin to that, which means I’m going to have to implement all this a bit more manually by making every description property a method. Grrr.
I’ll show you my approach, unless you want the challenge…
My laptop internet’s down, so…
Sorry: for Lite actionTime should be turnsTaken. And yes, I forgot a semicolon after modify Room in pasting…
Here you go, @alexispurslane. I processed @johnnywz00’s code through an image-to-text reader, and then made the edits that were mentioned later:
modify Room
interiorDesc {
if (libGlobal.fullDescMode || !descCt || descCt && !(descCt % 7))
desc;
else conciseDesc;
++descCt;
}
conciseDesc = desc
descCt = 0
;
modify libGlobal
fullDescMode = nil
;
verbRule(FullDesc) ('fulldesc'|'fulldescs'|'full' ('room'|'location'|) ('descs' |
'desc'|'description'|'descriptions'))('off'l'on'|) : IAction
execAction {
libGlobal.fullDescMode = !libGlobal.fullDescMode;
"Room descriptions have been toggled to <<libGlobal.fullDescMode ?
'always display the full description' : 'only show the full description upon
first entry and periodically thereafter'>>.";
}
turnsTaken = 0
;
verbRule(FullLook) 'full' 'look'|'fl'|'ll' : IAction
execAction {
local save = libGlobal.fullDescMode;
try {
libGlobal.fullDescMode = true;
execNestedAction(true, gActor, LookAction);
}
finally {
libGlobal.fullDescMode = save;
}
}
;
@johnnywz00 @inventor200 thank you for your eagerness to help but I would’ve been able to figure this out by myself. After I sent that message I figured what I’d do is modify Room with a method on desc, so this is pretty much exactly what I was going to try and write myself.
They’re just excited to have another TADS convert, as we’re all excited to have another aspiring IF author among us.
…one of us, one of us…
Aww! I’m excited to be here tbh, y’all are so nice
That wasn’t meant to be a commentary on your capability or your coding skills, as I know both you and @inventor200 are vastly superior to me in experience! I just got concerned by your “desc” comment, thinking you were going to abandon the Room template because Lite doesn’t have a roomFirstDesc property, and to be honest I assumed you wouldn’t look at the photo I shot unless you wanted to. Won’t jump in uninvited next time!
@pinkunz you’re not really wrong…
It’s totally okay, I’m not offended, don’t worry. <3
Yeah, I saw “coding since I was 7” in your profile and knew you had a solution already, lol. I mostly turned the photo into text data in case you wanted to use the verb rule patterns, in particular. (I love coding the logic and methods of stuff myself, but setting up verb rules drives me crazy, so I’m often using copy-paste to speed up the process, so I can edit from a template, lol)
Also, I did that just in case someone from the future comes looking for a solution to a similar problem. I found this forum because I was stuck on a coding problem once.
Okay, but you don’t have to completely expose me like that.
Perhaps this was answered above—I’ve been out a while and am quickly catching up—but you can use TADS string templates for this problem. (That’s what I do, at least.) Example:
tattooParlor: Room 'Tattoo parlor'
"""
<<first time>>
You realize you've never stepped inside here before.
<<only>>
The walls are covered with detailed designs of tattoos you may select from.
"""
;
(I use triple-quoted strings everywhere in my code; they’re not necessary for string templates.)
You can also create an initial description and a description for all subsequent visits:
tattooParlor: Room 'Tattoo parlor'
"""
<<one of>>
You realize you've never stepped inside here before.
<<or>>
Ah, back in the familiar parlor again.
<<stopping>>
"""
;
I use string templates a lot. They’re incredibly powerful. Note that they’re available in single-quoted strings as well.
More information here.
I have been using these already fairly copiously, especially for world building descriptions and narrator/PC commentary on items which should then dissapear the second time through, but I didn’t want to use them for room descriptions because I wanted the ability to bring back the full atmospheric descriptions when necessary, which turned out to be what John was doing.
Welcome back Jim!
Just to avoid confusion, the example given is what TADS calls embedded expressions, while string templates are something a little more specific (and which I have never yet found a use for), as described in your link…
Full disclosure, even my long room descs may have a few //first time// bits, that don’t show up on the long reprintings…
Oh yeah I used first time in some room descriptions to exclude narrator world building stuff that never need come back