[CF-Devel] Wall of Thorns map bug

Andreas Vogl andi.vogl at gmx.net
Mon Apr 23 08:33:36 CDT 2001


>
     
      gros wrote:
     
     >
     
      > 
     
     >
     
      > If someone dies on a wall of thorns in the arena, it will be a
     
     >
     
      > real death, and not an "arena-death" (-> house of healing). It
     
     >
     
      > seems that wall of thorns erases all squares behind it, and 
     
     >
     
      > that includes the "arena floor" map markers. Is that bug known
     
     >
     
      > and already corrected ?
     
     >
     
     
     >
     
       no and maybe.
     
     >
     
     
     >
     
      The problem here is op_on_battleground (which is the key call to
     
     >
     
      determine if the player is on a battleground) stops when it finds
     
     >
     
      the first floor object.
     
     >
     
     
     >
     
      Wall of thorns is another floor object.  So player dies,
     
     >
     
      op_on_battlground goes through, finds the wall of thorns is a floor,
     
     >
     
      and says that space is not a battleground.
     
     >
     
     
     >
     
      Its a very easy change to modify op_on_battleground to look at
     
     >
     
      all objects beneath the player, and hence go through all the
     
     >
     
      floor objects.
     
     >
     
     
     >
     
       Now the comment says:
     
     >
     
        /* A battleground-tile needs the following attributes to be valid:
     
     >
     
         * is_floor 1 (has to be the FIRST floor beneath the player's feet),
     
     >
     
         * name="battleground", no_pick 1, type=58 (type BATTLEGROUND)
     
     >
     
         * and the exit-coordinates sp/hp must both be > 0.
     
     >
     
         * => The intention here is to prevent abuse of the battleground-
     
     >
     
         * feature (like pickable or hidden battleground tiles). */
     
     >
     
     
     >
     
      So from this comment, it having to be the first floor seems
     
     >
     
      intentional, and is in fact emphasized.  Can anyone provide
     
     >
     
      illuminatiion why it has to be the first floor object?
     
     
Like stated in the comment, the intention was not to allow hidden-
placed battleground tiles. The matter of exp-loss is so important in CF,
a player should always know if it is active or not.
(And I know from past experiences that "rules" must be hardcoded
or mapmakers will always try to break them. ;) )

I certainly didn't know about wall of thorns being of "is_floor 1".
And frankly, that is quite stupid for several reasons:
The is_floor flag should determine the *floor* tile. Thorns are
definitly not floor. That way, thorns will hide all objects below
and they can break teleporters.
We should take out the is_floor from thorns. If that requires code
changes, we do it after 1.0.

To prevent such bugs in future, it also seems wise to make
op_on_battleground cycle through all floor tiles, not to stop at the
first one.


Andreas V.

-- 
GMX - Die Kommunikationsplattform im Internet.
     
     http://www.gmx.net
     
     
    


More information about the crossfire mailing list