|Anonymous | Login | Signup for a new account||2017-09-22 08:26 PDT|
|Main | My View | View Issues | Change Log | Roadmap|
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001910||Documentation, Examples, and Web Site||Writing with Inform||public||2016-05-02 18:49||2017-08-16 22:37|
|Platform||Mac||OS||OS X||OS Version||10.11.4|
|Target Version||Fixed in Version|
|Summary||0001910: clarify that "the person asked" applies to the actor even when persuasion is not involved|
|Description||"The person asked" is introduced in sections 12.3 and 12.4 of WwI as "who is supposed to do the deed" when persuasion is attempted. The other main-text references to "the person asked' (12.12, 12.13, 17.17, 18.34) all also seem to be designed for persuasion rather than spontaneous action by other people. The name "the person asked" also suggests that it applies only to persuasion.|
But, as I understand it, "the person asked" is the I6 actor variable, and so is the actor of the action whether or not it results from persuasion. This causes a lot of confusion.
|Additional Information||Examples 190, "Boston Cream," and 402, "Patient Zero," use "the person asked" for spontaneous actions by other actors, but these are very complicated four-star examples and non-advanced I7ers are unlikely to winkle the relevant information from them. |
Section 12.3 introduces the "actor" as the name for the person trying the action, and section 12.14 explicitly defines it; but "the actor" does not work in every circumstance (I think--at least it used to cause some weird behavior because it wasn't a true global variable). In any case, it'd be good to have an explicit explanation that "the person asked" works for all actions, so Boston Cream and Patient Zero make sense.
|Tags||No tags attached.|
As I understand it, "the person asked" is only documented for persuasion activities. Using it as a generic alias for the "actor" I6 variable is unsupported.
(There's also "the person reaching", which also maps to "actor", but is only documented for reaching activities.)
The confusion comes from people pragmatically recommending "the person asked" as a fast solution to people's problems. I'm sure I've done this too, but it's actually relying on an implementation detail and not a good idea.
As you say, the I7 "actor" variable is tied to the action rulebook and is not available in every context. I have a proposal up about that: https://inform7.uservoice.com/forums/57320-general/suggestions/13431699-make-action-variables-and-rulebook-and-activity-v [^]
edited on: 2016-05-03 12:26
Well, I'd say that using "the person asked" in this way is so well entrenched that it'd be a good idea to support it, especially because there isn't actually a satisfactory substitute for the reasons you mention in the linked suggestion. If it becomes necessary to change it in a future version, would it be difficult to deprecate that use?
But if this use is considered unsupported, then I think it's a documentation bug for the examples that use it... having this use be undocumented and unsupported but still appear in examples seems like the worst of both worlds, insofar as people will either pick up the unsupported use from the examples or fail to understand them.
For what it's worth, "the person asked" can be changed to "the actor" throughout in "Boston Cream" but not in "Patient Zero," which throws an error on this phrase:
Before printing the name of the iron gate while not opening or closing or locking or unlocking:
[tab]if the actor is the player:
[tab][tab]if the gate is open, say "open ";
[tab]otherwise if the gate is locked:
[tab][tab]say "locked ";
[tab]otherwise if the gate is closed:
[tab][tab]say "closed ".
Problem. In the sentence 'if the actor is the player' , I was expecting to read a condition, but instead found some text that I couldn't understand - 'actor is the player'.
I was trying to match this phrase:
if (actor is the player - a condition):
But I didn't recognise 'actor is the player'.
For what it's worth; the person asked is used twice in the standard rules:
The person asked -- documented at var_person_asked -- is an object that varies. [*]
The person asked variable translates into I6 as "actor".
I've been unable to find a declaration of the actor variable.
|That's just the code that maps "the person asked" onto the I6 "actor" variable, I believe--"actor" should be defined in the I6 templates.|
|It is defined in Output.i6t: Global Variables. (And then used very heavily in older, I6-based parts of the parser and library.)|
I'm going to suggest that either "the actor" or "the person acting" or "the person perfoming the action", should be the generic I7 name for "actor". There definitely needs to be *a* generic name for this global variable.
The fact is that I6 "actor" will be valid during any subroutine of any action processing step and will generally be the same even if the action changes. The vast majority of procedural code in I7 is called within either a command-processing or an action-processing context, so the situations where it isn't valid are rare. There is no reason not to expose it with a generic and readable name, and many reasons to do so.
If "actor" is suspected to conflict with the author's source text (maybe in a story about a play), "the person acting" might be OK. If you want a name with no chance of namespace conflicts, "the person performing the action".
|2016-05-02 18:49||mattweiner||New Issue|
|2016-05-03 10:11||zarf||Note Added: 0004454|
|2016-05-03 12:25||mattweiner||Note Added: 0004455|
|2016-05-03 12:26||mattweiner||Note Edited: 0004455||View Revisions|
|2016-09-02 04:49||FictitiousFrode||Note Added: 0004539|
|2016-09-02 05:39||mattweiner||Note Added: 0004540|
|2016-09-02 09:39||zarf||Note Added: 0004541|
|2017-08-16 22:36||neroden||Note Added: 0004718|
|2017-08-16 22:37||neroden||Issue Monitored: neroden|
|Copyright © 2000 - 2010 MantisBT Group|