diff options
-rw-r--r-- | crawl-ref/source/item_use.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/itemprop.cc | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index cbe90a4083..266d4fef52 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -136,8 +136,6 @@ 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 - && weapon->sub_type != WPN_BOW && !check_weapon_wieldable_size(*weapon, player_size(PSIZE_BODY))) { SAY(mpr("That's too large for you to wield.")); diff --git a/crawl-ref/source/itemprop.cc b/crawl-ref/source/itemprop.cc index 4a079e1501..f7f7e7dd56 100644 --- a/crawl-ref/source/itemprop.cc +++ b/crawl-ref/source/itemprop.cc @@ -209,7 +209,7 @@ static weapon_def Weapon_prop[NUM_WEAPONS] = SK_MACES_FLAILS, HANDS_ONE, SIZE_MEDIUM, MI_NONE, false, DAMV_PIERCING | DAM_BLUDGEON, 2 }, { WPN_DIRE_FLAIL, "dire flail", 13, -3, 14, 240, 9, - SK_MACES_FLAILS, HANDS_DOUBLE, SIZE_MEDIUM, MI_NONE, false, + SK_MACES_FLAILS, HANDS_DOUBLE, SIZE_LARGE, MI_NONE, false, DAMV_PIERCING | DAM_BLUDGEON, 10 }, { WPN_GREAT_MACE, "great mace", 16, -4, 18, 270, 9, SK_MACES_FLAILS, HANDS_TWO, SIZE_LARGE, MI_NONE, false, @@ -330,10 +330,10 @@ static weapon_def Weapon_prop[NUM_WEAPONS] = // Staves { WPN_QUARTERSTAFF, "quarterstaff", 7, 6, 12, 180, 7, - SK_STAVES, HANDS_DOUBLE, SIZE_LARGE, MI_NONE, false, + SK_STAVES, HANDS_DOUBLE, SIZE_MEDIUM, 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_MEDIUM, MI_NONE, false, DAMV_SLICING, 2 }, // Range weapons @@ -2026,7 +2026,15 @@ bool check_weapon_wieldable_size( const item_def &item, size_type size ) { ASSERT( item.base_type == OBJ_WEAPONS || item.base_type == OBJ_STAVES ); - return (fit_weapon_wieldable_size( item, size ) == 0); + int fit = fit_weapon_wieldable_size( item, size ); + + // Adjust fit for size. + if (size < SIZE_MEDIUM && fit > 0) + fit--; + else if (size > SIZE_MEDIUM && fit < 0) + fit++; + + return (fit == 0); } // Note that this function is used to check validity of equipment |