[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