Add creature statistics, speed depends on strength and equip weight
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user