summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/effects.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/effects.cc')
-rw-r--r--crawl-ref/source/effects.cc45
1 files changed, 38 insertions, 7 deletions
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc
index 66ce66797d..7df469dd70 100644
--- a/crawl-ref/source/effects.cc
+++ b/crawl-ref/source/effects.cc
@@ -1316,6 +1316,21 @@ bool acquirement(object_class_type class_wanted, int agent)
default:
break;
}
+
+ int plusmod = random2(4);
+ // more damage, less accuracy
+ if (agent == GOD_TROG)
+ {
+ thing.plus -= plusmod;
+ thing.plus2 += plusmod;
+ }
+ // more accuracy, less damage
+ else if (agent == GOD_OKAWARU)
+ {
+ thing.plus += plusmod;
+ thing.plus2 -= plusmod;
+ }
+
}
else if (thing.base_type == OBJ_ARMOUR
&& !is_fixed_artefact( thing ))
@@ -1497,18 +1512,22 @@ void yell(void)
mpr("What do you say?", MSGCH_PROMPT);
mprf(" ! - %s", cap_shout.c_str());
- mpr(" a - Order allies to attack a monster");
- if (!(you.prev_targ == MHITNOT || you.prev_targ == MHITYOU))
+ if (!you.duration[DUR_BERSERKER])
{
- struct monsters *target = &menv[you.prev_targ];
+ mpr(" a - Order allies to attack a monster");
- if (mons_near(target) && player_monster_visible(target))
+ if (!(you.prev_targ == MHITNOT || you.prev_targ == MHITYOU))
{
- mpr(" p - Order allies to attack your previous target");
- targ_prev = true;
+ struct monsters *target = &menv[you.prev_targ];
+
+ if (mons_near(target) && player_monster_visible(target))
+ {
+ mpr(" p - Order allies to attack your previous target");
+ targ_prev = true;
+ }
}
- }
+ }
mprf(" Anything else - Stay silent%s",
one_chance_in(20)? " (and be thought a fool)" : "");
@@ -1524,6 +1543,12 @@ void yell(void)
return;
case 'a':
+ if (you.duration[DUR_BERSERKER])
+ {
+ canned_msg(MSG_TOO_BERSERK);
+ return;
+ }
+
mpr("Gang up on whom?", MSGCH_PROMPT);
direction( targ, DIR_TARGET, TARG_ENEMY );
@@ -1544,6 +1569,12 @@ void yell(void)
break;
case 'p':
+ if (you.duration[DUR_BERSERKER])
+ {
+ canned_msg(MSG_TOO_BERSERK);
+ return;
+ }
+
if (targ_prev)
{
mons_targd = you.prev_targ;