Help with violent matters in Inform 7

When I made a game that includes torturing, when I try to test it and torture something, it says “Violence isn’t the answer for this one”… is this fixable?

Does inform 7 just not like violent themes?

That is the default response to the attack verb.

Couple solutions: (and sorry, I din’t have a reference in front of me)

Look up the attack action. I did exactly this recently. Then use an Instead of [verb]ing, do your thing.

However this will use all synonyms for attack.

You may be better off by singling out torture.

Make a verb that is a new meaning.

2 Likes

The SR (Standard Rules) indeed only provide that default response.

Standard Rules by Graham Nelson (zedlopez.github.io)

Attacking is an action applying to one thing.
The attacking action translates into I6 as "Attack".
 
Check an actor attacking (this is the block attacking rule):
  if the actor is the player:
     now the prior named object is nothing;
     say "Violence [aren't] the answer to this one." (A);
  stop the action.

Commentary in the SR:

The specification of the attacking action is "Violence is seldom the answer, and attempts to attack another person are normally blocked as being unrealistic or not seriously meant. (I might find a shop assistant annoying, but IF is not Grand Theft Auto, and responding by killing him is not really one of my options.) So the Standard Rules simply block attempts to fight people, but the action exists for rules to make exceptions.

And further down the rules I find which commands result in the attacking action:

Understand "attack [something]" as attacking.
Understand the commands "break", "smash", "hit", "fight", "torture", "wreck", "crack", "destroy",
  "murder", "kill", "punch" and "thump" as "attack".

As SeanHuxter suggested, you can create your own verb handling whatever commands you want. I did this in my own game where I actually excluded torture as an alias for attacking since it did not make sense for the setting I was creating. E.g. my “smiting” verb looks like this:

Understand nothing as attacking. [ I am defining my own attack command ]

Smiting is an action applying to one visible thing.
Understand "smite [something]" as smiting.
Understand the commands "a", "attack", "break", "smash", "hit", "fight", "wreck", "crack", "destroy", "kill", "strike" as "smite".

Check smiting:
    if the noun is a monster and Conan is unarmed:
        say "[one of]You have no weapon to smite [the noun] with[or]Find a suitable blade before you face [the noun][or]Without a weapon, [the noun] [remain] untouched[or][The noun] [remain] safe from your blows until you find a weapon[or]Your fists alone won't do much against [the noun]. Seek a weapon[or]This battle must wait until you have armed yourself[cycling]." instead;
    : more checks

Carry out smiting:
    increment the smite-counter of the noun;
    : etc
1 Like

If you only want to redefine torture as a new verb, you can do the following as documented here:

https://ganelson.github.io/inform-website/book/WI_17_3.html

[Redefining the default attack response]

The block attacking rule response (A) is "'Ah, violence... the brute force of lesser minds,' ..."

[Defining the new torturing verb]

Torturing is an action applying to one visible thing.

Understand the command "torture" as something new.
Understand "torture [something]" as torturing.

Check torturing:
	if the noun is not the inventor, say "After a moment of fruitless endeavor, you step back, feeling rather ridiculous as you realize the absurdity of your actions." instead.

Carry out torturing:
	say "As you begin to tighten the rack and adjust the chains, ..."

Example playthrough with some flavoring:

Torture Chamber

Cobwebs cling to the stone walls like memories of screams past, while the air hangs heavy with the sent of iron and fear. At the center of this infernal domain, bound upon a rack, is the inventor of Inform, his once bright eyes now dulled by the specter of impending agony.

>x inventor
You cannot help but notice the weariness etched into the lines of his face. His once sharp eyes now hold a glimmer of resignation, yet a spark of defiance flickers within their depths.

>attack inventor
“Ah, violence… the brute force of lesser minds,” the inventor says. “It isn’t the answer to this one. Seek the subtle threads of logic, the gentle caress of reason. For in the realm of creation, it is not the hammer that shapes the masterpiece, but the steady hand of the craftsman.”

>torture inventor
As you begin to tighten the rack and adjust the chains, the inventor clears his throat and speaks with a voice that carries a hint of irony, “Ah, my dear interlocutor, I must remind you of one of my own standard rules: “Violence isn’t the answer to this one.” Surely, even in the depths of this dungeon, we can find a more… civilized approach to conflict resolution.”

2 Likes

