A "topic match" topic entry. This is a topic entry that matches topic phrases in the grammar.

Handling topic phrases is a bit tricky, because they can't be resolved to definitive game-world objects the way ordinary noun phrases can. Topic phrases can refer to things that aren't physically present, but which are known to the actor performing the command; they can refer to abstract Topic objects, that have no physical existence in the game world at all; and they can ever be arbitrary text that doesn't match any vocabulary defined by the game.

Our strategy in matching topics is to first narrow the list down to the physical and abstract game objects that both match the vocabulary used in the command and are part of the memory of the actor performing the command. That much is handled by the normal topic phrase resolution rules, and gives us a list of possible matches. Then, given this narrowed list of possibilities, we look through the list of objects that we're associated with; we effectively intersect the two lists, and if the result is non-empty, we consider it a match. Finally, we also consider any regular expression that we're associated with; if we have one, and the topic phrase text in the command matches the input, we'll consider it a match.

class TopicMatchTopic :   TopicEntry

Superclass Tree   (in declaration order)


Subclass Tree  


Global Objects  


Summary of Properties  

matchExactCase  matchPattern 

Inherited from TopicEntry :
altTalkCount  altTopicList  impliesGreeting  includeInList  isActive  isConversational  matchObj  matchScore  talkCount  topicGroupActive  topicGroupScoreAdjustment  topicResponse 

Summary of Methods  

findMatchObj  isMatchPossible  matchTopic  setTopicPronouns 

Inherited from TopicEntry :
addAltTopic  addSuggestedTopic  addTopic  adjustScore  anyAltIsActive  breakTopicTie  checkIsActive  deferToEntry  getActor  getTopicOwner  handleTopic  initializeTopicEntry  noteAltInvocation  noteInvocation 



no description available

A regular expression pattern that we'll match to the actual topic text as entered in the command. If 'matchExactCase' is true, we'll match the exact text in its original upper/lower case rendering; otherwise, we'll convert the player input to lower-case before matching it against the pattern. In most cases, we'll want to match the input no matter what combination of upper and lower case the player entered, so matchExactCase is nil by default.

Note that both the object (or object list) and the regular expression pattern can be included for a single topic entry object. This allows a topic entry to match several different ways of entering the topic name, or to match several different topics with the same response.


findMatchObj (obj, rt)actor.t[2876]

Match an individual item from our match list to the given ResolvedTopic object. We'll check each object in the resolved topic's "in scope" and "likely" lists.

isMatchPossible (actor, scopeList)OVERRIDDENactor.t[2893]
It's possible for us to match if any of our matchObj objects are known to the actor. If we have no matchObj objects, we must be matching on a regular expression or on a custom condition, so we can't speculate on matchability; we'll simply return true in those cases.

matchTopic (fromActor, topic)OVERRIDDENactor.t[2814]
Match the topic. By default, we'll match to either the simulation object or objects in matchObj, or the pattern in matchPattern. Note that we always try both ways of matching, so a single AskTellTopic can define both a pattern and an object list.

'topic' is a ResolvedTopic object describing the player's text input and the list of objects that the parser matched to the text.

Subclasses can override this as desired to use other ways of matching.

setTopicPronouns (fromActor, topic)OVERRIDDENactor.t[2926]
set the topic pronouns

TADS 3 Library Manual
Generated on 5/16/2013 from TADS version 3.1.3