diff --git a/src/Dodge/Item/Draw.hs b/src/Dodge/Item/Draw.hs index 3396c2d51..f83fcb4b3 100644 --- a/src/Dodge/Item/Draw.hs +++ b/src/Dodge/Item/Draw.hs @@ -3,7 +3,6 @@ module Dodge.Item.Draw ( itemEquipPict, ) where -import Data.Foldable import Dodge.Data.ComposedItem import Dodge.Data.DoubleTree import Geometry.Data @@ -15,15 +14,14 @@ import Dodge.Item.HeldOffset import ShapePicture itemEquipPict :: Creature -> LabelDoubleTree ItemLink ComposedItem -> SPic -itemEquipPict cr itmtree = case itm ^. itUse of - UseHeld{} | itm ^? itLocation . ilIsRoot == Just True - && itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem - -> overPosSP (heldItemOffset itm cr) (itemTreeSPic itmtree) - ituse -> fold $ do - attachpos <- ituse ^? uequipEffect . eeAttachPos - i <- itm ^? itLocation . ilInvID - epos <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just - return $ equipPosition epos cr attachpos (itemSPic itm) +itemEquipPict cr itmtree + | Just i <- itm ^? itLocation . ilInvID + , Just esite <- cr ^? crInv . ix i . itLocation . ilEquipSite . _Just + , Just attachpos <- itm ^? itUse . uequipEffect . eeAttachPos + = equipPosition esite cr attachpos (itemSPic itm) + | itm ^? itLocation . ilInvID == cr ^? crManipulation . manObject . imRootSelectedItem + = overPosSP (heldItemOffset itm cr) (itemTreeSPic itmtree) + | otherwise = mempty where itm = itmtree ^. ldtValue . _1