Balancing Writing and Implementation?

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.

3 Likes

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…

3 Likes

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.

2 Likes

I’ll show you my approach, unless you want the challenge…

2 Likes

image
My laptop internet’s down, so…

Sorry: for Lite actionTime should be turnsTaken. And yes, I forgot a semicolon after modify Room in pasting…

2 Likes

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;
        }
    }
;
5 Likes

Thanks @inventor200 !

3 Likes

@johnnywz00 @inventor200 thank you for your eagerness to help :slight_smile: 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.

4 Likes

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… :wink:

5 Likes

Aww! I’m excited to be here tbh, y’all are so nice :grin:

3 Likes

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…

4 Likes

It’s totally okay, I’m not offended, don’t worry. <3

4 Likes

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. :wink:

5 Likes

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.

4 Likes

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.

5 Likes

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…

4 Likes

Full disclosure, even my long room descs may have a few //first time// bits, that don’t show up on the long reprintings…

4 Likes

Oh yeah I used first time in some room descriptions to exclude narrator world building stuff that never need come back

2 Likes