Just a note to be careful about expecting the player to commit violence. A lot of people won’t play such a game. If you’re cool with that, great, but I just wanted to alert you that lots of people in the community will be uncomfortable with typing TORTURE BUNNY or TORTURE PRISONER. Having violence in a game is a different beast than expecting the player to commit that violence. It’s a delicate thing.

I recently wrote a short game in which nearly the only thing the player could do was commit violent acts against objects and NPCs, but the PC was a pitiful character, so that seemed OK. I worried about alienating players when I wrote it, though.

6 Likes

I second that. My IFComp entry portrayed a Barbarian King with verbs matching the theme. Some violence can be expected there. Even though, I was careful to limit the violence to “enemies of the ethereal plane”, thus excluding alive and breathing humans… (An important other reason was because of adding narrated undo. Undoing the slaughtering of a live human was too gross to even think about.)


>smite corpse
You swiftly bring your axe down upon the corpse. The blade connects with its decaying flesh,
and the impact sends a shudder through the creature’s form, as you sever bone and sinew.

The corpse’s body collapses under the force of your blow. In an instant,
its form bursts into a cloud of noxious particles, carried away by an ethereal wind,
which seems to erase the remnants of its cursed existence.

>undo
A cloud of noxious particles materializes, coalescing into the form of a wandering corpse.

4 Likes

The block attacking rule is a check rule. You can override it with an instead rule or a before rule, or with a check rule which is listed before the block attacking rule in the check attacking rulebook.

If you want to use a check rules, carry out rules, and after rules, try replacing the block attacking rule with a report rule, something like what follows:

The block attacking rule is not listed in the check attacking rulebook.

Report attacking (this is the new block attacking rule):
	say "The gods don't condone that sort of behavior." (A).
2 Likes

I think the reasoning for this is most IF isn’t combat-oriented except in specific contexts, so out of the box ATTACKing (and a bunch of synonyms for it) are blocked by a catch-all rule and a generic message so an author doesn’t initially have to think about writing refusal messages for all kinds of generic mayhem like KICK BOB, BREAK TABLE, PUNCH DOOR, SMASH VASE that players might try. Most games don’t want the player destroying the props and scenery.

That makes it easier to specifically override and allow breakage or combat only where you want it.

The block attacking rule does nothing when the noun is the priceless Ming vase.

After attacking the priceless Ming vase:
    now the priceless Ming vase is off-stage;
    say "The Ming vase crumbles to dust, as expected. Hopefully this act of vandalism wasn't caught on camera by Museum security..."
1 Like

There are dozens of actions defined in the Standard Rules that don’t do anything other than print a default message. The intent is that individual authors will either build on that scaffolding or replace it as needed.

Inform doesn’t demonstrate much of a stance on violent themes, but it definitely has no idea what an individual author might intend the outcome of attacking things or people to be.

1 Like

Or leave it alone! The point of a good default message is to reassure the player that the game understood the command, but it’s not going to be important in this game. Most games leave most commands as default; it’s a rare game where you have to ATTACK and KISS and SQUEEZE and BURN.

(If the game said “I don’t understand that verb,” the player might start searching for a better synonym, which would be a waste of time. “Violence isn’t the answer” conveys the right idea – for games which genuinely don’t involve violence, of course.)

3 Likes

I usually make my games just for me to play. I make them for fun, etc. I may publish some in the future, but I dont really know.

4 Likes

Of course, if one has a nut or an egg, one must crack it or break the shell before one can eat it. Let’s see:

> take nutcracker
Taken.
> crack hazelnut
Violence isn't the answer to this one.

  *** Finding nothing to eat, you wither away and die! ***

 RESTART,  RESTORE,  UNDO, or QUIT.

My own feelings about the standard rules is that (1) the list of synonyms for attack is too broad and (2) that use of a check rule instead of a report rule to block an action is a bit severe. But “they is what they is” and, just like programmers using other computer languages, we work within and around those constraints.

And despite those (minor) complaints, I think Graham Nelson did an excellent job of putting together a generally reasonable set of Standard Rules. (And yes, it’s not that hard to crack a nut if you start with Understand the command "crack" as something new.)

2 Likes

The synonyms used to also include KNOCK which could be used in context of “knocking someone’s skull in” but also interfered with KNOCK ON DOOR.

