Add a new wand, the wand of stasis

A wand of stasis prevents teleportation (even in some cases where
it would normally not be prevented, e.g. the hero teleporting a
monster, or covetous monsters teleporting). This is intended to
provide an alternative tactic against covetous monsters (and their
AI has been adjusted to handle being under a stasis effect), but
might also be useful in other situations. It does not prevent
teleportation of objects, only the hero / monsters, and does not
at present prevent level teleportation (although I'm not sure about
this and it might well change in the future).

This breaks save compatibility, but is being pushed together with
other save-breaking changes to avoid the need for multiple bumps to
EDITLEVEL.
This commit is contained in:
Alex Smith
2026-03-19 01:16:30 +00:00
parent 6886b199be
commit 07fc4904c6
13 changed files with 75 additions and 17 deletions

View File

@@ -1457,9 +1457,11 @@ WAND("create monster", "maple", 45, 200, 1, NODIR, WOOD, HI_WOOD,
WAN_CREATE_MONSTER),
WAND("wishing", "pine", 5, 500, 1, NODIR, WOOD, HI_WOOD,
WAN_WISHING),
WAND("stasis", "redwood", 45, 150, 1, NODIR, WOOD, CLR_RED,
WAN_STASIS),
WAND("nothing", "oak", 25, 100, 0, IMMEDIATE, WOOD, HI_WOOD,
WAN_NOTHING),
WAND("striking", "ebony", 75, 150, 1, IMMEDIATE, WOOD, HI_WOOD,
WAND("striking", "ebony", 30, 150, 1, IMMEDIATE, WOOD, HI_WOOD,
WAN_STRIKING),
WAND("make invisible", "marble", 45, 150, 1, IMMEDIATE, MINERAL, HI_MINERAL,
WAN_MAKE_INVISIBLE),

View File

@@ -454,6 +454,7 @@ struct levelflags {
Bitfield(stormy, 1); /* clouds create lightning bolts at random */
schar temperature; /* +1 == hot, -1 == cold */
long stasis_until; /* wand of stasis effect lasts until when? */
};
typedef struct {