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/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 };