Fix aiming with no weapon crash
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
module Dodge.Item.Equipment where
|
||||
import Dodge.Data
|
||||
import Dodge.Item.Draw
|
||||
import Dodge.Item.Weapon.InventoryDisplay
|
||||
import Dodge.Default
|
||||
import Dodge.Default.Wall
|
||||
import Dodge.Picture.Layer
|
||||
@@ -14,8 +15,7 @@ import Geometry
|
||||
import ShapePicture
|
||||
import Shape
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
import Control.Lens
|
||||
import LensHelp
|
||||
|
||||
magShield :: Item
|
||||
magShield = defaultEquipment
|
||||
@@ -66,10 +66,29 @@ frontArmour = defaultEquipment
|
||||
}
|
||||
flatShield :: Item
|
||||
flatShield = defaultEquipment
|
||||
{ _itEquipPict = pictureWeaponOnAim' flatShieldEquipSPic -- this will not work any more because the shield has no aim stance
|
||||
{ _itEquipPict = pictureWeaponAim flatShieldEquipSPic
|
||||
, _itEffect = effectOnOffEquip createShieldWall removeShieldWall
|
||||
, _itName = "SHIELD"
|
||||
-- the above seems to work, but I am not sure why: it may break on edge
|
||||
-- cases
|
||||
, _itName = "FLATSHIELD"
|
||||
, _itType = FLATSHIELD
|
||||
, _itUse = RightUse
|
||||
{ _rUse = \_ _ -> id
|
||||
, _useDelay = NoDelay
|
||||
, _useMods = []
|
||||
, _useHammer = NoHammer
|
||||
, _useAim = AimParams
|
||||
{ _aimSpeed = 0.5
|
||||
, _aimRange = 0
|
||||
, _aimZoom = ItZoom 20 0.2 1
|
||||
, _aimStance = TwoHandFlat
|
||||
}
|
||||
}
|
||||
, _itInvSize = 3
|
||||
, _itInvDisplay = \it -> head (basicItemDisplay it) :
|
||||
["*" ++ replicate 13 ' ' ++ "*"
|
||||
,"*" ++ replicate 13 ' ' ++ "*"
|
||||
]
|
||||
}
|
||||
flatShieldEquipSPic :: Item -> SPic
|
||||
flatShieldEquipSPic _ =
|
||||
@@ -102,8 +121,8 @@ shieldWall crid = defaultWall
|
||||
shieldWallDamage :: DamageType -> Wall -> Int -> World -> World
|
||||
shieldWallDamage dt wl crid w = case dt of
|
||||
Lasering {_dmFrom=df,_dmAt=da} ->
|
||||
w & instantParticles %~ (makeLaserAt 5 (da +.+ normalizeV (df -.- da)) (reflDirWall df da wl) :)
|
||||
d | isMovementDam d -> w & creatures . ix crid . crState . crDamage %~ (d :)
|
||||
w & instantParticles .:~ lasRayAt 5 (da +.+ normalizeV (df -.- da)) (reflDirWall df da wl)
|
||||
d | isMovementDam d -> w & creatures . ix crid . crState . crDamage .:~ d
|
||||
_ -> w
|
||||
|
||||
createShieldWall :: Creature -> Int -> World -> World
|
||||
|
||||
Reference in New Issue
Block a user