Your example is amusing, but would only come about in a situation with negligent beta testing! :slight_smile:

A check rule is as easily surmounted as a report rule. In fact, the report rule may be slightly more baffling since REPORT doesn’t end the action and multiples of them can run together. I know I learned how to make and run rules before I understood the concept of actions and “continue the action/stop the action/rule succeeds” You might implement a combat system and get

>attack ogre
You swiftly dispatch the Ogre with your sword! Well done! (custom Report rule)

Violence isn’t the answer to this one. (standard Report rule)

if the author doesn’t also know to use an AFTER rule or succeed/stop the action if they use REPORT rules after their combat.

I equate it with giving your tech-oblivious parents a TV and taping over all the unnecessary ports they’re probably not going to use so they’re not confused about where to plug in the cable you give them and you don’t need to take time to teach them how to recognize the difference between HDMI and coaxial cable and multiple audio/video inputs/outputs just to watch TV. The tape is easily removed, but it’s a “you don’t need to worry about these parts until you know more fully what you’re doing” type measure.

4 Likes

A check rule is as easily surmounted as a report rule. In fact, the report rule may be slightly more baffling since REPORT doesn’t end the action and multiples of them can run together.

Agreed. Either way, one can adapt the rules to suit one’s own personal program style. And either way, there are traps for the unwary programmer.

If something can go wrong, it eventually will. – Murphy

3 Likes

A Report rule doesn’t block an action- it (in theory at least) reports the result of an action that succeeded in Carry Out rules. So if you genuinely want to block an action from succeeding (without going into small print) you need to do it in Before, Instead or Check rules.

Of course, out-of-the box built-in actions only have Check, Carry Out and Report rulebooks (which between them define the default behaviour of the action), so Check is the correct place to block an action that should (out of the box) never succeed.

3 Likes

A Report rule doesn’t block an action.

It’s semantics. If the only rule is a report rule that displays a message, then the action is, in essence, blocked. A report rule can be circumvented in more ways (before, check, carry out, after, report; or before, check; or before, instead) than a check rule (before, check; or before, instead).

The Standard Rules philosophy on blocked actions is:

  • If the library prevents the player character from carrying out the action in the world, it’s stopped by a Check rule. (KISS, ATTACK, GIVE)
  • If the library lets the player character carry out the action, but it does nothing, it’s implemented with a Report rule. (JUMP, SQUEEZE, SHOW)

The idea is, if you add your own carry out rules, the messages in the default report rules are generally fine to fall back on (“You jump on the spot” is a fine message for jumping in circumstances where the author hasn’t implemented anything more interesting), but the messages in the blocking check rules are not. If you make the attacking action do something useful in general (hence using carry out rules rather than instead rules), “Violence isn’t the answer to this one” is an actively misleading default response. So you should get rid of it.

3 Likes

Not wholly semantics. If you later ask If we have jumped this will be true after a Report rule say "You jump on the spot." or false after a Check rule say "It's pointless." instead.

As a small-print aside, a Report rule can’t be circumvented by a Carry out rule- a Carry out rule ending in ‘instead’, ‘stop the action’, ‘rule succeeds’, or ‘rule fails’ will proceed to the After and/or Report stage regardless.

1 Like

I find thinking to be an oddity here. It’s blocked with a check rule; strikes me as a more obvious candidate for something that should succeed but do nothing, maybe with a message like “You consider matters.”

2 Likes

This is the ideal situation to use the ACTIONS testing command in the IDE (ACTIONS ON/ACTIONS OFF).

When you want to implement an action, turn on actions and try your prospective action in the game (even before you’ve coded anything). That will give you an idea if there is already existing syntax/synonyms/rules in place and the name of any rule you need to contend with.

Laboratory

You can see Bob here.

>actions

Actions listing on.

>attack Bob

[attacking Bob]

Violence isn't the answer to this one.

[attacking Bob - failed the block attacking rule]

>jump

[jumping]

You jump on the spot.

[jumping - succeeded]

>jump on bob

I only understood you as far as wanting to jump.

>kiss bob

[kissing Bob]

Bob might not like that.

[kissing Bob - failed the block kissing rule]

>spin bob

That's not a verb I recognise.

>turn bob

[turning Bob]

Bob might not like that.

[turning Bob - failed the can't turn people rule]
1 Like