Refactor damages to materials

This commit is contained in:
2025-06-22 08:31:18 +01:00
parent df3fde5d3e
commit 9fa3e060d7
17 changed files with 576 additions and 609 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -197,7 +197,7 @@ moveBullet pt = pt & buPos +~ _buVel pt & buOldPos .~ _buPos pt
stopBulletAt :: Point2 -> Bullet -> Bullet
stopBulletAt hitp pt =
pt
& buPos .~ hitp + squashNormalizeV (_buPos pt - hitp)
& buPos .~ hitp
& buOldPos .~ _buPos pt
& buVel .~ 0
+19 -16
View File
@@ -9,22 +9,25 @@ import Dodge.Spark
import Geometry
import LensHelp
applyCreatureDamage :: [Damage] -> Creature -> World -> World
applyCreatureDamage dms cr = case crMaterial (cr ^. crType) of
Flesh -> defaultApplyDamage dms cr
Crystal -> id
_ -> defaultApplyDamage dms cr
--applyCreatureDamage :: [Damage] -> Creature -> World -> World
--applyCreatureDamage dms cr =
-- case crMaterial (cr ^. crType) of
-- Flesh -> defaultApplyDamage dms cr
-- Crystal -> id
-- _ -> defaultApplyDamage dms cr
defaultApplyDamage :: [Damage] -> Creature -> World -> World
defaultApplyDamage ds cr w =
foldl' (applyIndividualDamage cr) w ds'
& cWorld . lWorld . creatures . ix (_crID cr) %~ doPoisonDam
where
(ps, ds') = partition isPoison ds
isPoison Poison{} = True
isPoison _ = False
poisonDam = quot (max 0 (sum (map _dmAmount ps))) 10
doPoisonDam = crHP -~ poisonDam
--defaultApplyDamage :: [Damage] -> Creature -> World -> World
--defaultApplyDamage ds cr w =
applyCreatureDamage :: [Damage] -> Creature -> World -> World
applyCreatureDamage dms cr w = foldl' (applyIndividualDamage cr) w dms
-- foldl' (applyIndividualDamage cr) w ds'
-- & cWorld . lWorld . creatures . ix (_crID cr) %~ doPoisonDam
-- where
-- (ps, ds') = partition isPoison ds
-- isPoison Poison{} = True
-- isPoison _ = False
-- poisonDam = quot (max 0 (sum (map _dmAmount ps))) 10
-- doPoisonDam = crHP -~ poisonDam
--applyDamageEffect :: Damage -> DamageEffect -> Creature -> World -> World
--applyDamageEffect dm de cr = case de of
@@ -64,5 +67,5 @@ damageHP :: Creature -> Int -> World -> World
damageHP cr x =
cWorld . lWorld . creatures . ix (_crID cr)
%~ ( (crHP -~ x)
. (crPastDamage +~ x)
. (crPain +~ x)
)
+1 -1
View File
@@ -204,7 +204,7 @@ targetYouWhenCognizant w cr = case cr ^? crPerception . cpAwareness . ix 0 of
searchIfDamaged :: Creature -> Creature
searchIfDamaged cr
| _crPastDamage cr > 0
| _crPain cr > 0
&& _apStrategy (_crActionPlan cr) == WatchAndWait =
cr & crPerception . cpVigilance .~ Vigilant
& crActionPlan . apStrategy
+5 -5
View File
@@ -106,7 +106,7 @@ corpseOrGib :: Creature -> World -> World
corpseOrGib cr = case cr ^? crDamage . to maxDamageType . _Just . _1 of
Just CookingDamage -> addcorpse (thecorpse & cpSPic %~ scorchSPic)
Just PoisonDamage -> addcorpse (thecorpse & cpSPic %~ poisonSPic)
Just PhysicalDamage | _crPastDamage cr > 200 -> addCrGibs cr
Just PhysicalDamage | _crPain cr > 200 -> addCrGibs cr
_ -> addcorpse thecorpse
where
addcorpse ctype = plNew (cWorld . lWorld . corpses) cpID ctype
@@ -130,15 +130,15 @@ doDamage cr = applyPastDamages cr . applyCreatureDamage (cr ^. crDamage) cr
-- TODO generalise shake to arbitrary damage amounts
applyPastDamages :: Creature -> World -> World
applyPastDamages cr w
| _crPastDamage cr > 200 = dojitter 3 100
| _crPastDamage cr > 20 = dojitter 2 10
| _crPastDamage cr > 0 = dojitter 1 1
| _crPain cr > 200 = dojitter 3 100
| _crPain cr > 20 = dojitter 2 10
| _crPain cr > 0 = dojitter 1 1
| otherwise = w
where
dojitter x y =
let (p, g) = runState (randInCirc x) (_randGen w)
in w & cWorld . lWorld . creatures . ix (_crID cr) %~ crMvBy p
& cWorld . lWorld . creatures . ix (_crID cr) . crPastDamage -~ y
& cWorld . lWorld . creatures . ix (_crID cr) . crPain -~ y
& randGen .~ g
-- a loop going over all root inventory items
+40 -26
View File
@@ -6,18 +6,19 @@ module Dodge.Damage (
damageDirection,
damageCrWlID,
maxDamageType,
damThingHitWith,
) where
import Dodge.WorldEvent.ThingsHit
import Geometry.Data
import Dodge.Data.Damage.Type
import Geometry.Vector
import ListHelp
import Dodge.Data.CrWlID
import Dodge.Data.World
import LensHelp
import qualified Data.Map.Strict as M
import Dodge.Data.CrWlID
import Dodge.Data.Damage.Type
import Dodge.Data.World
import Dodge.WorldEvent.ThingsHit
import FoldableHelp
import Geometry.Data
import Geometry.Vector
import LensHelp
import ListHelp
damageCrWlID :: Damage -> CrWlID -> World -> World
damageCrWlID dam = \case
@@ -35,19 +36,19 @@ damageDirection :: [Damage] -> Maybe Float
damageDirection ds = safeArgV =<< safeHead (ds ^.. each . dmVector)
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
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
collectDamageTypes :: [Damage] -> M.Map DamageType Int
collectDamageTypes = foldl' (flip f) M.empty
@@ -58,11 +59,24 @@ maxDamageType :: [Damage] -> Maybe (DamageType, Int)
maxDamageType = safeMinimumOn (negate . snd) . M.assocs . collectDamageTypes
damageInCircle :: (Point2 -> Damage) -> Point2 -> Float -> World -> World
damageInCircle f p r w = w
& cWorld . lWorld . wallDamages %~ dowldams
& cWorld . lWorld . creatures %~ docrdams
damageInCircle f p r w =
w
& cWorld . lWorld . wallDamages %~ dowldams
& cWorld . lWorld . creatures %~ docrdams
where
dowldams wds = foldl' g wds (wlsHitRadial p r w)
docrdams crs = foldl' h crs (crsHitRadial p r w)
g wds (x,wl) = wds & at (_wlID wl) . non mempty .:~ f x
h crs (x,cr) = crs & ix (_crID cr) . crDamage .:~ f x
g wds (x, wl) = wds & at (_wlID wl) . non mempty .:~ f x
h crs (x, cr) = crs & ix (_crID cr) . crDamage .:~ f x
damThingHitWith ::
(Point2 -> Damage) ->
Maybe (Point2, Either Creature Wall) ->
World ->
World
damThingHitWith f = \case
Just (p, Left cr) ->
cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ f p
Just (p, Right wl) ->
cWorld . lWorld . wallDamages . at (_wlID wl) . non mempty .:~ f p
Nothing -> id
+1 -1
View File
@@ -47,7 +47,7 @@ data Creature = Creature
, _crManipulation :: Manipulation
, _crEquipment :: M.Map EquipSite Int
, _crDamage :: [Damage]
, _crPastDamage :: Int
, _crPain :: Int
, _crStance :: Stance
, _crActionPlan :: ActionPlan
, _crPerception :: Perception
+1
View File
@@ -37,6 +37,7 @@ data SoundOrigin
| Explosion Int
| Tap Int
| EBSound Int
| DamageHitSound Int
deriving (Eq, Ord, Show, Read) --Generic, Flat)
+1 -1
View File
@@ -29,7 +29,7 @@ defaultCreature =
, _crDamage = []
-- , _crCorpse = MakeDefaultCorpse
-- , _crMaterial = Flesh
, _crPastDamage = 0
, _crPain = 0
-- , _crInvEquipped = mempty
, _crEquipment = M.empty
-- , _crInvHotkeys = mempty
+2 -5
View File
@@ -2,12 +2,11 @@ module Dodge.Laser.Update (
updateLaser,
) where
import Dodge.Damage
import Control.Lens
--import Data.Maybe
import Dodge.Data.World
import Dodge.Item.Location
import Dodge.Item.Weapon.LaserPath
import Dodge.WorldEvent.Damage
import Geometry
import Picture.Base
@@ -16,9 +15,7 @@ updateLaser w pt =
( case _lpType pt of
DamageLaser dam ->
damThingHitWith
(\p1 p2 p3 -> Lasering dam p2 (p3 - p1))
sp
xp
(\p2 -> Lasering dam p2 (xp - sp))
thHit
w
TargetingLaser itid -> w & pointerToItemID itid . itTargeting . itTgPos ?~ last ps
+98 -20
View File
@@ -1,39 +1,117 @@
module Dodge.Material.Damage where
module Dodge.Material.Damage (damageMaterial) where
import RandomHelp
import Dodge.SoundLogic
import Color
import Dodge.WorldEvent.Cloud
import Dodge.Data.World
import Dodge.Spark
import Geometry
import Control.Lens
damageMaterial ::
Damage ->
Material ->
Float -> -- the angle of the hit surface, in radians
Float -> -- the direction of the hit surface, in radians
World ->
(Int, World)
World
damageMaterial dm mt = case mt of
Stone -> damageStone dm
Metal -> damageMetal dm
Flesh -> damageFlesh dm
Dirt -> damageDirt dm
-- Glass -> damageGlass dm
_ -> defDamageMaterial dm
defDamageMaterial :: Damage -> Float -> World -> (Int, World)
defDamageMaterial dm _ w = (_dmAmount dm, w)
defDamageMaterial :: Damage -> Float -> World -> World
defDamageMaterial _ _ w = w
damageStone :: Damage -> Float -> World -> (Int, World)
damageStone dm dir = case dm of
Lasering _ p t -> a 0 $ makeSpark FireSpark (outTo p t) (argV $ reflectIn t v)
Piercing x p t -> a x $ makeSpark NormalSpark (outTo p t) (argV $ reflectIn t v)
Blunt x p t -> a x $ makeSpark NormalSpark (outTo p t) (argV $ reflectIn t v)
Shattering {} -> a 0 id
Crushing {} -> a 0 id
Explosive {} -> a 0 id
Sparking {} -> a 0 id
Flaming {} -> a 0 id
Electrical {} -> a 0 id
Poison {} -> a 0 id
Enterrement {} -> a 0 id
Flashing {} -> a 0 id
damageStone :: Damage -> Float -> World -> World
damageStone dm dir w = w & case dm of
Lasering _ p t -> makeSpark FireSpark (outTo p t) (argV $ reflectIn v t)
Piercing _ p t -> makeSpark NormalSpark (outTo p t) (argV $ reflectIn v t)
. smokeCloudAt white 20 200 1 (addZ 20 (outTo p t))
. randsound p [slapS,slap1S]
Blunt _ p t -> smokeCloudAt white 20 200 1 (addZ 20 (outTo p t))
Shattering _ p t -> smokeCloudAt white 20 200 1 (addZ 20 (outTo p t))
Crushing{} -> id
Explosive{} -> id
Sparking{} -> id
Flaming{} -> id
Electrical{} -> id
Poison{} -> id
Enterrement{} -> id
Flashing{} -> id
where
randsound p xs = let (x,g) = runState (takeOne xs) $ _randGen w
in soundStart so p x Nothing . set randGen g
so = DamageHitSound (w ^. cWorld . lWorld . lClock)
v = unitVectorAtAngle dir
outTo x t = x -.- squashNormalizeV t
damageMetal :: Damage -> Float -> World -> World
damageMetal dm dir w = w & case dm of
Lasering _ p t -> makeSpark FireSpark (outTo p t) (argV $ reflectIn v t)
Piercing _ p t -> makeSpark NormalSpark (outTo p t) (argV $ reflectIn v t)
. randsound p [tingS,ting1S]
Blunt _ p t -> id
Shattering _ p t -> id
Crushing{} -> id
Explosive{} -> id
Sparking{} -> id
Flaming{} -> id
Electrical{} -> id
Poison{} -> id
Enterrement{} -> id
Flashing{} -> id
where
v = unitVectorAtAngle dir
a x f w = (x, f w)
outTo x t = x -.- squashNormalizeV t
randsound p xs = let (x,g) = runState (takeOne xs) $ _randGen w
in soundStart so p x Nothing . set randGen g
so = DamageHitSound (w ^. cWorld . lWorld . lClock)
damageFlesh :: Damage -> Float -> World -> World
damageFlesh dm dir w = w & case dm of
Lasering _ p t -> id
Piercing _ p t -> randsound p [blood1S,blood2S,blood4S,blood5S,blood6S,blood7S,blood8S]
Blunt _ p t -> id
Shattering _ p t -> id
Crushing{} -> id
Explosive{} -> id
Sparking{} -> id
Flaming{} -> id
Electrical{} -> id
Poison{} -> id
Enterrement{} -> id
Flashing{} -> id
where
randsound p xs = let (x,g) = runState (takeOne xs) $ _randGen w
in soundStart so p x Nothing . set randGen g
so = DamageHitSound (w ^. cWorld . lWorld . lClock)
v = unitVectorAtAngle dir
outTo x t = x -.- squashNormalizeV t
damageDirt :: Damage -> Float -> World -> World
damageDirt dm dir w = w & case dm of
Lasering _ p t -> makeSpark FireSpark (outTo p t) (argV $ reflectIn v t)
Piercing _ p t -> smokeCloudAt orange 20 200 1 (addZ 20 (outTo p t))
. randsound p [slapS,slap1S]
Blunt _ p t -> smokeCloudAt orange 20 200 1 (addZ 20 (outTo p t))
Shattering _ p t -> smokeCloudAt orange 20 200 1 (addZ 20 (outTo p t))
Crushing{} -> id
Explosive{} -> id
Sparking{} -> id
Flaming{} -> id
Electrical{} -> id
Poison{} -> id
Enterrement{} -> id
Flashing{} -> id
where
randsound p xs = let (x,g) = runState (takeOne xs) $ _randGen w
in soundStart so p x Nothing . set randGen g
so = DamageHitSound (w ^. cWorld . lWorld . lClock)
v = unitVectorAtAngle dir
outTo x t = x -.- squashNormalizeV t
--damageGlass :: Damage -> Float -> World -> (World,Int)
+4 -9
View File
@@ -13,30 +13,25 @@ fallSmallBounceDamage :: Prop -> World -> World
fallSmallBounceDamage pr w =
w
& dodamage
& cWorld . lWorld . props . ix (_prID pr) %~ fallSmallBounce' w
& cWorld . lWorld . props . ix (_prID pr) %~ fallMovement w
where
p = _prPos pr
v = _prVel pr
dodamage
| _prPosZ pr < 25 = damageInCircle (const thedam) p 5
-- cWorld . lWorld . creatures . each %~ dodamage'
| otherwise = id
thedam = Crushing (floor . (* 10) . max 0 . subtract 5 . abs $ _prVelZ pr) v
fallSmallBounce :: Prop -> World -> World
fallSmallBounce pr w =
w
& cWorld . lWorld . props . ix (_prID pr) %~ fallSmallBounce' w
fallSmallBounce pr w = w & cWorld . lWorld . props . ix (_prID pr) %~ fallMovement w
fallSmallBounce' :: World -> Prop -> Prop
fallSmallBounce' w pr
fallMovement :: World -> Prop -> Prop
fallMovement w pr
| newposz < 0 && velz < (-2) =
pr
& prVelZ %~ ((* 0.5) . negate)
-- & pjPos +~ (0.5*.* vel)
& updateWithVel (0.5 *.* vel)
& prVel %~ (0.5 *.*)
-- & pjPos +~ (0.5*.* vel)
| newposz < 0 =
pr & prUpdate .~ PropUpdateId
& prPosZ .~ 0
+329 -319
View File
@@ -1,235 +1,240 @@
-- generated at 2025-06-09 10:19:06.449705157 UTC
-- generated at 2025-06-22 07:24:07.993044373 UTC
module Dodge.SoundLogic.ExternallyGeneratedSounds where
import Sound.Data
soundToVol :: SoundID -> Float
soundToVol v = case _getSoundID v of
0 -> 500
0 -> 200
1 -> 500
2 -> 500
3 -> 2000
4 -> 500
5 -> 1000
6 -> 40
7 -> 100
3 -> 500
4 -> 2000
5 -> 500
6 -> 1000
7 -> 40
8 -> 100
9 -> 500
10 -> 200
11 -> 500
12 -> 300
13 -> 100
14 -> 500
15 -> 1000
16 -> 40
17 -> 2000
18 -> 100
19 -> 50
20 -> 200
21 -> 50
22 -> 2000
23 -> 200
24 -> 40
25 -> 300
26 -> 500
27 -> 2000
28 -> 500
29 -> 100
30 -> 200
31 -> 1000
32 -> 100
9 -> 100
10 -> 500
11 -> 200
12 -> 500
13 -> 300
14 -> 100
15 -> 500
16 -> 1000
17 -> 40
18 -> 2000
19 -> 100
20 -> 50
21 -> 200
22 -> 50
23 -> 2000
24 -> 200
25 -> 40
26 -> 300
27 -> 500
28 -> 2000
29 -> 500
30 -> 100
31 -> 200
32 -> 1000
33 -> 100
34 -> 1000
34 -> 100
35 -> 1000
36 -> 40
37 -> 400
38 -> 2000
39 -> 100
40 -> 300
41 -> 50
42 -> 2000
43 -> 50
44 -> 1000
45 -> 8000
46 -> 2000
36 -> 1000
37 -> 40
38 -> 400
39 -> 2000
40 -> 100
41 -> 300
42 -> 50
43 -> 2000
44 -> 50
45 -> 1000
46 -> 8000
47 -> 2000
48 -> 1000
49 -> 2000
50 -> 100
51 -> 40
52 -> 40
53 -> 2000
54 -> 100
55 -> 500
56 -> 40
57 -> 300
58 -> 300
59 -> 100
60 -> 2000
61 -> 1000
62 -> 1000
48 -> 2000
49 -> 1000
50 -> 200
51 -> 2000
52 -> 100
53 -> 40
54 -> 40
55 -> 2000
56 -> 100
57 -> 500
58 -> 40
59 -> 300
60 -> 300
61 -> 100
62 -> 2000
63 -> 1000
64 -> 1000
65 -> 1000
66 -> 40
67 -> 50
68 -> 1000
69 -> 500
70 -> 500
71 -> 100
72 -> 1000
73 -> 20
74 -> 500
75 -> 300
76 -> 200
77 -> 500
78 -> 1000
79 -> 200
66 -> 1000
67 -> 1000
68 -> 40
69 -> 50
70 -> 1000
71 -> 500
72 -> 500
73 -> 100
74 -> 1000
75 -> 20
76 -> 500
77 -> 300
78 -> 200
79 -> 500
80 -> 1000
81 -> 2000
82 -> 500
83 -> 100
84 -> 1000
85 -> 300
86 -> 2000
87 -> 2000
88 -> 100
89 -> 500
90 -> 2000
91 -> 100
92 -> 300
93 -> 1000
94 -> 200
95 -> 100
96 -> 1000
97 -> 2000
81 -> 200
82 -> 1000
83 -> 2000
84 -> 500
85 -> 100
86 -> 1000
87 -> 300
88 -> 2000
89 -> 2000
90 -> 100
91 -> 500
92 -> 2000
93 -> 100
94 -> 300
95 -> 1000
96 -> 200
97 -> 100
98 -> 1000
99 -> 100
100 -> 200
101 -> 500
102 -> 100
103 -> 2000
104 -> 1000
99 -> 2000
100 -> 1000
101 -> 100
102 -> 200
103 -> 500
104 -> 100
105 -> 2000
106 -> 2000
107 -> 200
108 -> 100
106 -> 1000
107 -> 2000
108 -> 2000
109 -> 200
110 -> 100
111 -> 200
_ -> 50
soundToOnomato :: SoundID -> String
soundToOnomato v = case _getSoundID v of
0 -> "DEDUM"
1 -> "CUHRUP"
2 -> "SCREE"
3 -> "BRDBRDBRD"
4 -> "DEDEDA"
5 -> "CRNK"
6 -> "CLNK"
7 -> "SKWLCH"
8 -> "WRR"
9 -> "TINKLE"
10 -> "SKREL"
11 -> "TRINKL"
12 -> "BWAAH"
13 -> "SQLEE"
14 -> "DNDNDNDN"
15 -> "CRMBL"
16 -> "TIP"
17 -> "TATATA"
18 -> "SPRT"
19 -> "BLIH"
20 -> "SQWCH"
21 -> "HMM"
22 -> "PEW"
23 -> "CRAKLE"
24 -> "TAP"
25 -> "DWAAH"
26 -> "PRUM"
27 -> "BANGG"
28 -> "CRTINK"
29 -> "PHF"
30 -> "CRNCH"
31 -> "ZHM"
32 -> "CLCLH"
33 -> "THUD"
34 -> "TRWNG"
35 -> "CRASH"
36 -> "TAPTIP"
37 -> "CRNKCRNKCRNK"
38 -> "CHUGUGUG"
39 -> "SKWLL"
40 -> "WRRR"
41 -> "HSSS"
42 -> "BOOM"
43 -> "HSS"
44 -> "TAKH"
45 -> "RINGGG"
46 -> "CRH"
47 -> "UGGAUGGA"
48 -> "CRUMPLE"
49 -> "CREUH"
50 -> "SMACK"
51 -> "CLICK"
52 -> "TIPTOP"
53 -> "CRUH"
54 -> "CHNKCHNKCHUNK"
55 -> "CLKCLK"
56 -> "TIPTAP"
57 -> "TNKTNKTNK"
58 -> "CHPCHPCHP"
59 -> "SLP"
60 -> "SCREE"
61 -> "DHDHL"
62 -> "BRAP"
63 -> "CRSK"
64 -> "CRNKL"
65 -> "TRNKL"
66 -> "TAPP"
67 -> "SHUHP"
68 -> "CRUMBL"
69 -> "DEDEDUM"
70 -> "TAK"
71 -> "SPLRT"
72 -> "CRISH"
73 -> "SWSH"
74 -> "BIPBIPBIP"
75 -> "BEP"
76 -> "CRSKRL"
77 -> "KRTNKL"
78 -> "CRSNK"
79 -> "SHTCK"
80 -> "TTRKL"
81 -> "UGGAUGGA"
82 -> "DUDURAH"
83 -> "KKSQWL"
84 -> "CRMPL"
85 -> "BWEP"
86 -> "CHUGUGUG"
87 -> "BANG"
88 -> "SLPP"
89 -> "DEDA"
90 -> "WHSSH"
91 -> "HNH"
92 -> "BWAH"
93 -> "CRUNK"
94 -> "SQWLTCH"
95 -> "DRR"
96 -> "TRNKL"
97 -> "BRAP"
98 -> "BLPCHCH"
99 -> "SKLE"
100 -> "ZMM"
101 -> "WRRR"
102 -> "FWUMP"
103 -> "BRAHCHCH"
104 -> "BWMP"
105 -> "BRPBRPBRP"
106 -> "WE-OH"
107 -> "THCK"
108 -> "FHP"
109 -> "QWLPH"
0 -> "TING"
1 -> "DEDUM"
2 -> "CUHRUP"
3 -> "SCREE"
4 -> "BRDBRDBRD"
5 -> "DEDEDA"
6 -> "CRNK"
7 -> "CLNK"
8 -> "SKWLCH"
9 -> "WRR"
10 -> "TINKLE"
11 -> "SKREL"
12 -> "TRINKL"
13 -> "BWAAH"
14 -> "SQLEE"
15 -> "DNDNDNDN"
16 -> "CRMBL"
17 -> "TIP"
18 -> "TATATA"
19 -> "SPRT"
20 -> "BLIH"
21 -> "SQWCH"
22 -> "HMM"
23 -> "PEW"
24 -> "CRAKLE"
25 -> "TAP"
26 -> "DWAAH"
27 -> "PRUM"
28 -> "BANGG"
29 -> "CRTINK"
30 -> "PHF"
31 -> "CRNCH"
32 -> "ZHM"
33 -> "CLCLH"
34 -> "THUD"
35 -> "TRWNG"
36 -> "CRASH"
37 -> "TAPTIP"
38 -> "CRNKCRNKCRNK"
39 -> "CHUGUGUG"
40 -> "SKWLL"
41 -> "WRRR"
42 -> "HSSS"
43 -> "BOOM"
44 -> "HSS"
45 -> "TAKH"
46 -> "RINGGG"
47 -> "CRH"
48 -> "UGGAUGGA"
49 -> "CRUMPLE"
50 -> "TING"
51 -> "CREUH"
52 -> "SMACK"
53 -> "CLICK"
54 -> "TIPTOP"
55 -> "CRUH"
56 -> "CHNKCHNKCHUNK"
57 -> "CLKCLK"
58 -> "TIPTAP"
59 -> "TNKTNKTNK"
60 -> "CHPCHPCHP"
61 -> "SLP"
62 -> "SCREE"
63 -> "DHDHL"
64 -> "BRAP"
65 -> "CRSK"
66 -> "CRNKL"
67 -> "TRNKL"
68 -> "TAPP"
69 -> "SHUHP"
70 -> "CRUMBL"
71 -> "DEDEDUM"
72 -> "TAK"
73 -> "SPLRT"
74 -> "CRISH"
75 -> "SWSH"
76 -> "BIPBIPBIP"
77 -> "BEP"
78 -> "CRSKRL"
79 -> "KRTNKL"
80 -> "CRSNK"
81 -> "SHTCK"
82 -> "TTRKL"
83 -> "UGGAUGGA"
84 -> "DUDURAH"
85 -> "KKSQWL"
86 -> "CRMPL"
87 -> "BWEP"
88 -> "CHUGUGUG"
89 -> "BANG"
90 -> "SLPP"
91 -> "DEDA"
92 -> "WHSSH"
93 -> "HNH"
94 -> "BWAH"
95 -> "CRUNK"
96 -> "SQWLTCH"
97 -> "DRR"
98 -> "TRNKL"
99 -> "BRAP"
100 -> "BLPCHCH"
101 -> "SKLE"
102 -> "ZMM"
103 -> "WRRR"
104 -> "FWUMP"
105 -> "BRAHCHCH"
106 -> "BWMP"
107 -> "BRPBRPBRP"
108 -> "WE-OH"
109 -> "THCK"
110 -> "FHP"
111 -> "QWLPH"
_ -> error "unitialised sound"
soundPathList :: [String]
soundPathList =
[ "dedum.DEDUM.500.wav"
[ "ting1.TING.200.wav"
, "dedum.DEDUM.500.wav"
, "insert.CUHRUP.500.wav"
, "tone440sawtoothquiet.SCREE.500.wav"
, "mini1.BRDBRDBRD.2000.wav"
@@ -278,6 +283,7 @@ soundPathList =
, "seagullCry1.CRH.2000.wav"
, "seagullBark.UGGAUGGA.2000.wav"
, "stone3.CRUMPLE.1000.wav"
, "ting.TING.200.wav"
, "seagullCry2.CREUH.2000.wav"
, "hit1.SMACK.100.wav"
, "click1.CLICK.40.wav"
@@ -340,223 +346,227 @@ soundPathList =
, "whiteNoiseFadeIn.FHP.100.wav"
, "gut1.QWLPH.200.wav"
]
ting1S :: SoundID
ting1S = SoundID 0
dedumS :: SoundID
dedumS = SoundID 0
dedumS = SoundID 1
insertS :: SoundID
insertS = SoundID 1
insertS = SoundID 2
tone440sawtoothquietS :: SoundID
tone440sawtoothquietS = SoundID 2
tone440sawtoothquietS = SoundID 3
mini1S :: SoundID
mini1S = SoundID 3
mini1S = SoundID 4
dededaS :: SoundID
dededaS = SoundID 4
dededaS = SoundID 5
glassShat3S :: SoundID
glassShat3S = SoundID 5
glassShat3S = SoundID 6
tapQuietS :: SoundID
tapQuietS = SoundID 6
tapQuietS = SoundID 7
blood8S :: SoundID
blood8S = SoundID 7
blood8S = SoundID 8
fireS :: SoundID
fireS = SoundID 8
fireS = SoundID 9
smallGlass4S :: SoundID
smallGlass4S = SoundID 9
smallGlass4S = SoundID 10
gut4S :: SoundID
gut4S = SoundID 10
gut4S = SoundID 11
smallGlass1S :: SoundID
smallGlass1S = SoundID 11
smallGlass1S = SoundID 12
sineRaisePitchTwoSecS :: SoundID
sineRaisePitchTwoSecS = SoundID 12
sineRaisePitchTwoSecS = SoundID 13
blood7S :: SoundID
blood7S = SoundID 13
blood7S = SoundID 14
combineS :: SoundID
combineS = SoundID 14
combineS = SoundID 15
stone4S :: SoundID
stone4S = SoundID 15
stone4S = SoundID 16
foot1S :: SoundID
foot1S = SoundID 16
foot1S = SoundID 17
autoBS :: SoundID
autoBS = SoundID 17
autoBS = SoundID 18
blood2S :: SoundID
blood2S = SoundID 18
blood2S = SoundID 19
healS :: SoundID
healS = SoundID 19
healS = SoundID 20
gut3S :: SoundID
gut3S = SoundID 20
gut3S = SoundID 21
fridgeHumS :: SoundID
fridgeHumS = SoundID 21
fridgeHumS = SoundID 22
seagullWhistle1S :: SoundID
seagullWhistle1S = SoundID 22
seagullWhistle1S = SoundID 23
elecCrackleS :: SoundID
elecCrackleS = SoundID 23
elecCrackleS = SoundID 24
foot2S :: SoundID
foot2S = SoundID 24
foot2S = SoundID 25
skwareFadeTwoSecS :: SoundID
skwareFadeTwoSecS = SoundID 25
skwareFadeTwoSecS = SoundID 26
insertOneS :: SoundID
insertOneS = SoundID 26
insertOneS = SoundID 27
bangEchoS :: SoundID
bangEchoS = SoundID 27
bangEchoS = SoundID 28
smallGlass3S :: SoundID
smallGlass3S = SoundID 28
smallGlass3S = SoundID 29
whiteNoiseFadeOutS :: SoundID
whiteNoiseFadeOutS = SoundID 29
whiteNoiseFadeOutS = SoundID 30
gut2S :: SoundID
gut2S = SoundID 30
gut2S = SoundID 31
teleS :: SoundID
teleS = SoundID 31
teleS = SoundID 32
blood5S :: SoundID
blood5S = SoundID 32
blood5S = SoundID 33
hitS :: SoundID
hitS = SoundID 33
hitS = SoundID 34
metal7S :: SoundID
metal7S = SoundID 34
metal7S = SoundID 35
stone1S :: SoundID
stone1S = SoundID 35
stone1S = SoundID 36
twoStep1S :: SoundID
twoStep1S = SoundID 36
twoStep1S = SoundID 37
wrench1S :: SoundID
wrench1S = SoundID 37
wrench1S = SoundID 38
seagullChatterS :: SoundID
seagullChatterS = SoundID 38
seagullChatterS = SoundID 39
blood4S :: SoundID
blood4S = SoundID 39
blood4S = SoundID 40
fireFadeS :: SoundID
fireFadeS = SoundID 40
fireFadeS = SoundID 41
foamSprayLoopS :: SoundID
foamSprayLoopS = SoundID 41
foamSprayLoopS = SoundID 42
explosionS :: SoundID
explosionS = SoundID 42
explosionS = SoundID 43
foamSprayFadeOutS :: SoundID
foamSprayFadeOutS = SoundID 43
foamSprayFadeOutS = SoundID 44
tap2S :: SoundID
tap2S = SoundID 44
tap2S = SoundID 45
tinitusS :: SoundID
tinitusS = SoundID 45
tinitusS = SoundID 46
seagullCry1S :: SoundID
seagullCry1S = SoundID 46
seagullCry1S = SoundID 47
seagullBarkS :: SoundID
seagullBarkS = SoundID 47
seagullBarkS = SoundID 48
stone3S :: SoundID
stone3S = SoundID 48
stone3S = SoundID 49
tingS :: SoundID
tingS = SoundID 50
seagullCry2S :: SoundID
seagullCry2S = SoundID 49
seagullCry2S = SoundID 51
hit1S :: SoundID
hit1S = SoundID 50
hit1S = SoundID 52
click1S :: SoundID
click1S = SoundID 51
click1S = SoundID 53
twoStepSlowS :: SoundID
twoStepSlowS = SoundID 52
twoStepSlowS = SoundID 54
seagullCryS :: SoundID
seagullCryS = SoundID 53
seagullCryS = SoundID 55
crankSlowS :: SoundID
crankSlowS = SoundID 54
crankSlowS = SoundID 56
primeS :: SoundID
primeS = SoundID 55
primeS = SoundID 57
twoStepS :: SoundID
twoStepS = SoundID 56
twoStepS = SoundID 58
reloadS :: SoundID
reloadS = SoundID 57
reloadS = SoundID 59
reload1S :: SoundID
reload1S = SoundID 58
reload1S = SoundID 60
slapS :: SoundID
slapS = SoundID 59
slapS = SoundID 61
tone440sawtoothS :: SoundID
tone440sawtoothS = SoundID 60
tone440sawtoothS = SoundID 62
metal3S :: SoundID
metal3S = SoundID 61
metal3S = SoundID 63
tap3S :: SoundID
tap3S = SoundID 62
tap3S = SoundID 64
glassShat4S :: SoundID
glassShat4S = SoundID 63
glassShat4S = SoundID 65
glassShat2S :: SoundID
glassShat2S = SoundID 64
glassShat2S = SoundID 66
metal1S :: SoundID
metal1S = SoundID 65
metal1S = SoundID 67
foot3S :: SoundID
foot3S = SoundID 66
foot3S = SoundID 68
pickUpS :: SoundID
pickUpS = SoundID 67
pickUpS = SoundID 69
stone5S :: SoundID
stone5S = SoundID 68
stone5S = SoundID 70
dededumS :: SoundID
dededumS = SoundID 69
dededumS = SoundID 71
tap1S :: SoundID
tap1S = SoundID 70
tap1S = SoundID 72
blood1S :: SoundID
blood1S = SoundID 71
blood1S = SoundID 73
metal4S :: SoundID
metal4S = SoundID 72
metal4S = SoundID 74
knifeS :: SoundID
knifeS = SoundID 73
knifeS = SoundID 75
computerBeepingS :: SoundID
computerBeepingS = SoundID 74
computerBeepingS = SoundID 76
tone440S :: SoundID
tone440S = SoundID 75
tone440S = SoundID 77
gut6S :: SoundID
gut6S = SoundID 76
gut6S = SoundID 78
smallGlass2S :: SoundID
smallGlass2S = SoundID 77
smallGlass2S = SoundID 79
glassShat1S :: SoundID
glassShat1S = SoundID 78
glassShat1S = SoundID 80
disconnectItemS :: SoundID
disconnectItemS = SoundID 79
disconnectItemS = SoundID 81
metal5S :: SoundID
metal5S = SoundID 80
metal5S = SoundID 82
seagullBarkTransformedS :: SoundID
seagullBarkTransformedS = SoundID 81
seagullBarkTransformedS = SoundID 83
ejectS :: SoundID
ejectS = SoundID 82
ejectS = SoundID 84
blood3S :: SoundID
blood3S = SoundID 83
blood3S = SoundID 85
stone2S :: SoundID
stone2S = SoundID 84
stone2S = SoundID 86
tone440raiseS :: SoundID
tone440raiseS = SoundID 85
tone440raiseS = SoundID 87
seagullChatter1S :: SoundID
seagullChatter1S = SoundID 86
seagullChatter1S = SoundID 88
bangS :: SoundID
bangS = SoundID 87
bangS = SoundID 89
slap1S :: SoundID
slap1S = SoundID 88
slap1S = SoundID 90
dedaS :: SoundID
dedaS = SoundID 89
dedaS = SoundID 91
missileLaunchS :: SoundID
missileLaunchS = SoundID 90
missileLaunchS = SoundID 92
gruntS :: SoundID
gruntS = SoundID 91
gruntS = SoundID 93
sineRaisePitchOneSecS :: SoundID
sineRaisePitchOneSecS = SoundID 92
sineRaisePitchOneSecS = SoundID 94
metal2S :: SoundID
metal2S = SoundID 93
metal2S = SoundID 95
gut5S :: SoundID
gut5S = SoundID 94
gut5S = SoundID 96
slideDoorS :: SoundID
slideDoorS = SoundID 95
slideDoorS = SoundID 97
metal6S :: SoundID
metal6S = SoundID 96
metal6S = SoundID 98
autoGunS :: SoundID
autoGunS = SoundID 97
autoGunS = SoundID 99
oldMachineBootS :: SoundID
oldMachineBootS = SoundID 98
oldMachineBootS = SoundID 100
blood6S :: SoundID
blood6S = SoundID 99
blood6S = SoundID 101
buzzS :: SoundID
buzzS = SoundID 100
buzzS = SoundID 102
fireLoudS :: SoundID
fireLoudS = SoundID 101
fireLoudS = SoundID 103
tap4S :: SoundID
tap4S = SoundID 102
tap4S = SoundID 104
shotgunS :: SoundID
shotgunS = SoundID 103
shotgunS = SoundID 105
sawtoothFailS :: SoundID
sawtoothFailS = SoundID 104
sawtoothFailS = SoundID 106
miniS :: SoundID
miniS = SoundID 105
miniS = SoundID 107
seagullWhistleS :: SoundID
seagullWhistleS = SoundID 106
seagullWhistleS = SoundID 108
connectItemS :: SoundID
connectItemS = SoundID 107
connectItemS = SoundID 109
whiteNoiseFadeInS :: SoundID
whiteNoiseFadeInS = SoundID 108
whiteNoiseFadeInS = SoundID 110
gut1S :: SoundID
gut1S = SoundID 109
gut1S = SoundID 111
+10 -5
View File
@@ -6,21 +6,26 @@ module Dodge.Wall.Damage (
damageWall,
) where
import Geometry.Vector
import Dodge.Material.Damage
import Dodge.Block
import Dodge.Data.World
import Dodge.Wall.DamageEffect
import LensHelp
-- maybeDestroyDoor should rather happen during the door mechanism update
damageWall :: Damage -> Wall -> World -> World
damageWall dt wl w = case _wlStructure wl of
MachinePart mcid -> w' & cWorld . lWorld . machines . ix mcid . mcDamage .:~ dt
BlockPart blid -> w' & cWorld . lWorld . blocks . ix blid . blHP -~ x & maybeDestroyBlock blid
DoorPart drid -> w' & cWorld . lWorld . doors . ix drid . drHP -~ x & maybeDestroyDoor drid
BlockPart blid ->
w' & cWorld . lWorld . blocks . ix blid . blHP -~ x
& maybeDestroyBlock blid
DoorPart drid ->
w' & cWorld . lWorld . doors . ix drid . drHP -~ x
& maybeDestroyDoor drid
_ -> w'
where
x = dt' ^. dmAmount
(w', dt') = damageWallEffect dt wl w
x = dt ^. dmAmount
w' = damageMaterial dt (_wlMaterial wl) (argV $ uncurry (-) (_wlLine wl)) w
-- block destruction is convoluted...
maybeDestroyBlock :: Int -> World -> World
-116
View File
@@ -1,116 +0,0 @@
{-# LANGUAGE TupleSections #-}
module Dodge.Wall.DamageEffect where
import Dodge.Base.Wall
import Dodge.Block
import Dodge.Data.World
import Dodge.Spark
import Dodge.Wall.Dust
import Geometry
import LensHelp
damageWallEffect :: Damage -> Wall -> World -> (World, Damage)
damageWallEffect dm wl = (,dm) . case _wlMaterial wl of
Stone -> stoneWallDamage dm wl
Glass -> glassWallDamage dm wl
Dirt -> dirtWallDamage dm wl
Crystal -> crystalWallDamage dm wl
Metal -> stoneWallDamage dm wl
Wood -> stoneWallDamage dm wl
Electronics -> stoneWallDamage dm wl
Flesh -> stoneWallDamage dm wl
-- there is quite a lot of duplication here, should be sorted out
stoneWallDamage :: Damage -> Wall -> World -> World
stoneWallDamage dm wl = case dm of
Piercing _ p t -> makeSpark NormalSpark (outTo p t)
(reflDirWall p (p+t) wl) . wlDustAt wl (outTo p t)
Lasering _ p t -> makeSpark FireSpark (outTo p t) (reflDirWall p (p+t) wl)
Blunt _ p t -> wlDustAt wl (outTo p t)
Shattering _ p t -> muchWlDustAt wl (outTo p t)
Crushing {} -> id
Explosive {} -> id
Sparking {} -> id
Flaming {} -> id
Electrical {} -> id
Poison {} -> id
Enterrement {} -> id
Flashing {} -> id
where
outTo x y = x -.- squashNormalizeV y
-- d = _dmAmount dm
-- sp = _dmFrom dm
-- p = _dmAt dm
-- outTo = p +.+ squashNormalizeV (sp -.- p)
glassWallDamage :: Damage -> Wall -> World -> World
glassWallDamage dm wl w =
w & case dm of
Lasering _ p t -> makeSpark FireSpark (outTo p t) (reflDirWall p (p+t) wl)
Piercing _ p t -> dosplint . makeSpark NormalSpark (outTo p t) (reflDirWall p (p+t) wl) . wlDustAt wl (outTo p t)
Blunt _ p t -> dosplint . wlDustAt wl (outTo p t)
Shattering _ p t -> dosplint . muchWlDustAt wl (outTo p t)
Crushing {} -> dosplint
Explosive {} -> dosplint
Sparking {} -> id
Flaming {} -> id
Electrical {} -> id
Poison {} -> id
Enterrement {} -> id
Flashing {} -> id
where
mbl = do
blid <- wl ^? wlStructure . wsBlock
w ^? cWorld . lWorld . blocks . ix blid
-- d :: Int
-- d = max 1 $ maybe 1 (subtract 1 . _blHP) mbl
dosplint = maybe id splinterBlock mbl
-- sp = _dmFrom dm
-- p = _dmAt dm
--outTo = p +.+ squashNormalizeV (sp -.- p)
outTo p t = p -.- squashNormalizeV t
crystalWallDamage :: Damage -> Wall -> World -> World
crystalWallDamage dm wl = case dm of
Lasering _ p t -> makeSpark FireSpark (outTo p t) (reflDirWall p (p+t) wl)
Piercing _ p t -> makeSpark NormalSpark (outTo p t) (reflDirWall p (p+t) wl) . wlDustAt wl (outTo p t)
Blunt _ p t -> wlDustAt wl (outTo p t)
Shattering _ p t -> muchWlDustAt wl (outTo p t)
Crushing {} -> id
Explosive {} -> id
Sparking {} -> id
Flaming {} -> id
Electrical {} -> id
Poison {} -> id
Enterrement {} -> id
Flashing {} -> id
where
-- a x f w = (f w)
--d = _dmAmount dm
--sp = _dmFrom dm
--p = _dmAt dm
--outTo = p +.+ squashNormalizeV (sp -.- p)
outTo p t = p -.- squashNormalizeV t
dirtWallDamage :: Damage -> Wall -> World -> World
dirtWallDamage dm wl = case dm of
Lasering _ p t -> wlDustAt wl (outTo p t)
Piercing _ p t -> wlDustAt wl (outTo p t)
Blunt _ p t -> wlDustAt wl (outTo p t)
Shattering _ p t -> muchWlDustAt wl (outTo p t)
Crushing _ _ -> id
Explosive _ _ -> id
Sparking {} -> id
Flaming {} -> id
Electrical {} -> id
Poison {} -> id
Enterrement {} -> id
Flashing {} -> id
where
--a x f w = (f w)
--d = _dmAmount dm
--sp = _dmFrom dm
--p = _dmAt dm
--outTo = p +.+ squashNormalizeV (sp -.- p)
outTo p t = p -.- squashNormalizeV t
-20
View File
@@ -1,20 +0,0 @@
module Dodge.WorldEvent.Damage (
damThingHitWith,
) where
import Dodge.Data.World
import Dodge.Wall.Damage
import Geometry
import LensHelp
damThingHitWith ::
(Point2 -> Point2 -> Point2 -> Damage) ->
Point2 ->
Point2 ->
Maybe (Point2, Either Creature Wall) ->
World ->
World
damThingHitWith partDT sp ep mayEiCrWl = case mayEiCrWl of
Just (hitp, Left cr) -> cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ partDT sp hitp ep
Just (hitp, Right wl) -> damageWall (partDT sp hitp ep) wl
Nothing -> id
+63 -63
View File
@@ -460,9 +460,10 @@ Damage src/Dodge/Data/Damage.hs 10;" m
Damage src/Dodge/Machine/Damage.hs 1;" m
Damage src/Dodge/Material/Damage.hs 1;" m
Damage src/Dodge/Wall/Damage.hs 4;" m
Damage src/Dodge/WorldEvent/Damage.hs 1;" m
Damage src/Dodge/WorldEvent/Damage.hs 2;" m
DamageCircle src/Dodge/DamageCircle.hs 1;" m
DamageEffect src/Dodge/Wall/DamageEffect.hs 2;" m
DamageHitSound src/Dodge/Data/SoundOrigin.hs 40;" C
DamageLaser src/Dodge/Data/Laser.hs 17;" C
DamageSensor src/Dodge/Data/Machine/Sensor.hs 20;" C
DamageType src/Dodge/Data/Damage/Type.hs 3;" t
@@ -2436,7 +2437,7 @@ _crMvAim src/Dodge/Data/Creature.hs 42;" f
_crMvDir src/Dodge/Data/Creature.hs 41;" f
_crName src/Dodge/Data/Creature.hs 60;" f
_crOldPos src/Dodge/Data/Creature.hs 39;" f
_crPastDamage src/Dodge/Data/Creature.hs 50;" f
_crPain src/Dodge/Data/Creature.hs 50;" f
_crPerception src/Dodge/Data/Creature.hs 53;" f
_crPos src/Dodge/Data/Creature.hs 38;" f
_crStance src/Dodge/Data/Creature.hs 51;" f
@@ -3381,14 +3382,14 @@ annoToRoomTree src/Dodge/Annotation.hs 17;" f
anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f
anythingHitCirc src/Dodge/Base/Collide.hs 247;" f
applyCME src/Dodge/HeldUse.hs 364;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 12;" f
applyCreatureDamage src/Dodge/Creature/Damage.hs 21;" 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 50;" f
applyInvLock src/Dodge/HeldUse.hs 423;" f
applyMagnetsToBul src/Dodge/Bullet.hs 30;" f
applyPastDamages src/Dodge/Creature/State.hs 131;" f
applyPiercingDamage src/Dodge/Creature/Damage.hs 52;" f
applyPiercingDamage src/Dodge/Creature/Damage.hs 55;" f
applyPosition src/Sound.hs 111;" f
applyRecoil src/Dodge/HeldUse.hs 455;" f
applyResFactor src/Dodge/Data/Config.hs 110;" f
@@ -3657,7 +3658,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 51;" f
collectDamageTypes src/Dodge/Damage.hs 53;" 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
@@ -3725,8 +3726,8 @@ crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 38;" f
crDisplayVigilance src/Dodge/Creature/Picture/Awareness.hs 52;" f
crHasTarget src/Dodge/Creature/Test.hs 63;" f
crHasTargetLOS src/Dodge/Creature/Test.hs 66;" f
crHit src/Dodge/WorldEvent/ThingsHit.hs 68;" f
crIXsNearCirc src/Dodge/Zoning/Creature.hs 35;" f
crHit src/Dodge/WorldEvent/ThingsHit.hs 64;" f
crIXsNearCirc src/Dodge/Zoning/Creature.hs 32;" f
crIXsNearPoint src/Dodge/Zoning/Creature.hs 14;" f
crInAimStance src/Dodge/Creature/Test.hs 92;" f
crIntelligence src/Dodge/Creature/Statistics.hs 34;" f
@@ -3754,7 +3755,7 @@ crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f
crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f
crVocalizationSound src/Dodge/Creature/Vocalization.hs 13;" f
crWarningSounds src/Dodge/Creature/Vocalization.hs 23;" f
crZoneSize src/Dodge/Zoning/Creature.hs 44;" f
crZoneSize src/Dodge/Zoning/Creature.hs 41;" f
craftInfo src/Dodge/Item/Info.hs 168;" f
craftItemSPic src/Dodge/Item/Draw/SPic.hs 57;" f
crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 451;" f
@@ -3779,20 +3780,20 @@ creatureTurnTo src/Dodge/Creature/Impulse/Movement.hs 52;" f
creatureTurnToward src/Dodge/Creature/Impulse/Movement.hs 73;" f
creatureTurnTowardDir src/Dodge/Creature/Impulse/Movement.hs 62;" f
critInDeadEnd src/Dodge/Room/Room.hs 232;" f
crixsNearSeg src/Dodge/Zoning/Creature.hs 30;" f
crixsNearSeg src/Dodge/Zoning/Creature.hs 29;" f
crossPic src/Dodge/Render/Label.hs 27;" f
crossProd src/Geometry/Vector3D.hs 41;" f
crossV src/Geometry/Vector.hs 178;" f
crsHit src/Dodge/WorldEvent/ThingsHit.hs 42;" f
crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 103;" f
crsHit src/Dodge/WorldEvent/ThingsHit.hs 38;" f
crsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 99;" f
crsItmsUnused src/Dodge/Room/Containing.hs 45;" f
crsNearCirc src/Dodge/Zoning/Creature.hs 38;" f
crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f
crsNearRect src/Dodge/Zoning/Creature.hs 41;" f
crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f
crsNearCirc src/Dodge/Zoning/Creature.hs 35;" f
crsNearPoint src/Dodge/Zoning/Creature.hs 17;" f
crsNearRect src/Dodge/Zoning/Creature.hs 38;" f
crsNearSeg src/Dodge/Zoning/Creature.hs 23;" f
crystalDebris src/Dodge/Block/Debris.hs 176;" f
crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f
crystalWallDamage src/Dodge/Wall/DamageEffect.hs 74;" f
crystalWallDamage src/Dodge/Wall/DamageEffect.hs 76;" f
cubeShape src/Dodge/Block/Debris.hs 196;" f
cullPoint src/Dodge/Render/ShapePicture.hs 68;" f
cullPretty src/AesonHelp.hs 14;" f
@@ -3818,27 +3819,27 @@ cylinderOnSeg src/Geometry.hs 122;" f
cylinderPoly src/Shape.hs 87;" f
cylinderRoundIndices src/Shader/Poke.hs 389;" f
dShadCol src/Dodge/Render/List.hs 215;" f
damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f
damThingHitWith src/Dodge/Damage.hs 72;" f
damToExpBarrel src/Dodge/Barreloid.hs 49;" f
damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f
damageBlocksBy src/Dodge/Wall/Damage.hs 42;" f
damageCircle src/Dodge/DamageCircle.hs 12;" f
damageCodeCommand src/Dodge/Terminal.hs 232;" f
damageCrCircle src/Dodge/DamageCircle.hs 33;" f
damageCrCircle src/Dodge/EnergyBall.hs 128;" f
damageCrWl src/Dodge/Damage.hs 28;" f
damageCrWlID src/Dodge/Damage.hs 22;" f
damageDirection src/Dodge/Damage.hs 33;" f
damageHP src/Dodge/Creature/Damage.hs 63;" f
damageInCircle src/Dodge/Damage.hs 59;" f
damageMaterial src/Dodge/Material/Damage.hs 7;" f
damageCrWl src/Dodge/Damage.hs 29;" f
damageCrWlID src/Dodge/Damage.hs 23;" f
damageDirection src/Dodge/Damage.hs 35;" f
damageFlesh src/Dodge/Material/Damage.hs 68;" f
damageHP src/Dodge/Creature/Damage.hs 66;" f
damageInCircle src/Dodge/Damage.hs 61;" f
damageMaterial src/Dodge/Material/Damage.hs 12;" f
damageMetal src/Dodge/Material/Damage.hs 50;" f
damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f
damageStone src/Dodge/Material/Damage.hs 20;" f
damageStone src/Dodge/Material/Damage.hs 27;" f
damageThingHit src/Dodge/Bullet.hs 176;" f
damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 45;" f
damageWall src/Dodge/Wall/Damage.hs 15;" f
damageWall src/Dodge/Wall/Damage.hs 17;" f
damageWallEffect src/Dodge/Wall/DamageEffect.hs 12;" f
damageWlCircle src/Dodge/DamageCircle.hs 26;" f
damageWlCircle src/Dodge/EnergyBall.hs 125;" f
dampField src/Dodge/Magnet.hs 8;" f
damsToExpBarrel src/Dodge/Barreloid.hs 46;" f
dark src/Color.hs 108;" f
@@ -3878,12 +3879,11 @@ dedaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 521;" f
dededaS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 351;" f
dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 481;" f
dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 343;" f
defDamageMaterial src/Dodge/Material/Damage.hs 17;" f
defDamageMaterial src/Dodge/Material/Damage.hs 24;" f
defLSPic src/Dodge/LightSource/Draw.hs 10;" f
defSPic src/Dodge/Item/Draw/SPic.hs 299;" f
defaultAimMvType src/Dodge/Creature/MoveType.hs 16;" f
defaultAimingCrit src/Dodge/Default/Creature.hs 105;" f
defaultApplyDamage src/Dodge/Creature/Damage.hs 18;" f
defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f
defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f
defaultAudition src/Dodge/Default/Creature.hs 90;" f
@@ -3975,7 +3975,7 @@ dim src/Color.hs 112;" f
dirtColor src/Dodge/Block/Debris.hs 160;" f
dirtDebris src/Dodge/Block/Debris.hs 154;" f
dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f
dirtWallDamage src/Dodge/Wall/DamageEffect.hs 96;" f
dirtWallDamage src/Dodge/Wall/DamageEffect.hs 98;" f
disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 501;" f
disconnectTerminal src/Dodge/Terminal.hs 217;" f
displayConfig src/Dodge/Menu.hs 213;" f
@@ -3993,7 +3993,7 @@ 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 36;" f
dmType src/Dodge/Damage.hs 38;" f
doAfterPlacement src/Dodge/Layout.hs 86;" f
doAfterPlacements src/Dodge/Layout.hs 83;" f
doAimTwist src/Dodge/Creature/YourControl.hs 140;" f
@@ -4150,7 +4150,7 @@ drawJumpDown src/Dodge/Render/Picture.hs 175;" f
drawLabCrossCol src/Dodge/Render/Label.hs 8;" f
drawLampCover src/Dodge/Prop/Draw.hs 47;" f
drawLaser src/Dodge/Laser/Draw.hs 6;" f
drawLaser src/Dodge/Laser/Update.hs 34;" f
drawLaser src/Dodge/Laser/Update.hs 31;" f
drawLightSource src/Dodge/LightSource/Draw.hs 7;" f
drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f
drawList src/Dodge/Render/List.hs 209;" f
@@ -4237,11 +4237,11 @@ dtToLRAdjEither src/Dodge/DoubleTree.hs 114;" f
dtToRootIntMap' src/Dodge/DoubleTree.hs 92;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 96;" f
dummyMenuOption src/Dodge/Menu/Option.hs 74;" f
ebColor src/Dodge/EnergyBall.hs 96;" f
ebDamage src/Dodge/EnergyBall.hs 104;" f
ebEffect src/Dodge/EnergyBall.hs 51;" f
ebFlicker src/Dodge/EnergyBall.hs 89;" f
ebtToDamage src/Dodge/EnergyBall.hs 117;" f
ebColor src/Dodge/EnergyBall.hs 94;" f
ebDamage src/Dodge/EnergyBall.hs 102;" f
ebEffect src/Dodge/EnergyBall.hs 49;" f
ebFlicker src/Dodge/EnergyBall.hs 87;" f
ebtToDamage src/Dodge/EnergyBall.hs 107;" f
edgeFormatting src/Dodge/Combine/Graph.hs 131;" f
edgeToPic src/Dodge/Debug/Picture.hs 431;" f
effectOnEquip src/Dodge/Equipment.hs 32;" f
@@ -4260,7 +4260,7 @@ encircleP src/Dodge/Creature/Boid.hs 28;" f
endArcPos src/Dodge/Tesla.hs 87;" f
endCombineRegex src/Dodge/Update/Input/InGame.hs 267;" f
endRegex src/Dodge/Update/Input/InGame.hs 254;" f
energyBallAt src/Dodge/EnergyBall.hs 66;" f
energyBallAt src/Dodge/EnergyBall.hs 64;" f
enterCombineInv src/Dodge/DisplayInventory.hs 323;" f
epText src/Dodge/Inventory/SelectionList.hs 75;" f
eqConstr src/SameConstr.hs 17;" f
@@ -4304,8 +4304,8 @@ extractRoomPos src/Dodge/RoomPos.hs 6;" f
faceEdges src/Polyhedra.hs 65;" f
facesToVF src/Polyhedra/Geodesic.hs 69;" f
fadeTLS src/Dodge/LightSource/Update.hs 14;" f
fallSmallBounce src/Dodge/Prop/Moving.hs 31;" f
fallSmallBounce' src/Dodge/Prop/Moving.hs 36;" f
fallMovement src/Dodge/Prop/Moving.hs 28;" f
fallSmallBounce src/Dodge/Prop/Moving.hs 25;" f
fallSmallBounceDamage src/Dodge/Prop/Moving.hs 12;" f
farWallDistDirection src/Dodge/Update/Camera.hs 233;" f
fdiv src/ShortShow.hs 26;" f
@@ -4330,7 +4330,7 @@ firstBreather src/Dodge/Room/Breather.hs 9;" f
firstWorldLoad appDodge/Main.hs 77;" f
fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f
fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f
flFlicker src/Dodge/Flame.hs 50;" f
flFlicker src/Dodge/Flame.hs 36;" f
flameMuzzles src/Dodge/HeldUse.hs 288;" f
flameShield src/Dodge/Item/Equipment.hs 33;" f
flameSize src/Dodge/Flame/Size.hs 5;" f
@@ -4470,7 +4470,7 @@ glassShat3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 353;" f
glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 469;" f
glassSwitchBack src/Dodge/Room/Room.hs 70;" f
glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f
glassWallDamage src/Dodge/Wall/DamageEffect.hs 47;" f
glassWallDamage src/Dodge/Wall/DamageEffect.hs 49;" f
glauncherPic src/Dodge/Item/Draw/SPic.hs 393;" f
glushortSize src/Shader/Parameters.hs 25;" f
goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f
@@ -4899,16 +4899,16 @@ makeDoorDebris src/Dodge/Block/Debris.hs 18;" f
makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f
makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 71;" f
makeFlak src/Dodge/Bullet.hs 141;" f
makeFlame src/Dodge/Flame.hs 57;" f
makeFlame src/Dodge/Flame.hs 43;" f
makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 54;" f
makeFlamelet src/Dodge/EnergyBall.hs 23;" f
makeFlamelet src/Dodge/EnergyBall.hs 21;" f
makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f
makeFlashBall src/Dodge/EnergyBall.hs 86;" f
makeFlashBall src/Dodge/EnergyBall.hs 84;" f
makeFragBullets src/Dodge/Bullet.hs 126;" f
makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 13;" f
makeGrid src/Grid.hs 46;" f
makeIntInterval src/Dodge/Zoning/Base.hs 35;" f
makeMovingEB src/Dodge/EnergyBall.hs 76;" f
makeMovingEB src/Dodge/EnergyBall.hs 74;" f
makeMuzzleFlare src/Dodge/HeldUse.hs 647;" f
makeParagraph src/Justify.hs 6;" f
makePathBetween src/Dodge/Path.hs 35;" f
@@ -4942,7 +4942,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 56;" f
maxDamageType src/Dodge/Damage.hs 58;" f
maxInvSlots src/Dodge/Inventory/CheckSlots.hs 27;" f
maxShowX src/Dodge/Combine/Graph.hs 50;" f
maxViewDistance src/Dodge/Viewpoints.hs 26;" f
@@ -4951,8 +4951,8 @@ maybeClearDoorPath src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f
maybeClearDoorPaths src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 68;" f
maybeClearPath src/Dodge/Block.hs 75;" f
maybeClearPaths src/Dodge/Block.hs 72;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f
maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f
maybeDestroyDoor src/Dodge/Wall/Damage.hs 37;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 536;" f
maybeOpenConsole src/Dodge/Update.hs 125;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
@@ -5008,7 +5008,7 @@ midPadL src/Padding.hs 33;" f
midPoint src/Geometry.hs 83;" f
midWall src/Dodge/Placement/Instance/Wall.hs 27;" f
minAndMax src/FoldableHelp.hs 109;" f
minCrIXOn src/Dodge/Zoning/Creature.hs 50;" f
minCrIXOn src/Dodge/Zoning/Creature.hs 47;" f
minOn src/FoldableHelp.hs 35;" f
mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 349;" f
miniGunCrit src/Dodge/Creature.hs 64;" f
@@ -5920,7 +5920,7 @@ stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 439;" f
stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 373;" f
stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 479;" f
stoneDebris src/Dodge/Block/Debris.hs 137;" f
stoneWallDamage src/Dodge/Wall/DamageEffect.hs 25;" f
stoneWallDamage src/Dodge/Wall/DamageEffect.hs 27;" f
stopAllSounds src/Sound.hs 125;" f
stopBulletAt src/Dodge/Bullet.hs 197;" f
stopPushing src/Dodge/Block.hs 107;" f
@@ -6014,10 +6014,10 @@ thickCircle src/Picture/Base.hs 272;" f
thickLine src/Picture/Base.hs 244;" f
thickLineCol src/Picture/Base.hs 255;" f
thinHighBar src/Dodge/Room/Foreground.hs 77;" f
thingHit src/Dodge/WorldEvent/ThingsHit.hs 65;" f
thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 53;" f
thingsHit src/Dodge/WorldEvent/ThingsHit.hs 29;" f
thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 73;" f
thingHit src/Dodge/WorldEvent/ThingsHit.hs 61;" f
thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 49;" f
thingsHit src/Dodge/WorldEvent/ThingsHit.hs 31;" f
thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 70;" f
threeLineDecoration src/Dodge/Placement/TopDecoration.hs 61;" f
throwItem src/Dodge/Creature/Action.hs 205;" f
tileTexCoords src/Tile.hs 11;" f
@@ -6203,7 +6203,7 @@ updateDelayedEvents src/Dodge/Update.hs 797;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 532;" f
updateEnergyBall src/Dodge/EnergyBall.hs 37;" f
updateEnergyBall src/Dodge/EnergyBall.hs 35;" f
updateEnergyBalls src/Dodge/Update.hs 597;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 480;" f
updateExpBarrel src/Dodge/Barreloid.hs 20;" f
@@ -6228,7 +6228,7 @@ updateItemWithOrientation src/Dodge/Creature/State.hs 271;" 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
updateLaser src/Dodge/Laser/Update.hs 14;" f
updateLaser src/Dodge/Laser/Update.hs 13;" f
updateLasers src/Dodge/Update.hs 433;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 413;" f
@@ -6412,8 +6412,8 @@ wlOpaqueDraw src/Dodge/Render/Walls.hs 45;" f
wlSeeThroughDraw src/Dodge/Render/Walls.hs 48;" f
wlZoneSize src/Dodge/Zoning/Wall.hs 52;" f
wlsFromIXs src/Dodge/Zoning/Wall.hs 35;" f
wlsHit src/Dodge/WorldEvent/ThingsHit.hs 88;" f
wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 96;" f
wlsHit src/Dodge/WorldEvent/ThingsHit.hs 84;" f
wlsHitRadial src/Dodge/WorldEvent/ThingsHit.hs 92;" f
wlsNearCirc src/Dodge/Zoning/Wall.hs 49;" f
wlsNearPoint src/Dodge/Zoning/Wall.hs 39;" f
wlsNearRect src/Dodge/Zoning/Wall.hs 46;" f
@@ -6457,13 +6457,13 @@ zipCount src/Dodge/Tree/Shift.hs 129;" f
zipCountDown src/Dodge/Room/Procedural.hs 118;" f
zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f
zoneClouds src/Dodge/Update.hs 440;" f
zoneCreature src/Dodge/Zoning/Creature.hs 57;" f
zoneCreature src/Dodge/Zoning/Creature.hs 54;" f
zoneCreatures src/Dodge/Update.hs 482;" f
zoneExtract src/Dodge/Zoning/Base.hs 52;" f
zoneMonoid src/Dodge/Zoning/Base.hs 83;" f
zoneOfCirc src/Dodge/Zoning/Base.hs 24;" f
zoneOfCl src/Dodge/Zoning/Cloud.hs 24;" f
zoneOfCr src/Dodge/Zoning/Creature.hs 47;" f
zoneOfCr src/Dodge/Zoning/Creature.hs 44;" f
zoneOfPe src/Dodge/Zoning/Pathing.hs 49;" f
zoneOfPn src/Dodge/Zoning/Pathing.hs 27;" f
zoneOfPoint src/Dodge/Zoning/Base.hs 44;" f