Skip to content

26 — Crosses Vertical Line...

Satisfied when an object of the named house reaches any cell in the column of cells the tag sits in.

Editor data
Numeric ID
26
Engine ID
TEVENT_CROSS_VERTICAL
Editor name
Crosses Vertical Line...
Need token
NEED_HOUSE
Parameters
  1. Househouse
Attachment
cell
INI example
[Events]
<TriggerID>=1,26,0,<House>

Reading the map marks every cell of the column that the tagged cell lies in. The mark is what the offer is gated on: an object arriving at the center of a marked cell walks that whole column and springs each tag it finds whose triggers watch for a vertical crossing. There is no test of how the object arrived and no test of which side it came from, so a unit that starts the scenario standing on the line springs it as soon as it takes its first step along the column.

The column is drawn across the map rectangle rather than across the playfield, so it also covers ground no object can stand on. That costs nothing: only a tagged cell can be sprung, and only cells of the playfield can be reached.

The marking pass asks each tagged cell for a horizontal crossing first and marks the row when it finds one. Only a tag that answers no is asked about a vertical crossing. A tag whose trigger — or whose chain of linked triggers — carries both crossing events therefore contributes a row and no column, and the vertical event on it is reached only where another tag has marked the same column.

Two tag types on two cells, one carrying each crossing event, mark a row and a column independently of one another.

Valid values

  • A house the scenario declares. The test compares it against the owner of the object that moved.
Caveats
  • Naming a house the scenario does not contain crashes the game at the moment the event is offered. The test looks the house up among the houses in play and reads a field of the result without checking that it found one.
  • The column is every cell sharing the tagged cell's X coordinate, across the whole map rectangle — the upright square of cells that encloses the playfield. The cell grid is drawn as a diamond, so that column runs diagonally down and to the left on screen rather than vertically.
  • Reaching any cell of the column offers the event to every tagged cell in that column whose tag watches for a vertical crossing, not only to the one that drew the line. Two such tags in one column are both sprung by a single crossing.
  • A tag whose triggers watch for a horizontal crossing as well never has its column marked at all. Reading the map marks the row for such a tag and stops there, so the vertical crossing is left waiting for a mark some other tag would have to supply.
  • Whether the column is scanned is read from the object's own cell only while that cell is not on a horizontal line. On a cell that is on one, the row scan just before leaves a different cell in its place and the mark is read from there instead. The scan itself still reaches only the vertical crossing tags standing in the object's own column, so it cannot spring a tag in another column either way.
  • The columns are worked out once, as the scenario is read, from the cell tags the map declares. Nothing recomputes them afterwards.
  • A fully cloaked object makes no offer at all.
  • Satisfying the event switches remembering on for the rest of that offer, which reaches the events written before it on the trigger's line in the map file.