diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 0f0272f68..a45a7f30e 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -179,7 +179,7 @@ testInventory = IM.fromList $ zip [0..] , magShield , frontArmour , flameShield - , powerLegs + , makeTypeCraftNum 1 MOTOR , speedLegs , jumpLegs , makeModule INCENDIARYMODULE diff --git a/src/Dodge/Creature/Impulse/Movement.hs b/src/Dodge/Creature/Impulse/Movement.hs index 4973a2e3a..d3d443c7c 100644 --- a/src/Dodge/Creature/Impulse/Movement.hs +++ b/src/Dodge/Creature/Impulse/Movement.hs @@ -3,7 +3,7 @@ import Dodge.Data import Dodge.Creature.Statistics import Geometry -import Data.Maybe +--import Data.Maybe --import qualified Data.IntMap.Strict as IM import Control.Lens {- | Creature attempts to moves under its own steam. @@ -23,16 +23,7 @@ crMvAbsolute p' cr = advanceStepCounter (magV p) cr & crPos %~ (+.+ p) & crMvDir .~ argV p where - --p = (equipFactor * aimingFactor) *.* 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 + p = strengthFactor (getCrStrength cr) *.* p' strengthFactor :: Int -> Float strengthFactor i diff --git a/src/Dodge/Creature/Statistics.hs b/src/Dodge/Creature/Statistics.hs index ab72296a8..b5a2a726f 100644 --- a/src/Dodge/Creature/Statistics.hs +++ b/src/Dodge/Creature/Statistics.hs @@ -3,18 +3,20 @@ module Dodge.Creature.Statistics ) where import Dodge.Data import qualified IntMapHelp as IM +import LensHelp +import Data.Maybe import Data.IntMap.Merge.Strict getCrStrength :: Creature -> Int -getCrStrength cr = strFromEquipment cr + _crStrength (_crStatistics cr) +getCrStrength cr = strFromHeldItem 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 + FRONTARMOUR -> negate 1 POWERLEGS -> 3 _ -> 0 @@ -23,3 +25,8 @@ crCurrentEquipment cr = merge dropMissing dropMissing (zipWithMatched (\_ _ itm (_crInvEquipped 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 diff --git a/src/Dodge/Default/Weapon.hs b/src/Dodge/Default/Weapon.hs index 70ff2de62..15117cf55 100644 --- a/src/Dodge/Default/Weapon.hs +++ b/src/Dodge/Default/Weapon.hs @@ -75,7 +75,7 @@ luseInstantNoH f = LeftUse } defaultAimParams :: AimParams defaultAimParams = AimParams - { _aimSpeed = 1 + { _aimWeight = 0 , _aimRange = 0 , _aimZoom = ItZoom 20 0.2 1 , _aimStance = OneHand diff --git a/src/Dodge/Item/Data.hs b/src/Dodge/Item/Data.hs index c61db4871..8099a06c4 100644 --- a/src/Dodge/Item/Data.hs +++ b/src/Dodge/Item/Data.hs @@ -65,7 +65,7 @@ data CurseStatus | UndroppableIdentified | UndroppableUnidentified data AimParams = AimParams - { _aimSpeed :: Float + { _aimWeight :: Int , _aimRange :: Float , _aimZoom :: ItZoom , _aimStance :: AimStance diff --git a/src/Dodge/Item/Equipment.hs b/src/Dodge/Item/Equipment.hs index 0be47358e..79eb594a8 100644 --- a/src/Dodge/Item/Equipment.hs +++ b/src/Dodge/Item/Equipment.hs @@ -84,7 +84,7 @@ flatShield = defaultEquipment , _useMods = [] , _useHammer = NoHammer , _useAim = AimParams - { _aimSpeed = 0.5 + { _aimWeight = 5 , _aimRange = 0 , _aimZoom = ItZoom 20 0.2 1 , _aimStance = TwoHandFlat diff --git a/src/Dodge/Item/Weapon/AmmoParams.hs b/src/Dodge/Item/Weapon/AmmoParams.hs index 1367b63e5..e36733167 100644 --- a/src/Dodge/Item/Weapon/AmmoParams.hs +++ b/src/Dodge/Item/Weapon/AmmoParams.hs @@ -28,7 +28,7 @@ ruseAmmoParamsRate rate ht usemods = RightUse } defaultAimParams :: AimParams defaultAimParams = AimParams - { _aimSpeed = 1 + { _aimWeight = 0 , _aimRange = 0 , _aimZoom = ItZoom 20 0.2 1 , _aimStance = OneHand diff --git a/src/Dodge/Item/Weapon/BatteryGuns.hs b/src/Dodge/Item/Weapon/BatteryGuns.hs index 6f3fcde15..38a23f3ff 100644 --- a/src/Dodge/Item/Weapon/BatteryGuns.hs +++ b/src/Dodge/Item/Weapon/BatteryGuns.hs @@ -84,7 +84,7 @@ teslaGun = defaultBatteryGun , withSoundForI elecCrackleS 1 , useAmmoAmount 1 ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimStance .~ TwoHandFlat , _itDimension = ItemDimension { _dimRad = 9 @@ -146,7 +146,7 @@ lasGunWide n = lasGun , useAmmoAmount 1 , duplicateOffsets xs ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist ) @@ -168,7 +168,7 @@ lasGunWidePulse = lasGun , useAmmoAmount 1 , withItemUpdate itup $ \it -> duplicateOffsets (xs it) ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist ) @@ -195,7 +195,7 @@ lasGunSway = lasGun , useAmmoAmount 1 , withItemUpdate itup $ \it -> duplicateOffsets (x it) ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist ) @@ -242,7 +242,7 @@ lasGunDual = lasGun , withSoundForI tone440sawtoothquietS 2 , useAmmoAmount 1 ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist ) @@ -282,7 +282,7 @@ lasGun = defaultAutoBatteryGun , withItem $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) 0.8 , useAmmoAmount 1 ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist , _itParams = Refracting @@ -345,7 +345,7 @@ tractorGun = lasGun , _itUse = ruseInstant aTractorBeam NoHammer [ ammoCheckI ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist , _itDimension = ItemDimension diff --git a/src/Dodge/Item/Weapon/BulletGun/Cane.hs b/src/Dodge/Item/Weapon/BulletGun/Cane.hs index 972e8e1d1..43b45dd90 100644 --- a/src/Dodge/Item/Weapon/BulletGun/Cane.hs +++ b/src/Dodge/Item/Weapon/BulletGun/Cane.hs @@ -110,7 +110,7 @@ bangCaneX i = bangCane . (\k -> fromIntegral k * 5 - ((fromIntegral i - 1) * 2.5))) [0..i-1] ) <> caneClipX i it } - } & itUse . useAim . aimSpeed .~ 0.4 + } & itUse . useAim . aimWeight .~ 6 & itUse . useAim . aimRange .~ 1 & itUse . useAim . aimStance .~ TwoHandFlat & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} @@ -149,7 +149,7 @@ rifle = bangCane & itName .~ "RIFLE" & itType .~ RIFLE & itConsumption . ammoBaseMax .~ 1 - & itUse . useAim . aimSpeed .~ 0.4 + & itUse . useAim . aimWeight .~ 6 & itUse . useAim . aimRange .~ 1 & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} repeater :: Item @@ -271,7 +271,7 @@ miniGunX i = defaultAutoGun } , _itUse = miniGunUse i & useDelay .~ WarmUpNoDelay {_warmTime = 0,_warmMax = 200} - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist & useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} diff --git a/src/Dodge/Item/Weapon/BulletGun/Rod.hs b/src/Dodge/Item/Weapon/BulletGun/Rod.hs index ae638c84f..f236fd721 100644 --- a/src/Dodge/Item/Weapon/BulletGun/Rod.hs +++ b/src/Dodge/Item/Weapon/BulletGun/Rod.hs @@ -77,7 +77,7 @@ bangRod = defaultGun , _reloadType = ActiveClear } } - & itUse . useAim . aimSpeed .~ 0.2 + & itUse . useAim . aimWeight .~ 8 & itUse . useAim . aimRange .~ 1 & itUse . useAim . aimStance .~ OneHand & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} diff --git a/src/Dodge/Item/Weapon/BulletGuns.hs b/src/Dodge/Item/Weapon/BulletGuns.hs index 83a0d0ec9..49c64a676 100644 --- a/src/Dodge/Item/Weapon/BulletGuns.hs +++ b/src/Dodge/Item/Weapon/BulletGuns.hs @@ -72,7 +72,7 @@ autoGun = defaultAutoGun , withMuzFlareI , withSmoke 1 black 20 200 5 ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist & useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} @@ -177,7 +177,7 @@ blunderbuss = bangCone & itConsumption . ammoBaseMax .~ 25 & itConsumption . reloadTime .~ 30 & itUse . useAim . aimStance .~ TwoHandTwist - & itUse . useAim . aimSpeed .~ 0.4 + & itUse . useAim . aimWeight .~ 6 bigBlunderbuss :: Item bigBlunderbuss = blunderbuss {_itName = "BIGBLUNDERBUSS" @@ -229,7 +229,7 @@ hvAutoGun = defaultAutoGun , withThinSmokeI , withMuzFlareI ] - & useAim . aimSpeed .~ 0.2 + & useAim . aimWeight .~ 8 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist & useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} @@ -291,7 +291,7 @@ longGun = defaultGun , withTorqueAfter , withMuzFlareI ] - & useAim . aimSpeed .~ 0.2 + & useAim . aimWeight .~ 8 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist & useAim . aimZoom .~ defaultItZoom {_itZoomMax = 0.5, _itZoomMin = 0.5} diff --git a/src/Dodge/Item/Weapon/Drone.hs b/src/Dodge/Item/Weapon/Drone.hs index 930257af1..d890522ba 100644 --- a/src/Dodge/Item/Weapon/Drone.hs +++ b/src/Dodge/Item/Weapon/Drone.hs @@ -34,7 +34,7 @@ lasDrones = defaultGun , withSoundStart tap4S , useAmmoAmount 1 ] - & useAim . aimSpeed .~ 0.2 + & useAim . aimWeight .~ 8 & useAim . aimRange .~ 0.5 & useAim . aimStance .~ TwoHandTwist , _itEffect = NoItEffect diff --git a/src/Dodge/Item/Weapon/Launcher.hs b/src/Dodge/Item/Weapon/Launcher.hs index 03d494e04..68759b6b2 100644 --- a/src/Dodge/Item/Weapon/Launcher.hs +++ b/src/Dodge/Item/Weapon/Launcher.hs @@ -58,7 +58,7 @@ launcher = defaultGun , withSoundStart tap4S , useAmmoAmount 1 ] - & useAim . aimSpeed .~ 0.2 + & useAim . aimWeight .~ 8 & useAim . aimRange .~ 0.5 & useAim . aimStance .~ TwoHandTwist , _itParams = ShellLauncher diff --git a/src/Dodge/Item/Weapon/SonicGuns.hs b/src/Dodge/Item/Weapon/SonicGuns.hs index d8f155207..168cde615 100644 --- a/src/Dodge/Item/Weapon/SonicGuns.hs +++ b/src/Dodge/Item/Weapon/SonicGuns.hs @@ -42,7 +42,7 @@ sonicGun = defaultAutoGun , useTimeCheck , useAmmoAmount 1 ] - & useAim . aimSpeed .~ 0.4 + & useAim . aimWeight .~ 6 & useAim . aimRange .~ 1 & useAim . aimStance .~ TwoHandTwist , _itParams = NoParams diff --git a/src/Dodge/Item/Weapon/SprayGuns.hs b/src/Dodge/Item/Weapon/SprayGuns.hs index 3441fa7c2..ad9bf6f48 100644 --- a/src/Dodge/Item/Weapon/SprayGuns.hs +++ b/src/Dodge/Item/Weapon/SprayGuns.hs @@ -140,7 +140,7 @@ flameThrower = defaultAutoGun --, withTempLight 1 100 (V3 1 0 0) , withSidePushAfterI 20 ] - & useAim . aimSpeed .~ 0.5 + & useAim . aimWeight .~ 5 & useAim . aimZoom .~ defaultItZoom {_itZoomMax = 5, _itZoomMin = 1.5} & useAim . aimStance .~ TwoHandTwist -- , _itFloorPict = flamerPic