Allow defining random-teleport exclusion zones in lua

Adds a new lua command

  des.exclusion({ type = "teleport", region = { x1,y1, x2,y2 } });

which allows defining "exclusion zones" in the level, areas where
random teleports (or falling into the level) will never place the hero.
Does not prevent targeted teleportation into the area.

Breaks saves and bones.
This commit is contained in:
Pasi Kallinen
2023-08-24 17:42:06 +03:00
parent 0794a64b9d
commit e407af4477
15 changed files with 143 additions and 3 deletions

View File

@@ -58,6 +58,14 @@ typedef struct dest_area { /* non-stairway level change identifier */
coordxy nhx, nhy; /* opposite corner of invalid area */
} dest_area;
/* teleportation exclusion zones in the level */
typedef struct exclusion_zone {
xint16 zonetype; /* level_region_types */
coordxy lx, ly;
coordxy hx, hy;
struct exclusion_zone *next;
} exclusion_zone;
typedef struct dungeon { /* basic dungeon identifier */
char dname[24]; /* name of the dungeon (eg. "Hell") */
char proto[15]; /* name of prototype file (eg. "tower") */