fix: check form in player::could_wield
authoradvil <rawlins@gmail.com>
Tue, 27 Apr 2021 13:10:28 +0000 (09:10 -0400)
committeradvil <rawlins@gmail.com>
Tue, 27 Apr 2021 14:25:08 +0000 (10:25 -0400)
Other checks (e.g. size, handedness) mostly conspire to cover this case
already, but this fixes some UI issues for giant forms when the player
normally can't wield giant weapons. As a side effect, it does mark all
weapons as useless when in a non-wielding form, but if this is a
problem, the fix would be to adjust the ignore_transform parameter from
the caller. (This might lead to other issues though if any forms narrow
the wield restrictions. But I'm not sure they do.)

Resolves #1889

crawl-ref/source/player-act.cc

index 9bd5006..daa01a1 100644 (file)
@@ -401,6 +401,12 @@ bool player::could_wield(const item_def &item, bool ignore_brand,
             mpr("You can't use weapons.");
         return false;
     }
+    else if (!ignore_transform && !form_can_wield())
+    {
+        if (!quiet)
+            mpr("You can't use weapons in this form.");
+        return false;
+    }
 
     const size_type bsize = body_size(PSIZE_TORSO, ignore_transform);
     // Small species wielding large weapons...