Remove creature move type record

This commit is contained in:
2025-06-06 15:32:19 +01:00
parent e9b69be7de
commit 7292bc9012
16 changed files with 193 additions and 183 deletions
+4 -3
View File
@@ -13,6 +13,7 @@ module Dodge.Creature.Action (
youDropItem,
) where
import Dodge.Creature.MoveType
import Dodge.Creature.Radius
import Dodge.Item.BackgroundEffect
import Control.Applicative
@@ -49,7 +50,7 @@ performAimAt cr w tcid p = ([TurnToward tpos aimSp], Just $ AimAt tcid tpos)
cdir = _crDir cr
cpos = _crPos cr
canSee' = canSee (_crID cr) tcid w
aimSp = case cr ^? crMvType . mvAimSpeed of
aimSp = case crMvType cr ^? mvAimSpeed of
Just f -> doFloatFloat f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos)
Nothing -> error "creature without aiming type"
tpos
@@ -72,7 +73,7 @@ performPathTo cr w p
_ -> ([], Nothing)
where
cpos = _crPos cr
jit = _mvTurnJit $ _crMvType cr
jit = _mvTurnJit $ crMvType cr
performTurnToA :: Creature -> Point2 -> OutAction
performTurnToA cr p
@@ -82,7 +83,7 @@ performTurnToA cr p
cpos = _crPos cr
cdirv = unitVectorAtAngle (_crDir cr)
dirv = p -.- cpos
jit = _mvTurnJit $ _crMvType cr
jit = _mvTurnJit $ crMvType cr
{- | Performing an action on a frame creates an OutAction:
adds impulses and updates or deletes the action itself.
+2 -3
View File
@@ -7,7 +7,6 @@ import Dodge.Data.Equipment.Misc
import Control.Lens
import Dodge.Creature.ChaseCrit
import Dodge.Data.Creature
import Dodge.Data.FloatFunction
import Dodge.Default
import Dodge.Item.Equipment
import qualified IntMapHelp as IM
@@ -29,7 +28,7 @@ flockArmourChaseCrit =
, _apGoal = [Kill 0]
}
, _crGroup = ShieldGroup
, _crMvType = defaultChaseMvType
-- , _crMvType = defaultChaseMvType
}
-- & crType . humanoidAI .~ FlockArmourChaseAI
@@ -42,6 +41,6 @@ armourChaseCrit =
IM.fromList
[ (0, frontArmour)
]
, _crMvType = defaultChaseMvType{_mvTurnRad = FloatConst 0.05}
-- , _crMvType = defaultChaseMvType{_mvTurnRad = FloatConst 0.05}
}
& crEquipment . at OnChest ?~ 0
+1 -1
View File
@@ -14,7 +14,7 @@ autoCrit =
defaultCreature
{ _crInv = IM.fromList [(0, autoRifle)]
, _crHP = 300
, _crMvType = defaultAimMvType
-- , _crMvType = defaultAimMvType
}
-- & crType . skinUpper .~ lightx4 red
-- & crType . humanoidAI .~ AutoAI
+1 -8
View File
@@ -16,13 +16,11 @@ smallChaseCrit =
chaseCrit
{ _crHP = 1
, _crInv = mempty
-- , _crCorpse = MakeDefaultCorpse
}
invisibleChaseCrit :: Creature
invisibleChaseCrit =
chaseCrit
-- & crCamouflage .~ Invisible
& crInv . at 0 ?~ wristInvisibility
& crEquipment . at OnLeftWrist ?~ 0
@@ -34,12 +32,7 @@ chaseCrit =
, _crInv = mempty
, _crFaction = ColorFaction green
, _crVocalization = chaseCritVocalization
, _crMvType = defaultChaseMvType
}
-- & crType . humanoidAI .~ ChaseAI
chaseCritVocalization :: Vocalization
chaseCritVocalization =
Vocalization
(50, 200)
0
chaseCritVocalization = Vocalization (50, 200) 0
+2 -1
View File
@@ -4,6 +4,7 @@ module Dodge.Creature.Impulse (
impulsiveAIBefore,
) where
import Dodge.Creature.MoveType
import Data.Foldable
import Control.Monad.State
import Data.Bifunctor
@@ -76,7 +77,7 @@ followImpulse cr w imp = case imp of
creatureTurnToward p (turnRad $ safeAngleVV (p -.- cpos) (unitVectorAtAngle cdir)) cr
where
crup = (id,)
mvType = _crMvType cr
mvType = crMvType cr
speed = _mvSpeed mvType
turnRad = doFloatFloat $ _mvTurnRad mvType
cpos = _crPos cr
+3 -2
View File
@@ -2,6 +2,7 @@ module Dodge.Creature.Info (
yourInfo,
) where
import Dodge.Creature.Statistics
import Dodge.Inventory.CheckSlots
import Dodge.Data.Creature
import LensHelp
@@ -28,8 +29,8 @@ yourStatsInfo cr =
"You are " ++ statsModifier str "weak" "strength" "strong" ++ conj
++ statsModifier dex "clumsy." "dexterity." "dexterous."
where
str = cr ^. crStatistics . strength
dex = cr ^. crStatistics . dexterity
str = cr & crStrength
dex = cr & crDexterity
conj
| (str < 45 && dex < 45) || (str > 55 && dex > 55) || (mid str && mid dex) =
" and "
+34 -4
View File
@@ -1,7 +1,9 @@
{-# LANGUAGE LambdaCase #-}
module Dodge.Creature.Statistics (
getCrMoveSpeed,
getCrDexterity,
crStrength,
crDexterity,
crIntelligence,
) where
import Data.Maybe
@@ -9,11 +11,39 @@ import Dodge.Data.Creature
import qualified IntMapHelp as IM
import LensHelp
getCrDexterity :: Creature -> Int
getCrDexterity = _dexterity . _crStatistics
crDexterity :: Creature -> Int
crDexterity cr = case cr ^. crType of
Avatar { _avDexterity = x } -> x
AvatarDead -> 0
ChaseCrit {} -> 46
SwarmCrit -> 46
AutoCrit -> 46
BarrelCrit {} -> 0
LampCrit {} -> 0
crStrength :: Creature -> Int
crStrength cr = case cr ^. crType of
Avatar { _avStrength = x } -> x
AvatarDead -> 0
ChaseCrit {} -> 46
SwarmCrit -> 40
AutoCrit -> 46
BarrelCrit {} -> 0
LampCrit {} -> 0
crIntelligence :: Creature -> Int
crIntelligence cr = case cr ^. crType of
Avatar { _avIntelligence = x } -> x
AvatarDead -> 0
ChaseCrit {} -> 20
SwarmCrit -> 20
AutoCrit -> 20
BarrelCrit {} -> 0
LampCrit {} -> 0
getCrMoveSpeed :: Creature -> Int
getCrMoveSpeed cr = strFromHeldItem cr + strFromEquipment cr + _strength (_crStatistics cr)
getCrMoveSpeed cr = strFromHeldItem cr + strFromEquipment cr + crStrength cr
strFromEquipment :: Creature -> Int
strFromEquipment = sum . fmap equipmentStrValue . crCurrentEquipment
+2 -1
View File
@@ -4,6 +4,7 @@ module Dodge.Creature.YourControl (
yourControl,
) where
import Dodge.Creature.MoveType
import Dodge.Data.Equipment.Misc
import Control.Monad
import qualified Data.Map.Strict as M
@@ -118,7 +119,7 @@ scancodeToHotkey x = case x of
wasdWithAiming :: World -> Creature -> Creature
wasdWithAiming w cr = wasdAim inp w $ wasdMovement inp cam speed cr
where
speed = _mvSpeed $ _crMvType cr
speed = _mvSpeed $ crMvType cr
inp = w ^. input
cam = w ^. wCam