Make aiming speed be gouverned by strength
This commit is contained in:
@@ -179,7 +179,7 @@ testInventory = IM.fromList $ zip [0..]
|
|||||||
, magShield
|
, magShield
|
||||||
, frontArmour
|
, frontArmour
|
||||||
, flameShield
|
, flameShield
|
||||||
, powerLegs
|
, makeTypeCraftNum 1 MOTOR
|
||||||
, speedLegs
|
, speedLegs
|
||||||
, jumpLegs
|
, jumpLegs
|
||||||
, makeModule INCENDIARYMODULE
|
, makeModule INCENDIARYMODULE
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Dodge.Data
|
|||||||
import Dodge.Creature.Statistics
|
import Dodge.Creature.Statistics
|
||||||
import Geometry
|
import Geometry
|
||||||
|
|
||||||
import Data.Maybe
|
--import Data.Maybe
|
||||||
--import qualified Data.IntMap.Strict as IM
|
--import qualified Data.IntMap.Strict as IM
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
{- | Creature attempts to moves under its own steam.
|
{- | Creature attempts to moves under its own steam.
|
||||||
@@ -23,16 +23,7 @@ crMvAbsolute p' cr = advanceStepCounter (magV p) cr
|
|||||||
& crPos %~ (+.+ p)
|
& crPos %~ (+.+ p)
|
||||||
& crMvDir .~ argV p
|
& crMvDir .~ argV p
|
||||||
where
|
where
|
||||||
--p = (equipFactor * aimingFactor) *.* p'
|
p = strengthFactor (getCrStrength cr) *.* p'
|
||||||
p = (strengthFactor (getCrStrength cr) * aimingFactor) *.* p'
|
|
||||||
isAiming = _posture (_crStance cr) == Aiming || _posture (_crStance cr) == Reloading
|
|
||||||
invItSpeed
|
|
||||||
| isAiming = equipAimSpeed
|
|
||||||
| otherwise = equipSpeed
|
|
||||||
equipFactor = product $ invItSpeed <$> _crInv cr
|
|
||||||
aimingFactor
|
|
||||||
| isAiming = fromMaybe 1 $ cr ^? crInv . ix (_crInvSel cr) . itUse . useAim . aimSpeed
|
|
||||||
| otherwise = 1
|
|
||||||
|
|
||||||
strengthFactor :: Int -> Float
|
strengthFactor :: Int -> Float
|
||||||
strengthFactor i
|
strengthFactor i
|
||||||
|
|||||||
@@ -3,18 +3,20 @@ module Dodge.Creature.Statistics
|
|||||||
) where
|
) where
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import qualified IntMapHelp as IM
|
import qualified IntMapHelp as IM
|
||||||
|
import LensHelp
|
||||||
|
|
||||||
|
import Data.Maybe
|
||||||
import Data.IntMap.Merge.Strict
|
import Data.IntMap.Merge.Strict
|
||||||
|
|
||||||
getCrStrength :: Creature -> Int
|
getCrStrength :: Creature -> Int
|
||||||
getCrStrength cr = strFromEquipment cr + _crStrength (_crStatistics cr)
|
getCrStrength cr = strFromHeldItem cr + strFromEquipment cr + _crStrength (_crStatistics cr)
|
||||||
|
|
||||||
strFromEquipment :: Creature -> Int
|
strFromEquipment :: Creature -> Int
|
||||||
strFromEquipment = sum . fmap equipmentStrValue . crCurrentEquipment
|
strFromEquipment = sum . fmap equipmentStrValue . crCurrentEquipment
|
||||||
|
|
||||||
equipmentStrValue :: Item -> Int
|
equipmentStrValue :: Item -> Int
|
||||||
equipmentStrValue itm = case _itType itm of
|
equipmentStrValue itm = case _itType itm of
|
||||||
FRONTARMOUR -> negate 2
|
FRONTARMOUR -> negate 1
|
||||||
POWERLEGS -> 3
|
POWERLEGS -> 3
|
||||||
_ -> 0
|
_ -> 0
|
||||||
|
|
||||||
@@ -23,3 +25,8 @@ crCurrentEquipment cr = merge dropMissing dropMissing (zipWithMatched (\_ _ itm
|
|||||||
(_crInvEquipped cr)
|
(_crInvEquipped cr)
|
||||||
(_crInv cr)
|
(_crInv cr)
|
||||||
|
|
||||||
|
strFromHeldItem :: Creature -> Int
|
||||||
|
strFromHeldItem cr
|
||||||
|
| _posture (_crStance cr) == Aiming || _posture (_crStance cr) == Reloading
|
||||||
|
= negate $ fromMaybe 0 $ cr ^? crInv . ix (_crInvSel cr) . itUse . useAim . aimWeight
|
||||||
|
| otherwise = 0
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ luseInstantNoH f = LeftUse
|
|||||||
}
|
}
|
||||||
defaultAimParams :: AimParams
|
defaultAimParams :: AimParams
|
||||||
defaultAimParams = AimParams
|
defaultAimParams = AimParams
|
||||||
{ _aimSpeed = 1
|
{ _aimWeight = 0
|
||||||
, _aimRange = 0
|
, _aimRange = 0
|
||||||
, _aimZoom = ItZoom 20 0.2 1
|
, _aimZoom = ItZoom 20 0.2 1
|
||||||
, _aimStance = OneHand
|
, _aimStance = OneHand
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ data CurseStatus
|
|||||||
| UndroppableIdentified
|
| UndroppableIdentified
|
||||||
| UndroppableUnidentified
|
| UndroppableUnidentified
|
||||||
data AimParams = AimParams
|
data AimParams = AimParams
|
||||||
{ _aimSpeed :: Float
|
{ _aimWeight :: Int
|
||||||
, _aimRange :: Float
|
, _aimRange :: Float
|
||||||
, _aimZoom :: ItZoom
|
, _aimZoom :: ItZoom
|
||||||
, _aimStance :: AimStance
|
, _aimStance :: AimStance
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ flatShield = defaultEquipment
|
|||||||
, _useMods = []
|
, _useMods = []
|
||||||
, _useHammer = NoHammer
|
, _useHammer = NoHammer
|
||||||
, _useAim = AimParams
|
, _useAim = AimParams
|
||||||
{ _aimSpeed = 0.5
|
{ _aimWeight = 5
|
||||||
, _aimRange = 0
|
, _aimRange = 0
|
||||||
, _aimZoom = ItZoom 20 0.2 1
|
, _aimZoom = ItZoom 20 0.2 1
|
||||||
, _aimStance = TwoHandFlat
|
, _aimStance = TwoHandFlat
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ ruseAmmoParamsRate rate ht usemods = RightUse
|
|||||||
}
|
}
|
||||||
defaultAimParams :: AimParams
|
defaultAimParams :: AimParams
|
||||||
defaultAimParams = AimParams
|
defaultAimParams = AimParams
|
||||||
{ _aimSpeed = 1
|
{ _aimWeight = 0
|
||||||
, _aimRange = 0
|
, _aimRange = 0
|
||||||
, _aimZoom = ItZoom 20 0.2 1
|
, _aimZoom = ItZoom 20 0.2 1
|
||||||
, _aimStance = OneHand
|
, _aimStance = OneHand
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ teslaGun = defaultBatteryGun
|
|||||||
, withSoundForI elecCrackleS 1
|
, withSoundForI elecCrackleS 1
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimStance .~ TwoHandFlat
|
& useAim . aimStance .~ TwoHandFlat
|
||||||
, _itDimension = ItemDimension
|
, _itDimension = ItemDimension
|
||||||
{ _dimRad = 9
|
{ _dimRad = 9
|
||||||
@@ -146,7 +146,7 @@ lasGunWide n = lasGun
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, duplicateOffsets xs
|
, duplicateOffsets xs
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
)
|
)
|
||||||
@@ -168,7 +168,7 @@ lasGunWidePulse = lasGun
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withItemUpdate itup $ \it -> duplicateOffsets (xs it)
|
, withItemUpdate itup $ \it -> duplicateOffsets (xs it)
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
)
|
)
|
||||||
@@ -195,7 +195,7 @@ lasGunSway = lasGun
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withItemUpdate itup $ \it -> duplicateOffsets (x it)
|
, withItemUpdate itup $ \it -> duplicateOffsets (x it)
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
)
|
)
|
||||||
@@ -242,7 +242,7 @@ lasGunDual = lasGun
|
|||||||
, withSoundForI tone440sawtoothquietS 2
|
, withSoundForI tone440sawtoothquietS 2
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
)
|
)
|
||||||
@@ -282,7 +282,7 @@ lasGun = defaultAutoBatteryGun
|
|||||||
, withItem $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) 0.8
|
, withItem $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) 0.8
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
, _itParams = Refracting
|
, _itParams = Refracting
|
||||||
@@ -345,7 +345,7 @@ tractorGun = lasGun
|
|||||||
, _itUse = ruseInstant aTractorBeam NoHammer
|
, _itUse = ruseInstant aTractorBeam NoHammer
|
||||||
[ ammoCheckI
|
[ ammoCheckI
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
, _itDimension = ItemDimension
|
, _itDimension = ItemDimension
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ bangCaneX i = bangCane
|
|||||||
. (\k -> fromIntegral k * 5 - ((fromIntegral i - 1) * 2.5))) [0..i-1]
|
. (\k -> fromIntegral k * 5 - ((fromIntegral i - 1) * 2.5))) [0..i-1]
|
||||||
) <> caneClipX i it
|
) <> caneClipX i it
|
||||||
}
|
}
|
||||||
} & itUse . useAim . aimSpeed .~ 0.4
|
} & itUse . useAim . aimWeight .~ 6
|
||||||
& itUse . useAim . aimRange .~ 1
|
& itUse . useAim . aimRange .~ 1
|
||||||
& itUse . useAim . aimStance .~ TwoHandFlat
|
& itUse . useAim . aimStance .~ TwoHandFlat
|
||||||
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||||
@@ -149,7 +149,7 @@ rifle = bangCane
|
|||||||
& itName .~ "RIFLE"
|
& itName .~ "RIFLE"
|
||||||
& itType .~ RIFLE
|
& itType .~ RIFLE
|
||||||
& itConsumption . ammoBaseMax .~ 1
|
& itConsumption . ammoBaseMax .~ 1
|
||||||
& itUse . useAim . aimSpeed .~ 0.4
|
& itUse . useAim . aimWeight .~ 6
|
||||||
& itUse . useAim . aimRange .~ 1
|
& itUse . useAim . aimRange .~ 1
|
||||||
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||||
repeater :: Item
|
repeater :: Item
|
||||||
@@ -271,7 +271,7 @@ miniGunX i = defaultAutoGun
|
|||||||
}
|
}
|
||||||
, _itUse = miniGunUse i
|
, _itUse = miniGunUse i
|
||||||
& useDelay .~ WarmUpNoDelay {_warmTime = 0,_warmMax = 200}
|
& useDelay .~ WarmUpNoDelay {_warmTime = 0,_warmMax = 200}
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ bangRod = defaultGun
|
|||||||
, _reloadType = ActiveClear
|
, _reloadType = ActiveClear
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
& itUse . useAim . aimSpeed .~ 0.2
|
& itUse . useAim . aimWeight .~ 8
|
||||||
& itUse . useAim . aimRange .~ 1
|
& itUse . useAim . aimRange .~ 1
|
||||||
& itUse . useAim . aimStance .~ OneHand
|
& itUse . useAim . aimStance .~ OneHand
|
||||||
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ autoGun = defaultAutoGun
|
|||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, withSmoke 1 black 20 200 5
|
, withSmoke 1 black 20 200 5
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||||
@@ -177,7 +177,7 @@ blunderbuss = bangCone
|
|||||||
& itConsumption . ammoBaseMax .~ 25
|
& itConsumption . ammoBaseMax .~ 25
|
||||||
& itConsumption . reloadTime .~ 30
|
& itConsumption . reloadTime .~ 30
|
||||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||||
& itUse . useAim . aimSpeed .~ 0.4
|
& itUse . useAim . aimWeight .~ 6
|
||||||
bigBlunderbuss :: Item
|
bigBlunderbuss :: Item
|
||||||
bigBlunderbuss = blunderbuss
|
bigBlunderbuss = blunderbuss
|
||||||
{_itName = "BIGBLUNDERBUSS"
|
{_itName = "BIGBLUNDERBUSS"
|
||||||
@@ -229,7 +229,7 @@ hvAutoGun = defaultAutoGun
|
|||||||
, withThinSmokeI
|
, withThinSmokeI
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.2
|
& useAim . aimWeight .~ 8
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
& useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
|
||||||
@@ -291,7 +291,7 @@ longGun = defaultGun
|
|||||||
, withTorqueAfter
|
, withTorqueAfter
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.2
|
& useAim . aimWeight .~ 8
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
& useAim . aimZoom .~ defaultItZoom {_itZoomMax = 0.5, _itZoomMin = 0.5}
|
& useAim . aimZoom .~ defaultItZoom {_itZoomMax = 0.5, _itZoomMin = 0.5}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ lasDrones = defaultGun
|
|||||||
, withSoundStart tap4S
|
, withSoundStart tap4S
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.2
|
& useAim . aimWeight .~ 8
|
||||||
& useAim . aimRange .~ 0.5
|
& useAim . aimRange .~ 0.5
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
, _itEffect = NoItEffect
|
, _itEffect = NoItEffect
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ launcher = defaultGun
|
|||||||
, withSoundStart tap4S
|
, withSoundStart tap4S
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.2
|
& useAim . aimWeight .~ 8
|
||||||
& useAim . aimRange .~ 0.5
|
& useAim . aimRange .~ 0.5
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
, _itParams = ShellLauncher
|
, _itParams = ShellLauncher
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ sonicGun = defaultAutoGun
|
|||||||
, useTimeCheck
|
, useTimeCheck
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.4
|
& useAim . aimWeight .~ 6
|
||||||
& useAim . aimRange .~ 1
|
& useAim . aimRange .~ 1
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
, _itParams = NoParams
|
, _itParams = NoParams
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ flameThrower = defaultAutoGun
|
|||||||
--, withTempLight 1 100 (V3 1 0 0)
|
--, withTempLight 1 100 (V3 1 0 0)
|
||||||
, withSidePushAfterI 20
|
, withSidePushAfterI 20
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.5
|
& useAim . aimWeight .~ 5
|
||||||
& useAim . aimZoom .~ defaultItZoom {_itZoomMax = 5, _itZoomMin = 1.5}
|
& useAim . aimZoom .~ defaultItZoom {_itZoomMax = 5, _itZoomMin = 1.5}
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
& useAim . aimStance .~ TwoHandTwist
|
||||||
-- , _itFloorPict = flamerPic
|
-- , _itFloorPict = flamerPic
|
||||||
|
|||||||
Reference in New Issue
Block a user