Inform - Support - Patches

About Patches  

Compiler  
Library  

DM4 Errata  

Issue L61117     [previous patch]

Problem with <action> statements in Infix
Submitted by: Nathan Summers     Appeared in: Library 6/11 or before     Fixed in: -
Problem

<action> statements may give different results under Infix than when called normally by the game. Here is an example:

  Object  theRoom "The room"
    with  description "A bare space.",
    has   light;

  Object  -> bomb "dangerous device"
    with  name 'dangerous' 'device',
          before [; Attack: deadflag = 1; "The bomb explodes."; ];

  #### At runtime ####

  The room
  A bare space.

  You can see a dangerous device here.

  >;< ATTACK BOMB
  ; <Attack (the dangerous device)>
  Violence isn't the answer to this one.

  >HIT DEVICE
  The bomb explodes.

    *** You have died ***

The Infix command ;< ATTACK BOMB is supposedly identical to the <Attack bomb> statement; both should lead to the same outcome as the HIT DEVICE command. Here, the Attack action triggered by HIT DEVICE is trapped by the bomb's before property, causing it to explode; this is the correct behaviour. However, the same action when executed from Infix is not intercepted by the bomb's before property, and so the default "Violence isn't the answer" message is displayed.

Workaround (by Cedric Knight)

It's because the 'meta' flag has been set for the Infix command. That stops InformLibrary.begin_action() from running BeforeRoutines(). I can't immediately see any way of fixing it. A workaround would be to set meta=0 before calling the <action>. In the long term we might want the meta flag to attach to actions rather than verbs.


Last updated 17 April 2013. This web site has not been fully supported since April 2008. Information may be out of date. This page was originally managed by Roger Firth.