decaying globs of {ooze,pudding,slime}
Globs never rotted away but did become tainted after a relatively short while, which seemed like a contradiction. Change them to never be tainted but shrink by 1 unit of weight approximately every 25 turns. An ordinary glob (one that hasn't combined with any others) starts out weighing 20 units, so it takes about 500 turns to vanish. That's roughly twice as long as a corpse takes to rot away. Shrinking globs give feedback when in hero's invent or in a container in hero's inventory, but rarely (when going from an exact multiple of 20 weight units; that is, from integral number of N globs to N-1 + 19/20, or if weight reduction triggers an encumbrance change). When a glob goes away completely, there is feedback for those two circumstances and also for seeing the glob vanish from the floor. I haven't touched how much nutrition eating a glob confers. I have changed formatting of glob names to use "small", "medium", "large", "very large" instead of "small", [no adjective], "large", &c. You still need to have at least five globs coalesced together for the adjective to become "medium", same amount as before. I don't think EDITLEVEL needs to be modified but have incremented it anyway to play things safe.
This commit is contained in:
@@ -668,6 +668,7 @@ extern void eatmupdate(void);
|
||||
extern boolean is_edible(struct obj *);
|
||||
extern void init_uhunger(void);
|
||||
extern int Hear_again(void);
|
||||
extern boolean eating_glob(struct obj *);
|
||||
extern void reset_eat(void);
|
||||
extern unsigned obj_nutrition(struct obj *);
|
||||
extern int doeat(void);
|
||||
@@ -1358,6 +1359,8 @@ extern struct obj *rnd_treefruit_at(int, int);
|
||||
extern void set_corpsenm(struct obj *, int);
|
||||
extern long rider_revival_time(struct obj *, boolean);
|
||||
extern void start_corpse_timeout(struct obj *);
|
||||
extern void start_glob_timeout(struct obj *, long);
|
||||
extern void shrink_glob(anything *, long);
|
||||
extern void maybe_adjust_light(struct obj *, int);
|
||||
extern void bless(struct obj *);
|
||||
extern void unbless(struct obj *);
|
||||
|
||||
@@ -167,18 +167,21 @@ struct debug_flags {
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* Stuff that really isn't option or platform related and does not
|
||||
* get saved and restored. They are set and cleared during the game
|
||||
* to control the internal behaviour of various NetHack functions
|
||||
* and probably warrant a structure of their own elsewhere some day.
|
||||
*/
|
||||
struct instance_flags {
|
||||
/* stuff that really isn't option or platform related. They are
|
||||
* set and cleared during the game to control the internal
|
||||
* behaviour of various NetHack functions and probably warrant
|
||||
* a structure of their own elsewhere some day.
|
||||
*/
|
||||
boolean lua_testing; /* doing lua tests */
|
||||
boolean debug_fuzzer; /* fuzz testing */
|
||||
boolean in_lua; /* executing a lua script */
|
||||
boolean defer_plname; /* X11 hack: askname() might not set g.plname */
|
||||
boolean herecmd_menu; /* use menu when mouseclick on yourself */
|
||||
boolean invis_goldsym; /* gold symbol is ' '? */
|
||||
boolean in_lua; /* executing a lua script */
|
||||
boolean lua_testing; /* doing lua tests */
|
||||
boolean partly_eaten_hack; /* extra flag for xname() used when it's called
|
||||
* indirectly so we can't use xname_flags() */
|
||||
boolean sad_feeling; /* unseen pet is dying */
|
||||
int at_midnight; /* only valid during end of game disclosure */
|
||||
int at_night; /* also only valid during end of game disclosure */
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||
* and save files.
|
||||
*/
|
||||
#define EDITLEVEL 44
|
||||
#define EDITLEVEL 45
|
||||
|
||||
/*
|
||||
* Development status possibilities.
|
||||
|
||||
@@ -34,6 +34,7 @@ enum timeout_types {
|
||||
HATCH_EGG,
|
||||
FIG_TRANSFORM,
|
||||
MELT_ICE_AWAY,
|
||||
SHRINK_GLOB,
|
||||
|
||||
NUM_TIME_FUNCS
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user