Files
nethack/include/engrave.h
PatR 8a7f3b2b6b more issue #1303
Various bits I had in progress before Michael's commit.

Mainly forget engravings when bones are saved instead of leaving them
flagged as seen for the next hero who gets the level.
2024-12-19 18:18:11 -08:00

54 lines
1.9 KiB
C

/* NetHack 3.7 engrave.h $NHDT-Date: 1596498535 2020/08/03 23:48:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.10 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef ENGRAVE_H
#define ENGRAVE_H
enum engraving_texts {
actual_text,
remembered_text,
pristine_text,
text_states
};
struct engr {
struct engr *nxt_engr;
char *engr_txt[text_states];
coordxy engr_x, engr_y;
unsigned engr_szeach; /* length of text including trailing NUL */
unsigned engr_alloc; /* for save & restore; not length of text */
long engr_time; /* moment engraving was (will be) finished */
xint8 engr_type;
#define DUST 1
#define ENGRAVE 2
#define BURN 3
#define MARK 4
#define ENGR_BLOOD 5
#define HEADSTONE 6
#define N_ENGRAVE 6
Bitfield(guardobjects, 1); /* if engr_txt is "Elbereth", it is effective
* against monsters when an object is present
* even when hero isn't (so behaves similarly
* to how Elbereth did in 3.4.3) */
Bitfield(nowipeout, 1); /* this engraving will not degrade */
Bitfield(eread, 1); /* refers to the engaving text: read or felt */
Bitfield(erevealed, 1); /* refers to engraving map symbol: revealed */
/* 4 free bits */
};
#define newengr(lth) \
(struct engr *) alloc((unsigned) (lth) + (unsigned) sizeof (struct engr))
#define dealloc_engr(engr) free((genericptr_t) (engr))
#define engraving_to_defsym(ep) \
((levl[(ep)->engr_x][(ep)->engr_y].typ == CORR) ? S_engrcorr : S_engroom)
#define spot_shows_engravings(x,y) \
(levl[(x)][(y)].typ == CORR \
|| levl[(x)][(y)].typ == ICE \
|| levl[(x)][(y)].typ == ROOM)
#endif /* ENGRAVE_H */