[crossfire] Broken trigger_markers (type 52) breaking several maps in SVN trunk

Raphaël Quinet raphael at gimp.org
Sun Aug 3 18:00:21 CDT 2008


Hi,

This is about bug 1985944: https://sourceforge.net/tracker/index.php?func=detail&aid=1985944&group_id=13833&atid=113833

Since about four months, the trigger_marker archetype (using the
object type 52 TRIGGER_MARKER) is broken.  During the refactorization
of the code for type 55 MARKER, the code that was also handling the
TRIGGER_MARKER objects was removed.  It is hard to know if that was
an accident or if there were some plans to restore or improve that
code later.  In any case, this bug is rather annoying because it
prevents players from entering the apartments in Brest or Lone Town,
it prevents access to the smithery, kitchen, tannery and similar
shops in Scorn and Navar, and it breaks some parts of the python
guilds.  This affects all servers based on SVN trunk.

If I am not mistaken, the main difference between objects of type 55
(MARKER) and type 52 (TRIGGER_MARKER) is that markers detect when a
player steps on them, and apply the mark.  Trigger_markers are only
activated via a connection, not when someone moves over them.  Both
of them add a mark (force) in the player's inventory.

I would like to fix that bug but I'm not sure about the best way to
do it.  I can think about the following options:
1) Restore the old code that was removed - easy, but bad solution.
2) (Re-)write the /types/... code for object type 52 TRIGGER_MARKER,
   trying to share some code with type 55 MARKER in /types/marker/.
3) Get rid of TRIGGER_MARKER and instead try to use the same object
   type (MARKER) for both archetypes "marker" and "trigger_marker".
   It should be possible to customize some fields of these
   archetypes so that "trigger_marker" is only activated by its
   connection and not when a player walks on it.  Maybe it would be
   enough to set "move_on walk fly_low" for "marker" and "move_on 0"
   for "trigger_marker", but I don't know if that would work.
4) Get rid of the TRIGGER_MARKER type and "trigger_marker"
   archetype.  Update all maps to use the "marker" archetype,
   assuming that some object fields can be set in a way that
   prevents its activation when a player steps on it.
5) Do the opposite: get rid of the type MARKER and the archetype
   "marker", keeping only "trigger_marker".  Update all maps using
   "marker" objects and replace them by a pair of connected
   objects: a pedestal + a trigger_marker.

Currently, I am hesitating between (2) and (3).  But I would like
some advice about the best way to proceed, and maybe some comments
about why the support for TRIGGER_MARKER was removed (if it was
not an accident and if someone remembers the reason).

-Raphaël



More information about the crossfire mailing list