| /* | |
| * Yes No Maybe | |
| * | |
| * Credits: This is a routine by Scott Steinfath found at: | |
| * ftp://ftp.ifarchive.org/if-archive/programming/tads2/examples/answerme.t | |
| * | |
| * Creation Date: 25JAN1994 | |
| * | |
| * Converted from Tads 2.0 to Tads 3.0.17 by Cleo Kraft | |
| * Contact on the board here if any questions: http://www.tfgamessite.com | |
| * | |
| * Conversion Date: 22NOV2008 | |
| * | |
| * Description: The parser/narrator can ask the player a | |
| * yes/no/maybe question and if the player actually | |
| * answers it back, an answer can be given. | |
| * | |
| * Example: | |
| * Player: "attack dragon" | |
| * Parser: "What, are you crazy or something?" | |
| * Player: "yes" | |
| * Parser: "That's what I thought!" | |
| * | |
| * Set up: | |
| * If you have the parser ask the player an arbitrary question: | |
| * 1. set the variable myNarrator.questionAsked=true | |
| * 2. set single quoted string values for myNarrator.qYes, qNo and qMaybe | |
| * using the myNarrator.setNarratorQuestion(yes,no,maybe) function. | |
| * | |
| * Example: | |
| * someMethod{ | |
| * "Ooooh. How cute. You\'re going to awaken the frost giant. | |
| * Are you sure or shall I call the undertaker? "; | |
| * local sYes = 'Seems like you have this well thought out. At least you\'ve got a plan. '; | |
| * local sNo = 'Good idea. Let\'s let sleeping giants lie. '; | |
| * local sMaybe = 'I can see you\'re quite decisive. '; | |
| * myNarrator.setNarratorQuestion(sYes,sNo,sMaybe); | |
| * } | |
| * | |
| * File Order: Put near the end of your file order in the Tads workbench | |
| * as this file modifies actor.t, actions.t, etc. | |
| * | |
| */ | |
| myNarrator: object | |
| questionAsked = nil // nil or true - was a question asked to the player? | |
| questionTurn = nil// nil or turn number this was set | |
| qYes=nil // nil or a single quoted string value '' | |
| qNo=nil // nil or a single quoted string value '' | |
| qMaybe=nil // nil or a single quoted string value '' | |
| // This function sets all the string values and flags ready | |
| setNarratorQuestion(yestext,notext,maybetext){ | |
| myNarrator.questionAsked=true; | |
| myNarrator.questionTurn=libGlobal.totalTurns; | |
| myNarrator.qYes=yestext; | |
| myNarrator.qNo=notext; | |
| myNarrator.qMaybe=maybetext; | |
| } | |
| ; | |
| // see actions.t | |
| modify YesAction | |
| execAction(){ | |
| if((myNarrator.questionAsked!=nil) && | |
| (myNarrator.questionTurn!=nil)){ | |
| if((libGlobal.totalTurns-1)==(myNarrator.questionTurn)){ | |
| say(myNarrator.qYes); | |
| myNarrator.questionAsked=nil; | |
| exit; | |
| } | |
| } | |
| gIssuingActor.sayYes(gActor);// default in actions.t | |
| } | |
| ; | |
| // see actions.t | |
| modify NoAction | |
| execAction(){ | |
| if((myNarrator.questionAsked!=nil) && | |
| (myNarrator.questionTurn!=nil)){ | |
| if((libGlobal.totalTurns-1)==(myNarrator.questionTurn)){ | |
| say(myNarrator.qNo); | |
| myNarrator.questionAsked=nil; | |
| exit; | |
| } | |
| } | |
| gIssuingActor.sayNo(gActor);// default in actions.t | |
| } | |
| ; | |
| VerbRule(Maybe) | |
| 'maybe' | 'possibly' | 'say' 'maybe' | 'could' 'be' | 'say' 'could' 'be' | 'say' 'possibly' | |
| : MaybeAction | |
| verbPhrase = 'say/saying maybe' | |
| ; | |
| DefineConvIAction(Maybe) | |
| execAction(){ | |
| if((myNarrator.questionAsked!=nil) && | |
| (myNarrator.questionTurn!=nil)){ | |
| if((libGlobal.totalTurns-1)==(myNarrator.questionTurn)){ | |
| say(myNarrator.qMaybe); | |
| myNarrator.questionAsked=nil; | |
| exit; | |
| } | |
| } | |
| gIssuingActor.sayMaybe(gActor); | |
| } | |
| ; | |
| SuggestedMaybeTopic | |
| name = 'maybe' | |
| fullName = 'say maybe' | |
| ; | |
| modify Actor | |
| sayMaybe(actor) { sayToActor(actor, maybeTopicObj, maybeConvType); } | |
| defaultMaybeResponse(fromActor) | |
| { mainReport(&noResponseFromMsg, self); } // where "no" doesn't mean logical yes/no but no as in "The actor does not respond. " | |
| ; | |
| class SuggestedMaybeTopic: SuggestedTopic | |
| suggestionGroup = [suggestionYesNoMaybeGroup]// see: actor.t | |
| ; | |
| maybeConvType: ConvType | |
| unknownMsg = &sayMaybeMsg | |
| topicListProp = &miscTopics | |
| defaultResponseProp = &defaultMaybeResponse | |
| defaultResponse(db, other, topic) | |
| { db.defaultMaybeResponse(other); } | |
| ; | |
| class YesNoMaybeTopic: MiscTopic | |
| includeInList = [&miscTopics] | |
| matchList = [yesTopicObj, noTopicObj, maybeTopicObj] | |
| ; | |
| class MaybeTopic: YesNoTopic | |
| matchList = [maybeTopicObj] | |
| ; | |
| maybeTopicObj: object; | |
| modify playerActionMessages | |
| sayMaybeMsg = (addressingNoOneMsg) | |
| ; | |
| // YES/NO/MAYBE suggestion group - see msg_neu.t | |
| suggestionYesNoMaybeGroup: SuggestionListGroup | |
| showGroupList(pov, lister, lst, options, indent, infoTab) | |
| { | |
| /* | |
| * if we have one each of YES and NO responses, make the entire | |
| * list "say yes or no"; otherwise, use the default behavior | |
| */ | |
| if (lst.length() == 2 | |
| && lst.indexWhich({x: x.ofKind(SuggestedYesTopic)}) != nil | |
| && lst.indexWhich({x: x.ofKind(SuggestedNoTopic)}) != nil | |
| && lst.indexWhich({x: x.ofKind(SuggestedMaybeTopic)}) != nil) | |
| { | |
| /* we have a [yes, no] group - use the simple message */ | |
| "say yes, no or maybe"; | |
| } | |
| else | |
| { | |
| /* inherit the default behavior */ | |
| inherited(pov, lister, lst, options, indent, infoTab); | |
| } | |
| } | |
| groupPrefix = "say"; | |
| ; | |
Xet Storage Details
- Size:
- 5.51 kB
- Xet hash:
- 0c5e756d2464b905c1e989d992b693925f348dbfa166f036b0143b915962e7cf
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.