Section 2(d) - The casting action
Affectedness relates various people to various spells. The verb to be affected by implies the affectedness relation.
Casting it at is an action applying to one spell and one visible thing. Rule for supplying a missing second noun while casting: change the second noun to the location.
Understand "cast [spell]" or "[spell]" as casting it at.
Understand "cast [spell] on/at [something]" or "[spell] [something]" as casting it at.
The current spell focus is an object which varies. Before casting, change the current spell focus to the location.
Check casting (this is the can't cast what you don't know rule):
if the player does not know the spell understood, say "You do not know the mystery of that enchantment." instead.
Check casting (this is the can't cast on the wrong sort of target rule):
if the targeting of the spell understood is targeted:
if the second noun is a room, say "That enchantment must be cast at something." instead;
unless the second noun is a room, say "That enchantment cannot be cast at anything." instead.
Check casting (this is the can't cast without strength rule):
if the strength of the player <= the strength cost of the spell understood to the player, say "You are weak, and have not sufficient strength of mind." instead.
Check casting (this is the can't cast at yourself rule):
if the player is the second noun, say "It is a cardinal rule of magic that no mage may cast an enchantment upon himself." instead.
Check casting (this is the can't cast without required materials rule):
let the stuff be the requirement of the spell understood;
unless the stuff is air:
if the player is carrying something (called the focus) which is made of the stuff,
change the current spell focus to the focus;
otherwise say "To weave that enchantment, you must have something made of [stuff] in your hands." instead.
Check casting (this is the can't magically attack a warded person rule):
if the nature of the spell understood is offensive and the second noun is a person:
let the intended victim be the second noun;
if the intended victim knows ward magic, say "With a contemptuous wave of orange sparks, [the intended victim] cancels your [spell understood] incantation." instead.
Effect is a rulebook.
The current spell outcome is an indexed text which varies. To record outcome (eventual message - text): change the current spell outcome to eventual message.
The current spell event is a rule which varies. To record event (eventual rule - rule): change the current spell event to eventual rule.
This is the no spell event at all rule: stop.
Carry out casting:
record outcome "but then nothing obvious happens";
record event the no spell event at all rule;
change the strength of the player to the strength of the player minus the strength cost of the spell understood to the player;
increase the usage count of the spell understood by 1;
if the usage count of the spell understood is less than 3:
award cost of the spell understood points;
award cost of the spell understood points;
if the cost of the spell understood is at least 5 and the current spell focus is something, remove the current spell focus from play;
consider the effect rulebook.
say "As you intone the words of the [spell understood] spell, ";
if the current spell focus is something:
say "[the current spell focus] ";
unless the player is holding the current spell focus, say "vanishes as it ";
say "releases ";
say "your fingers release ";
say emission of the spell understood;
unless the second noun is a room, say " at [the second noun]";
say ", [current spell outcome]";
if the player is affected by the spell understood:
if duration of the spell understood is greater than 0:
say ", which will last for [duration of the spell understood in words] turn[s]";
change the duration timer of the spell understood to the duration of the spell understood;
increase the duration timer of the spell understood by 1;
consider the current spell event.
repeat through the Table of Enchantments:
let the remaining effect be the duration timer entry;
decrease the remaining effect by 1;
if the remaining effect >= 0, change the duration timer entry to the remaining effect;
if the remaining effect is 0:
now the player is not affected by the spell entry;
say "(The [spell entry] spell wears off.)".
Understand "xyzzy" and "plugh" as a mistake ("Nobody believes those old children's stories about a colossal cave with magic words any more. Magic's something you spend years and years learning.").
. We now have two verbs connecting people and spells: we can write statements like "Radagast knows summon elemental", or "Henry is affected by ironbones".
. "Casting it at" is an unusual action because it can take two forms, having a sort of transitive and intransitive version: one casts "detect trap" with no target, but "magic missile" must be aimed at something. Inform permits actions to have syntax which leaves a noun optional, but requires that we supply any missing nouns so that by the time the action is processed nothing is missing. We construe a missing target for a spell as being the current location: thus, "detect trap" is actually a spell cast on the ambient surroundings, which seems reasonable enough. (Inform's built-in action "listening" does something similar.)
. The variable "current spell focus" typifies something which tends to happen in complex sequences of rules: later rules need to refer to something worked out in the course of an earlier rule. That means the sort of "let ..." variable will not do, because it is too temporary - it expires when the earlier rule finishes, so will be gone when the later rule is reached. Here we put the value into a permanent variable. This might be problematic if one casting action could be interrupted by another one, but here that never happens.
. We're naming these rules so that the author of a W&W scenario could use procedural rules to suspend or alter them as needed.
. The can't magically attack a warded person rule is a little sloppy: it does not sap the magical strength of the victim to cast the spell, which - if sauce for the wizard is sauce for the necromancer - it perhaps should.
. The carry out and report rules for the casting action are going to be surprisingly short - considering the vast range of possible outcomes when a spell is cast - and they do this by using a more powerful mechanism to allow for more flexible reporting than would ordinarily be possible: they create a new rulebook, "Effect", whose task is to carry out the spell. Effect rules are also expected to set "current spell outcome" to a suitable message about what happens, and (optionally) "current spell event" to a rule which carries out further consequences.
. You gain experience points the first couple of times you cast a spell, but then the novelty wears off.
. For simplicity, and to keep storage requirements from going through the roof, time-limited spells can only be applied to the player.