summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/item_use.cc3
-rw-r--r--crawl-ref/source/itemprop.cc12
2 files changed, 8 insertions, 7 deletions
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc
index ea0e408f98..87b103d7f5 100644
--- a/crawl-ref/source/item_use.cc
+++ b/crawl-ref/source/item_use.cc
@@ -133,6 +133,7 @@ bool can_wield(item_def *weapon, bool say_reason,
// Small species wielding large weapons...
if (player_size(PSIZE_BODY) < SIZE_MEDIUM
+ && weapon_skill(*weapon) != SK_STAVES
&& !check_weapon_wieldable_size(*weapon, player_size(PSIZE_BODY)))
{
SAY(mpr("That's too large for you to wield."));
@@ -414,7 +415,7 @@ void warn_shield_penalties()
else if (is_range_weapon(*weapon))
warn_launcher_shield_slowdown(*weapon);
else if (weapon->base_type == OBJ_WEAPONS
- && weapon->sub_type == WPN_QUARTERSTAFF)
+ && weapon_skill(*weapon) == SK_STAVES)
{
mprf(MSGCH_WARN, "Your %s severely limits your weapon's effectiveness.",
shield_base_name(player_shield()));
diff --git a/crawl-ref/source/itemprop.cc b/crawl-ref/source/itemprop.cc
index 8e1c82aec9..d78fa65b36 100644
--- a/crawl-ref/source/itemprop.cc
+++ b/crawl-ref/source/itemprop.cc
@@ -326,10 +326,10 @@ static weapon_def Weapon_prop[NUM_WEAPONS] =
DAMV_CHOPPING, 2 },
{ WPN_QUARTERSTAFF, "quarterstaff", 7, 6, 12, 180, 7,
- SK_STAVES, HANDS_DOUBLE, SIZE_LARGE, MI_NONE, false,
+ SK_STAVES, HANDS_DOUBLE, SIZE_LARGE, MI_NONE, false,
DAMV_CRUSHING, 10 },
{ WPN_LAJATANG, "lajatang", 14, -3, 14, 200, 3,
- SK_STAVES, HANDS_DOUBLE, SIZE_LARGE, MI_NONE, false,
+ SK_STAVES, HANDS_DOUBLE, SIZE_LARGE, MI_NONE, false,
DAMV_SLICING, 2 },
// Range weapons
@@ -1518,7 +1518,7 @@ hands_reqd_type hands_reqd( const item_def &item, size_type size )
// as a special case because we want to be very flexible with
// these useful objects (we want spriggans and ogre magi to
// be able to use them).
- if (item.base_type == OBJ_STAVES || item.sub_type == WPN_QUARTERSTAFF)
+ if (item.base_type == OBJ_STAVES || weapon_skill(item) == SK_STAVES)
{
if (size < SIZE_SMALL)
ret = HANDS_TWO;
@@ -1910,7 +1910,7 @@ bool check_weapon_tool_size( const item_def &item, size_type size )
ASSERT( item.base_type == OBJ_WEAPONS || item.base_type == OBJ_STAVES );
// Staves are currently usable for everyone just to be nice.
- if (item.base_type == OBJ_STAVES || item.sub_type == WPN_QUARTERSTAFF)
+ if (item.base_type == OBJ_STAVES || weapon_skill(item) == SK_STAVES)
return (true);
const int fit = cmp_weapon_size( item, size );
@@ -2650,9 +2650,9 @@ bool is_shield_incompatible(const item_def &weapon, const item_def *shield)
return (false);
hands_reqd_type hand = hands_reqd(weapon, player_size());
- return hand == HANDS_TWO
+ return (hand == HANDS_TWO
&& !item_is_rod(weapon)
- && !is_range_weapon(weapon);
+ && !is_range_weapon(weapon));
}
std::string item_base_name(const item_def &item)