summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-30 21:39:03 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-06-30 21:39:03 +0000
commit2e0507ac62fefe90c1b6a15af5f971d2892d5534 (patch)
tree43d3636738e25ef2ded30bfcd7e388d966b71d97
parentc735656f5d7982da59f3e81a1f487b559ba7bcda (diff)
downloadcrawl-ref-2e0507ac62fefe90c1b6a15af5f971d2892d5534.tar.gz
crawl-ref-2e0507ac62fefe90c1b6a15af5f971d2892d5534.zip
Force beams of digging (wand or spell, known or unknown, also /random
effects) to ignore the endpoint target ('.') in favour of continuing until the end of the range. Unrestrict tridents for some more species. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6265 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/beam.cc2
-rw-r--r--crawl-ref/source/directn.cc15
-rw-r--r--crawl-ref/source/item_use.cc8
-rw-r--r--crawl-ref/source/newgame.cc15
4 files changed, 28 insertions, 12 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index f3c6a68ea5..8c97298631 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -273,6 +273,8 @@ bool zapping(zap_type ztype, int power, bolt &pbolt, bool needs_tracer,
// XXX: Needs to check silenced at other location, too. {dlb}
noisy(25, you.x_pos, you.y_pos, "You hear a mighty clap of thunder!");
}
+ else if (ztype == ZAP_DIGGING)
+ pbolt.aimed_at_spot = false;
fire_beam(pbolt);
diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc
index 7b787fa0fa..8d3b268e00 100644
--- a/crawl-ref/source/directn.cc
+++ b/crawl-ref/source/directn.cc
@@ -276,11 +276,11 @@ static bool _is_target_in_range(int x, int y, int range)
// previous command differently (i.e., not just letting the keys
// stuffed into the macro buffer replay as-is) because if the player
// targeted a monster using the movement keys and the monster then
-// moved between repititions, then simply replaying the keys in the
+// moved between repetitions, then simply replaying the keys in the
// buffer will target an empty square.
-static void direction_again(dist& moves, targeting_type restricts,
- targ_mode_type mode, int range, bool just_looking,
- const char *prompt, targeting_behaviour *beh)
+static void _direction_again(dist& moves, targeting_type restricts,
+ targ_mode_type mode, int range, bool just_looking,
+ const char *prompt, targeting_behaviour *beh)
{
moves.isValid = false;
moves.isTarget = false;
@@ -471,8 +471,7 @@ static void _fill_monster_list(bool full_info)
void direction(dist& moves, targeting_type restricts,
targ_mode_type mode, int range, bool just_looking,
- bool needs_path, const char *prompt,
- targeting_behaviour *beh)
+ bool needs_path, const char *prompt, targeting_behaviour *beh)
{
static targeting_behaviour stock_behaviour;
if (!beh)
@@ -491,8 +490,8 @@ void direction(dist& moves, targeting_type restricts,
if (crawl_state.is_replaying_keys() && restricts != DIR_DIR)
{
- direction_again(moves, restricts, mode, range, just_looking,
- prompt, beh);
+ _direction_again(moves, restricts, mode, range, just_looking,
+ prompt, beh);
return;
}
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc
index 30431843c3..b13cb3aa24 100644
--- a/crawl-ref/source/item_use.cc
+++ b/crawl-ref/source/item_use.cc
@@ -3476,7 +3476,7 @@ void zap_wand( int slot )
}
message_current_target();
- direction( zap_wand, DIR_NONE, targ_mode );
+ direction(zap_wand, DIR_NONE, targ_mode);
if (!zap_wand.isValid)
{
@@ -3516,10 +3516,10 @@ void zap_wand( int slot )
// and unknown wands (highest possible range, and unresistable beam
// flavour). Don't use the tracer if firing at self.
if (!beam.aimed_at_feet
- && !player_tracer(!beam.effect_known ? ZAP_DEBUGGING_RAY
- : type_zapped,
+ && !player_tracer(beam.effect_known ? type_zapped
+ : ZAP_DEBUGGING_RAY,
2 * (you.skills[SK_EVOCATIONS] - 1),
- beam, !beam.effect_known ? 17 : 0))
+ beam, beam.effect_known ? 0 : 17))
{
return;
}
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index 8e8ed3ed92..f4b275b76a 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -2211,6 +2211,21 @@ static char_choice_restriction _weapon_restriction(weapon_type wpn)
return (CC_BANNED);
}
+ // Tridents are strictly better than spears, so unrestrict them
+ // for some species whose Polearm aptitudes are not too bad.
+ switch (you.species)
+ {
+ case SP_MOUNTAIN_DWARF:
+ case SP_OGRE:
+ case SP_DEMIGOD:
+ case SP_DEMONSPAWN:
+ case SP_GHOUL:
+ case SP_VAMPIRE:
+ return (CC_UNRESTRICTED);
+ default:
+ break;
+ }
+
// Both are polearms, right?
return (_weapon_restriction(WPN_SPEAR));