diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index eaa3e4eaf..dc854437e 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -3,6 +3,7 @@ module Dodge.Creature.State ( doDamage, ) where +import Dodge.Data.Damage.Type import Dodge.Item.BackgroundEffect import Dodge.Item.MaxAmmo import Control.Applicative @@ -108,10 +109,9 @@ checkDeath cr w -- could look at the amount of damage here (given by maxDamage) too corpseOrGib :: Creature -> World -> World corpseOrGib cr = case cr ^? crState . csDamage . to maxDamageType . _Just . _1 of - Just Flaming{} -> plNew (cWorld . lWorld . corpses) cpID (thecorpse & cpSPic %~ scorchSPic) - Just Electrical{} -> plNew (cWorld . lWorld . corpses) cpID thecorpse - Just Poison{} -> plNew (cWorld . lWorld . corpses) cpID (thecorpse & cpSPic %~ poisonSPic) - _ | _crPastDamage cr > 200 -> addCrGibs cr + Just CookingDamage -> plNew (cWorld . lWorld . corpses) cpID (thecorpse & cpSPic %~ scorchSPic) + Just PoisonDamage -> plNew (cWorld . lWorld . corpses) cpID (thecorpse & cpSPic %~ poisonSPic) + Just PhysicalDamage | _crPastDamage cr > 200 -> addCrGibs cr _ -> plNew (cWorld . lWorld . corpses) cpID thecorpse where thecorpse = makeCorpse cr diff --git a/src/Dodge/Damage.hs b/src/Dodge/Damage.hs index f3396c131..4787e934d 100644 --- a/src/Dodge/Damage.hs +++ b/src/Dodge/Damage.hs @@ -7,12 +7,15 @@ module Dodge.Damage ( maxDamageType, ) where +import Dodge.Data.Damage.Type import Geometry.Vector import ListHelp import Dodge.Data.CrWlID import Dodge.Data.World import qualified IntMapHelp as IM import LensHelp +import qualified Data.Map.Strict as M +import FoldableHelp damageCrWlID :: Damage -> CrWlID -> World -> World damageCrWlID dam = \case @@ -28,12 +31,26 @@ damageCrWl dt (Right wl) = cWorld . lWorld . wallDamages %~ IM.insertWith (++) ( damageDirection :: [Damage] -> Maybe Float damageDirection ds = safeArgV =<< safeHead (ds ^.. each . dmVector) ---collectDamageTypes :: [Damage] -> M.Map DamageType Int ---collectDamageTypes = foldl' (flip f) M.empty --- where --- f dm = M.insertWith (+) (_dmType dm) (_dmAmount dm) --- -maxDamageType :: [Damage] -> Maybe (Damage, Int) -maxDamageType _ = Nothing +dmType :: Damage -> DamageType +dmType = \case + Piercing {} -> PhysicalDamage + Blunt {} -> PhysicalDamage + Sparking {} -> CookingDamage + Crushing {} -> PhysicalDamage + Shattering {} -> PhysicalDamage + Flaming {} -> CookingDamage + Lasering {} -> CookingDamage + Flashing {} -> CookingDamage + Electrical {} -> CookingDamage + Explosive {} -> PhysicalDamage + Poison {} -> PoisonDamage + Enterrement {} -> PhysicalDamage ---maxDamageType = safeMinimumOn (negate . snd) . M.assocs . collectDamageTypes +collectDamageTypes :: [Damage] -> M.Map DamageType Int +collectDamageTypes = foldl' (flip f) M.empty + where + f dm = at (dmType dm) . non 0 +~ _dmAmount dm + --f dm = M.insertWith (+) (dmType dm) (_dmAmount dm) + +maxDamageType :: [Damage] -> Maybe (DamageType, Int) +maxDamageType = safeMinimumOn (negate . snd) . M.assocs . collectDamageTypes diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index b66a3b556..a6798d205 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -33,3 +33,6 @@ data Damage makeLenses ''Damage deriveJSON defaultOptions ''Damage +--deriveJSON defaultOptions ''DamageType +--instance ToJSONKey DamageType +--instance FromJSONKey DamageType diff --git a/tags b/tags index 7c74777c3..8c014880b 100644 --- a/tags +++ b/tags @@ -47,7 +47,7 @@ AddGoal src/Dodge/Data/ActionPlan.hs 45;" C AesonHelp src/AesonHelp.hs 1;" m AimAt src/Dodge/Data/ActionPlan.hs 84;" C AimParams src/Dodge/Default/Item/Use/AimParams.hs 1;" m -AimStance src/Dodge/Data/AimStance.hs 4;" m +AimStance src/Dodge/Data/AimStance.hs 3;" m AimStance src/Dodge/Item/AimStance.hs 2;" m Aiming src/Dodge/Data/Creature/Stance.hs 39;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C @@ -129,7 +129,6 @@ BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 179;" C BLOWTORCH src/Dodge/Data/Item/Combine.hs 165;" C BLUE src/Color/Data.hs 17;" C BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 148;" C -BLUNT src/Dodge/Data/Damage/Type.hs 14;" C BQuad src/Geometry/Bezier.hs 9;" t BRAINHAT src/Dodge/Data/Item/Combine.hs 125;" C BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 133;" C @@ -261,13 +260,10 @@ CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C CLICKER src/Dodge/Data/Item/Combine.hs 28;" C CME src/Dodge/Data/MuzzleEffect.hs 14;" C -CONCUSSIVE src/Dodge/Data/Damage/Type.hs 23;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C CRAFT src/Dodge/Data/Item/Combine.hs 19;" C CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 184;" C CREATURESENSOR src/Dodge/Data/Item/Combine.hs 85;" C -CRUSHING src/Dodge/Data/Damage/Type.hs 17;" C -CUTTING src/Dodge/Data/Damage/Type.hs 15;" C CWGen src/Dodge/Data/CWorld.hs 32;" t CWorld src/Dodge/Data/CWorld.hs 23;" t CWorld src/Dodge/Data/CWorld.hs 6;" m @@ -376,6 +372,7 @@ ContinentalGovernment src/Dodge/Data/Scenario.hs 51;" C ControlDeckSS src/Dodge/Data/Scenario.hs 89;" C ConvexPoly src/Geometry/ConvexPoly.hs 27;" t ConvexPoly src/Geometry/ConvexPoly.hs 6;" m +CookingDamage src/Dodge/Data/Damage/Type.hs 5;" C Coordinate src/Dodge/Base/Coordinate.hs 1;" m Corporation src/Dodge/Data/Scenario.hs 46;" C Corpse src/Dodge/Data/Corpse.hs 17;" t @@ -463,7 +460,7 @@ DTRootNode src/Dodge/Data/DoubleTree.hs 16;" C DTTopNode src/Dodge/Data/DoubleTree.hs 17;" C Damage src/Dodge/Data/Damage.hs 19;" t Damage src/Dodge/Creature/Damage.hs 1;" m -Damage src/Dodge/Damage.hs 2;" m +Damage src/Dodge/Damage.hs 3;" m Damage src/Dodge/Data/Damage.hs 10;" m Damage src/Dodge/Machine/Damage.hs 1;" m Damage src/Dodge/Material/Damage.hs 1;" m @@ -473,7 +470,7 @@ DamageCircle src/Dodge/DamageCircle.hs 1;" m DamageEffect src/Dodge/Wall/DamageEffect.hs 2;" m DamageLaser src/Dodge/Data/Laser.hs 17;" C DamageSensor src/Dodge/Data/Machine/Sensor.hs 20;" C -DamageType src/Dodge/Data/Damage/Type.hs 12;" t +DamageType src/Dodge/Data/Damage/Type.hs 3;" t Data src/Color/Data.hs 7;" m Data src/Dodge/Annotation/Data.hs 4;" m Data src/Dodge/Data.hs 4;" m @@ -599,13 +596,10 @@ Dust src/Dodge/Wall/Dust.hs 1;" m EBO src/Shader/Data.hs 88;" t EDoNothing src/Dodge/Data/Item/HeldUse.hs 20;" C EHeadLamp src/Dodge/Data/Item/HeldUse.hs 23;" C -ELECTRICAL src/Dodge/Data/Damage/Type.hs 21;" C ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 157;" C EMagShield src/Dodge/Data/Item/HeldUse.hs 21;" C -ENTERREMENT src/Dodge/Data/Damage/Type.hs 25;" C EQUIP src/Dodge/Data/Item/Combine.hs 18;" C EWristShield src/Dodge/Data/Item/HeldUse.hs 22;" C -EXPLOSIVE src/Dodge/Data/Damage/Type.hs 22;" C EXPLOSIVES src/Dodge/Data/Item/Combine.hs 116;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 5;" C @@ -673,7 +667,6 @@ FLAMESPITTER src/Dodge/Data/Item/Combine.hs 161;" C FLAMETHROWER src/Dodge/Data/Item/Combine.hs 162;" C FLAMETORRENT src/Dodge/Data/Item/Combine.hs 163;" C FLAMEWALL src/Dodge/Data/Item/Combine.hs 164;" C -FLAMING src/Dodge/Data/Damage/Type.hs 19;" C FLATSHIELD src/Dodge/Data/Item/Combine.hs 176;" C FRONTARMOUR src/Dodge/Data/Item/Combine.hs 122;" C FUELCELL src/Dodge/Data/Item/Combine.hs 87;" C @@ -998,7 +991,6 @@ Justify src/Justify.hs 1;" m KEYCARD src/Dodge/Data/Item/Combine.hs 177;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C LASER src/Dodge/Data/Item/Combine.hs 168;" C -LASERING src/Dodge/Data/Damage/Type.hs 20;" C LDT src/Dodge/Data/DoubleTree.hs 40;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C LDTComb src/Dodge/Item/Grammar.hs 239;" t @@ -1385,7 +1377,7 @@ OnSpecial src/Dodge/Data/Equipment/Misc.hs 28;" C OnTurret src/Dodge/Data/Item/Location.hs 37;" C OnceSound src/Dodge/Data/SoundOrigin.hs 16;" C OneArgument src/Dodge/Data/Terminal.hs 92;" C -OneHand src/Dodge/Data/AimStance.hs 10;" C +OneHand src/Dodge/Data/AimStance.hs 9;" C OnwardCluster src/Dodge/Data/RoomCluster.hs 14;" C OnwardList src/Dodge/Annotation/Data.hs 16;" C Opacity src/Dodge/Data/Wall.hs 40;" t @@ -1423,7 +1415,6 @@ PJStabiliser src/Dodge/Projectile/Create.hs 18;" t PLANK src/Dodge/Data/Item/Combine.hs 59;" C PLATE src/Dodge/Data/Item/Combine.hs 69;" C PLUS src/Dodge/Data/GenParams.hs 20;" C -POISONDAM src/Dodge/Data/Damage/Type.hs 24;" C POISONSPRAYER src/Dodge/Data/Item/Combine.hs 173;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 88;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 128;" C @@ -1461,6 +1452,7 @@ PenetrateBullet src/Dodge/Data/Bullet.hs 34;" C Perception src/Dodge/Data/Creature/Perception.hs 32;" t Perception src/Dodge/Creature/Perception.hs 2;" m Perception src/Dodge/Data/Creature/Perception.hs 6;" m +PhysicalDamage src/Dodge/Data/Damage/Type.hs 4;" C PhysicalSensor src/Dodge/Data/Machine/Sensor/Type.hs 14;" C PickOnePlacement src/Dodge/Data/GenWorld.hs 85;" C Picture src/Picture/Data.hs 46;" t @@ -1470,7 +1462,6 @@ Picture src/Dodge/Picture.hs 4;" m Picture src/Dodge/Render/Picture.hs 1;" m Picture src/Picture.hs 3;" m Piercing src/Dodge/Data/Damage.hs 20;" C -Piercing src/Dodge/Data/Damage/Type.hs 13;" C Pillar src/Dodge/Room/Pillar.hs 1;" m Pipe src/Dodge/Placement/Instance/Pipe.hs 1;" m PistolAI src/Dodge/Data/Creature/Misc.hs 43;" C @@ -1492,6 +1483,7 @@ Point2 src/Geometry/Data.hs 19;" t Point3 src/Geometry/Data.hs 25;" t Point4 src/Geometry/Data.hs 29;" t Poison src/Dodge/Data/Damage.hs 30;" C +PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C Poke src/Shader/Poke.hs 1;" m PolyShad src/Picture/Data.hs 36;" C Polygon src/Geometry/Polygon.hs 3;" m @@ -1700,7 +1692,6 @@ RunningSideEffect src/Dodge/Data/Universe.hs 69;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C SFLink src/Dodge/Data/ComposedItem.hs 35;" C SHATTERGUN src/Dodge/Data/Item/Combine.hs 174;" C -SHATTERING src/Dodge/Data/Damage/Type.hs 18;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 102;" C SMG src/Dodge/Data/Item/Combine.hs 146;" C @@ -1708,7 +1699,6 @@ SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 100;" C SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 160;" C SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 81;" C SPARKGUN src/Dodge/Data/Item/Combine.hs 166;" C -SPARKING src/Dodge/Data/Damage/Type.hs 16;" C SPEEDLEGS src/Dodge/Data/Item/Combine.hs 129;" C SPRING src/Dodge/Data/Item/Combine.hs 53;" C SPic src/ShapePicture/Data.hs 7;" t @@ -2063,10 +2053,10 @@ Turret src/Dodge/Data/Machine.hs 57;" t Turret src/Dodge/Placement/Instance/Turret.hs 1;" m TurretInt src/Dodge/Data/Item/Location.hs 21;" t TwistGoal src/Dodge/Data/Scenario.hs 15;" C -TwoHandFlat src/Dodge/Data/AimStance.hs 9;" C -TwoHandOver src/Dodge/Data/AimStance.hs 8;" C -TwoHandUnder src/Dodge/Data/AimStance.hs 7;" C -Type src/Dodge/Data/Damage/Type.hs 6;" m +TwoHandFlat src/Dodge/Data/AimStance.hs 8;" C +TwoHandOver src/Dodge/Data/AimStance.hs 7;" C +TwoHandUnder src/Dodge/Data/AimStance.hs 6;" C +Type src/Dodge/Data/Damage/Type.hs 1;" m Type src/Dodge/Data/EnergyBall/Type.hs 6;" m Type src/Dodge/Data/Machine/Sensor/Type.hs 5;" m Type src/Dodge/Terminal/Type.hs 1;" m @@ -2502,11 +2492,9 @@ _dmCenter src/Dodge/Data/Damage.hs 29;" f _dmPos src/Dodge/Data/Damage.hs 20;" f _dmPos src/Dodge/Data/Damage.hs 24;" f _dmPos src/Dodge/Data/Damage.hs 27;" f -_dmPos src/Dodge/Data/Damage/Type.hs 13;" f _dmVector src/Dodge/Data/Damage.hs 20;" f _dmVector src/Dodge/Data/Damage.hs 23;" f _dmVector src/Dodge/Data/Damage.hs 26;" f -_dmVector src/Dodge/Data/Damage/Type.hs 13;" f _doActionIfAction src/Dodge/Data/ActionPlan.hs 118;" f _doActionIfCondition src/Dodge/Data/ActionPlan.hs 117;" f _doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 122;" f @@ -3405,11 +3393,10 @@ applyCreatureDamage src/Dodge/Creature/Damage.hs 12;" f applyEventIO src/Loop.hs 89;" f applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 47;" f -applyIndividualDamage' src/Dodge/Creature/Damage.hs 51;" f applyInvLock src/Dodge/HeldUse.hs 425;" f applyMagnetsToBul src/Dodge/Bullet.hs 28;" f -applyPastDamages src/Dodge/Creature/State.hs 144;" f -applyPiercingDamage src/Dodge/Creature/Damage.hs 56;" f +applyPastDamages src/Dodge/Creature/State.hs 143;" f +applyPiercingDamage src/Dodge/Creature/Damage.hs 52;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 457;" f applyResFactor src/Dodge/Data/Config.hs 110;" f @@ -3595,7 +3582,7 @@ centerVaultRoom src/Dodge/Room/Procedural.hs 289;" f centroid src/Geometry/Polygon.hs 130;" f centroidNum src/Geometry/Polygon.hs 133;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f -chainLinkOrientation src/Dodge/Creature/State.hs 276;" f +chainLinkOrientation src/Dodge/Creature/State.hs 275;" f chainPairs src/Geometry.hs 359;" f changeSwapOther src/Dodge/Inventory.hs 144;" f changeSwapSel src/Dodge/Inventory.hs 137;" f @@ -3677,6 +3664,7 @@ clusterFunc src/Dodge/Combine/Graph.hs 119;" f cogRaised src/Dodge/Creature/Perception.hs 102;" f colCrWall src/Dodge/WallCreatureCollisions.hs 28;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 18;" f +collectDamageTypes src/Dodge/Damage.hs 48;" f collectInvItems src/Dodge/Update/Input/InGame.hs 298;" f collideCircWalls src/Dodge/Base/Collide.hs 159;" f collidePoint src/Dodge/Base/Collide.hs 50;" f @@ -3779,7 +3767,6 @@ craftInfo src/Dodge/Item/Info.hs 168;" f craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f createArc src/Dodge/Tesla/Arc.hs 81;" f -createBarrelSpark src/Dodge/Spark.hs 40;" f createFlIt src/Dodge/Placement/PlaceSpot.hs 180;" f createForceField src/Dodge/ForceField.hs 7;" f createGas src/Dodge/Gas.hs 8;" f @@ -3847,10 +3834,10 @@ damageCircle src/Dodge/EnergyBall.hs 76;" f damageCodeCommand src/Dodge/Terminal.hs 232;" f damageCrCircle src/Dodge/DamageCircle.hs 33;" f damageCrCircle src/Dodge/EnergyBall.hs 99;" f -damageCrWl src/Dodge/Damage.hs 23;" f -damageCrWlID src/Dodge/Damage.hs 17;" f -damageDirection src/Dodge/Damage.hs 27;" f -damageHP src/Dodge/Creature/Damage.hs 67;" f +damageCrWl src/Dodge/Damage.hs 25;" f +damageCrWlID src/Dodge/Damage.hs 19;" f +damageDirection src/Dodge/Damage.hs 30;" f +damageHP src/Dodge/Creature/Damage.hs 63;" f damageMaterial src/Dodge/Material/Damage.hs 7;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f damageStone src/Dodge/Material/Damage.hs 20;" f @@ -4015,10 +4002,11 @@ divideDoorPane src/Dodge/Placement/Instance/Door.hs 59;" f divideLine src/Geometry.hs 247;" f divideLineExact src/Geometry.hs 275;" f divideLineOddNumPoints src/Geometry.hs 260;" f +dmType src/Dodge/Damage.hs 33;" f doAfterPlacement src/Dodge/Layout.hs 86;" f doAfterPlacements src/Dodge/Layout.hs 83;" f doAimTwist src/Dodge/Creature/YourControl.hs 140;" f -doAnyEquipmentEffect src/Dodge/Creature/State.hs 192;" f +doAnyEquipmentEffect src/Dodge/Creature/State.hs 191;" f doArcStep src/Dodge/Tesla/Arc.hs 135;" f doBackspace src/Dodge/Update/Input/Text.hs 31;" f doBlBl src/Dodge/BlBl.hs 5;" f @@ -4034,7 +4022,7 @@ doCrImp src/Dodge/CreatureEffect.hs 28;" f doCrWdAc src/Dodge/CreatureEffect.hs 77;" f doCrWdImp src/Dodge/CreatureEffect.hs 16;" f doCrWdWd src/Dodge/CreatureEffect.hs 20;" f -doDamage src/Dodge/Creature/State.hs 138;" f +doDamage src/Dodge/Creature/State.hs 137;" f doDeathToggle src/Dodge/WorldEffect.hs 98;" f doDeathTriggers src/Dodge/WorldEffect.hs 93;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f @@ -4115,7 +4103,7 @@ doublePair src/Geometry.hs 161;" f doublePairSet src/Geometry.hs 165;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 72;" f doubleV2 src/Geometry.hs 168;" f -drawARHUD src/Dodge/Creature/State.hs 303;" f +drawARHUD src/Dodge/Creature/State.hs 302;" f drawAimSweep src/Dodge/Render/Picture.hs 271;" f drawAllShadows src/Dodge/Shadows.hs 5;" f drawBaseMachine src/Dodge/Machine/Draw.hs 57;" f @@ -4241,7 +4229,7 @@ drawWlIDs src/Dodge/Debug/Picture.hs 367;" f drawZoneCol src/Dodge/Debug/Picture.hs 142;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 279;" f droneLauncher src/Dodge/Item/Weapon/Drone.hs 11;" f -dropByState src/Dodge/Creature/State.hs 131;" f +dropByState src/Dodge/Creature/State.hs 130;" f dropExcept src/Dodge/Creature/Action.hs 166;" f dropInventoryPath src/Dodge/HeldUse.hs 1356;" f dropItem src/Dodge/Creature/Action.hs 172;" f @@ -4635,7 +4623,7 @@ insertWallInZones src/Dodge/Wall/Zone.hs 20;" f insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 70;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f -internalCreatureUpdate src/Dodge/Creature/State.hs 125;" f +internalCreatureUpdate src/Dodge/Creature/State.hs 124;" f interpWith src/Dodge/Creature/Boid.hs 11;" f intersectCircSeg src/Geometry/Intersect.hs 305;" f intersectCircSegFirst src/Geometry/Intersect.hs 323;" f @@ -4663,16 +4651,16 @@ invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invDP src/Dodge/ListDisplayParams.hs 30;" f invDimColor src/Dodge/DisplayInventory.hs 192;" f invHead src/Dodge/Render/HUD.hs 405;" f -invItemLocUpdate src/Dodge/Creature/State.hs 181;" f +invItemLocUpdate src/Dodge/Creature/State.hs 180;" f invLDT src/Dodge/Item/Grammar.hs 279;" f -invRootItemEffs src/Dodge/Creature/State.hs 174;" f +invRootItemEffs src/Dodge/Creature/State.hs 173;" f invRootMap src/Dodge/Item/Grammar.hs 288;" f invRootTrees src/Dodge/Item/Grammar.hs 309;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f -invSideEff src/Dodge/Creature/State.hs 167;" f +invSideEff src/Dodge/Creature/State.hs 166;" f invSize src/Dodge/Inventory/CheckSlots.hs 30;" f inventoryX src/Dodge/Creature.hs 114;" f inverseSelNumPos src/Dodge/SelectionSections.hs 228;" f @@ -4690,7 +4678,7 @@ isAnimate src/Dodge/Creature/Test.hs 142;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 74;" f isElectrical src/Dodge/Machine/Update.hs 80;" f -isFrictionless src/Dodge/Creature/State.hs 438;" f +isFrictionless src/Dodge/Creature/State.hs 437;" f isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 191;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f isJust' src/MaybeHelp.hs 29;" f @@ -4947,7 +4935,7 @@ makeShaderVBO src/Shader/Compile.hs 32;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f makeSourcedShader src/Shader/Compile.hs 167;" f -makeSpark src/Dodge/Spark.hs 43;" f +makeSpark src/Dodge/Spark.hs 39;" f makeStartCloudAt src/Dodge/WorldEvent/Cloud.hs 60;" f makeStaticBall src/Dodge/WorldEvent/SpawnParticle.hs 22;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f @@ -4966,7 +4954,7 @@ makeTypeCraft src/Dodge/Item/Craftable.hs 18;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 12;" f mapper src/Dodge/Item/Scope.hs 70;" f maxAmmo src/Dodge/Item/MaxAmmo.hs 6;" f -maxDamageType src/Dodge/Damage.hs 38;" f +maxDamageType src/Dodge/Damage.hs 54;" f maxInvSlots src/Dodge/Inventory/CheckSlots.hs 27;" f maxShowX src/Dodge/Combine/Graph.hs 50;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f @@ -5293,7 +5281,7 @@ pointerToItemLocation src/Dodge/Item/Location.hs 14;" f pointerYourRootItem src/Dodge/Item/Location.hs 31;" f pointerYourSelectedItem src/Dodge/Item/Location.hs 25;" f pointsToPoly src/Geometry/ConvexPoly.hs 39;" f -poisonSPic src/Dodge/Creature/State.hs 122;" f +poisonSPic src/Dodge/Creature/State.hs 121;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f poke34 src/Shader/Poke.hs 506;" f pokeArrayOff src/Shader/Poke.hs 517;" f @@ -5441,7 +5429,7 @@ radToDeg src/Geometry/Vector.hs 122;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 56;" f -randDirSpark src/Dodge/Spark.hs 52;" f +randDirSpark src/Dodge/Spark.hs 49;" f randEdgeTank src/Dodge/Room/Tanks.hs 33;" f randEdgeTanks src/Dodge/Room/Tanks.hs 63;" f randEnergyBallAt src/Dodge/WorldEvent/SpawnParticle.hs 14;" f @@ -5458,7 +5446,7 @@ randOnUnitSphere src/RandomHelp.hs 90;" f randPeaked src/RandomHelp.hs 138;" f randPeakedParam src/RandomHelp.hs 130;" f randProb src/RandomHelp.hs 68;" f -randSpark src/Dodge/Spark.hs 72;" f +randSpark src/Dodge/Spark.hs 63;" f randWallReflect src/Dodge/Tesla/Arc.hs 57;" f randWallReflect src/Dodge/Update.hs 580;" f randomChallenges src/Dodge/Room/Start.hs 62;" f @@ -5641,7 +5629,7 @@ scaleSH src/Shape.hs 268;" f scalp src/Dodge/Creature/Picture.hs 98;" f scancodeToHotkey src/Dodge/Creature/YourControl.hs 95;" f scodeToChar src/Dodge/ScodeToChar.hs 6;" f -scorchSPic src/Dodge/Creature/State.hs 119;" f +scorchSPic src/Dodge/Creature/State.hs 118;" f screenBox src/Dodge/Base/Window.hs 53;" f screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f @@ -5715,7 +5703,7 @@ setOldPos src/Dodge/Update.hs 467;" f setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f -setRBCreatureTargeting src/Dodge/Creature/State.hs 407;" f +setRBCreatureTargeting src/Dodge/Creature/State.hs 406;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 334;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -5783,8 +5771,8 @@ shiftRoomBy src/Dodge/Room/Link.hs 37;" f shiftRoomShiftBy src/Dodge/Room/Link.hs 81;" f shiftRoomShiftToLink src/Dodge/Room/Link.hs 70;" f shiftedGrid src/Grid.hs 25;" f -shineTargetLaser src/Dodge/Creature/State.hs 309;" f -shineTorch src/Dodge/Creature/State.hs 350;" f +shineTargetLaser src/Dodge/Creature/State.hs 308;" f +shineTorch src/Dodge/Creature/State.hs 349;" f shootBullet src/Dodge/HeldUse.hs 938;" f shootFirstMiss src/Dodge/Creature/Volition.hs 33;" f shootLaser src/Dodge/HeldUse.hs 847;" f @@ -5876,10 +5864,10 @@ spanColLightI src/Dodge/Placement/Instance/LightSource.hs 183;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 175;" f spanLSLightI src/Dodge/Placement/Instance/LightSource.hs 168;" f spanLightI src/Dodge/Placement/Instance/LightSource.hs 197;" f -sparkDam src/Dodge/Spark.hs 31;" f +sparkDam src/Dodge/Spark.hs 30;" f sparkGun src/Dodge/Item/Held/BatteryGuns.hs 13;" f -sparkRandDir src/Dodge/Spark.hs 95;" f -sparkToDamage src/Dodge/Spark.hs 34;" f +sparkRandDir src/Dodge/Spark.hs 86;" f +sparkToDamage src/Dodge/Spark.hs 33;" f spawnCrNextTo src/Dodge/Item/Weapon/Spawn.hs 20;" f spawnElectricalSparks src/Dodge/PosEvent.hs 19;" f spawnGun src/Dodge/Item/Weapon/Spawn.hs 12;" f @@ -6163,8 +6151,8 @@ tryPutItemInInvAt src/Dodge/Inventory/Add.hs 32;" f trySeedFromClipboard src/Dodge/Menu.hs 91;" f tryShellBounce src/Dodge/Projectile/Update.hs 103;" f trySpinByCID src/Dodge/Projectile/Update.hs 178;" f -trySynthBullet src/Dodge/Creature/State.hs 206;" f -tryUseParent src/Dodge/Creature/State.hs 199;" f +trySynthBullet src/Dodge/Creature/State.hs 205;" f +tryUseParent src/Dodge/Creature/State.hs 198;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 19;" f @@ -6204,7 +6192,7 @@ updateAimPos src/Dodge/Update.hs 306;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 44;" f updateArc src/Dodge/Tesla/Arc.hs 100;" f -updateAttachedItems src/Dodge/Creature/State.hs 266;" f +updateAttachedItems src/Dodge/Creature/State.hs 265;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 453;" f updateBarrel src/Dodge/Barreloid.hs 44;" f updateBarreloid src/Dodge/Barreloid.hs 14;" f @@ -6239,7 +6227,7 @@ updateFloatingCamera src/Dodge/Update/Camera.hs 34;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 364;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 357;" f updateGusts src/Dodge/Update.hs 718;" f -updateHeldRootItem src/Dodge/Creature/State.hs 260;" f +updateHeldRootItem src/Dodge/Creature/State.hs 259;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 502;" f updateIMl' src/Dodge/Update.hs 507;" f @@ -6247,8 +6235,8 @@ updateInGameCamera src/Dodge/Update/Camera.hs 78;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 400;" f updateInt2Map src/Dodge/Zoning/Base.hs 92;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 86;" f -updateItemTargeting src/Dodge/Creature/State.hs 376;" f -updateItemWithOrientation src/Dodge/Creature/State.hs 286;" f +updateItemTargeting src/Dodge/Creature/State.hs 375;" f +updateItemWithOrientation src/Dodge/Creature/State.hs 285;" f updateKeyInGame src/Dodge/Update/Input/InGame.hs 394;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -6264,7 +6252,7 @@ updateMouseContextGame src/Dodge/Update.hs 328;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 95;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 85;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 158;" f -updateMovement src/Dodge/Creature/State.hs 428;" f +updateMovement src/Dodge/Creature/State.hs 427;" f updateObjCatMaybes src/Dodge/Update.hs 524;" f updateObjMapMaybe src/Dodge/Update.hs 517;" f updatePastWorlds src/Dodge/Update.hs 422;" f @@ -6291,7 +6279,7 @@ updateShockwaves src/Dodge/Update.hs 592;" f updateSingleNodes src/TreeHelp.hs 97;" f updateSound src/Sound.hs 72;" f updateSounds src/Sound.hs 67;" f -updateSpark src/Dodge/Spark.hs 18;" f +updateSpark src/Dodge/Spark.hs 17;" f updateSparks src/Dodge/Update.hs 604;" f updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f