Add creature statistics, speed depends on strength and equip weight

This commit is contained in:
2022-05-22 12:25:15 +01:00
parent ee31fcbdd9
commit 6891bd7541
5 changed files with 46 additions and 24 deletions
+25
View File
@@ -0,0 +1,25 @@
module Dodge.Creature.Statistics
( getCrStrength
) where
import Dodge.Data
import qualified IntMapHelp as IM
import Data.IntMap.Merge.Strict
getCrStrength :: Creature -> Int
getCrStrength cr = strFromEquipment cr + _crStrength (_crStatistics cr)
strFromEquipment :: Creature -> Int
strFromEquipment = sum . fmap equipmentStrValue . crCurrentEquipment
equipmentStrValue :: Item -> Int
equipmentStrValue itm = case _itType itm of
FRONTARMOUR -> negate 2
POWERLEGS -> 3
_ -> 0
crCurrentEquipment :: Creature -> IM.IntMap Item
crCurrentEquipment cr = merge dropMissing dropMissing (zipWithMatched (\_ _ itm -> itm))
(_crInvEquipped cr)
(_crInv cr)