Hello! I’m sorry for putting all of these in one post, but I feel like I have too many tiny questions to make separate posts. Several of these are things I’ve already found workarounds for, and simply want to understand why the straightforward way doesn’t work.
- I’m setting up a spellcasting system where the player can learn new spells, each their own action, and that are responded to with “That’s not a verb I recognize.” before then. This works fine:
Understand "teleport", "cast teleport" as teleporting. Teleporting is an action applying to nothing.
Instead of teleporting when Teleport is undiscovered: say "That's not a verb I recognize."
But I originally tried this, which seems simpler for not having to individually retype a default response for each spell:
Understand "teleport", "cast teleport" as teleporting when Teleport is discovered. Teleporting is an action applying to nothing.
This doesn’t result in an error, but the response is “I didn’t understand that sentence.” instead of “That’s not a verb I recognize.”, which lets the player know that there’s a difference between “teleport” (a spell yet to be discovered) and “fly” (a spell that doesn’t exist). I’m wondering why this is (even though I don’t really need to know).
- Another thing I’ve already worked around but would like for the sake of streamlining… Is there a way to group actions? I know I can do this for specific manifestations of actions (taking the ball/taking the bat) but I don’t know how to do it for broad actions. Something like:
Teleporting is spellcasting. Vanishing is spellcasting.
Check spellcasting when the player does not carry the spellbook: say "You need your spellbook to cast that!" instead.
…instead of having to write the same “Check” statements for every spell. This would also be nice for “Instead” rules and such.
-
Very simple question: how do I print/“say” square brackets ([ and ]) without them being mistaken for a text substitution?
-
I have several places where I’d like to make interactions with a thing more/less likely, but I’m having a hard time figuring out how. The phrases “Instead of doing something to…” and “Does the player mean doing something to…” only affect one-noun verbs or the first noun of two-noun verbs, and the one page I’ve found about “doing something to” doesn’t seem to mention how to stop the player from using an object as the second noun. So even if I say “Does the player mean doing something to the obvious door: it is very likely.” something like this still happens:
put bread on door
Which do you mean, the obvious door or the hidden door?"
(in my actual code it’s two glowing orbs, one of which is the mirrored reflection of the other, and I don’t want it to let the player know the mirrored version is important until they take it)
- Another “does the player mean” issue, which I’ll probably have to restructure my objects to accommodate: I have several identical blocks that I’ve made described by their location (I based the system off of answers from this post), which enables me to differentiate between the objects the way I want to but no longer allows me to interact with their supporters:
put small on right
Which do you mean, the right side or a large block on the right side?
the right side
Which do you mean, the right side or a large block on the right side?
(This is also despite a statement that says “Does the player mean putting something on a supporter: it is likely.”, so I really don’t understand what’s going on.) I’d like it to just pick the right side in this example, but in general I’d like it to only understand “the right side” as the blocks on it when you also say “block”.
Relevant code:
A block is a kind of thing.
A block has a number called weight. The verb to weigh means the weight property.
Size is a kind of value. The sizes are large, medium, and small. A block has a size. Understand the size property as describing a block.
Understand "weight" as a block. Understand "big" as a large block.
Understand "on/from/-- [something related by reversed support]" as a block when the item described is on a supporter.
Understand "in/from/-- [something related by reversed containment]" as a block when the item described is in a container.
Understand "from/in/-- my/-- inventory" as a block when the item described is carried by the player.
Understand "on/from/-- the/-- floor/ground" or "dropped" as a block when the item described is in a room.
I also have a problem which I’m not sure that solution would circumvent: things like “put large on left” are understood as (put the large block that is on the left side on (something)) and not (put the large block that I am holding on the left side).
- (another thing I’ve already found a workaround for and am looking for more clarity about) In general, does the player mean statements confuse me because there seem to be defaults for likeliness but no way to figure out what they are. For example, when I create a new action, it seems to be automatically “likely” that the player wants to do it to something in their inventory, at least when there’s only one. Sometimes this becomes confusing (I’ve changed burn to a two-noun command):
burn desk
(with the bread)
The bread isn’t on fire. How do you expect it to light the bread?
But then something like this:
Does the player mean burning something with a thing which is carried by the player: it is unlikely.
results in it defaulting to portable objects not carried by the player (dropped, actually; it ignores those on supporters). Making it “possible” still defaults to objects being carried by the player, so it seems like its default likelihood is between possible and unlikely. This works:
Does the player mean burning something with a thing which is carried by the player: it is unlikely.
Does the player mean burning something with a thing which is not carried by the player: it is unlikely.
But I’m still confused.
- Is there a way to make something like the opposite of a conditional paragraph break? I have text and more text that might follow, and if it does then I want it to be in the same paragraph. “[run paragraph on]” doesn’t work because it runs on even if no text follows.
Thanks for any insight!