Starting to think about filling in NPC knowledge, so as to write appropriate conversations. I’m contemplating these sentences, from p. 119 of “Learning T3”:
I understand the part about using me.hasSeen(obj) – but the idea that I must remember to use gSetSeen(obj) worries me deeply, because, according to the LRM notes on the seen property, “we set this to true whenever we show a room description from the player character’s perspective, and the object is visible.”
The implication of these two bits is that if I’m using gSetSeen(obj) manually to set what the player character has seen, the library’s default seen property won’t function as expected. That is, the library will set seen to true for various objects when the PC encounters them, but I won’t be testing that property anymore – I’ll be testing meHasSeen. In which case, I will have to modify the library in some manner so as to cause me.hasSeen(obj) to work properly, reporting true for rooms and objects that are visible in the rooms when the PC first visits them.
Or does the library use gSetSeen(obj) on the me object by default, causing me.hasSeen(obj) to work in the way that it’s supposed to? If that’s the case, then the sentence in Learning T3 about “we must remember to use gSetSeen(obj)” isn’t quite true, because we don’t need to remember to do that…
I guess I could do something like this:
modify me
hasSeen(obj) {
return obj.seen;
}
;
That should cause me.hasSeen to pick up the library’s use of the seen property … but again, if I do that, why do I need to remember to use gSetSeen(obj)?
I’m also wondering where in the code I would use something like bob.setKnowsAbout(treehouse) or carol.setKnowsAbout(oldBook). I mean, the NPC might encounter the treehouse or the old book while wandering around on some agenda or other, even when the PC is not in the same location. So where exactly would the call to setKnowsAbout go? In the takeTurn of bob’s current ActorState? That might work … but it’s still messy, because Bob might wander into a room where there are several things, so the code in takeTurn would have to iterate somehow through everything in bob’s current location.
Urk. I think I must be making this more complicated than it actually is. Suggestions welcome!