Partial implementation of wrist shields
This commit is contained in:
@@ -15,6 +15,7 @@ import ShapePicture
|
||||
import Shape
|
||||
import qualified IntMapHelp as IM
|
||||
import LensHelp
|
||||
--import ShortShow
|
||||
|
||||
import Data.Maybe
|
||||
magShield :: Item
|
||||
@@ -80,19 +81,21 @@ wristArmour = defaultEquipment
|
||||
onEquipWristShield :: Item -> Creature -> World -> World
|
||||
onEquipWristShield itm cr w = w
|
||||
& creatures . ix (_crID cr) . crInv . ix (fromJust (_itInvPos itm)) . itUse . eqParams .~ EquipID i
|
||||
& walls . at i ?~ (shieldWall (_crID cr)) {_wlDraw = True}
|
||||
& walls . at i ?~ (shieldWall (_crID cr)) {_wlDraw = True,_wlID = i}
|
||||
& setWristShieldPos (itm & itUse . eqParams .~ EquipID i) cr
|
||||
where
|
||||
i = IM.newKey $ _walls w
|
||||
i = IM.newKey (_walls w)
|
||||
|
||||
onRemoveWristShield :: Item -> Creature -> World -> World
|
||||
onRemoveWristShield itm cr w = w
|
||||
& creatures . ix (_crID cr) . crInv . ix (fromJust (_itInvPos itm)) . itUse . eqParams .~ NoEquipParams
|
||||
-- & walls . at i .~ Nothing
|
||||
& deleteWallID i
|
||||
where
|
||||
i = _eparamID $ _eqParams $ _itUse itm
|
||||
setWristShieldPos :: Item -> Creature -> World -> World
|
||||
setWristShieldPos itm cr w = w
|
||||
& moveWallIDUnsafe i wlline
|
||||
-- & testString .~ (\w' -> [shortShow $ _wlLine (_walls w' IM.! i)])
|
||||
-- & tempLightSources .:~ tlsTimeRadColPos 1 200 0.7 (fst wlline `v2z` 40)
|
||||
where
|
||||
i = _eparamID $ _eqParams $ _itUse itm
|
||||
@@ -104,7 +107,6 @@ setWristShieldPos itm cr w = w
|
||||
_ -> translatePointToRightHand
|
||||
f = (+.+ _crPos cr) . stripZ . rotate3 (_crDir cr) . handtrans cr
|
||||
|
||||
|
||||
spicForWrist :: SPic -> Creature -> Item -> SPic
|
||||
spicForWrist = pictureOnEquip . translateSP (V3 0 4 (-4))
|
||||
pictureOnEquip :: SPic -> Creature -> Item -> SPic
|
||||
@@ -188,7 +190,7 @@ shieldWallDamage dm _ crid w = case _dmType dm of
|
||||
|
||||
createShieldWall :: Creature -> Int -> World -> World
|
||||
createShieldWall cr invid w = case _itEffectID $ _itEffect it of
|
||||
Nothing -> let (wlid,w') = createWall ((shieldWall crid) {_wlLine = wlline}) w
|
||||
Nothing -> let (wlid,w') = createWall ((shieldWall crid) {_wlLine = wlline,_wlID = wlid}) w
|
||||
in w' & creatures . ix crid . crInv . ix invid . itEffect . itEffectID ?~ wlid
|
||||
Just wid -> moveWallID wid wlline w
|
||||
where
|
||||
|
||||
Reference in New Issue
Block a user