detection revamp
Change most instances of detection to offer the player a chance to move the cursor around on the map so that the getpos() autodescribe feature can explain things that might go away as soon as the current detection completes. The few instances that don't offer such a chance are the ones where everything which has been revealed will still be there once the action finishes (such as regular magic mapping and blessed/persistent monster detection). There were quite a lot of inconsistencies in things like handling for detection while swallowed or underwater. I didn't keep track of them to distinguish between 3.6.0, current dev code, or my patch in progess. They should be much more consistent now but without a comprehensive fixes36.1 entry. Blessed clairvoyance (divination spells at skilled or expert) now shows monsters as well as terrain. I first had it like that for any clairvoyance, but having getpos/autodescribe kick in every 15 or 30 turns once you have the amulet--or pay the appropriate amount to a temple preist--was nearly unplayable. When it only follows an explicit spell cast it is not intrusive.
This commit is contained in:
@@ -248,7 +248,7 @@ E int FDECL(trap_detect, (struct obj *));
|
||||
E const char *FDECL(level_distance, (d_level *));
|
||||
E void FDECL(use_crystal_ball, (struct obj **));
|
||||
E void NDECL(do_mapping);
|
||||
E void NDECL(do_vicinity_map);
|
||||
E void FDECL(do_vicinity_map, (struct obj *));
|
||||
E void FDECL(cvt_sdoor_to_door, (struct rm *));
|
||||
#ifdef USE_TRAMPOLI
|
||||
E void FDECL(findone, (int, int, genericptr_t));
|
||||
|
||||
@@ -187,10 +187,11 @@ struct instance_flags {
|
||||
int override_ID; /* true to force full identification of objects */
|
||||
int suppress_price; /* controls doname() for unpaid objects */
|
||||
int terrainmode; /* for getpos()'s autodescribe when #terrain is active */
|
||||
#define TER_MAP 0x01
|
||||
#define TER_TRP 0x02
|
||||
#define TER_OBJ 0x04
|
||||
#define TER_MON 0x08
|
||||
#define TER_MAP 0x01
|
||||
#define TER_TRP 0x02
|
||||
#define TER_OBJ 0x04
|
||||
#define TER_MON 0x08
|
||||
#define TER_DETECT 0x10 /* detect_foo magic rather than #terrain */
|
||||
coord travelcc; /* coordinates for travel_cache */
|
||||
boolean window_inited; /* true if init_nhwindows() completed */
|
||||
boolean vision_inited; /* true if vision is ready */
|
||||
|
||||
Reference in New Issue
Block a user