Index: lib/edit/monster.txt =================================================================== --- lib/edit/monster.txt (revision 2041) +++ lib/edit/monster.txt (working copy) @@ -253,8 +253,8 @@ B:SPORE:HURT:1d4 B:SPORE:HURT:1d4 F:EMPTY_MIND | STUPID -F:NEVER_MOVE -F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:NEVER_MOVE | DROP_20 +F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM D:A small strange grey growth. N:16:Grey mushroom patch @@ -264,7 +264,7 @@ B:SPORE:CONFUSE:1d4 F:EMPTY_MIND | STUPID F:NEVER_MOVE -F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM | DROP_60 D:Yum! It looks quite tasty. N:17:Giant yellow centipede @@ -419,8 +419,8 @@ I:110:1:4:1:0 W:2:1:0:1 F:EMPTY_MIND | STUPID -F:NEVER_BLOW | NEVER_MOVE -F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:NEVER_BLOW | NEVER_MOVE | DROP_40 +F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM F:FORCE_SLEEP S:1_IN_4 S:SHRIEK @@ -500,8 +500,8 @@ W:2:1:0:2 B:SPORE:TERRIFY:1d6 F:EMPTY_MIND | STUPID -F:NEVER_MOVE -F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:NEVER_MOVE | DROP_20 +F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM D:Yum! It looks quite tasty. N:40:White jelly @@ -696,9 +696,9 @@ I:110:1:2:1:0 W:3:1:0:3 B:SPORE:POISON:2d4 -F:EMPTY_MIND | STUPID +F:EMPTY_MIND | STUPID | DROP_60 F:NEVER_MOVE -F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM D:Yum! It looks quite tasty. N:59:Silver jelly @@ -753,8 +753,8 @@ W:3:1:0:9 B:SPORE:HURT:1d4 F:EMPTY_MIND | STUPID -F:NEVER_MOVE -F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:NEVER_MOVE | DROP_20 +F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM D:It is a strange yellow growth on the dungeon floor. N:64:Metallic red centipede @@ -1034,9 +1034,9 @@ B:SPORE:LOSE_CON:1d2 B:SPORE:LOSE_CON:1d2 B:SPORE:LOSE_CON:1d2 -F:EMPTY_MIND | STUPID +F:EMPTY_MIND | STUPID | DROP_60 F:NEVER_MOVE -F:NO_FEAR | NO_CONF | NO_SLEEP +F:NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM D:Yum! It looks quite tasty. N:89:Novice priest @@ -1079,7 +1079,7 @@ I:110:68:2:12:99 W:6:1:0:20 B:SPORE:CONFUSE:1d4 -F:EMPTY_MIND | STUPID +F:EMPTY_MIND | STUPID | DROP_40 | DROP_SHROOM F:NEVER_MOVE F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP D:A strange brown growth on the dungeon floor. @@ -1371,7 +1371,7 @@ I:110:95:2:14:75 W:8:1:0:28 B:SPORE:TERRIFY:1d4 -F:EMPTY_MIND | STUPID +F:EMPTY_MIND | STUPID | DROP_20 | DROP_SHROOM F:NEVER_MOVE F:IM_ACID | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP D:It is a strange growth on the dungeon floor. @@ -1681,7 +1681,7 @@ I:120:1:4:1:0 W:10:2:0:3 B:SPORE:HURT:1d1 -F:COLD_BLOOD | EMPTY_MIND | INVISIBLE | MULTIPLY | STUPID +F:COLD_BLOOD | EMPTY_MIND | INVISIBLE | MULTIPLY | STUPID | DROP_SHROOM | DROP_20 F:NEVER_MOVE F:NO_FEAR | NO_CONF | NO_SLEEP F:ATTR_CLEAR @@ -1716,7 +1716,7 @@ I:110:68:2:15:70 W:10:1:0:32 B:SPORE:POISON:1d3 -F:EMPTY_MIND | STUPID +F:EMPTY_MIND | STUPID | DROP_20 | DROP_SHROOM F:NEVER_MOVE F:IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP D:It is a strange hairy growth on the dungeon floor. @@ -1729,7 +1729,7 @@ F:EMPTY_MIND | STUPID F:NEVER_MOVE F:IM_POIS | RES_DISE | NO_FEAR | NO_CONF | NO_SLEEP -F:ATTR_MULTI +F:ATTR_MULTI | DROP_40 | DROP_SHROOM S:1_IN_11 S:DRAIN_MANA D:It is a strange glowing growth on the dungeon floor. @@ -2349,9 +2349,9 @@ B:SPORE:CONFUSE B:SPORE:HALLU B:SPORE:HALLU -F:EMPTY_MIND | STUPID | HAS_LITE +F:EMPTY_MIND | STUPID | HAS_LITE | DROP_60 | DROP_2 F:NEVER_MOVE -F:NO_FEAR | NO_CONF | NO_SLEEP +F:NO_FEAR | NO_CONF | NO_SLEEP | DROP_SHROOM F:FORCE_SLEEP S:1_IN_2 S:BLINK | DARKNESS | SCARE | SLOW @@ -2891,7 +2891,7 @@ B:HIT:HURT:1d8 B:HIT:HURT:1d8 F:EVIL | EMPTY_MIND | STUPID -F:DROP_60 | ONLY_GOLD +F:DROP_60 | DROP_SHROOM F:OPEN_DOOR | BASH_DOOR F:NO_FEAR | NO_CONF | NO_SLEEP S:1_IN_4 @@ -2949,7 +2949,7 @@ B:SPORE:FIRE:4d4 F:EMPTY_MIND | STUPID | HAS_LITE F:NEVER_MOVE -F:IM_FIRE | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP +F:IM_FIRE | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP | DROP_40 | DROP_SHROOM D:It is a strange red growth on the dungeon floor; it seems to burn with flame. N:234:Giant gold dragon fly @@ -4449,7 +4449,7 @@ W:32:3:0:150 B:HIT:CONFUSE:1d4 B:HIT:CONFUSE:1d4 -F:EMPTY_MIND | STUPID +F:EMPTY_MIND | STUPID | DROP_60 | DROP_SHROOM F:NEVER_MOVE F:NO_FEAR | NO_CONF | NO_SLEEP F:FORCE_SLEEP @@ -7159,7 +7159,7 @@ F:EVIL F:NEVER_MOVE F:IM_ACID | IM_COLD | IM_ELEC | IM_FIRE | IM_POIS | NO_FEAR -F:NO_CONF | NO_SLEEP +F:NO_CONF | NO_SLEEP | DROP_60 | DROP_4 | DROP_SHROOM F:FORCE_SLEEP D:It is the epitome of all that is evil, in a mold. Its lifeless form draws D: power from sucking the souls of those that approach it, a nimbus of pure evil @@ -8739,7 +8739,7 @@ B:SPORE:ELEC:5d4 B:SPORE:ELEC:5d4 F:EMPTY_MIND | STUPID | HAS_LITE -F:NEVER_MOVE +F:NEVER_MOVE | DROP_40 | DROP_SHROOM F:IM_ELEC | IM_POIS | NO_FEAR | NO_CONF | NO_SLEEP D:It is a strange growth on the dungeon floor, glowing and crackling with D: sparks. Index: lib/edit/object.txt =================================================================== --- lib/edit/object.txt (revision 2041) +++ lib/edit/object.txt (working copy) @@ -185,16 +185,16 @@ W:0:0:1:200 A:10:1 to 100 F:EASY_KNOW -E:TMD_ESP +E:SHROOM_SECSIGHT -N:17:Fast Recovery +N:17:Recovery G:,:d I:80:7:500 W:0:0:1:200 A:10:1 to 40 M:70:1d4 F:EASY_KNOW -E:CURE_BODY +E:CURE_FULL N:18:Vigor G:,:d @@ -211,7 +211,7 @@ A:10:1 to 40 M:100:1d4 F:EASY_KNOW -E:CURE_MIND +E:SHROOM_CLMIND N:20:Emergency G:,:d @@ -245,19 +245,21 @@ G:,:d I:80:13:500 W:0:0:1:60 -#A:10:1 to 100 +A:10:1 to 100 M:70:1d4 F:EASY_KNOW -#E:SHROOM_TURB +E:SHROOM_TURB +D:Small rocks and pebbles seem to float around it. It seems to manipulate +D:gravity. -N:24:Debility +N:24:Weal and Woe G:,:d I:80:14:500 W:0:0:1:20 A:10:1 to 40 M:70:1d4 F:EASY_KNOW -E:SHROOM_DEBILITY +E:SHROOM_WEALWOE N:25:Sprinting G:,:d Index: src/cmd-obj.c =================================================================== --- src/cmd-obj.c (revision 2041) +++ src/cmd-obj.c (working copy) @@ -911,7 +911,8 @@ item_actions[act].command == CMD_USE_WAND || item_actions[act].command == CMD_USE_ROD || item_actions[act].command == CMD_USE_STAFF || - item_actions[act].command == CMD_READ_SCROLL) + item_actions[act].command == CMD_READ_SCROLL || + item_actions[act].command == CMD_EAT) { cmd_needs_aim = TRUE; } Index: src/defines.h =================================================================== --- src/defines.h (revision 2041) +++ src/defines.h (working copy) @@ -453,8 +453,8 @@ TMD_AFRAID, TMD_IMAGE, TMD_POISONED, TMD_CUT, TMD_STUN, TMD_PROTEVIL, TMD_INVULN, TMD_HERO, TMD_SHERO, TMD_SHIELD, TMD_BLESSED, TMD_SINVIS, TMD_SINFRA, TMD_OPP_ACID, TMD_OPP_ELEC, TMD_OPP_FIRE, TMD_OPP_COLD, - TMD_OPP_POIS, TMD_OPP_CONF, TMD_AMNESIA, TMD_TELEPATHY, TMD_STONESKIN, - TMD_TERROR, TMD_SPRINT, + TMD_OPP_POIS, TMD_OPP_CONF, TMD_OPP_SHARD, TMD_AMNESIA, TMD_TELEPATHY, + TMD_STONESKIN, TMD_TERROR, TMD_SPRINT, TMD_EMERGENCY, TMD_MAX }; Index: src/effects.c =================================================================== --- src/effects.c (revision 2041) +++ src/effects.c (working copy) @@ -1745,11 +1745,39 @@ return TRUE; } + case EF_SHROOM_CLMIND: + { + *ident = TRUE; + if (p_ptr->csp < p_ptr->msp) + { + p_ptr->csp = p_ptr->msp; + p_ptr->csp_frac = 0; + msg_print("Your feel your head clear."); + p_ptr->redraw |= (PR_MANA); + } + do_res_stat(A_INT); + do_res_stat(A_WIS); + (void)clear_timed(TMD_CONFUSED, TRUE); + (void)set_timed(TMD_OPP_CONF, rand_spread(30, 10), TRUE); + return TRUE; + } + case EF_SHROOM_EMERGENCY: { - (void)set_timed(TMD_IMAGE, rand_spread(250, 50), TRUE); + /*(void)set_timed(TMD_IMAGE, rand_spread(250, 50), TRUE);*/ + + (void)set_timed(TMD_EMERGENCY, rand_spread(60, 10), TRUE); (void)set_timed(TMD_OPP_FIRE, rand_spread(30, 10), TRUE); (void)set_timed(TMD_OPP_COLD, rand_spread(30, 10), TRUE); + (void)set_timed(TMD_OPP_ELEC, rand_spread(30, 10), TRUE); + (void)set_timed(TMD_OPP_ACID, rand_spread(30, 10), TRUE); + (void)set_timed(TMD_OPP_POIS, rand_spread(30, 10), TRUE); + (void)set_timed(TMD_OPP_CONF, rand_spread(30, 10), TRUE); + (void)clear_timed(TMD_CONFUSED, TRUE); + (void)clear_timed(TMD_BLIND, TRUE); + (void)clear_timed(TMD_CUT, TRUE); + (void)clear_timed(TMD_POISONED, TRUE); + (void)clear_timed(TMD_IMAGE, TRUE); (void)hp_player(200); *ident = TRUE; return TRUE; @@ -1764,26 +1792,21 @@ case EF_SHROOM_STONE: { - if (set_timed(TMD_STONESKIN, rand_spread(80, 20), TRUE)) - *ident = TRUE; + set_timed(TMD_STONESKIN, rand_spread(80, 20), TRUE); + set_timed(TMD_OPP_ELEC, rand_spread(80, 20), TRUE); + set_timed(TMD_OPP_SHARD, rand_spread(80, 20), TRUE); + *ident = TRUE; return TRUE; } - case EF_SHROOM_DEBILITY: + case EF_SHROOM_WEALWOE: { - int stat = one_in_(2) ? A_STR : A_CON; - - if (p_ptr->csp < p_ptr->msp) + /* this could be anything from an !aug, to a negative !aug */ + int i = 0; + for(i = 0; i < A_MAX; i++) { - p_ptr->csp = p_ptr->msp; - p_ptr->csp_frac = 0; - msg_print("Your feel your head clear."); - p_ptr->redraw |= (PR_MANA); - *ident = TRUE; + (randint0(2))?do_inc_stat(i):do_dec_stat(i, TRUE); } - - (void)do_dec_stat(stat, FALSE); - *ident = TRUE; return TRUE; } @@ -1803,6 +1826,23 @@ return TRUE; } + case EF_SHROOM_TURB: + { + *ident = TRUE; + fire_beam(GF_GRAVITY, dir, 150); + return TRUE; + } + + case EF_SHROOM_SECSIGHT: + { + *ident = TRUE; + wiz_light(); + (void)detect_traps(TRUE); + (void)detect_doorstairs(TRUE); + inc_timed(TMD_TELEPATHY, 100, TRUE); + return TRUE; + } + case EF_RING_ACID: { dam = 70 * (100 + boost) / 100; Index: src/game-cmd.c =================================================================== --- src/game-cmd.c (revision 2041) +++ src/game-cmd.c (working copy) @@ -90,7 +90,7 @@ { CMD_TAKEOFF, { arg_ITEM, arg_END }, do_cmd_takeoff, FALSE, 0 }, { CMD_DROP, { arg_ITEM, arg_NUMBER, arg_END }, do_cmd_drop, FALSE, 0 }, { CMD_UNINSCRIBE, { arg_ITEM, arg_END }, do_cmd_uninscribe, FALSE, 0 }, - { CMD_EAT, { arg_ITEM, arg_END }, do_cmd_use, FALSE, 0 }, + { CMD_EAT, { arg_ITEM, arg_TARGET, arg_END }, do_cmd_use, FALSE, 0 }, { CMD_QUAFF, { arg_ITEM, arg_TARGET, arg_END }, do_cmd_use, FALSE, 0 }, { CMD_USE_ROD, { arg_ITEM, arg_TARGET, arg_END }, do_cmd_use, FALSE, 0 }, { CMD_USE_STAFF, { arg_ITEM, arg_END }, do_cmd_use, FALSE, 0 }, Index: src/list-effects.h =================================================================== --- src/list-effects.h (revision 2041) +++ src/list-effects.h (working copy) @@ -226,12 +226,18 @@ EFFECT(DRINK_DETONATE, FALSE, 0, "inflicts 50d20 points of damage, severe cuts, and stunning") EFFECT(FOOD_GOOD, FALSE, 0, NULL) EFFECT(FOOD_WAYBREAD, FALSE, 4, "restores 4d8 hit points and neutralizes poison") -EFFECT(SHROOM_EMERGENCY, FALSE, 7, "grants temporary resistance to fire and cold, cures 200HP, but also makes you hallucinate wildly") + +/*EFFECT(SHROOM_EMERGENCY, FALSE, 7, "grants temporary resistance to fire and cold, cures 200HP, but also makes you hallucinate wildly")*/ +EFFECT(SHROOM_EMERGENCY, FALSE, 7, "grants temporary resistance to all elements, cures confusion, blindness, cuts, and stunning, and heals you for 200, but you pass out afterwards") EFFECT(SHROOM_TERROR, FALSE, 5, "speeds up you temporarily but also makes you mortally afraid") -EFFECT(SHROOM_STONE, FALSE, 5, "turns your skin to stone briefly, which grants an extra 40AC but slows you down") -EFFECT(SHROOM_DEBILITY, FALSE, 5, "restores some mana but also drains either your strength or constitution") +EFFECT(SHROOM_STONE, FALSE, 5, "turns your skin to stone briefly, which grants 40AC and makes you resistant to electricity and shards") +EFFECT(SHROOM_WEALWOE, FALSE, 5, "increases or decreases each of your stats randomly") EFFECT(SHROOM_SPRINTING, FALSE, 5, "hastes you for a while, but then makes you slower for a while afterward") -EFFECT(SHROOM_PURGING, FALSE, 5, "makes you very hungry but restores constitution and strength") +EFFECT(SHROOM_PURGING, FALSE, 5, "makes you very hungry but restores constitution and strength") +EFFECT(SHROOM_TURB, TRUE, 15, "allows you to induce a turbulent gravity field for 150 damage") +EFFECT(SHROOM_SECSIGHT, FALSE, 8, "completely lights up and maps the entire level, and grants telepathy for a short time") +EFFECT(SHROOM_CLMIND, FALSE, 10, "restores your mana, intelligence, and wisdom to maximum, then grants you resistance to confusion for a short time") + EFFECT(RING_ACID, TRUE, 11, "grants acid resistance for d20+20 turns and creates an acid ball of damage 70") EFFECT(RING_FLAMES, TRUE, 11, "grants fire resistance for d20+20 turns and creates a fire ball of damage 80") EFFECT(RING_ICE, TRUE, 11, "grants cold resistance for d20+20 turns and creates a cold ball of damage 75") Index: src/list-mon-flags.h =================================================================== --- src/list-mon-flags.h (revision 2041) +++ src/list-mon-flags.h (working copy) @@ -50,7 +50,7 @@ RF(WEIRD_MIND, "") RF(MULTIPLY, "") RF(REGENERATE, "") -RF(XXX4, "") +RF(DROP_SHROOM, "") /* allow for some monsters to drop mushrooms instead of normal items, make pits better */ RF(XXX5, "") RF(POWERFUL, "") RF(XXX6, "") Index: src/monster/monster1.c =================================================================== --- src/monster/monster1.c (revision 2041) +++ src/monster/monster1.c (working copy) @@ -1146,6 +1146,14 @@ /* Dump "object(s)" */ text_out_c(TERM_BLUE, "object%s", PLURAL(n)); + /* Add conjunction if also dropping gold / mushrooms*/ + if (l_ptr->drop_gold) text_out_c(TERM_BLUE, " or "); + } + + if (l_ptr->drop_shroom) + { + text_out_c(TERM_BLUE, "mushroom%s", PLURAL(n)); + /* Add conjunction if also dropping gold */ if (l_ptr->drop_gold) text_out_c(TERM_BLUE, " or "); } Index: src/monster/monster2.c =================================================================== --- src/monster/monster2.c (revision 2041) +++ src/monster/monster2.c (working copy) @@ -1084,6 +1084,7 @@ /* Learn about drop quality */ rf_on(l_ptr->flags, RF_DROP_GOOD); rf_on(l_ptr->flags, RF_DROP_GREAT); + rf_on(l_ptr->flags, RF_DROP_SHROOM); /* Update monster recall window */ if (p_ptr->monster_race_idx == m_ptr->r_idx) @@ -2889,6 +2890,8 @@ bool gold_ok = (!rf_has(r_ptr->flags, RF_ONLY_ITEM)); bool item_ok = (!rf_has(r_ptr->flags, RF_ONLY_GOLD)); + bool item_shroom = (rf_has(r_ptr->flags, RF_DROP_SHROOM)) ? TRUE: FALSE; + int force_coin = get_coin_type(r_ptr); object_type *i_ptr; @@ -3002,7 +3005,12 @@ else { /* Make an object */ - if (!make_object(i_ptr, level, good, great)) continue; + if(item_shroom) + { + make_shroom(i_ptr, level); + dump_item++; + } + else if (!make_object(i_ptr, level, good, great)) continue; dump_item++; } Index: src/monster/types.h =================================================================== --- src/monster/types.h (revision 2041) +++ src/monster/types.h (working copy) @@ -98,6 +98,7 @@ byte drop_gold; /* Max number of gold dropped at once */ byte drop_item; /* Max number of item dropped at once */ + byte drop_shroom; /* Max number of mushroom dropped at once */ byte cast_innate; /* Max number of innate spells seen */ byte cast_spell; /* Max number of other spells seen */ Index: src/object/obj-make.c =================================================================== --- src/object/obj-make.c (revision 2041) +++ src/object/obj-make.c (working copy) @@ -1296,8 +1296,46 @@ return TRUE; } +#define MUSH_MIN 16 +#define MUSH_MAX 26 +bool make_shroom(object_type *j_ptr, int lev) +{ + int k_idx, base; + object_kind *k_ptr; + base = lev; + /* Find a mushroom */ + k_idx = rand_range(MUSH_MIN, MUSH_MAX); /* Could be better */ + + /* Prepare the object */ + object_prep(j_ptr, k_idx, lev, RANDOMISE); + + /* Generate multiple items */ + k_ptr = &k_info[j_ptr->k_idx]; + + if (k_ptr->gen_mult_prob >= 100 || + k_ptr->gen_mult_prob >= randint1(100)) + { + j_ptr->number = randcalc(k_ptr->stack_size, lev, RANDOMISE); + } + + + /* Notice "okay" out-of-depth objects */ + if (!cursed_p(j_ptr) && (k_info[j_ptr->k_idx].level > p_ptr->depth)) + { + /* Rating increase */ + rating += (k_info[j_ptr->k_idx].level - p_ptr->depth); + + /* Cheat -- peek at items */ + if (OPT(cheat_peek)) object_mention(j_ptr); + } + + return TRUE; +} + + + /* The largest possible average gold drop at max depth with biggest spread */ #define MAX_GOLD_DROP (3*MAX_DEPTH + 30) Index: src/object/object.h =================================================================== --- src/object/object.h (revision 2041) +++ src/object/object.h (working copy) @@ -149,6 +149,7 @@ s16b get_obj_num(int level, bool good); void object_prep(object_type *o_ptr, int k_idx, int lev, aspect rand_aspect); void apply_magic(object_type *o_ptr, int lev, bool okay, bool good, bool great); +bool make_shroom(object_type *j_ptr, int lev); bool make_object(object_type *j_ptr, int lev, bool good, bool great); void make_gold(object_type *j_ptr, int lev, int coin_type); Index: src/player/calcs.c =================================================================== --- src/player/calcs.c (revision 2041) +++ src/player/calcs.c (working copy) @@ -886,7 +886,6 @@ { state->to_a += 40; state->dis_to_a += 40; - state->speed -= 5; } /* Temporary "Hero" */ Index: src/player/timed.c =================================================================== --- src/player/timed.c (revision 2041) +++ src/player/timed.c (working copy) @@ -109,6 +109,9 @@ { "You feel resistant to confusion!", "You are no longer resistant to confusion.", "You feel more resistant to confusion!", "You feel less resistant to confusion.", PR_STATUS, PU_BONUS, 0 }, + { "You feel resistant to shards!", "You are no longer resistant to shards.", + "You feel more resistant to shards!", "You feel less resistant to shards.", + PR_STATUS, 0, MSG_RES_SHARD }, { "You feel your memories fade.", "Your memories come flooding back.", NULL, NULL, 0, 0, MSG_GENERIC }, @@ -124,6 +127,9 @@ { "You start sprinting.", "You suddenly stop sprinting.", NULL, NULL, 0, PU_BONUS, MSG_SPEED }, + { "You feel a surge of energy from the mushroom!", "Your body shudders as the mushroom wears off!", + NULL, NULL, + 0, 0, MSG_GENERIC }, }; /* @@ -186,7 +192,11 @@ if (idx == TMD_SPRINT && v == 0) inc_timed(TMD_SLOW, 100, TRUE); + /* Sort out the emergency effect */ + if (idx == TMD_EMERGENCY && v == 0) + inc_timed(TMD_STUN, 150, TRUE); + /* Nothing to notice */ if (!notify) return FALSE; Index: src/xtra3.c =================================================================== --- src/xtra3.c (revision 2041) +++ src/xtra3.c (working copy) @@ -715,6 +715,7 @@ { TMD_OPP_COLD, S("RCold"), TERM_WHITE }, { TMD_OPP_POIS, S("RPois"), TERM_GREEN }, { TMD_OPP_CONF, S("RConf"), TERM_VIOLET }, + { TMD_OPP_SHARD, S("RShard"), TERM_SLATE }, { TMD_AMNESIA, S("Amnesiac"), TERM_ORANGE }, }; Index: src/z-msg.h =================================================================== --- src/z-msg.h (revision 2041) +++ src/z-msg.h (working copy) @@ -160,8 +160,8 @@ MSG_KILL_KING = 147, MSG_DRAIN_STAT = 148, MSG_MULTIPLY = 149, - - MSG_MAX = 150, + MSG_RES_SHARD = 150, + MSG_MAX = 151, SOUND_MAX = MSG_MAX };