// Phrase.js
(function () {
/*global adventurejs A*/
"use strict";
/**
* @class adventurejs.Phrase
* @ajsinternal
* @ajsnavheading FrameworkReference
* @summary Special class used to identify nouns that a verb can act on.
* @classdesc
* <p>
* <strong>Phrase</strong> is a special class
* used while parsing {@link adventurejs.Input|Input}
* to refer to and set rules for noun / preposition pairs.
* </p>
*/
class Phrase {
constructor() {
/**
* Currently unused.
* @var {String} adventurejs.Verb#accepts_string
*
*/
this.accepts_string = false;
/**
* Currently unused.
* @var {String} adventurejs.Verb#accepts_direction
*
*/
this.accepts_direction = false;
/**
* Currently unused.
* @var {String} adventurejs.Verb#requires_string
*
*/
this.requires_string = false;
/**
* Currently unused.
* @var {String} adventurejs.Verb#accepts_number
*
*/
this.accepts_number = false;
/**
* Currently unused.
* @var {String} adventurejs.Verb#requires_number
*
*/
this.requires_number = false;
/**
* If accepts_noun is true, the verb will accept a noun
* for this phrase. If requires_noun is false, verb
* will work with one noun or no nouns.<br>
* Examples: "look" or "look north"
* @var {Boolean} adventurejs.Phrase#accepts_noun
* @default false
*/
this.accepts_noun = false;
/**
* If requires_noun is true, the verb must receive
* a noun for this phrase.<br>
* Examples: "go north" or "take thing"
* @var {Boolean} adventurejs.Phrase#
* @default false
*/
this.requires_noun = false;
/**
* If accepts_preposition is true, it is possible, but not required,
* to accept a preposition with noun3.<br>
* @var {Boolean} adventurejs.Phrase#accepts_preposition
* @default false
*/
this.accepts_preposition = false;
/**
* If accepts_preposition_without_noun is true, parser will accept
* a preposition that has no corresponding noun.<br>
* Examples:<br>
* "fly over"<br>
* @var {Boolean} adventurejs.Phrase#accepts_preposition_without_noun
* @default false
*/
this.accepts_preposition_without_noun = false;
//this.preposition_requires_noun = true;
/**
* If requires_preposition is true, a preposition must be provided with noun3.<br>
* @var {Boolean} adventurejs.Phrase#requires_preposition
* @default false
*/
this.requires_preposition = false;
/**
* Only these prepositions are allowed with this phrase.
* @var {Boolean} adventurejs.Phrase#
* @default false
*/
this.accepts_these_prepositions = [];
/**
*
* @var {Boolean} adventurejs.Phrase#
* @default false
*/
this.declines_these_prepositions = [];
/**
* When the player enters a verb and one or more nouns,
* the parser will perform disambiguation to determine what
* game object(s) match the player's input. You can use
* these qualifiers to narrow down potential matches.
* For example, if your verb only acts on tangible objects,
* like "take" for instance, then set "tangible: true".
* If your verb only applies to characters, like "talk to",
* then uncomment "character: true". For more information, see
* {@link adventurejs.NounMustBe|NounMustBe}. For more
* information about creating Verbs or modifying Verbs, see
* <a href="/doc/Scripting_VerbSubscriptions.html">Verb Subscriptions</a>,
* <a href="/doc/Scripting_VerbPhases.html">Verb Phases</a>,
* <a href="/doc/Scripting_VerbActions.html">Verb Actions</a>,
* <a href="/doc/Verbs_VerbAnatomy.html">Verb Anatomy</a>,
* <a href="/doc/Verbs_VerbAnatomy.html">Verb Process</a>, or
* <a href="/doc/Verbs_ModifyVerbs.html">Modify Verbs</a>.
* @var {adventurejs.NounMustBe} adventurejs.Phrase#noun_must_be
* @default false
*/
this.noun_must_be = new adventurejs.NounMustBe();
/**
* can_be_plural means verb can act on multiple objects.<br>
* Examples: <br>
* "take shield and sword"<br>
* "take all keys"<br>
* "take all"
* @var {Boolean} adventurejs.Phrase#
* @default false
*/
this.accepts_plural_noun = false;
//this.soft_prompt_for_noun = false;
//this.soft_prompt_for_preposition = false;
}
}
adventurejs.Phrase = Phrase;
})();