Hack together correct positioning of grenades from attached items

This commit is contained in:
2025-06-28 22:32:12 +01:00
parent 6af2a8cc36
commit d88aed10c7
12 changed files with 225 additions and 178 deletions
+5 -5
View File
@@ -25,7 +25,7 @@ useItem invid pt w = fmap (worldEventFlags . at InventoryChange ?~ ()) $ do
useItemLoc cr usedloc pt w useItemLoc cr usedloc pt w
useItemLoc :: Creature -> useItemLoc :: Creature ->
LocationLDT ItemLink CItem -> LocationLDT ItemLink OItem ->
PressType -> PressType ->
World -> World ->
Maybe World Maybe World
@@ -33,13 +33,13 @@ useItemLoc cr loc pt w
| HeldPlatformSF <- sf | HeldPlatformSF <- sf
, fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsRoot , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsRoot
, Aiming {} <- cr ^. crStance . posture = , Aiming {} <- cr ^. crStance . posture =
return $ heldEffect pt (bimap id (^. _1) ldt) cr w return $ heldEffect pt (bimap id id ldt) cr w
| GadgetPlatformSF <- sf = | GadgetPlatformSF <- sf =
return $ gadgetEffect pt loc cr w return $ gadgetEffect pt loc cr w
| UnderBarrelPlatformSF <- sf | UnderBarrelPlatformSF <- sf
, fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsAttached , fromMaybe False $ loc ^? locLDT . ldtValue . _1 . itLocation . ilIsAttached
, Aiming {} <- cr ^. crStance . posture = , Aiming {} <- cr ^. crStance . posture =
return $ heldEffect pt (bimap id (^. _1) ldt) cr w return $ heldEffect pt (bimap id id ldt) cr w
| RemoteDetonatorSF <- sf | RemoteDetonatorSF <- sf
, pt == InitialPress = , pt == InitialPress =
return $ activateDetonator ldt w return $ activateDetonator ldt w
@@ -62,7 +62,7 @@ useItemLoc cr loc pt w
ldt = loc ^. locLDT ldt = loc ^. locLDT
itm = ldt ^. ldtValue . _1 itm = ldt ^. ldtValue . _1
useLocation :: LocationLDT ItemLink CItem -> LocationLDT ItemLink CItem useLocation :: LocationLDT ItemLink OItem -> LocationLDT ItemLink OItem
useLocation loc useLocation loc
| isJust $ loc ^? locLDT . ldtValue . _1 . itType . ibtEquip = loc | isJust $ loc ^? locLDT . ldtValue . _1 . itType . ibtEquip = loc
| isJust $ loc ^? locLDT . ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 = | isJust $ loc ^? locLDT . ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 =
@@ -80,7 +80,7 @@ structureUseAtLoc = \case
MapperSF -> True MapperSF -> True
_ -> False _ -> False
activateDetonator :: LDTree ItemLink CItem -> World -> World activateDetonator :: LDTree ItemLink OItem -> World -> World
activateDetonator det = fromMaybe id $ do activateDetonator det = fromMaybe id $ do
pjid <- det ^? ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0 pjid <- det ^? ldtValue . _1 . itUse . uaParams . apProjectiles . ix 0
return $ cWorld . lWorld . projectiles . ix pjid . pjTimer .~ 0 return $ cWorld . lWorld . projectiles . ix pjid . pjTimer .~ 0
+7 -7
View File
@@ -151,9 +151,9 @@ invRootItemEffs cr =
appEndo $ appEndo $
foldMap foldMap
(reduceLocLDT (Endo . invItemLocUpdate cr) . LocLDT TopLDT) (reduceLocLDT (Endo . invItemLocUpdate cr) . LocLDT TopLDT)
(invLDT (_crInv cr)) (invLDT' (_crInv cr))
invItemLocUpdate :: Creature -> LocationLDT ItemLink CItem -> World -> World invItemLocUpdate :: Creature -> LocationLDT ItemLink OItem -> World -> World
invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of invItemLocUpdate cr loc w = doAnyEquipmentEffect loc cr $ case itm ^. itType of
ATTACH BULLETSYNTH -> trySynthBullet loc w ATTACH BULLETSYNTH -> trySynthBullet loc w
EQUIP WRIST_ECG | haspulse -> tryUseParent loc w EQUIP WRIST_ECG | haspulse -> tryUseParent loc w
@@ -208,21 +208,21 @@ copierItemUpdate itm cr w = fromMaybe w $ do
v <- getItemValue itm' w cr v <- getItemValue itm' w cr
return $ w & pointerToItem itm . itUse . uValue .~ v return $ w & pointerToItem itm . itUse . uValue .~ v
doAnyEquipmentEffect :: LocationLDT ItemLink CItem -> Creature -> World -> World doAnyEquipmentEffect :: LocationLDT ItemLink OItem -> Creature -> World -> World
doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipSite . _Just of doAnyEquipmentEffect loc cr = case itm ^? itLocation . ilEquipSite . _Just of
Just _ -> equipBackgroundEffect loc cr Just _ -> equipBackgroundEffect loc cr
_ -> id _ -> id
where where
itm = loc ^. locLDT . ldtValue . _1 itm = loc ^. locLDT . ldtValue . _1
tryUseParent :: LocationLDT ItemLink CItem -> World -> World tryUseParent :: LocationLDT ItemLink OItem -> World -> World
tryUseParent loc w = fromMaybe w $ do tryUseParent loc w = fromMaybe w $ do
t <- locUp loc t <- locUp loc
let t' = bimap id (^. _1) $ t ^. locLDT let t' = bimap id id $ t ^. locLDT
cr <- w ^? cWorld . lWorld . creatures . ix 0 cr <- w ^? cWorld . lWorld . creatures . ix 0
return $ heldEffectNoHammerCheck t' cr w return $ heldEffectNoHammerCheck t' cr w
trySynthBullet :: LocationLDT ItemLink CItem -> World -> World trySynthBullet :: LocationLDT ItemLink OItem -> World -> World
trySynthBullet loc w = fromMaybe w $ do trySynthBullet loc w = fromMaybe w $ do
i <- itm ^? itLocation . ilInvID i <- itm ^? itLocation . ilInvID
x <- itm ^? itUse . uaParams . apInt x <- itm ^? itUse . uaParams . apInt
@@ -278,7 +278,7 @@ trySynthBullet loc w = fromMaybe w $ do
updateHeldRootItem :: Creature -> World -> World updateHeldRootItem :: Creature -> World -> World
updateHeldRootItem cr = fromMaybe id $ do updateHeldRootItem cr = fromMaybe id $ do
invid <- cr ^? crManipulation . manObject . imRootSelectedItem invid <- cr ^? crManipulation . manObject . imRootSelectedItem
itmtree <- invRootTrees (_crInv cr) ^? ix invid itmtree <- invRootTrees' (_crInv cr) ^? ix invid
return $ updateAttachedItems itmtree cr return $ updateAttachedItems itmtree cr
updateAttachedItems :: LDTree ItemLink CItem -> Creature -> World -> World updateAttachedItems :: LDTree ItemLink CItem -> Creature -> World -> World
+1 -1
View File
@@ -95,7 +95,7 @@ crInAimStance as cr = crIsAiming cr && mitstance == Just as
where where
mitstance = do mitstance = do
i <- cr ^? crManipulation . manObject . imRootSelectedItem i <- cr ^? crManipulation . manObject . imRootSelectedItem
itm <- invRootTrees (cr ^. crInv) ^? ix i itm <- invRootTrees' (cr ^. crInv) ^? ix i
return $ aimStance itm return $ aimStance itm
--cr ^? crInv . ix i . itUse . heldAim . aimStance --cr ^? crInv . ix i . itUse . heldAim . aimStance
+1 -1
View File
@@ -162,7 +162,7 @@ updateDisplaySections w cfig =
invitems = invitems =
IM.map IM.map
(uncurry (invSelectionItem w)) (uncurry (invSelectionItem w))
(allInvLocs $ _crInv cr) (allInvLocs' $ _crInv cr)
filterSectionsPair :: filterSectionsPair ::
Bool -> -- check for whether filter is in focus, changes string at the end Bool -> -- check for whether filter is in focus, changes string at the end
+1 -1
View File
@@ -12,7 +12,7 @@ import Dodge.Wall.Move
import Geometry import Geometry
import LensHelp import LensHelp
equipBackgroundEffect :: LocationLDT ItemLink CItem -> Creature -> World -> World equipBackgroundEffect :: LocationLDT ItemLink OItem -> Creature -> World -> World
equipBackgroundEffect loc cr = case eo of equipBackgroundEffect loc cr = case eo of
EQUIP (MAGSHIELD mt) -> useMagShield mt itm cr EQUIP (MAGSHIELD mt) -> useMagShield mt itm cr
EQUIP WRISTARMOUR -> setWristShieldPos itm cr EQUIP WRISTARMOUR -> setWristShieldPos itm cr
+77 -76
View File
@@ -46,12 +46,12 @@ import RandomHelp
import qualified SDL import qualified SDL
import Sound.Data import Sound.Data
gadgetEffect :: PressType -> LocationLDT ItemLink CItem -> Creature -> World -> World gadgetEffect :: PressType -> LocationLDT ItemLink OItem -> Creature -> World -> World
gadgetEffect pt loc gadgetEffect pt loc
| UseHeld{} <- loc ^. locLDT . ldtValue . _1 . itUse = | UseHeld{} <- loc ^. locLDT . ldtValue . _1 . itUse =
heldEffect heldEffect
pt pt
(bimap id (^. _1) (loc ^. locLDT)) (loc ^. locLDT)
| DROPPER x <- loc ^. locLDT . ldtValue . _1 . itType | DROPPER x <- loc ^. locLDT . ldtValue . _1 . itType
, Just i <- loc ^? locLDT . ldtValue . _1 . itUse . uInt , Just i <- loc ^? locLDT . ldtValue . _1 . itUse . uInt
, pt == InitialPress = , pt == InitialPress =
@@ -61,46 +61,46 @@ gadgetEffect pt loc
useInventoryPath pt i x loc useInventoryPath pt i x loc
| otherwise = const id | otherwise = const id
heldEffect :: PressType -> LDTree ItemLink Item -> Creature -> World -> World heldEffect :: PressType -> LDTree ItemLink OItem -> Creature -> World -> World
heldEffect = useTimeCheck . hammerCheck heldEffectMuzzles heldEffect = useTimeCheck . hammerCheck heldEffectMuzzles
heldEffectNoHammerCheck :: LDTree ItemLink Item -> Creature -> World -> World heldEffectNoHammerCheck :: LDTree ItemLink OItem -> Creature -> World -> World
heldEffectNoHammerCheck = useTimeCheck heldEffectMuzzles heldEffectNoHammerCheck = useTimeCheck heldEffectMuzzles
type ChainEffect = type ChainEffect =
(LDTree ItemLink Item -> Creature -> World -> World) -> (LDTree ItemLink OItem -> Creature -> World -> World) ->
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Creature -> Creature ->
World -> World ->
World World
hammerCheck :: hammerCheck ::
(LDTree ItemLink Item -> Creature -> World -> World) -> (LDTree ItemLink OItem -> Creature -> World -> World) ->
PressType -> PressType ->
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Creature -> Creature ->
World -> World ->
World World
hammerCheck f pt it cr w hammerCheck f pt it cr w
| BurstTrigger is <- itemTriggerType (it ^. ldtValue) | BurstTrigger is <- itemTriggerType (it ^. ldtValue . _1)
, pt == InitialPress = , pt == InitialPress =
w & f it cr & cWorld . lWorld . delayedEvents .++~ map g is w & f it cr & cWorld . lWorld . delayedEvents .++~ map g is
| BurstTrigger{} <- itemTriggerType (it ^. ldtValue) = w | BurstTrigger{} <- itemTriggerType (it ^. ldtValue . _1) = w
| VolleyGunTrigger i <- itemTriggerType (it ^. ldtValue) | VolleyGunTrigger i <- itemTriggerType (it ^. ldtValue . _1)
, pt == InitialPress = , pt == InitialPress =
let (is, gen) = getVolleyBurst i (w ^. randGen) let (is, gen) = getVolleyBurst i (w ^. randGen)
in w & f it cr in w & f it cr
& cWorld . lWorld . delayedEvents .++~ map g is & cWorld . lWorld . delayedEvents .++~ map g is
& randGen .~ gen & randGen .~ gen
| VolleyGunTrigger{} <- itemTriggerType (it ^. ldtValue) = w | VolleyGunTrigger{} <- itemTriggerType (it ^. ldtValue . _1) = w
| t <- itemTriggerType (it ^. ldtValue) | t <- itemTriggerType (it ^. ldtValue . _1)
, t == HammerTrigger || t == AlwaysSingleTrigger , t == HammerTrigger || t == AlwaysSingleTrigger
, isNothing $ lookup MakeAutoLink (it ^. ldtRight) , isNothing $ lookup MakeAutoLink (it ^. ldtRight)
, pt /= InitialPress = , pt /= InitialPress =
w w
| otherwise = f it cr w | otherwise = f it cr w
where where
g x = (x, WdWdBurstFireRepetition (_crID cr) (it ^?! ldtValue . itLocation . ilInvID)) g x = (x, WdWdBurstFireRepetition (_crID cr) (it ^?! ldtValue . _1 . itLocation . ilInvID))
getVolleyBurst :: (Random a, RandomGen b, Num a) => Int -> b -> ([a], b) getVolleyBurst :: (Random a, RandomGen b, Num a) => Int -> b -> ([a], b)
getVolleyBurst i g = getVolleyBurst i g =
@@ -111,50 +111,50 @@ getVolleyBurst i g =
input buffering? input buffering?
-} -}
useTimeCheck :: ChainEffect useTimeCheck :: ChainEffect
useTimeCheck f item cr w = case useDelay $ item ^. ldtValue of useTimeCheck f item cr w = case useDelay $ item ^. ldtValue . _1 of
FixedRate rate FixedRate rate
| w ^. cWorld . lWorld . lClock - rate > lastused -> f item cr w | w ^. cWorld . lWorld . lClock - rate > lastused -> f item cr w
-- note that the time last used must be updated later in the chain! -- note that the time last used must be updated later in the chain!
FixedRate{} -> w FixedRate{} -> w
WarmUpNoDelay wm WarmUpNoDelay wm
| _wTime (_itParams $ _ldtValue item) < wm -> | _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < wm ->
w & setwarming w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . itType) (Just 2) & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . _1 . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1 & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpNoDelay{} -> f item cr w & setwarming WarmUpNoDelay{} -> f item cr w & setwarming
WarmUpCoolDown ws _ _ WarmUpCoolDown ws _ _
| _wTime (_itParams $ _ldtValue item) < ws -> | _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < ws ->
w & setwarming w & setwarming
& soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . itType) (Just 2) & soundContinue (CrWeaponSound cid 0) (_crPos cr) (warmupSound $ item ^. ldtValue . _1 . itType) (Just 2)
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1 & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpCoolDown _ cs _ WarmUpCoolDown _ cs _
| _wTime (_itParams $ _ldtValue item) < cs -> | _wTime (_itParams $ _ldtValue $ fmap (^. _1) item) < cs ->
f item cr w & setwarming f item cr w & setwarming
& cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1 & cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . wTime +~ 1
WarmUpCoolDown{} -> w & setwarming WarmUpCoolDown{} -> w & setwarming
NoDelay -> f item cr w NoDelay -> f item cr w
where where
lastused = item ^. ldtValue . itTimeLastUsed lastused = item ^. ldtValue . _1 . itTimeLastUsed
cid = _crID cr cid = _crID cr
setwarming = setwarming =
cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . isWarming cWorld . lWorld . creatures . ix cid . crInv . ix itRef . itParams . isWarming
%~ const True %~ const True
-- the following is unsafe, but if ilInvID isn't correctly set we probably -- the following is unsafe, but if ilInvID isn't correctly set we probably
-- will have problems elsewhere also -- will have problems elsewhere also
itRef = item ^?! ldtValue . itLocation . ilInvID itRef = item ^?! ldtValue . _1 . itLocation . ilInvID
heldEffectMuzzles :: LDTree ItemLink Item -> Creature -> World -> World heldEffectMuzzles :: LDTree ItemLink OItem -> Creature -> World -> World
heldEffectMuzzles t cr w = heldEffectMuzzles t cr w =
setusetime . doHeldUseEffect t cr setusetime . doHeldUseEffect t cr
. uncurry (applyCME (_ldtValue t) cr) . uncurry (applyCME (_ldtValue t ^. _1) cr)
. foldl' (useLoadedAmmo t cr) (False, w) . foldl' (useLoadedAmmo t cr) (False, w)
$ loadedmuzzles $ loadedmuzzles
where where
(_, loadedmuzzles) = mapAccumR loadMuzzle t . itemMuzzles $ t ^. ldtValue (_, loadedmuzzles) = mapAccumR loadMuzzle t . itemMuzzles $ t ^. ldtValue . _1
setusetime = setusetime =
cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itid . itTimeLastUsed cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itid . itTimeLastUsed
.~ w ^. cWorld . lWorld . lClock .~ w ^. cWorld . lWorld . lClock
itid = t ^?! ldtValue . itLocation . ilInvID itid = t ^?! ldtValue . _1 . itLocation . ilInvID
itemMuzzles :: Item -> [Muzzle] itemMuzzles :: Item -> [Muzzle]
itemMuzzles itm = case itm ^. itType of itemMuzzles itm = case itm ^. itType of
@@ -337,8 +337,8 @@ vgunMuzzles i =
-- <*> ZipList [0 .. i -1] -- <*> ZipList [0 .. i -1]
) )
doHeldUseEffect :: LDTree ItemLink Item -> Creature -> World -> World doHeldUseEffect :: LDTree ItemLink OItem -> Creature -> World -> World
doHeldUseEffect t cr w = case t ^. ldtValue . itType of doHeldUseEffect t cr w = case t ^. ldtValue . _1 . itType of
HELD (VOLLEYGUN j) -> case itm ^? itParams . unfiredBarrels of HELD (VOLLEYGUN j) -> case itm ^? itParams . unfiredBarrels of
Just [_] -> fromMaybe w $ do Just [_] -> fromMaybe w $ do
let (is, g) = runState (shuffle [0 .. j -1]) $ w ^. randGen let (is, g) = runState (shuffle [0 .. j -1]) $ w ^. randGen
@@ -360,7 +360,7 @@ doHeldUseEffect t cr w = case t ^. ldtValue . itType of
%~ tail %~ tail
_ -> w _ -> w
HELD ALTERIFLE -> fromMaybe w $ do HELD ALTERIFLE -> fromMaybe w $ do
i <- t ^? ldtValue . itLocation . ilInvID i <- t ^? ldtValue . _1 . itLocation . ilInvID
return $ return $
w w
& cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix i
@@ -373,7 +373,7 @@ doHeldUseEffect t cr w = case t ^. ldtValue . itType of
%~ ((`mod` 2) . (+ 1)) %~ ((`mod` 2) . (+ 1))
_ -> w _ -> w
where where
itm = t ^. ldtValue itm = t ^. ldtValue . _1
--doHeldUseEffect t cr w = case t ^? ldtValue . itUse . heldUseEffect of --doHeldUseEffect t cr w = case t ^? ldtValue . itUse . heldUseEffect of
-- Just (RandomiseMuzzleFrames x) -> fromMaybe w $ do -- Just (RandomiseMuzzleFrames x) -> fromMaybe w $ do
@@ -678,15 +678,15 @@ heldTorqueAmount = \case
-- (Muzzle,Int,Int) = (muzzle, amountloaded, id of mag taken from) -- (Muzzle,Int,Int) = (muzzle, amountloaded, id of mag taken from)
loadMuzzle :: loadMuzzle ::
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Muzzle -> Muzzle ->
(LDTree ItemLink Item, Maybe (Muzzle, Int, LDTree ItemLink Item)) (LDTree ItemLink OItem, Maybe (Muzzle, Int, LDTree ItemLink OItem))
loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do
-- guard $ mz ^? mzFrame == t ^? ldtValue . itUse . heldFrame -- guard $ mz ^? mzFrame == t ^? ldtValue . itUse . heldFrame
let as = _mzAmmoSlot mz let as = _mzAmmoSlot mz
amamount = _mzAmmoPerShot mz amamount = _mzAmmoPerShot mz
(i, (_, mag)) <- findWithIx (isAmmoIntLink as . fst) l (i, (_, mag)) <- findWithIx (isAmmoIntLink as . fst) l
availableammo <- mag ^. ldtValue . itConsumables availableammo <- mag ^. ldtValue . _1 . itConsumables
let usedammo = case amamount of let usedammo = case amamount of
UseUpTo x -> min x availableammo UseUpTo x -> min x availableammo
UseExactly x UseExactly x
@@ -694,11 +694,11 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t, Nothing) $ do
| otherwise -> 0 | otherwise -> 0
guard $ usedammo > 0 guard $ usedammo > 0
return return
( t & ldtLeft . ix i . _2 . ldtValue . itConsumables . _Just -~ usedammo ( t & ldtLeft . ix i . _2 . ldtValue . _1 . itConsumables . _Just -~ usedammo
, Just (mz, usedammo, mag) , Just (mz, usedammo, mag)
) )
makeMuzzleFlare :: Muzzle -> LDTree ItemLink Item -> Creature -> World -> World makeMuzzleFlare :: Muzzle -> LDTree ItemLink OItem -> Creature -> World -> World
makeMuzzleFlare mz itmtree cr = case mz ^. mzFlareType of makeMuzzleFlare mz itmtree cr = case mz ^. mzFlareType of
NoFlare -> id NoFlare -> id
BasicFlare -> basicMuzFlare pos dir BasicFlare -> basicMuzFlare pos dir
@@ -708,14 +708,14 @@ makeMuzzleFlare mz itmtree cr = case mz ^. mzFlareType of
. muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir . muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir
HeavySmokeFlare -> basicMuzFlare pos dir HeavySmokeFlare -> basicMuzFlare pos dir
LasGunFlare -> LasGunFlare ->
flareCircleAt (getLaserColor itmtree) 0.8 (pos `v2z` 20) flareCircleAt (getLaserColor $ fmap (^. _1) itmtree) 0.8 (pos `v2z` 20)
. ( cWorld . lWorld . lights . ( cWorld . lWorld . lights
.:~ LSParam (pos `v2z` 10) 100 (xyzV4 $ getLaserColor itmtree) .:~ LSParam (pos `v2z` 10) 100 (xyzV4 $ getLaserColor $ fmap (^. _1)itmtree)
) )
TeslaGunFlare -> cWorld . lWorld . lights .:~ LSParam (pos `v2z` 10) 100 (V3 0 0 1) TeslaGunFlare -> cWorld . lWorld . lights .:~ LSParam (pos `v2z` 10) 100 (V3 0 0 1)
where where
itm = itmtree ^. ldtValue itm = itmtree ^. ldtValue
(moff, mrot) = heldItemOrient2D itm cr (_mzPos mz) (_mzRot mz) (moff, mrot) = heldItemOrient2D' itm cr (_mzPos mz) (_mzRot mz)
pos = _crPos cr + rotateV (_crDir cr) moff pos = _crPos cr + rotateV (_crDir cr) moff
dir = _crDir cr + mrot dir = _crDir cr + mrot
oddcheck f w oddcheck f w
@@ -768,10 +768,10 @@ isAmmoIntLink i (AmmoInLink j _) = i == j
isAmmoIntLink _ _ = False isAmmoIntLink _ _ = False
useLoadedAmmo :: useLoadedAmmo ::
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Creature -> Creature ->
(Bool, World) -> (Bool, World) ->
Maybe (Muzzle, Int, LDTree ItemLink Item) -> Maybe (Muzzle, Int, LDTree ItemLink OItem) ->
(Bool, World) (Bool, World)
useLoadedAmmo _ _ (cme, w) Nothing = (cme, w) useLoadedAmmo _ _ (cme, w) Nothing = (cme, w)
useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $ useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $
@@ -783,29 +783,29 @@ useLoadedAmmo itmtree cr (_, w) (Just (mz, x, magtree)) = (,) True $
MuzzleRLauncher -> createProjectileR itmtree magtree mz cr w MuzzleRLauncher -> createProjectileR itmtree magtree mz cr w
MuzzleGLauncher -> MuzzleGLauncher ->
createProjectile createProjectile
(0, Q.qID) (itmtree ^. ldtValue . _3)
(Grenade (getGrenadeHitEffect itmtree)) (Grenade (getGrenadeHitEffect $ fmap (^. _1) itmtree))
magtree magtree
(getPJStabiliser itmtree) (getPJStabiliser $ fmap (^. _1) itmtree)
mz mz
cr cr
w w
MuzzleNozzle{} -> useGasParams mid mz itm cr $ walkNozzle mz itm cr w MuzzleNozzle{} -> useGasParams mid mz (itm ^. _1) cr $ walkNozzle mz (itm ^. _1) cr w
MuzzleShatter -> shootShatter itm cr w MuzzleShatter -> shootShatter (itm ^. _1) cr w
MuzzleDetector -> MuzzleDetector ->
itemDetectorEffect itemDetectorEffect
itm (itm ^. _1)
(getAttachedSFLink MapperSF itmtree) (getAttachedSFLink MapperSF $ fmap (^. _1) itmtree)
(getAttachedSFLink ARHUDSF itmtree) (getAttachedSFLink ARHUDSF $ fmap (^. _1) itmtree)
cr cr
w w
MuzzleBlink -> unsafeBlinkAction cr w MuzzleBlink -> unsafeBlinkAction cr w
MuzzleUnsafeBlink -> blinkActionMousePos cr w MuzzleUnsafeBlink -> blinkActionMousePos cr w
MuzzleRewind -> useRewindGun (itm ^. itID) w MuzzleRewind -> useRewindGun (itm ^. _1 . itID) w
MuzzleStopper -> useStopWatch itm cr w MuzzleStopper -> useStopWatch (itm ^. _1) cr w
MuzzleScroller -> useTimeScrollGun itm cr w MuzzleScroller -> useTimeScrollGun (itm ^. _1) cr w
where where
mid = magtree ^? ldtValue . itLocation . ilInvID mid = magtree ^? ldtValue . _1 . itLocation . ilInvID
itm = itmtree ^. ldtValue itm = itmtree ^. ldtValue
getAttachedSFLink :: getAttachedSFLink ::
@@ -871,7 +871,7 @@ tractorBeamAt pos outpos dir power =
d = unitVectorAtAngle dir * power d = unitVectorAtAngle dir * power
creatureShootLaser :: creatureShootLaser ::
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Creature -> Creature ->
Muzzle -> Muzzle ->
World -> World ->
@@ -881,14 +881,15 @@ creatureShootLaser itmtree cr mz w =
& randGen .~ g & randGen .~ g
& shootLaser & shootLaser
(CrWeaponSound (_crID cr) 0) (CrWeaponSound (_crID cr) 0)
(getLaserDamage itmtree) (getLaserDamage istree)
(getLaserPhaseV itmtree) (getLaserPhaseV istree)
pos pos
dir dir
(getLaserColor itmtree) (getLaserColor istree)
where where
istree = fmap (\(x,_,_) -> x) itmtree
itm = itmtree ^. ldtValue itm = itmtree ^. ldtValue
(moff, mrot) = heldItemOrient2D itm cr (_mzPos mz) (_mzRot mz) (moff, mrot) = heldItemOrient2D' itm cr (_mzPos mz) (_mzRot mz)
pos = _crPos cr + rotateV (_crDir cr) moff pos = _crPos cr + rotateV (_crDir cr) moff
dir = _crDir cr + mrot + a dir = _crDir cr + mrot + a
(a, g) = randomR (- inacc, inacc) $ _randGen w (a, g) = randomR (- inacc, inacc) $ _randGen w
@@ -981,14 +982,14 @@ magAmmoParams itm = case itm ^. itType of
-- _ -> 0 -- _ -> 0
shootBullet :: shootBullet ::
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Creature -> Creature ->
(Muzzle, Int, LDTree ItemLink Item) -> (Muzzle, Int, LDTree ItemLink OItem) ->
World -> World ->
World World
shootBullet itmtree cr (mz, x, magtree) w = fromMaybe w $ do shootBullet itmtree cr (mz, x, magtree) w = fromMaybe w $ do
thebullet <- getBulletType magtree thebullet <- getBulletType $ fmap (^. _1) magtree
return $ foldl' (&) w (replicate x (makeBullet' thebullet (itmtree ^. ldtValue) cr mz)) return $ foldl' (&) w (replicate x (makeBullet' thebullet (itmtree ^. ldtValue . _1) cr mz))
makeBullet' :: Bullet -> Item -> Creature -> Muzzle -> World -> World makeBullet' :: Bullet -> Item -> Creature -> Muzzle -> World -> World
makeBullet' bu itm cr mz w = makeBullet bu itm bulpos dir . (randGen .~ g) $ w makeBullet' bu itm cr mz w = makeBullet bu itm bulpos dir . (randGen .~ g) $ w
@@ -1255,15 +1256,15 @@ mcShootAuto itm mc w
dir = mc ^?! mcType . _McTurret . tuDir dir = mc ^?! mcType . _McTurret . tuDir
-- | assumes that the item is held -- | assumes that the item is held
shootTeslaArc :: Item -> Creature -> Muzzle -> World -> World shootTeslaArc :: OItem -> Creature -> Muzzle -> World -> World
shootTeslaArc itm cr mz w = shootTeslaArc itm cr mz w =
w' & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef . itParams .~ ip w' & cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix itRef . itParams .~ ip
& soundContinue (CrWeaponSound (_crID cr) 0) pos elecCrackleS (Just 2) & soundContinue (CrWeaponSound (_crID cr) 0) pos elecCrackleS (Just 2)
where where
-- use items item location instead -- use items item location instead
itRef = cr ^?! crManipulation . manObject . imRootSelectedItem -- unsafe!! TODO change itRef = cr ^?! crManipulation . manObject . imRootSelectedItem -- unsafe!! TODO change
(w', ip) = makeTeslaArc (_itParams itm) pos dir w (w', ip) = makeTeslaArc (_itParams (itm ^. _1)) pos dir w
(moff, mrot) = heldItemOrient2D itm cr (_mzPos mz) (_mzRot mz) (moff, mrot) = heldItemOrient2D' itm cr (_mzPos mz) (_mzRot mz)
pos = _crPos cr + rotateV (_crDir cr) moff pos = _crPos cr + rotateV (_crDir cr) moff
dir = _crDir cr + mrot dir = _crDir cr + mrot
@@ -1282,21 +1283,21 @@ determineProjectileTracking magtree itmtree =
return $ HomeUsingTargeting (targetingtree ^. ldtValue . itID) return $ HomeUsingTargeting (targetingtree ^. ldtValue . itID)
createProjectileR :: createProjectileR ::
LDTree ItemLink Item -> LDTree ItemLink OItem ->
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Muzzle -> Muzzle ->
Creature -> Creature ->
World -> World ->
World World
createProjectileR itmtree magtree = createProjectileR itmtree magtree =
createProjectile createProjectile
(0, Q.qID) (itmtree ^. ldtValue . _3)
( Rocket ( Rocket
(determineProjectileTracking magtree itmtree) (determineProjectileTracking (fmap (^. _1) magtree) $ fmap (^. _1) itmtree)
smoke smoke
) )
magtree magtree
(getPJStabiliser itmtree) (getPJStabiliser $ fmap (^. _1) itmtree)
where where
smoke smoke
| isJust $ lookup SmokeReducerLink (magtree ^. ldtLeft) = Just ReducedRocketSmoke | isJust $ lookup SmokeReducerLink (magtree ^. ldtLeft) = Just ReducedRocketSmoke
@@ -1320,23 +1321,23 @@ getGrenadeHitEffect t = case lookup GrenadeHitEffectLink (t ^. ldtRight) of
createProjectile :: createProjectile ::
(Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float) ->
ProjectileType -> ProjectileType ->
LDTree ItemLink Item -> LDTree ItemLink OItem ->
Maybe PJStabiliser -> Maybe PJStabiliser ->
Muzzle -> Muzzle ->
Creature -> Creature ->
World -> World ->
World World
createProjectile x pjtype magtree stab muz cr = fromMaybe failsound $ do createProjectile x pjtype magtree stab muz cr = fromMaybe failsound $ do
magid <- magtree ^? ldtValue . itLocation . ilInvID magid <- magtree ^? ldtValue . _1 . itLocation . ilInvID
ammoitem <- cr ^? crInv . ix magid ammoitem <- cr ^? crInv . ix magid
let rdetonate = let rdetonate =
(^. ldtValue . itID) (^. ldtValue . _1 . itID)
<$> lookup RemoteDetonatorLink (magtree ^. ldtLeft) <$> lookup RemoteDetonatorLink (magtree ^. ldtLeft)
rscreen = rscreen =
(^. ldtValue . itID) (^. ldtValue . _1 . itID)
<$> lookup RemoteScreenLink (magtree ^. ldtLeft) <$> lookup RemoteScreenLink (magtree ^. ldtLeft)
aparams <- aparams <-
((magtree ^? ldtLeft) >>= lookup AmmoPayloadLink >>= (^? ldtValue . itType . ibtAttach . shellPayload)) ((magtree ^? ldtLeft) >>= lookup AmmoPayloadLink >>= (^? ldtValue . _1 . itType . ibtAttach . shellPayload))
-- <|> ammoitem ^? itConsumables . magParams . ampPayload -- <|> ammoitem ^? itConsumables . magParams . ampPayload
<|> magAmmoParams ammoitem ^? _Just . ampPayload <|> magAmmoParams ammoitem ^? _Just . ampPayload
return $ return $
@@ -1400,7 +1401,7 @@ useRewindGun i =
dropInventoryPath :: dropInventoryPath ::
Int -> Int ->
InventoryPathing -> InventoryPathing ->
LocationLDT ItemLink CItem -> LocationLDT ItemLink OItem ->
Creature -> Creature ->
World -> World ->
World World
@@ -1432,7 +1433,7 @@ useInventoryPath ::
PressType -> PressType ->
Int -> Int ->
InventoryPathing -> InventoryPathing ->
LocationLDT ItemLink CItem -> LocationLDT ItemLink OItem ->
Creature -> Creature ->
World -> World ->
World World
+37 -3
View File
@@ -1,12 +1,16 @@
module Dodge.Item.Grammar ( module Dodge.Item.Grammar (
invLDT, invLDT,
invLDT',
invAdj, invAdj,
invRootMap, invRootMap,
invRootTrees, invRootTrees,
invRootTrees',
baseCI, baseCI,
allInvLocs, allInvLocs,
allInvLocs',
) where ) where
import Dodge.Item.Orientation
import Dodge.ItemUseCondition import Dodge.ItemUseCondition
import Dodge.Data.UseCondition import Dodge.Data.UseCondition
import Dodge.Item.MagAmmoType import Dodge.Item.MagAmmoType
@@ -218,6 +222,9 @@ invLDT =
joinItemsInList tryAttachItems . IM.elems joinItemsInList tryAttachItems . IM.elems
. fmap (singleLDT . baseCI) . fmap (singleLDT . baseCI)
invLDT' :: IM.IntMap Item -> [LDTree ItemLink OItem]
invLDT' = fmap propagateOrientation . invLDT
-- this assumes the creature inventory is well formed, specifically the -- this assumes the creature inventory is well formed, specifically the
-- location ids -- location ids
-- consider explicitly reseting the inventory ids (but this probably really -- consider explicitly reseting the inventory ids (but this probably really
@@ -243,15 +250,42 @@ invAdj = IM.unions . map g . invLDT
$ itm ^? itLocation . ilInvID $ itm ^? itLocation . ilInvID
-- returns an intmap with trees for (only!) root items, indexed by inventory position -- returns an intmap with trees for (only!) root items, indexed by inventory position
invRootTrees :: IM.IntMap Item -> IM.IntMap (LDTree ItemLink CItem) invRootTrees :: IM.IntMap Item -> IM.IntMap (LDTree ItemLink OItem)
invRootTrees = IM.fromDistinctAscList . reverse . map getid . invLDT invRootTrees = fmap propagateOrientation . IM.fromDistinctAscList . reverse . map getid . invLDT
where
getid :: LDTree ItemLink CItem -> (Int, LDTree ItemLink CItem)
getid t = (t ^?! ldtValue . _1 . itLocation . ilInvID, t)
invRootTrees' :: IM.IntMap Item -> IM.IntMap (LDTree ItemLink CItem)
invRootTrees' = IM.fromDistinctAscList . reverse . map getid . invLDT
where where
getid :: LDTree ItemLink CItem -> (Int, LDTree ItemLink CItem) getid :: LDTree ItemLink CItem -> (Int, LDTree ItemLink CItem)
getid t = (t ^?! ldtValue . _1 . itLocation . ilInvID, t) getid t = (t ^?! ldtValue . _1 . itLocation . ilInvID, t)
-- returns an intmap with indents and locations for all items -- returns an intmap with indents and locations for all items
allInvLocs :: IM.IntMap Item -> IM.IntMap (Int, LocationLDT ItemLink CItem) allInvLocs :: IM.IntMap Item -> IM.IntMap (Int, LocationLDT ItemLink OItem)
allInvLocs inv = foldMap (f . LocLDT TopLDT) (IM.elems (invRootTrees inv)) mempty allInvLocs inv = foldMap (f . LocLDT TopLDT) (IM.elems (invRootTrees inv)) mempty
where
f t = cldtPropagateFold h h g 0 t id
h x _ _ _ = x + 1
g ::
Int ->
LocationLDT ItemLink OItem ->
( IM.IntMap (Int, LocationLDT ItemLink OItem) ->
IM.IntMap (Int, LocationLDT ItemLink OItem)
) ->
IM.IntMap (Int, LocationLDT ItemLink OItem) ->
IM.IntMap (Int, LocationLDT ItemLink OItem)
g x ldt =
(.)
( IM.insert
(ldt ^?! locLDT . ldtValue . _1 . itLocation . ilInvID)
(x, ldt)
)
-- returns an intmap with indents and locations for all items
allInvLocs' :: IM.IntMap Item -> IM.IntMap (Int, LocationLDT ItemLink CItem)
allInvLocs' inv = foldMap (f . LocLDT TopLDT) (IM.elems (invRootTrees' inv)) mempty
where where
f t = cldtPropagateFold h h g 0 t id f t = cldtPropagateFold h h g 0 t id
h x _ _ _ = x + 1 h x _ _ _ = x + 1
+6
View File
@@ -5,6 +5,7 @@ module Dodge.Item.HeldOffset (
heldItemOffset, heldItemOffset,
heldItemRelativeOrient, heldItemRelativeOrient,
heldItemOrient2D, heldItemOrient2D,
heldItemOrient2D',
itemRelativeOrient, itemRelativeOrient,
) where ) where
@@ -36,6 +37,11 @@ heldItemOrient2D itm cr p a = (V2 x y, argV . Q.qToV2 $ q )
where where
(V3 x y _,q) = heldItemRelativeOrient itm cr (p `v2z` 0, Q.axisAngle (V3 0 0 1) a) (V3 x y _,q) = heldItemRelativeOrient itm cr (p `v2z` 0, Q.axisAngle (V3 0 0 1) a)
heldItemOrient2D' :: OItem -> Creature -> Point2 -> Float -> (Point2, Float)
heldItemOrient2D' (itm,_,(p1,q1)) cr p a = (V2 x y, argV . Q.qToV2 $ q )
where
(V3 x y _,q) = heldItemRelativeOrient itm cr (p1 + Q.rotate q1 (p `v2z` 0), q1 * Q.axisAngle (V3 0 0 1) a)
heldItemRelativeOrient heldItemRelativeOrient
:: Item -> Creature -> (Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float) :: Item -> Creature -> (Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float)
heldItemRelativeOrient itm cr (p,q) heldItemRelativeOrient itm cr (p,q)
+4 -3
View File
@@ -18,8 +18,10 @@ orientChild itm = case _itType itm of
HELD TORCH -> (V3 0 5 0, Q.qID) HELD TORCH -> (V3 0 5 0, Q.qID)
--HELD LASER -> (V3 15 (-5) 0, Q.qID) --HELD LASER -> (V3 15 (-5) 0, Q.qID)
HELD LASER -> (V3 15 (-5) 0, Q.qID) HELD LASER -> (V3 15 (-5) 0, Q.qID)
ATTACH UNDERBARRELSLOT -> (V3 10 (-8) 0, Q.qID) ATTACH UNDERBARRELSLOT -> (V3 10 (-8) 0, r)
_ -> (0, Q.qID) _ -> (0, Q.qID)
where
r = Q.axisAngle (V3 0 0 1) (-pi/4)
orientByLink :: Item -> ItemLink -> (Point3, Q.Quaternion Float) orientByLink :: Item -> ItemLink -> (Point3, Q.Quaternion Float)
orientByLink itm lt = case (_itType itm, lt) of orientByLink itm lt = case (_itType itm, lt) of
@@ -58,8 +60,7 @@ orientLocation x loc (p1, q1) = (p + Q.rotate q p1, q * q1)
where where
(p, q) = orientLocation' x loc (p, q) = orientLocation' x loc
propagateOrientation :: LDTree ItemLink CItem propagateOrientation :: LDTree ItemLink CItem -> LDTree ItemLink OItem
-> LDTree ItemLink OItem
propagateOrientation = ldtStartPropagate g f propagateOrientation = ldtStartPropagate g f
where where
g (x,y) = (x,y,(V3 0 0 0,Q.qID)) g (x,y) = (x,y,(V3 0 0 0,Q.qID))
+5 -3
View File
@@ -21,6 +21,7 @@ data PJStabiliser
| StabSpinIncrease | StabSpinIncrease
-- assumes the mscreen is in your inventory -- assumes the mscreen is in your inventory
-- TODO take into account creature aimstance positioning
createShell :: createShell ::
(Point3, Q.Quaternion Float) -> (Point3, Q.Quaternion Float) ->
Maybe (NewInt ItmInt) -> Maybe (NewInt ItmInt) ->
@@ -41,9 +42,9 @@ createShell (p,q) mdetonator mscreen stab pjtype payload muz cr w =
{ _pjPos = pos { _pjPos = pos
, _pjZ = 20 , _pjZ = 20
, _pjZVel = 5 , _pjZVel = 5
, _pjVel = rotateV dir (V2 speed 0) + crvelcomponent , _pjVel = rotateV dir' (V2 speed 0) + crvelcomponent
, _pjID = i , _pjID = i
, _pjDir = dir , _pjDir = dir'
, _pjSpin = 0 , _pjSpin = 0
, _pjSpinFactor = spinfactor , _pjSpinFactor = spinfactor
, _pjPayload = payload , _pjPayload = payload
@@ -93,4 +94,5 @@ createShell (p,q) mdetonator mscreen stab pjtype payload muz cr w =
.:~ i .:~ i
i = IM.newKey $ w ^. cWorld . lWorld . projectiles i = IM.newKey $ w ^. cWorld . lWorld . projectiles
dir = _crDir cr + _mzRot muz dir = _crDir cr + _mzRot muz
pos = _crPos cr + xyV3 p + rotateV dir (_mzPos muz) pos = _crPos cr + rotateV dir (xyV3 p + rotateV (argV (Q.qToV2 q)) (_mzPos muz))
dir' = dir + argV (Q.qToV2 q)
+1 -1
View File
@@ -45,7 +45,7 @@ doWdWd we = case we of
UseInvItem invid pt -> \w -> fromMaybe w (useItem invid pt w) UseInvItem invid pt -> \w -> fromMaybe w (useItem invid pt w)
WdWdBurstFireRepetition cid invid -> \w -> fromMaybe w $ do WdWdBurstFireRepetition cid invid -> \w -> fromMaybe w $ do
cr <- w ^? cWorld . lWorld . creatures . ix cid cr <- w ^? cWorld . lWorld . creatures . ix cid
itree <- bimap id (^. _1) <$> itree <- bimap id id <$>
allInvLocs (cr ^. crInv) ^? ix invid . _2 . locLDT allInvLocs (cr ^. crInv) ^? ix invid . _2 . locLDT
return $ heldEffectMuzzles itree cr w return $ heldEffectMuzzles itree cr w
+80 -77
View File
@@ -29,7 +29,7 @@ APNothing src/Dodge/Data/Item/Use.hs 48;" C
APProjectiles src/Dodge/Data/Item/Use.hs 46;" C APProjectiles src/Dodge/Data/Item/Use.hs 46;" C
AQUAMARINE src/Color/Data.hs 24;" C AQUAMARINE src/Color/Data.hs 24;" C
ARHUD src/Dodge/Data/Item/Combine.hs 35;" C ARHUD src/Dodge/Data/Item/Combine.hs 35;" C
ARHUDSF src/Dodge/Data/ComposedItem.hs 46;" C ARHUDSF src/Dodge/Data/ComposedItem.hs 48;" C
ATTACH src/Dodge/Data/Item/Combine.hs 20;" C ATTACH src/Dodge/Data/Item/Combine.hs 20;" C
AUTOAMR src/Dodge/Data/Item/Combine.hs 159;" C AUTOAMR src/Dodge/Data/Item/Combine.hs 159;" C
AUTOPISTOL src/Dodge/Data/Item/Combine.hs 145;" C AUTOPISTOL src/Dodge/Data/Item/Combine.hs 145;" C
@@ -58,20 +58,20 @@ AlwaysSingleTrigger src/Dodge/Data/TriggerType.hs 13;" C
Ambush src/Dodge/Data/ActionPlan.hs 178;" C Ambush src/Dodge/Data/ActionPlan.hs 178;" C
Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 3;" m Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 3;" m
Ammo src/Dodge/Item/Ammo.hs 1;" m Ammo src/Dodge/Item/Ammo.hs 1;" m
AmmoEffectLink src/Dodge/Data/ComposedItem.hs 18;" C AmmoEffectLink src/Dodge/Data/ComposedItem.hs 20;" C
AmmoEffectSF src/Dodge/Data/ComposedItem.hs 56;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 58;" C
AmmoInLink src/Dodge/Data/ComposedItem.hs 13;" C AmmoInLink src/Dodge/Data/ComposedItem.hs 15;" C
AmmoMagSF src/Dodge/Data/ComposedItem.hs 47;" C AmmoMagSF src/Dodge/Data/ComposedItem.hs 49;" C
AmmoMagType src/Dodge/Data/Item/Combine.hs 105;" t AmmoMagType src/Dodge/Data/Item/Combine.hs 105;" t
AmmoModLink src/Dodge/Data/ComposedItem.hs 15;" C AmmoModLink src/Dodge/Data/ComposedItem.hs 17;" C
AmmoModifierSF src/Dodge/Data/ComposedItem.hs 53;" C AmmoModifierSF src/Dodge/Data/ComposedItem.hs 55;" C
AmmoParams src/Dodge/Data/Item/Use.hs 51;" t AmmoParams src/Dodge/Data/Item/Use.hs 51;" t
AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 17;" C AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 19;" C
AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 55;" C AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 57;" C
AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t AmmoPerShot src/Dodge/Data/Muzzle.hs 52;" t
AmmoSlots src/Dodge/Item/AmmoSlots.hs 3;" m AmmoSlots src/Dodge/Item/AmmoSlots.hs 3;" m
AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 16;" C AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 18;" C
AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 54;" C AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 56;" C
AmmoType src/Dodge/Data/AmmoType.hs 3;" m AmmoType src/Dodge/Data/AmmoType.hs 3;" m
AnRoom src/Dodge/Annotation/Data.hs 18;" C AnRoom src/Dodge/Annotation/Data.hs 18;" C
AnTree src/Dodge/Annotation/Data.hs 19;" C AnTree src/Dodge/Annotation/Data.hs 19;" C
@@ -250,7 +250,7 @@ CHARTREUSE src/Color/Data.hs 25;" C
CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 111;" C CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 111;" C
CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C
CIRCLE src/Dodge/Data/GenParams.hs 20;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C
CItem src/Dodge/Data/ComposedItem.hs 65;" t CItem src/Dodge/Data/ComposedItem.hs 67;" t
CLICKER src/Dodge/Data/Item/Combine.hs 28;" C CLICKER src/Dodge/Data/Item/Combine.hs 28;" C
CME src/Dodge/Data/MuzzleEffect.hs 14;" C CME src/Dodge/Data/MuzzleEffect.hs 14;" C
COPIER src/Dodge/Data/Item/Combine.hs 29;" C COPIER src/Dodge/Data/Item/Combine.hs 29;" C
@@ -629,7 +629,7 @@ Equipment src/Dodge/Default/Item/Use/Equipment.hs 1;" m
Equipment src/Dodge/Equipment.hs 1;" m Equipment src/Dodge/Equipment.hs 1;" m
Equipment src/Dodge/Item/Equipment.hs 1;" m Equipment src/Dodge/Item/Equipment.hs 1;" m
EquipmentAllocation src/Dodge/Data/RightButtonOptions.hs 18;" t EquipmentAllocation src/Dodge/Data/RightButtonOptions.hs 18;" t
EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 40;" C EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 42;" C
Escape src/Dodge/Data/Scenario.hs 10;" C Escape src/Dodge/Data/Scenario.hs 10;" C
EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t
Essential src/Shape/Data.hs 34;" C Essential src/Shape/Data.hs 34;" C
@@ -728,8 +728,8 @@ FullRes src/Dodge/Data/Config.hs 97;" C
FullShadowFidelity src/Shape/Data.hs 24;" C FullShadowFidelity src/Shape/Data.hs 24;" C
FullSize src/Dodge/Data/Item/Params.hs 28;" C FullSize src/Dodge/Data/Item/Params.hs 28;" C
FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C
FunctionChangeLink src/Dodge/Data/ComposedItem.hs 26;" C FunctionChangeLink src/Dodge/Data/ComposedItem.hs 28;" C
FunctionChangeSF src/Dodge/Data/ComposedItem.hs 57;" C FunctionChangeSF src/Dodge/Data/ComposedItem.hs 59;" C
GBounce src/Dodge/Data/Projectile.hs 57;" C GBounce src/Dodge/Data/Projectile.hs 57;" C
GEqC src/SameConstr.hs 20;" c GEqC src/SameConstr.hs 20;" c
GIMBAL src/Dodge/Data/Item/Combine.hs 96;" C GIMBAL src/Dodge/Data/Item/Combine.hs 96;" C
@@ -742,7 +742,7 @@ GStick src/Dodge/Data/Projectile.hs 58;" C
GStuckCreature src/Dodge/Data/Projectile.hs 59;" C GStuckCreature src/Dodge/Data/Projectile.hs 59;" C
GStuckWall src/Dodge/Data/Projectile.hs 60;" C GStuckWall src/Dodge/Data/Projectile.hs 60;" C
GYROSCOPE src/Dodge/Data/Item/Combine.hs 97;" C GYROSCOPE src/Dodge/Data/Item/Combine.hs 97;" C
GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 43;" C
GameOverOptions src/Dodge/Data/Universe.hs 72;" C GameOverOptions src/Dodge/Data/Universe.hs 72;" C
GameRoom src/Dodge/GameRoom.hs 15;" t GameRoom src/Dodge/GameRoom.hs 15;" t
GameRoom src/Dodge/GameRoom.hs 8;" m GameRoom src/Dodge/GameRoom.hs 8;" m
@@ -787,8 +787,8 @@ GraphHelp src/GraphHelp.hs 1;" m
GraphVizHelp src/GraphVizHelp.hs 2;" m GraphVizHelp src/GraphVizHelp.hs 2;" m
Grenade src/Dodge/Data/Projectile.hs 42;" C Grenade src/Dodge/Data/Projectile.hs 42;" C
GrenadeHitEffect src/Dodge/Data/Projectile.hs 56;" t GrenadeHitEffect src/Dodge/Data/Projectile.hs 56;" t
GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 31;" C GrenadeHitEffectLink src/Dodge/Data/ComposedItem.hs 33;" C
GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 60;" C GrenadeHitEffectSF src/Dodge/Data/ComposedItem.hs 62;" C
Grid src/Grid.hs 1;" m Grid src/Grid.hs 1;" m
Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 13;" t
Gust src/Dodge/Data/Gust.hs 6;" m Gust src/Dodge/Data/Gust.hs 6;" m
@@ -823,7 +823,7 @@ Held src/Dodge/Item/Held.hs 1;" m
HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m
HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t HeldItemType src/Dodge/Data/Item/Combine.hs 138;" t
HeldOffset src/Dodge/Item/HeldOffset.hs 2;" m HeldOffset src/Dodge/Item/HeldOffset.hs 2;" m
HeldPlatformSF src/Dodge/Data/ComposedItem.hs 37;" C HeldPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C
HeldScroll src/Dodge/HeldScroll.hs 1;" m HeldScroll src/Dodge/HeldScroll.hs 1;" m
HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m HeldUse src/Dodge/Data/Item/HeldUse.hs 6;" m
HeldUse src/Dodge/HeldUse.hs 5;" m HeldUse src/Dodge/HeldUse.hs 5;" m
@@ -911,7 +911,7 @@ Intention src/Dodge/Data/Creature.hs 66;" t
Intention src/Dodge/Creature/Intention.hs 1;" m Intention src/Dodge/Creature/Intention.hs 1;" m
Intersect src/Geometry/Intersect.hs 5;" m Intersect src/Geometry/Intersect.hs 5;" m
IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
IntroScanSF src/Dodge/Data/ComposedItem.hs 44;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 46;" C
IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t
InvInt src/Dodge/Data/Item/Location.hs 19;" t InvInt src/Dodge/Data/Item/Location.hs 19;" t
InvSize src/Dodge/Item/InvSize.hs 2;" m InvSize src/Dodge/Item/InvSize.hs 2;" m
@@ -944,7 +944,7 @@ ItemCancelExamineInventory src/Dodge/Data/Item/Effect.hs 31;" C
ItemClust src/Dodge/Combine/Graph.hs 21;" C ItemClust src/Dodge/Combine/Graph.hs 21;" C
ItemCopierUpdate src/Dodge/Data/Item/Effect.hs 32;" C ItemCopierUpdate src/Dodge/Data/Item/Effect.hs 32;" C
ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t
ItemLink src/Dodge/Data/ComposedItem.hs 12;" t ItemLink src/Dodge/Data/ComposedItem.hs 14;" t
ItemLocation src/Dodge/Data/Item/Location.hs 28;" t ItemLocation src/Dodge/Data/Item/Location.hs 28;" t
ItemParamID src/Dodge/Data/Item/Params.hs 26;" C ItemParamID src/Dodge/Data/Item/Params.hs 26;" C
ItemParams src/Dodge/Data/Item/Params.hs 14;" t ItemParams src/Dodge/Data/Item/Params.hs 14;" t
@@ -955,7 +955,7 @@ ItemScrollInt src/Dodge/Data/Item.hs 53;" C
ItemScrollIntRange src/Dodge/Data/Item.hs 54;" C ItemScrollIntRange src/Dodge/Data/Item.hs 54;" C
ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C
ItemSetWarmTime src/Dodge/Data/Item/Effect.hs 34;" C ItemSetWarmTime src/Dodge/Data/Item/Effect.hs 34;" C
ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 35;" t ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 37;" t
ItemTargeting src/Dodge/Data/Item.hs 56;" t ItemTargeting src/Dodge/Data/Item.hs 56;" t
ItemType src/Dodge/Data/Item/Combine.hs 16;" t ItemType src/Dodge/Data/Item/Combine.hs 16;" t
ItemUse src/Dodge/Data/Item/Use.hs 30;" t ItemUse src/Dodge/Data/Item/Use.hs 30;" t
@@ -969,8 +969,8 @@ JGK src/Control/Foldl/JGK.hs 1;" m
JOYSTICK src/Dodge/Data/Item/Combine.hs 95;" C JOYSTICK src/Dodge/Data/Item/Combine.hs 95;" C
JUMPLEGS src/Dodge/Data/Item/Combine.hs 130;" C JUMPLEGS src/Dodge/Data/Item/Combine.hs 130;" C
JoinClust src/Dodge/Combine/Graph.hs 22;" C JoinClust src/Dodge/Combine/Graph.hs 22;" C
JoystickLink src/Dodge/Data/ComposedItem.hs 21;" C JoystickLink src/Dodge/Data/ComposedItem.hs 23;" C
JoystickSF src/Dodge/Data/ComposedItem.hs 49;" C JoystickSF src/Dodge/Data/ComposedItem.hs 51;" C
Just' src/MaybeHelp.hs 13;" C Just' src/MaybeHelp.hs 13;" C
JustStartedPlaying src/Sound/Data.hs 24;" C JustStartedPlaying src/Sound/Data.hs 24;" C
Justify src/Justify.hs 1;" m Justify src/Justify.hs 1;" m
@@ -979,7 +979,7 @@ Kill src/Dodge/Data/ActionPlan.hs 198;" C
LASER src/Dodge/Data/Item/Combine.hs 168;" C LASER src/Dodge/Data/Item/Combine.hs 168;" C
LDT src/Dodge/Data/DoubleTree.hs 34;" C LDT src/Dodge/Data/DoubleTree.hs 34;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 29;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 29;" C
LDTComb src/Dodge/Item/Grammar.hs 162;" t LDTComb src/Dodge/Item/Grammar.hs 164;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 27;" C LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 28;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 28;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 25;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 25;" C
@@ -1130,8 +1130,8 @@ MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t
MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C
Main appDodge/Main.hs 1;" m Main appDodge/Main.hs 1;" m
Make src/Dodge/Corpse/Make.hs 1;" m Make src/Dodge/Corpse/Make.hs 1;" m
MakeAutoLink src/Dodge/Data/ComposedItem.hs 27;" C MakeAutoLink src/Dodge/Data/ComposedItem.hs 29;" C
MakeAutoSF src/Dodge/Data/ComposedItem.hs 58;" C MakeAutoSF src/Dodge/Data/ComposedItem.hs 60;" C
MakeSound src/Dodge/Data/ActionPlan.hs 43;" C MakeSound src/Dodge/Data/ActionPlan.hs 43;" C
MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 29;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 29;" C
MakeTempLight src/Dodge/Data/WorldEffect.hs 33;" C MakeTempLight src/Dodge/Data/WorldEffect.hs 33;" C
@@ -1139,7 +1139,7 @@ ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 20;" t
Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 14;" t
Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" C
MapperInventory src/Dodge/Data/HUD.hs 31;" C MapperInventory src/Dodge/Data/HUD.hs 31;" C
MapperSF src/Dodge/Data/ComposedItem.hs 62;" C MapperSF src/Dodge/Data/ComposedItem.hs 64;" C
Mass src/Dodge/Creature/Mass.hs 2;" m Mass src/Dodge/Creature/Mass.hs 2;" m
Material src/Dodge/Data/Material.hs 11;" t Material src/Dodge/Data/Material.hs 11;" t
Material src/Dodge/Creature/Material.hs 3;" m Material src/Dodge/Creature/Material.hs 3;" m
@@ -1288,7 +1288,7 @@ NoParams src/Dodge/Data/Item/Params.hs 15;" C
NoResurrection src/Dodge/Data/Corpse.hs 14;" C NoResurrection src/Dodge/Data/Corpse.hs 14;" C
NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C
NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C
NoSF src/Dodge/Data/ComposedItem.hs 52;" C NoSF src/Dodge/Data/ComposedItem.hs 54;" C
NoShadowFidelity src/Shape/Data.hs 25;" C NoShadowFidelity src/Shape/Data.hs 25;" C
NoShadows src/Dodge/Data/Config.hs 103;" C NoShadows src/Dodge/Data/Config.hs 103;" C
NoSubInventory src/Dodge/Data/HUD.hs 29;" C NoSubInventory src/Dodge/Data/HUD.hs 29;" C
@@ -1335,6 +1335,7 @@ NumShadowCasters6 src/Dodge/Data/Config.hs 21;" C
NumShadowCasters7 src/Dodge/Data/Config.hs 22;" C NumShadowCasters7 src/Dodge/Data/Config.hs 22;" C
NumShadowCasters8 src/Dodge/Data/Config.hs 23;" C NumShadowCasters8 src/Dodge/Data/Config.hs 23;" C
NumShadowCasters9 src/Dodge/Data/Config.hs 24;" C NumShadowCasters9 src/Dodge/Data/Config.hs 24;" C
OItem src/Dodge/Data/ComposedItem.hs 69;" t
ORANGE src/Color/Data.hs 26;" C ORANGE src/Color/Data.hs 26;" C
ObButton src/Dodge/Data/ObjectType.hs 17;" C ObButton src/Dodge/Data/ObjectType.hs 17;" C
ObCreature src/Dodge/Data/ObjectType.hs 13;" C ObCreature src/Dodge/Data/ObjectType.hs 13;" C
@@ -1501,8 +1502,8 @@ Projectile src/Dodge/Data/Projectile.hs 17;" t
Projectile src/Dodge/Data/Projectile.hs 6;" m Projectile src/Dodge/Data/Projectile.hs 6;" m
Projectile src/Dodge/Projectile.hs 1;" m Projectile src/Dodge/Projectile.hs 1;" m
ProjectileParams src/Dodge/Data/Item/Use.hs 53;" C ProjectileParams src/Dodge/Data/Item/Use.hs 53;" C
ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 28;" C ProjectileStabiliserLink src/Dodge/Data/ComposedItem.hs 30;" C
ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 59;" C ProjectileStabiliserSF src/Dodge/Data/ComposedItem.hs 61;" C
ProjectileType src/Dodge/Data/Projectile.hs 41;" t ProjectileType src/Dodge/Data/Projectile.hs 41;" t
ProjectileUpdate src/Dodge/Data/Projectile.hs 35;" t ProjectileUpdate src/Dodge/Data/Projectile.hs 35;" t
Prop src/Dodge/Data/Prop.hs 18;" t Prop src/Dodge/Data/Prop.hs 18;" t
@@ -1610,11 +1611,11 @@ ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C
Religion src/Dodge/Data/Scenario.hs 47;" C Religion src/Dodge/Data/Scenario.hs 47;" C
Reload src/Dodge/Data/ActionPlan.hs 190;" C Reload src/Dodge/Data/ActionPlan.hs 190;" C
ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t
RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 23;" C RemoteDetonatorLink src/Dodge/Data/ComposedItem.hs 25;" C
RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 50;" C RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 52;" C
RemoteDirectionPU src/Dodge/Data/Projectile.hs 38;" C RemoteDirectionPU src/Dodge/Data/Projectile.hs 38;" C
RemoteScreenLink src/Dodge/Data/ComposedItem.hs 22;" C RemoteScreenLink src/Dodge/Data/ComposedItem.hs 24;" C
RemoteScreenSF src/Dodge/Data/ComposedItem.hs 48;" C RemoteScreenSF src/Dodge/Data/ComposedItem.hs 50;" C
RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C
RemoveShieldWall src/Dodge/Data/Item/Effect.hs 27;" C RemoveShieldWall src/Dodge/Data/Item/Effect.hs 27;" C
Remove_LOS src/Dodge/Data/Config.hs 77;" C Remove_LOS src/Dodge/Data/Config.hs 77;" C
@@ -1674,7 +1675,7 @@ RoundedFaces src/Shape/Data.hs 18;" C
RunPast src/Dodge/Room/RunPast.hs 1;" m RunPast src/Dodge/Room/RunPast.hs 1;" m
RunningSideEffect src/Dodge/Data/Universe.hs 69;" C RunningSideEffect src/Dodge/Data/Universe.hs 69;" C
SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 61;" C
SFLink src/Dodge/Data/ComposedItem.hs 32;" C SFLink src/Dodge/Data/ComposedItem.hs 34;" C
SHATTERGUN src/Dodge/Data/Item/Combine.hs 174;" C SHATTERGUN src/Dodge/Data/Item/Combine.hs 174;" C
SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 109;" C
SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 102;" C SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 102;" C
@@ -1801,8 +1802,8 @@ SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C
SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C
Small src/Shape/Data.hs 31;" C Small src/Shape/Data.hs 31;" C
Smoke src/Dodge/Data/Cloud.hs 23;" C Smoke src/Dodge/Data/Cloud.hs 23;" C
SmokeReducerLink src/Dodge/Data/ComposedItem.hs 24;" C SmokeReducerLink src/Dodge/Data/ComposedItem.hs 26;" C
SmokeReducerSF src/Dodge/Data/ComposedItem.hs 51;" C SmokeReducerSF src/Dodge/Data/ComposedItem.hs 53;" C
SmoothScroll src/Dodge/SmoothScroll.hs 1;" m SmoothScroll src/Dodge/SmoothScroll.hs 1;" m
SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C SocialUpheaval src/Dodge/Data/Scenario.hs 27;" C
SolarGovernment src/Dodge/Data/Scenario.hs 53;" C SolarGovernment src/Dodge/Data/Scenario.hs 53;" C
@@ -2002,7 +2003,7 @@ ToStop src/Sound/Data.hs 28;" C
Toggle src/Dodge/Data/Universe.hs 103;" C Toggle src/Dodge/Data/Universe.hs 103;" C
Toggle2 src/Dodge/Data/Universe.hs 107;" C Toggle2 src/Dodge/Data/Universe.hs 107;" C
ToggleExamine src/Dodge/ToggleExamine.hs 1;" m ToggleExamine src/Dodge/ToggleExamine.hs 1;" m
ToggleSF src/Dodge/Data/ComposedItem.hs 61;" C ToggleSF src/Dodge/Data/ComposedItem.hs 63;" C
TopDT src/Dodge/Data/DoubleTree.hs 85;" C TopDT src/Dodge/Data/DoubleTree.hs 85;" C
TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m TopDecoration src/Dodge/Placement/TopDecoration.hs 1;" m
TopEscapeMenuOption src/Dodge/Data/Universe.hs 78;" C TopEscapeMenuOption src/Dodge/Data/Universe.hs 78;" C
@@ -2020,8 +2021,8 @@ TreeHelp src/TreeHelp.hs 12;" m
Triangulate src/Geometry/Triangulate.hs 3;" m Triangulate src/Geometry/Triangulate.hs 3;" m
Trie src/SimpleTrie.hs 9;" t Trie src/SimpleTrie.hs 9;" t
TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m TriggerDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 1;" m
TriggerLink src/Dodge/Data/ComposedItem.hs 14;" C TriggerLink src/Dodge/Data/ComposedItem.hs 16;" C
TriggerSF src/Dodge/Data/ComposedItem.hs 45;" C TriggerSF src/Dodge/Data/ComposedItem.hs 47;" C
TriggerType src/Dodge/Data/TriggerType.hs 9;" t TriggerType src/Dodge/Data/TriggerType.hs 9;" t
TriggerType src/Dodge/Data/TriggerType.hs 4;" m TriggerType src/Dodge/Data/TriggerType.hs 4;" m
TriggerType src/Dodge/Item/TriggerType.hs 1;" m TriggerType src/Dodge/Item/TriggerType.hs 1;" m
@@ -2047,10 +2048,10 @@ Type src/Dodge/Terminal/Type.hs 1;" m
Typical src/Shape/Data.hs 36;" C Typical src/Shape/Data.hs 36;" C
UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 98;" C UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 98;" C
UNIGATE src/Dodge/Data/Item/Combine.hs 31;" C UNIGATE src/Dodge/Data/Item/Combine.hs 31;" C
UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 30;" C UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 32;" C
UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 39;" C UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C
UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 29;" C UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 31;" C
UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 38;" C UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 40;" C
UnderGround src/Dodge/Data/Scenario.hs 78;" C UnderGround src/Dodge/Data/Scenario.hs 78;" C
UnderRoof src/Dodge/Data/Scenario.hs 79;" C UnderRoof src/Dodge/Data/Scenario.hs 79;" C
UnderSea src/Dodge/Data/Scenario.hs 77;" C UnderSea src/Dodge/Data/Scenario.hs 77;" C
@@ -2058,7 +2059,7 @@ UniRandFloat src/Dodge/Data/GenFloat.hs 12;" C
Unimportant src/Shape/Data.hs 37;" C Unimportant src/Shape/Data.hs 37;" C
Universe src/Dodge/Data/Universe.hs 31;" t Universe src/Dodge/Data/Universe.hs 31;" t
Universe src/Dodge/Data/Universe.hs 6;" m Universe src/Dodge/Data/Universe.hs 6;" m
UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 36;" C UnloadedWeaponSF src/Dodge/Data/ComposedItem.hs 38;" C
UnlockInv src/Dodge/Data/WorldEffect.hs 27;" C UnlockInv src/Dodge/Data/WorldEffect.hs 27;" C
UnusedLink src/Dodge/Data/Room.hs 65;" C UnusedLink src/Dodge/Data/Room.hs 65;" C
Update src/Dodge/Config/Update.hs 4;" m Update src/Dodge/Config/Update.hs 4;" m
@@ -2195,10 +2196,10 @@ WdWdBurstFireRepetition src/Dodge/Data/WorldEffect.hs 35;" C
WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 31;" C WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 31;" C
WdYouPos src/Dodge/Data/WorldEffect.hs 41;" C WdYouPos src/Dodge/Data/WorldEffect.hs 41;" C
Weapon src/Dodge/Item/Weapon.hs 2;" m Weapon src/Dodge/Item/Weapon.hs 2;" m
WeaponScopeLink src/Dodge/Data/ComposedItem.hs 19;" C WeaponScopeLink src/Dodge/Data/ComposedItem.hs 21;" C
WeaponScopeSF src/Dodge/Data/ComposedItem.hs 42;" C WeaponScopeSF src/Dodge/Data/ComposedItem.hs 44;" C
WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 20;" C WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 22;" C
WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 43;" C WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 45;" C
Weapons src/Dodge/Item/Held/Weapons.hs 1;" m Weapons src/Dodge/Item/Held/Weapons.hs 1;" m
West src/Dodge/Data/CardinalPoint.hs 7;" C West src/Dodge/Data/CardinalPoint.hs 7;" C
West8 src/Dodge/Data/CardinalPoint.hs 17;" C West8 src/Dodge/Data/CardinalPoint.hs 17;" C
@@ -3035,7 +3036,7 @@ _sensorCoding src/Dodge/Data/GenParams.hs 16;" f
_sentinelDir src/Dodge/Data/ActionPlan.hs 199;" f _sentinelDir src/Dodge/Data/ActionPlan.hs 199;" f
_sentinelPos src/Dodge/Data/ActionPlan.hs 199;" f _sentinelPos src/Dodge/Data/ActionPlan.hs 199;" f
_sfColor src/Shape/Data.hs 44;" f _sfColor src/Shape/Data.hs 44;" f
_sfLink src/Dodge/Data/ComposedItem.hs 32;" f _sfLink src/Dodge/Data/ComposedItem.hs 34;" f
_sfShadowImportance src/Shape/Data.hs 45;" f _sfShadowImportance src/Shape/Data.hs 45;" f
_sfSize src/Shape/Data.hs 46;" f _sfSize src/Shape/Data.hs 46;" f
_sfType src/Shape/Data.hs 42;" f _sfType src/Shape/Data.hs 42;" f
@@ -3361,7 +3362,8 @@ airlockDoor src/Dodge/Room/Airlock.hs 51;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 54;" f
airlockSimple src/Dodge/Room/Airlock.hs 66;" f airlockSimple src/Dodge/Room/Airlock.hs 66;" f
airlockZ src/Dodge/Room/Airlock.hs 91;" f airlockZ src/Dodge/Room/Airlock.hs 91;" f
allInvLocs src/Dodge/Item/Grammar.hs 253;" f allInvLocs src/Dodge/Item/Grammar.hs 261;" f
allInvLocs' src/Dodge/Item/Grammar.hs 282;" f
allVisibleWalls src/Dodge/Base/Collide.hs 132;" f allVisibleWalls src/Dodge/Base/Collide.hs 132;" f
alongSegBy src/Geometry.hs 40;" f alongSegBy src/Geometry.hs 40;" f
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
@@ -3462,7 +3464,7 @@ barrel src/Dodge/Creature/Inanimate.hs 17;" f
barrelShape src/Dodge/Render/ShapePicture.hs 46;" f barrelShape src/Dodge/Render/ShapePicture.hs 46;" f
baseAMRShape src/Dodge/Item/Draw/SPic.hs 405;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 405;" f
baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f
baseCI src/Dodge/Item/Grammar.hs 159;" f baseCI src/Dodge/Item/Grammar.hs 161;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 311;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 311;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 45;" f baseFloorTileSize src/Tile.hs 45;" f
@@ -4314,8 +4316,8 @@ extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f
extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f extendAway src/Dodge/Placement/Instance/LightSource.hs 200;" f
extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f
extraPics src/Dodge/Render/ShapePicture.hs 73;" f extraPics src/Dodge/Render/ShapePicture.hs 73;" f
extraWeaponLinks src/Dodge/Item/Grammar.hs 94;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 96;" f
extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 103;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 105;" f
extractRoomPos src/Dodge/RoomPos.hs 6;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f
faceEdges src/Polyhedra.hs 65;" f faceEdges src/Polyhedra.hs 65;" f
facesToVF src/Polyhedra/Geodesic.hs 69;" f facesToVF src/Polyhedra/Geodesic.hs 69;" f
@@ -4434,11 +4436,11 @@ geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f geqConstr src/SameConstr.hs 21;" f
getAimZoom src/Dodge/Update/Camera.hs 135;" f getAimZoom src/Dodge/Update/Camera.hs 135;" f
getAmmoLinks src/Dodge/Item/Grammar.hs 110;" f getAmmoLinks src/Dodge/Item/Grammar.hs 112;" f
getArguments src/Dodge/Update/Scroll.hs 178;" f getArguments src/Dodge/Update/Scroll.hs 178;" f
getArguments' src/Dodge/Update/Scroll.hs 166;" f getArguments' src/Dodge/Update/Scroll.hs 166;" f
getAttachedSFLink src/Dodge/HeldUse.hs 811;" f getAttachedSFLink src/Dodge/HeldUse.hs 811;" f
getAutoSpringLinks src/Dodge/Item/Grammar.hs 89;" f getAutoSpringLinks src/Dodge/Item/Grammar.hs 91;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 171;" f getBulHitDams src/Dodge/Bullet.hs 171;" f
getBulletType src/Dodge/HeldUse.hs 930;" f getBulletType src/Dodge/HeldUse.hs 930;" f
@@ -4655,16 +4657,17 @@ interweave src/Justify.hs 17;" f
introScan src/Dodge/Item/Scope.hs 57;" f introScan src/Dodge/Item/Scope.hs 57;" f
introScanValue src/Dodge/Inventory/SelectionList.hs 79;" f introScanValue src/Dodge/Inventory/SelectionList.hs 79;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 236;" f invAdj src/Dodge/Item/Grammar.hs 238;" f
invCursorParams src/Dodge/ListDisplayParams.hs 36;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f
invDP src/Dodge/ListDisplayParams.hs 30;" f invDP src/Dodge/ListDisplayParams.hs 30;" f
invDimColor src/Dodge/DisplayInventory.hs 192;" f invDimColor src/Dodge/DisplayInventory.hs 192;" f
invHead src/Dodge/Render/HUD.hs 405;" f invHead src/Dodge/Render/HUD.hs 405;" f
invItemLocUpdate src/Dodge/Creature/State.hs 156;" f invItemLocUpdate src/Dodge/Creature/State.hs 156;" f
invLDT src/Dodge/Item/Grammar.hs 216;" f invLDT src/Dodge/Item/Grammar.hs 218;" f
invRootItemEffs src/Dodge/Creature/State.hs 149;" f invRootItemEffs src/Dodge/Creature/State.hs 149;" f
invRootMap src/Dodge/Item/Grammar.hs 225;" f invRootMap src/Dodge/Item/Grammar.hs 227;" f
invRootTrees src/Dodge/Item/Grammar.hs 246;" f invRootTrees src/Dodge/Item/Grammar.hs 248;" f
invRootTrees' src/Dodge/Item/Grammar.hs 254;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 32;" f
invSetSelection src/Dodge/Inventory.hs 185;" f invSetSelection src/Dodge/Inventory.hs 185;" f
invSetSelectionPos src/Dodge/Inventory.hs 193;" f invSetSelectionPos src/Dodge/Inventory.hs 193;" f
@@ -4743,8 +4746,8 @@ itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 120;" f
itemScrollValue src/Dodge/Inventory/SelectionList.hs 147;" f itemScrollValue src/Dodge/Inventory/SelectionList.hs 147;" f
itemSidePush src/Dodge/HeldUse.hs 433;" f itemSidePush src/Dodge/HeldUse.hs 433;" f
itemString src/Dodge/Item/Display.hs 55;" f itemString src/Dodge/Item/Display.hs 55;" f
itemToBreakLists src/Dodge/Item/Grammar.hs 34;" f itemToBreakLists src/Dodge/Item/Grammar.hs 36;" f
itemToFunction src/Dodge/Item/Grammar.hs 116;" f itemToFunction src/Dodge/Item/Grammar.hs 118;" f
itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f itemTreeSPic src/Dodge/Item/Draw/SPic.hs 24;" f
itemTriggerType src/Dodge/BaseTriggerType.hs 12;" f itemTriggerType src/Dodge/BaseTriggerType.hs 12;" f
itemWeight src/Dodge/Creature/Statistics.hs 66;" f itemWeight src/Dodge/Creature/Statistics.hs 66;" f
@@ -4756,7 +4759,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 25;" f
itmUsageInfo src/Dodge/Item/Info.hs 230;" f itmUsageInfo src/Dodge/Item/Info.hs 230;" f
jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f
jaggedShape src/Dodge/Block/Debris.hs 191;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f
joinItemsInList src/Dodge/Item/Grammar.hs 206;" f joinItemsInList src/Dodge/Item/Grammar.hs 208;" f
joystick src/Dodge/Item/Scope.hs 149;" f joystick src/Dodge/Item/Scope.hs 149;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f
jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f
@@ -4806,10 +4809,10 @@ ldtToIM src/Dodge/DoubleTree.hs 184;" f
ldtToIndentList src/Dodge/DoubleTree.hs 187;" f ldtToIndentList src/Dodge/DoubleTree.hs 187;" f
ldtToLoc src/Dodge/DoubleTree.hs 233;" f ldtToLoc src/Dodge/DoubleTree.hs 233;" f
left src/DoubleStack.hs 16;" f left src/DoubleStack.hs 16;" f
leftChildList src/Dodge/Item/Grammar.hs 180;" f leftChildList src/Dodge/Item/Grammar.hs 182;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 164;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 166;" f
leftPad src/Padding.hs 15;" f leftPad src/Padding.hs 15;" f
leftRightCombine src/Dodge/Item/Grammar.hs 192;" f leftRightCombine src/Dodge/Item/Grammar.hs 194;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 475;" f legsSPic src/Dodge/Item/Draw/SPic.hs 475;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f
light src/Color.hs 104;" f light src/Color.hs 104;" f
@@ -5156,11 +5159,11 @@ orderAroundFirst src/Geometry/Polygon.hs 82;" f
orderAroundFirstReverse src/Geometry/Polygon.hs 78;" f orderAroundFirstReverse src/Geometry/Polygon.hs 78;" f
orderPolygon src/Geometry/Polygon.hs 87;" f orderPolygon src/Geometry/Polygon.hs 87;" f
orderPolygonAround src/Geometry/Polygon.hs 70;" f orderPolygonAround src/Geometry/Polygon.hs 70;" f
orientAttachment src/Dodge/Item/Orientation.hs 30;" f orientAttachment src/Dodge/Item/Orientation.hs 31;" f
orientByLink src/Dodge/Item/Orientation.hs 23;" f orientByLink src/Dodge/Item/Orientation.hs 24;" f
orientChild src/Dodge/Item/Orientation.hs 15;" f orientChild src/Dodge/Item/Orientation.hs 16;" f
orientLocation src/Dodge/Item/Orientation.hs 51;" f orientLocation src/Dodge/Item/Orientation.hs 52;" f
orientLocation' src/Dodge/Item/Orientation.hs 40;" f orientLocation' src/Dodge/Item/Orientation.hs 41;" f
orthogonalPointOnSeg src/Geometry/Intersect.hs 291;" f orthogonalPointOnSeg src/Geometry/Intersect.hs 291;" f
outLink src/Dodge/RoomLink.hs 105;" f outLink src/Dodge/RoomLink.hs 105;" f
outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f
@@ -5380,7 +5383,7 @@ propSPic src/Dodge/Prop/Draw.hs 15;" f
propSetToggleAnd src/Dodge/Prop/Update.hs 41;" f propSetToggleAnd src/Dodge/Prop/Update.hs 41;" f
propUpdateIf src/Dodge/Prop/Update.hs 25;" f propUpdateIf src/Dodge/Prop/Update.hs 25;" f
propUpdatePosition src/Dodge/Prop/Update.hs 30;" f propUpdatePosition src/Dodge/Prop/Update.hs 30;" f
propagateOrientation src/Dodge/Item/Orientation.hs 60;" f propagateOrientation src/Dodge/Item/Orientation.hs 61;" f
ps0 src/Dodge/LevelGen/PlacementHelper.hs 51;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 51;" f
ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 79;" f ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 79;" f
ps0PushPSw src/Dodge/LevelGen/PlacementHelper.hs 83;" f ps0PushPSw src/Dodge/LevelGen/PlacementHelper.hs 83;" f
@@ -5547,8 +5550,8 @@ rezText' src/Dodge/Story.hs 17;" f
rhombus src/Polyhedra.hs 72;" f rhombus src/Polyhedra.hs 72;" f
rifle src/Dodge/Item/Held/Cane.hs 19;" f rifle src/Dodge/Item/Held/Cane.hs 19;" f
right src/DoubleStack.hs 16;" f right src/DoubleStack.hs 16;" f
rightChildList src/Dodge/Item/Grammar.hs 186;" f rightChildList src/Dodge/Item/Grammar.hs 188;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 172;" f rightIsParentCombine src/Dodge/Item/Grammar.hs 174;" f
rightPad src/Padding.hs 19;" f rightPad src/Padding.hs 19;" f
rightPadNoSquash src/Padding.hs 23;" f rightPadNoSquash src/Padding.hs 23;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f rlPosDir src/Dodge/RoomLink.hs 94;" f
@@ -5952,7 +5955,7 @@ strideRot src/Dodge/Item/HeldOffset.hs 83;" f
stringToList src/Picture/Base.hs 313;" f stringToList src/Picture/Base.hs 313;" f
stringToListGrad src/Picture/Text.hs 12;" f stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f stripZ src/Geometry/Vector3D.hs 97;" f
structureToPotentialFunction src/Dodge/Item/Grammar.hs 151;" f structureToPotentialFunction src/Dodge/Item/Grammar.hs 153;" f
structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" f structureUseAtLoc src/Dodge/Creature/Impulse/UseItem.hs 75;" f
subInvX src/Dodge/ListDisplayParams.hs 48;" f subInvX src/Dodge/ListDisplayParams.hs 48;" f
subMap src/TreeHelp.hs 118;" f subMap src/TreeHelp.hs 118;" f
@@ -6147,7 +6150,7 @@ triggerSwitchSPicLight src/Dodge/Placement/Instance/Button.hs 31;" f
truncFaces src/Polyhedra/Geodesic.hs 53;" f truncFaces src/Polyhedra/Geodesic.hs 53;" f
truncate src/Polyhedra/Geodesic.hs 38;" f truncate src/Polyhedra/Geodesic.hs 38;" f
trunkDepth src/TreeHelp.hs 161;" f trunkDepth src/TreeHelp.hs 161;" f
tryAttachItems src/Dodge/Item/Grammar.hs 30;" f tryAttachItems src/Dodge/Item/Grammar.hs 32;" f
tryClickUse src/Dodge/Creature/YourControl.hs 221;" f tryClickUse src/Dodge/Creature/YourControl.hs 221;" f
tryCombine src/Dodge/Update/Input/InGame.hs 526;" f tryCombine src/Dodge/Update/Input/InGame.hs 526;" f
tryDropSelected src/Dodge/Update/Input/InGame.hs 125;" f tryDropSelected src/Dodge/Update/Input/InGame.hs 125;" f