Make lasGun have multiple functions when attached differently

This commit is contained in:
2024-10-06 11:19:19 +01:00
parent 3b54f00cc7
commit 9860a88c0c
11 changed files with 155 additions and 112 deletions
+1 -15
View File
@@ -1,15 +1 @@
/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:88:1-16: warning: [-Wunused-top-binds]
Defined but not used: itemLinkTestLeft
|
88 | itemLinkTestLeft itm pci = Nothing
| ^^^^^^^^^^^^^^^^
/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:88:18-20: warning: [-Wunused-matches]
Defined but not used: itm
|
88 | itemLinkTestLeft itm pci = Nothing
| ^^^
/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:88:22-24: warning: [-Wunused-matches]
Defined but not used: pci
|
88 | itemLinkTestLeft itm pci = Nothing
| ^^^
All good (598 modules, at 11:19:05)
+3 -2
View File
@@ -282,12 +282,14 @@ testInventory =
stackedInventory :: [Item]
stackedInventory =
[ torch
, torch
, battery
, remoteScreen
, megaShellMag
, targetingScope TARGETLASER
, burstRifle
, megaTinMag 100
, lasGun
, makeTypeCraft TRANSFORMER
, teslaGun
, megaBattery
, flameThrower
@@ -315,7 +317,6 @@ stackedInventory =
, boosterGun
, flatShield
, spawnGun (lamp 5)
, lasGun
-- , lasWide 20
, poisonSprayer
, bulletBeltPack
+24 -3
View File
@@ -26,11 +26,33 @@ useRootItem :: Int -> World -> World
useRootItem crid w = fromMaybe w $ do
cr <- w ^? cWorld . lWorld . creatures . ix crid
itRef <- cr ^? crManipulation . manObject . imRootItem
it <- invTrees (_crInv cr) ^? ix itRef
it <- invRootTrees (_crInv cr) ^? ix itRef
return $
itemUseEffect cr it w
itemUseEffect' cr it w
& worldEventFlags . at InventoryChange ?~ ()
itemUseEffect' :: Creature -> LabelDoubleTree ItemLink ComposedItem -> World -> World
itemUseEffect' cr itmtree w = case itmtree ^. ldtValue . cItemFunction of
WeaponPlatformSF -> heldEffect (bimap _iatType _cItem itmtree) cr w
& pointerToItem itm . itUse . heldHammer .~ HammerDown
_ -> w
-- UseHotkey{} -> doequipmentchange
-- UseEquip{} -> doequipmentchange
-- (UseConsume eff) -> useC eff (_ldtValue itmtree) cr w
-- UseCraft{} -> w
-- UseAttach{} -> selectUse itmtree cr w
-- UseAmmoMag{} -> w
-- UseScope{} -> w
-- UseBulletMod{} -> w
where
itm :: Item
itm = itmtree ^. ldtValue . cItem
-- doequipmentchange = fromMaybe w $ do
-- guard (_crHammerPosition cr == HammerUp)
-- invid <- itm ^? itLocation . ilInvID
-- return $ toggleEquipmentAt invid cr w
itemUseEffect :: Creature -> LabelDoubleTree ComposeLinkType Item -> World -> World
itemUseEffect cr itmtree w = case itmtree ^. ldtValue . itUse of
UseHeld{} -> heldEffect itmtree cr w
@@ -40,7 +62,6 @@ itemUseEffect cr itmtree w = case itmtree ^. ldtValue . itUse of
(UseConsume eff) -> useC eff (_ldtValue itmtree) cr w
UseCraft{} -> w
UseAttach{} -> selectUse itmtree cr w
-- UseTargeting {} -> w
UseAmmoMag{} -> w
UseScope{} -> w
UseBulletMod{} -> w
+2 -1
View File
@@ -9,6 +9,7 @@ module Dodge.Creature.Picture (
deadFeet,
) where
import Dodge.Data.ComposedItem
import Control.Lens
import Dodge.Creature.HandPos (translateToLeftHand, translateToRightHand)
import Dodge.Creature.Test
@@ -138,4 +139,4 @@ shoulderSH = translateSHz 20
drawEquipment :: Creature -> SPic
{-# INLINE drawEquipment #-}
drawEquipment cr = foldMap (itemEquipPict cr . fmap (\(a, b, _) -> (a, b))) (invLDT $ _crInv cr)
drawEquipment cr = foldMap (itemEquipPict cr . fmap (\(a, b, _) -> CItem a b)) (invLDT $ _crInv cr)
+9 -9
View File
@@ -175,7 +175,7 @@ updateAttachedItems itmtree cr =
chainLinkOrientation
chainLinkOrientation
(updateItemWithOrientation cr)
(heldItemRelativeOrient (fst $ _ldtValue itmtree) cr (0, Q.qID))
(heldItemRelativeOrient (_cItem $ _ldtValue itmtree) cr (0, Q.qID))
(LocLDT TopLDT itmtree)
-- need to check rotation
@@ -185,7 +185,7 @@ chainLinkOrientation ::
ItemLink ->
ComposedItem ->
(Point3, Q.Quaternion Float)
chainLinkOrientation mo (par,_) (ILink lt f) (child,_) = (p + Q.rotate q p1, q * q1)
chainLinkOrientation mo (CItem par _) (ILink lt f) (CItem child _) = (p + Q.rotate q p1, q * q1)
where
(p, q) = mo
(p1, q1) = f par lt child
@@ -203,11 +203,11 @@ updateItemWithOrientation cr m loc@(LocLDT _ itmtree) = case _itType itm of
ATTACH AUGMENTEDHUD -> drawAugmentedHUD loc
_ -> id
where
itm = itmtree ^. ldtValue . _1
itm = itmtree ^. ldtValue . cItem
drawAugmentedHUD :: LocationLDT ItemLink ComposedItem -> World -> World
drawAugmentedHUD (LocLDT con _) w = fromMaybe w $ do
itm <- con ^? cldtParent . _1
itm <- con ^? cldtParent . cItem
return $ w & cWorld . lWorld . flares <>~ drawTargeting itm w
shineTargetLaser :: Creature -> LabelDoubleTree ItemLink ComposedItem -> (Point3, Q.Quaternion Float)
@@ -215,9 +215,9 @@ shineTargetLaser :: Creature -> LabelDoubleTree ItemLink ComposedItem -> (Point3
shineTargetLaser cr itmtree (p,q) w = fromMaybe (w & pointittarg . itTgPos .~ Nothing) $ do
guard (crIsAiming cr)
(_, mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft)
i <- mag ^? ldtValue . _1 . itUse . amagLoadStatus . iaLoaded
i <- mag ^? ldtValue . cItem . itUse . amagLoadStatus . iaLoaded
guard $ i >= x
maginvid <- mag ^? ldtValue . _1 . itLocation . ilInvID
maginvid <- mag ^? ldtValue . cItem . itLocation . ilInvID
return $ w
& cWorld . lWorld . creatures . ix (_crID cr)
. crInv . ix maginvid . itUse . amagLoadStatus . iaLoaded -~ x
@@ -234,7 +234,7 @@ shineTargetLaser cr itmtree (p,q) w = fromMaybe (w & pointittarg . itTgPos .~ No
isammolink _ = False
pos = _crPos cr + xyV3 (rotate3 cdir (p + V3 5 0 0))
cdir = _crDir cr
itm = itmtree ^. ldtValue . _1
itm = itmtree ^. ldtValue . cItem
--pointItUse = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itUse
pointittarg = cWorld . lWorld . creatures . ix cid . crInv . ix invid . itTargeting
cid = _crID cr
@@ -244,9 +244,9 @@ shineTargetLaser cr itmtree (p,q) w = fromMaybe (w & pointittarg . itTgPos .~ No
shineTorch :: Creature -> LabelDoubleTree ItemLink ComposedItem -> (Point3, Q.Quaternion Float) -> World -> World
shineTorch cr itmtree (p, q) = fromMaybe id $ do
(_, mag) <- find (isammolink . _iatType . fst) (itmtree ^. ldtLeft)
i <- mag ^? ldtValue . _1 . itUse . amagLoadStatus . iaLoaded
i <- mag ^? ldtValue . cItem . itUse . amagLoadStatus . iaLoaded
guard $ i >= x
invid <- mag ^? ldtValue . _1 . itLocation . ilInvID
invid <- mag ^? ldtValue . cItem . itLocation . ilInvID
return $
(cWorld . lWorld . tempLightSources .:~ tlsTimeRadColPos 1 250 0.7 pos'')
. (cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix invid . itUse . amagLoadStatus . iaLoaded -~ x)
+18 -9
View File
@@ -23,6 +23,7 @@ data ComposeLinkType
| WeaponTargetingLink
| RemoteScreenLink
| AugmentedHUDLink
| FunctionChangeLink
deriving (Eq, Ord, Show, Read)
data ItemStructuralFunction
@@ -37,28 +38,36 @@ data ItemStructuralFunction
| AmmoTargetingSF AmmoType
| AmmoPayloadSF AmmoType
| AmmoEffectSF AmmoType
| FunctionChangeSF
deriving (Eq, Ord, Show, Read)
type PartiallyComposedItem lt = (Item, ItemStructuralFunction, LinkTest lt)
type ComposedItem = (Item, ItemStructuralFunction)
type PartiallyComposedItem = (Item, ItemStructuralFunction, LinkTest)
data ComposedItem = CItem
{ _cItem :: Item
, _cItemFunction :: ItemStructuralFunction
}
data ItemLink = ILink
{ _iatType :: ComposeLinkType
, _iatOrient :: Item -> ComposeLinkType -> Item -> (Point3, Quaternion Float)
}
data LinkTest lt = LTest
{ _tryLeftLink :: PartiallyComposedItem lt -> Maybe (LinkUpdate lt)
, _tryRightLink :: PartiallyComposedItem lt -> Maybe (LinkUpdate lt)
data LinkTest = LTest
{ _tryLeftLink :: PartiallyComposedItem -> Maybe LinkUpdate
, _tryRightLink :: PartiallyComposedItem -> Maybe LinkUpdate
}
data LinkUpdate lt = LUpdate
{ _luLinkType :: lt
, _luParentUpdate :: PartiallyComposedItem lt -> PartiallyComposedItem lt
, _luChildUpdate :: PartiallyComposedItem lt -> PartiallyComposedItem lt
data LinkUpdate = LUpdate
{ _luLinkType :: ItemLink
, _luParentUpdate :: PartiallyComposedItem -> PartiallyComposedItem
, _luChildUpdate :: PartiallyComposedItem -> PartiallyComposedItem
}
makeLenses ''ComposedItem
makeLenses ''ItemLink
makeLenses ''LinkTest
makeLenses ''LinkUpdate
deriveJSON defaultOptions ''ItemStructuralFunction
deriveJSON defaultOptions ''ComposedItem
deriveJSON defaultOptions ''ComposeLinkType
+1 -1
View File
@@ -2,7 +2,7 @@ module Dodge.Inventory.Location
(updateRootItemID
, crUpdateItemLocations
, setInvPosFromSS
, tryGetRootItemInvID
-- , tryGetRootItemInvID
)
where
+1 -1
View File
@@ -24,7 +24,7 @@ itemEquipPict cr itmtree = case itm ^. itUse of
epos <- cr ^? crInvEquipped . ix i
return $ equipPosition epos cr attachpos (itemSPic itm)
where
itm = itmtree ^. ldtValue . _1
itm = itmtree ^. ldtValue . cItem
equipPosition :: EquipPosition -> Creature -> Point3 -> SPic -> SPic
equipPosition epos cr p sh = case epos of
+2 -2
View File
@@ -20,7 +20,7 @@ import Shape
import ShapePicture
itemTreeSPic :: LabelDoubleTree ItemLink ComposedItem -> SPic
itemTreeSPic (LDT (itm, _) l r) =
itemTreeSPic (LDT (CItem itm _) l r) =
itemSPic itm
<> foldMap (itemRotTreeSPic itm) (l <> r)
@@ -28,7 +28,7 @@ itemRotTreeSPic :: Item -> (ItemLink, LabelDoubleTree ItemLink ComposedItem) ->
itemRotTreeSPic par (il, t) = translateSP p . overPosSP (Q.rotate q) $ itemTreeSPic t
where
(p, q) = _iatOrient il par (_iatType il) itm
itm = t ^. ldtValue . _1
itm = t ^. ldtValue . cItem
itemSPic :: Item -> SPic
itemSPic it = case it ^. itType of
+32 -17
View File
@@ -19,13 +19,14 @@ import Dodge.Item.Orientation
import LensHelp
import ListHelp
useBreakL' :: [(ItemStructuralFunction, ComposeLinkType)] -> [(ItemStructuralFunction, ComposeLinkType)]
-> LinkTest ItemLink
useBreakL' x y = useBreakListsLinkTest (map (uncurry noa) x) (map (uncurry noa) y)
useBreakL :: [(ItemStructuralFunction, ComposeLinkType)] -> [(ItemStructuralFunction, ComposeLinkType)]
-> LinkTest
useBreakL x y = useBreakListsLinkTest (map (uncurry noa) x) (map (uncurry noa) y)
where
noa a b = (a, ILink b orientAttachment)
useBreakListsLinkTest :: [(ItemStructuralFunction, a)] -> [(ItemStructuralFunction, a)] -> LinkTest a
useBreakListsLinkTest :: [(ItemStructuralFunction, ItemLink)]
-> [(ItemStructuralFunction, ItemLink)] -> LinkTest
useBreakListsLinkTest llist rlist = LTest ltest rtest
where
ltest (_, sf, _) = do
@@ -79,27 +80,41 @@ itemToFunction itm = case itm ^. itType of
TARGETING{} -> WeaponTargetingSF
_ -> UncomposableIsolateSF
simplePCI :: Item -> PartiallyComposedItem ItemLink
simplePCI :: Item -> PartiallyComposedItem
simplePCI itm = case _itType itm of
HELD LASGUN -> (itm, WeaponScopeSF, uncurry useBreakL' $ itemToBreakLists itm)
_ -> (itm, itemToFunction itm, uncurry useBreakL' $ itemToBreakLists itm)
HELD LASGUN -> (itm, WeaponScopeSF, laserLinkTest itm)
_ -> (itm, itemToFunction itm, uncurry useBreakL $ itemToBreakLists itm)
itemLinkTestLeft :: Item -> PartiallyComposedItem (LinkTest ItemLink) -> Maybe (LinkUpdate ItemLink)
itemLinkTestLeft itm pci = Nothing
laserLinkTest :: Item -> LinkTest
laserLinkTest itm = LTest (llleft itm) (llright itm)
basePartiallyComposedItem' :: Item -> PartiallyComposedItem ItemLink
basePartiallyComposedItem' itm = simplePCI itm
llleft :: Item -> PartiallyComposedItem -> Maybe LinkUpdate
llleft itm pci = _tryLeftLink (uncurry useBreakL $ itemToBreakLists itm) pci
llright :: Item -> PartiallyComposedItem -> Maybe LinkUpdate
llright itm pci = case pci ^. _1 . itType of
CRAFT TRANSFORMER -> Just (toLasgunUpdate itm)
_ -> _tryRightLink (uncurry useBreakL $ itemToBreakLists itm) pci
toLasgunUpdate :: Item -> LinkUpdate
toLasgunUpdate itm = LUpdate (ILink FunctionChangeLink orientAttachment)
(\(par,_,_) -> (par,WeaponPlatformSF,uncurry useBreakL $ itemToBreakLists itm))
(\(chi,_,up) -> (chi,FunctionChangeSF,up))
--itemLinkTestLeft :: Item -> PartiallyComposedItem -> Maybe LinkUpdate
--itemLinkTestLeft itm = _tryLeftLink $
-- uncurry useBreakL $ itemToBreakLists itm
type LDTComb a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDoubleTree b a)
leftIsParentCombine :: LDTComb (PartiallyComposedItem a) a
leftIsParentCombine :: LDTComb PartiallyComposedItem ItemLink
leftIsParentCombine ltree rtree = do
lu <- (ltree ^. ldtValue . _3 . tryRightLink) (rtree ^. ldtValue)
return $
ltree & ldtValue %~ (lu ^. luParentUpdate)
& ldtRight %~ (++ [(lu ^. luLinkType, rtree & ldtValue %~ (lu ^. luChildUpdate))])
rightIsParentCombine :: LDTComb (PartiallyComposedItem a) a
rightIsParentCombine :: LDTComb PartiallyComposedItem ItemLink
rightIsParentCombine ltree rtree = do
lu <- (rtree ^. ldtValue . _3 . tryLeftLink) (ltree ^. ldtValue)
return $
@@ -131,10 +146,10 @@ joinItemsInList f xs = snd $ h (xs, [])
Nothing -> h (ys, y : z : zs)
Just w -> h (w : ys, zs)
invLDT :: IM.IntMap Item -> [LabelDoubleTree ItemLink (PartiallyComposedItem ItemLink)]
invLDT :: IM.IntMap Item -> [LabelDoubleTree ItemLink PartiallyComposedItem]
invLDT =
joinItemsInList (leftRightCombine leftIsParentCombine rightIsParentCombine) . IM.elems
. fmap (singleLDT . basePartiallyComposedItem')
. fmap (singleLDT . simplePCI)
-- this assumes the creature inventory is well formed, specifically the
-- location ids
@@ -180,7 +195,7 @@ invTrees' = IM.unions . map (ldtToIM getindex . fmap (^. _1)) . map (fmap (\(x,
-- returns an intmap with trees for root items, indexed by inventory position
invRootTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ItemLink ComposedItem)
invRootTrees = IM.fromAscList . reverse . map (getid . fmap (\(x, y, _) -> (x, y))) . invLDT
invRootTrees = IM.fromAscList . reverse . map (getid . fmap (\(x, y, _) -> CItem x y)) . invLDT
where
getid :: LabelDoubleTree ItemLink ComposedItem -> (Int,LabelDoubleTree ItemLink ComposedItem)
getid t = (t ^?! ldtValue . _1 . itLocation . ilInvID, t)
getid t = (t ^?! ldtValue . cItem . itLocation . ilInvID, t)
+62 -52
View File
@@ -56,17 +56,17 @@ Ambush src/Dodge/Data/ActionPlan.hs 178;" C
Ammo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 6;" m
Ammo src/Dodge/Item/Ammo.hs 1;" m
AmmoEffectLink src/Dodge/Data/ComposedItem.hs 21;" C
AmmoEffectSF src/Dodge/Data/ComposedItem.hs 39;" C
AmmoEffectSF src/Dodge/Data/ComposedItem.hs 40;" C
AmmoInLink src/Dodge/Data/ComposedItem.hs 17;" C
AmmoMagSF src/Dodge/Data/ComposedItem.hs 33;" C
AmmoMagSF src/Dodge/Data/ComposedItem.hs 34;" C
AmmoMagType src/Dodge/Data/Item/Combine.hs 86;" t
AmmoModLink src/Dodge/Data/ComposedItem.hs 18;" C
AmmoModifierSF src/Dodge/Data/ComposedItem.hs 36;" C
AmmoModifierSF src/Dodge/Data/ComposedItem.hs 37;" C
AmmoParams src/Dodge/Data/Item/Use.hs 113;" t
AmmoPayloadLink src/Dodge/Data/ComposedItem.hs 20;" C
AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 38;" C
AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 39;" C
AmmoTargetingLink src/Dodge/Data/ComposedItem.hs 19;" C
AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 37;" C
AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 38;" C
AmmoType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 39;" t
AnRoom src/Dodge/Annotation/Data.hs 17;" C
AnTree src/Dodge/Annotation/Data.hs 18;" C
@@ -98,7 +98,7 @@ Attention src/Dodge/Data/Creature/Perception.hs 60;" t
AttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" C
Audition src/Dodge/Data/Creature/Perception.hs 47;" t
AugmentedHUDLink src/Dodge/Data/ComposedItem.hs 25;" C
AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 32;" C
AugmentedHUDSF src/Dodge/Data/ComposedItem.hs 33;" C
AutoAI src/Dodge/Data/Creature/Misc.hs 57;" C
AutoCrit src/Dodge/Creature/AutoCrit.hs 1;" m
AutoDoorObstacle src/Dodge/Data/PathGraph.hs 51;" C
@@ -245,6 +245,7 @@ CHARTREUSE src/Color/Data.hs 25;" C
CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 92;" C
CHeal src/Dodge/Data/Item/HeldUse.hs 26;" C
CIRCLE src/Dodge/Data/GenParams.hs 20;" C
CItem src/Dodge/Data/ComposedItem.hs 46;" C
CME src/Dodge/Data/MuzzleEffect.hs 11;" C
CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C
CONSUMABLE src/Dodge/Data/Item/Combine.hs 19;" C
@@ -337,7 +338,7 @@ Common src/Dodge/Zoning/Common.hs 1;" m
Compile src/Shader/Compile.hs 1;" m
Compose src/Dodge/Tree/Compose.hs 4;" m
ComposeLinkType src/Dodge/Data/ComposedItem.hs 16;" t
ComposedItem src/Dodge/Data/ComposedItem.hs 43;" t
ComposedItem src/Dodge/Data/ComposedItem.hs 46;" t
ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m
Composite src/Picture/Composite.hs 1;" m
ComsSS src/Dodge/Data/Scenario.hs 98;" C
@@ -746,6 +747,8 @@ FullRes src/Dodge/Data/Config.hs 95;" C
FullShadowFidelity src/Shape/Data.hs 24;" C
FullSize src/Dodge/Data/Item/Params.hs 31;" C
FullyVisible src/Dodge/Data/CamouflageStatus.hs 12;" C
FunctionChangeLink src/Dodge/Data/ComposedItem.hs 26;" C
FunctionChangeSF src/Dodge/Data/ComposedItem.hs 41;" C
GASINJECTOR src/Dodge/Data/Item/Combine.hs 69;" C
GEqC src/SameConstr.hs 20;" c
GLASSSHARD src/Dodge/Data/Item/Combine.hs 38;" C
@@ -858,7 +861,7 @@ Huge src/Shape/Data.hs 28;" C
Humanoid src/Dodge/Data/Creature/Misc.hs 65;" C
Humanoid src/Dodge/Humanoid.hs 1;" m
HumanoidAI src/Dodge/Data/Creature/Misc.hs 48;" t
ILink src/Dodge/Data/ComposedItem.hs 45;" C
ILink src/Dodge/Data/ComposedItem.hs 51;" C
INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 105;" C
IRONBAR src/Dodge/Data/Item/Combine.hs 57;" C
ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 170;" C
@@ -932,7 +935,7 @@ ItEffect src/Dodge/Data/Item/Effect.hs 12;" t
ItEffect src/Dodge/ItEffect.hs 1;" m
ItID src/Dodge/Data/Item.hs 31;" t
ItInvEffect src/Dodge/Data/Item/Effect.hs 19;" t
ItTargeting src/Dodge/Data/Item.hs 47;" C
ItTargeting src/Dodge/Data/Item.hs 48;" C
ItZoom src/Dodge/Data/Item/Use.hs 181;" t
Item src/Dodge/Data/Item.hs 33;" t
Item src/Dodge/Data/Item.hs 4;" m
@@ -940,12 +943,12 @@ Item src/Dodge/Default/Item.hs 1;" m
Item src/Dodge/Item.hs 3;" m
ItemClust src/Dodge/Combine/Graph.hs 17;" C
ItemDimension src/Dodge/Data/Item/Misc.hs 13;" t
ItemLink src/Dodge/Data/ComposedItem.hs 45;" t
ItemLink src/Dodge/Data/ComposedItem.hs 51;" t
ItemLocation src/Dodge/Data/Item/Location.hs 27;" t
ItemParams src/Dodge/Data/Item/Params.hs 13;" t
ItemParams src/Dodge/Tesla/ItemParams.hs 1;" m
ItemScrollTimeFlow src/Dodge/Data/World.hs 62;" C
ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 28;" t
ItemStructuralFunction src/Dodge/Data/ComposedItem.hs 29;" t
ItemTargeting src/Dodge/Data/Item.hs 47;" t
ItemType src/Dodge/Data/Item/Combine.hs 15;" t
ItemUse src/Dodge/Data/Item/Use.hs 35;" t
@@ -966,7 +969,7 @@ LBlink src/Dodge/Data/Item/HeldUse.hs 53;" C
LBoost src/Dodge/Data/Item/HeldUse.hs 55;" C
LDT src/Dodge/Data/DoubleTree.hs 39;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTComb src/Dodge/Item/Grammar.hs 89;" t
LDTComb src/Dodge/Item/Grammar.hs 108;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C
@@ -981,11 +984,11 @@ LRewind src/Dodge/Data/Item/HeldUse.hs 49;" C
LS src/Dodge/Data/LightSource.hs 34;" C
LSParam src/Dodge/Data/LightSource.hs 27;" t
LShrink src/Dodge/Data/Item/HeldUse.hs 52;" C
LTest src/Dodge/Data/ComposedItem.hs 50;" C
LTest src/Dodge/Data/ComposedItem.hs 56;" C
LTimePause src/Dodge/Data/Item/HeldUse.hs 50;" C
LTimeScroll src/Dodge/Data/Item/HeldUse.hs 51;" C
LUnsafeBlink src/Dodge/Data/Item/HeldUse.hs 54;" C
LUpdate src/Dodge/Data/ComposedItem.hs 55;" C
LUpdate src/Dodge/Data/ComposedItem.hs 61;" C
LWorld src/Dodge/Data/LWorld.hs 96;" t
LWorld src/Dodge/Data/LWorld.hs 6;" m
LabLink src/Dodge/Data/Room.hs 45;" C
@@ -1044,8 +1047,8 @@ LinearShockwave src/Dodge/Data/LinearShockwave.hs 13;" t
LinearShockwave src/Dodge/Data/LinearShockwave.hs 6;" m
Link src/Dodge/Room/Link.hs 6;" m
LinkDecoration src/Dodge/Debug/LinkDecoration.hs 1;" m
LinkTest src/Dodge/Data/ComposedItem.hs 50;" t
LinkUpdate src/Dodge/Data/ComposedItem.hs 55;" t
LinkTest src/Dodge/Data/ComposedItem.hs 56;" t
LinkUpdate src/Dodge/Data/ComposedItem.hs 61;" t
List src/Dodge/Combine/List.hs 1;" m
List src/Dodge/Render/List.hs 1;" m
ListDisplayParams src/Dodge/Data/SelectionList.hs 18;" t
@@ -1243,6 +1246,7 @@ NoHammer src/Dodge/Data/Hammer.hs 13;" C
NoHoming src/Dodge/Data/Item/Use/Consumption/Ammo.hs 24;" C
NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C
NoInvEffect src/Dodge/Data/Item/Effect.hs 20;" C
NoItTargeting src/Dodge/Data/Item.hs 47;" C
NoLighting src/Dodge/Data/Config.hs 102;" C
NoMvType src/Dodge/Data/Creature/Misc.hs 38;" C
NoNeedWeapon src/Dodge/Room/NoNeedWeapon.hs 2;" m
@@ -1363,7 +1367,7 @@ ParamMID src/Dodge/Data/Item/Params.hs 28;" C
Parameters src/Shader/Parameters.hs 1;" m
Parameters src/Shape/Parameters.hs 1;" m
Params src/Dodge/Data/Item/Params.hs 6;" m
PartiallyComposedItem src/Dodge/Data/ComposedItem.hs 42;" t
PartiallyComposedItem src/Dodge/Data/ComposedItem.hs 44;" t
PassthroughLockKeyLists src/Dodge/Annotation/Data.hs 19;" C
Path src/Dodge/Path.hs 2;" m
Path src/Dodge/Room/Path.hs 1;" m
@@ -1553,7 +1557,7 @@ Reload src/Dodge/Data/ActionPlan.hs 190;" C
ReloadStatus src/Dodge/Data/Item/Use/Consumption.hs 20;" t
RemoteDirectionPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 32;" C
RemoteScreenLink src/Dodge/Data/ComposedItem.hs 24;" C
RemoteScreenSF src/Dodge/Data/ComposedItem.hs 34;" C
RemoteScreenSF src/Dodge/Data/ComposedItem.hs 35;" C
RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 36;" C
RemoveShieldWall src/Dodge/Data/Item/Effect.hs 26;" C
Remove_LOS src/Dodge/Data/Config.hs 77;" C
@@ -1965,7 +1969,7 @@ TwoHandOver src/Dodge/Data/Item/Use.hs 176;" C
TwoHandUnder src/Dodge/Data/Item/Use.hs 175;" C
Type src/Dodge/Data/Damage/Type.hs 6;" m
Typical src/Shape/Data.hs 36;" C
UncomposableIsolateSF src/Dodge/Data/ComposedItem.hs 35;" C
UncomposableIsolateSF src/Dodge/Data/ComposedItem.hs 36;" C
Uncursed src/Dodge/Data/Item/CurseStatus.hs 12;" C
UnderGround src/Dodge/Data/Scenario.hs 78;" C
UnderRoof src/Dodge/Data/Scenario.hs 79;" C
@@ -2096,11 +2100,11 @@ WdWdFromItixCrixWdWd src/Dodge/Data/WorldEffect.hs 34;" C
WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 33;" C
WdYouPos src/Dodge/Data/WorldEffect.hs 41;" C
Weapon src/Dodge/Item/Weapon.hs 2;" m
WeaponPlatformSF src/Dodge/Data/ComposedItem.hs 29;" C
WeaponPlatformSF src/Dodge/Data/ComposedItem.hs 30;" C
WeaponScopeLink src/Dodge/Data/ComposedItem.hs 22;" C
WeaponScopeSF src/Dodge/Data/ComposedItem.hs 30;" C
WeaponScopeSF src/Dodge/Data/ComposedItem.hs 31;" C
WeaponTargetingLink src/Dodge/Data/ComposedItem.hs 23;" C
WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C
WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 32;" C
Weapons src/Dodge/Item/Held/Weapons.hs 1;" m
West src/Dodge/Data/CardinalPoint.hs 7;" C
Window src/Dodge/Base/Window.hs 2;" m
@@ -2244,6 +2248,8 @@ _bulGunSound src/Dodge/Data/Item/Use.hs 105;" f
_bullets src/Dodge/Data/LWorld.hs 105;" f
_buttons src/Dodge/Data/LWorld.hs 133;" f
_cClock src/Dodge/Data/CWorld.hs 28;" f
_cItem src/Dodge/Data/ComposedItem.hs 47;" f
_cItemFunction src/Dodge/Data/ComposedItem.hs 48;" f
_cUse src/Dodge/Data/Item/Use.hs 51;" f
_cWorld src/Dodge/Data/World.hs 38;" f
_camBoundBox src/Dodge/Data/Camera.hs 31;" f
@@ -2573,8 +2579,8 @@ _hudElement src/Dodge/Data/HUD.hs 36;" f
_humanoidAI src/Dodge/Data/Creature/Misc.hs 69;" f
_iaLoaded src/Dodge/Data/Item/Use/Consumption.hs 22;" f
_iaMax src/Dodge/Data/Item/Use/Consumption.hs 21;" f
_iatOrient src/Dodge/Data/ComposedItem.hs 47;" f
_iatType src/Dodge/Data/ComposedItem.hs 46;" f
_iatOrient src/Dodge/Data/ComposedItem.hs 53;" f
_iatType src/Dodge/Data/ComposedItem.hs 52;" f
_ibtAmmoMag src/Dodge/Data/Item/Combine.hs 22;" f
_ibtAttach src/Dodge/Data/Item/Combine.hs 21;" f
_ibtBulletMod src/Dodge/Data/Item/Combine.hs 24;" f
@@ -2619,9 +2625,9 @@ _itInvSize src/Dodge/Data/Item.hs 41;" f
_itLocation src/Dodge/Data/Item.hs 37;" f
_itParams src/Dodge/Data/Item.hs 44;" f
_itTargeting src/Dodge/Data/Item.hs 39;" f
_itTgActive src/Dodge/Data/Item.hs 50;" f
_itTgID src/Dodge/Data/Item.hs 49;" f
_itTgPos src/Dodge/Data/Item.hs 48;" f
_itTgActive src/Dodge/Data/Item.hs 51;" f
_itTgID src/Dodge/Data/Item.hs 50;" f
_itTgPos src/Dodge/Data/Item.hs 49;" f
_itType src/Dodge/Data/Item.hs 35;" f
_itUse src/Dodge/Data/Item.hs 34;" f
_itemLocations src/Dodge/Data/LWorld.hs 99;" f
@@ -2678,9 +2684,9 @@ _lsParam src/Dodge/Data/LightSource.hs 36;" f
_lsPict src/Dodge/Data/LightSource.hs 38;" f
_lsPos src/Dodge/Data/LightSource.hs 28;" f
_lsRad src/Dodge/Data/LightSource.hs 29;" f
_luChildUpdate src/Dodge/Data/ComposedItem.hs 58;" f
_luLinkType src/Dodge/Data/ComposedItem.hs 56;" f
_luParentUpdate src/Dodge/Data/ComposedItem.hs 57;" f
_luChildUpdate src/Dodge/Data/ComposedItem.hs 64;" f
_luLinkType src/Dodge/Data/ComposedItem.hs 62;" f
_luParentUpdate src/Dodge/Data/ComposedItem.hs 63;" f
_lwID src/Dodge/Data/LinearShockwave.hs 15;" f
_lwPoints src/Dodge/Data/LinearShockwave.hs 16;" f
_lwPos src/Dodge/Data/LinearShockwave.hs 14;" f
@@ -3138,8 +3144,8 @@ _tractorBeams src/Dodge/Data/LWorld.hs 118;" f
_trieChildren src/SimpleTrie.hs 10;" f
_trieMVal src/SimpleTrie.hs 9;" f
_triggers src/Dodge/Data/LWorld.hs 127;" f
_tryLeftLink src/Dodge/Data/ComposedItem.hs 51;" f
_tryRightLink src/Dodge/Data/ComposedItem.hs 52;" f
_tryLeftLink src/Dodge/Data/ComposedItem.hs 57;" f
_tryRightLink src/Dodge/Data/ComposedItem.hs 58;" f
_ttDeathEffect src/Dodge/Data/Terminal.hs 82;" f
_ttTriggerID src/Dodge/Data/Terminal.hs 81;" f
_tuDir src/Dodge/Data/Machine.hs 61;" f
@@ -3428,7 +3434,6 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 255;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 38;" f
basePartiallyComposedItem' src/Dodge/Item/Grammar.hs 86;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 258;" f
baseRodShape src/Dodge/Item/Draw/SPic.hs 342;" f
baseSMGShape src/Dodge/Item/Draw/SPic.hs 325;" f
@@ -4529,21 +4534,21 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f
intervalList src/Geometry.hs 315;" f
interweave src/Justify.hs 17;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 146;" f
invAdj src/Dodge/Item/Grammar.hs 165;" f
invDimColor src/Dodge/DisplayInventory.hs 139;" f
invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f
invHead src/Dodge/Render/HUD.hs 266;" f
invIndentIM src/Dodge/Item/Grammar.hs 158;" f
invLDT src/Dodge/Item/Grammar.hs 130;" f
invRootMap src/Dodge/Item/Grammar.hs 139;" f
invRootTrees src/Dodge/Item/Grammar.hs 178;" f
invIndentIM src/Dodge/Item/Grammar.hs 177;" f
invLDT src/Dodge/Item/Grammar.hs 149;" f
invRootMap src/Dodge/Item/Grammar.hs 158;" f
invRootTrees src/Dodge/Item/Grammar.hs 197;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 34;" f
invSelectionItem' src/Dodge/Inventory/SelectionList.hs 16;" f
invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f
invSideEff src/Dodge/Creature/State.hs 161;" f
invSize src/Dodge/Inventory/CheckSlots.hs 41;" f
invTrees src/Dodge/Item/Grammar.hs 166;" f
invTrees' src/Dodge/Item/Grammar.hs 170;" f
invTrees src/Dodge/Item/Grammar.hs 185;" f
invTrees' src/Dodge/Item/Grammar.hs 189;" f
inventoryExtra src/Dodge/Render/HUD.hs 184;" f
inventoryExtraH src/Dodge/Render/HUD.hs 195;" f
inventoryX src/Dodge/Creature.hs 115;" f
@@ -4605,7 +4610,8 @@ itemToBreakLists src/Dodge/Item/Grammar.hs 41;" f
itemToFunction src/Dodge/Item/Grammar.hs 67;" f
itemTreeSPic src/Dodge/Item/Draw/SPic.hs 22;" f
itemUpdate src/Dodge/Creature/State.hs 310;" f
itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 34;" f
itemUseEffect src/Dodge/Creature/Impulse/UseItem.hs 56;" f
itemUseEffect' src/Dodge/Creature/Impulse/UseItem.hs 34;" f
iterateUntil src/MonadHelp.hs 23;" f
iterateWhile src/MonadHelp.hs 30;" f
itmBaseInfo src/Dodge/Item/Info.hs 22;" f
@@ -4614,7 +4620,7 @@ itmSpaceInfo src/Dodge/Item/Info.hs 17;" f
itmUsageInfo src/Dodge/Item/Info.hs 200;" f
jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
jaggedShape src/Dodge/Block/Debris.hs 191;" f
joinItemsInList src/Dodge/Item/Grammar.hs 121;" f
joinItemsInList src/Dodge/Item/Grammar.hs 140;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f
jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 63;" f
jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f
@@ -4647,6 +4653,7 @@ lasSensorTurretTest src/Dodge/Room/LasTurret.hs 105;" f
lasTunnel src/Dodge/Room/LasTurret.hs 124;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
laserLinkTest src/Dodge/Item/Grammar.hs 88;" f
lastMap src/Dodge/DoubleTree.hs 174;" f
latchkey src/Dodge/Item/Held/Utility.hs 23;" f
launcher src/Dodge/Item/Held/Launcher.hs 12;" f
@@ -4666,10 +4673,10 @@ ldtToIndentList src/Dodge/DoubleTree.hs 146;" f
ldtToLoc src/Dodge/DoubleTree.hs 187;" f
left src/DoubleStack.hs 16;" f
leftInfo src/Dodge/Item/Info.hs 96;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 91;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 110;" f
leftItemSPic src/Dodge/Item/Draw/SPic.hs 97;" f
leftPad src/Padding.hs 14;" f
leftRightCombine src/Dodge/Item/Grammar.hs 105;" f
leftRightCombine src/Dodge/Item/Grammar.hs 124;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 415;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f
light src/Color.hs 104;" f
@@ -4698,6 +4705,8 @@ listCursorChooseBorderScale src/Dodge/Render/List.hs 105;" f
listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f
listSelectionColorPicture src/Dodge/DisplayInventory.hs 245;" f
litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f
llleft src/Dodge/Item/Grammar.hs 91;" f
llright src/Dodge/Item/Grammar.hs 94;" f
lmt src/MatrixHelper.hs 43;" f
lnkBothAnd src/Dodge/Room/Procedural.hs 120;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 255;" f
@@ -5393,7 +5402,7 @@ rezText' src/Dodge/Story.hs 17;" f
rhombus src/Polyhedra.hs 71;" f
rifle src/Dodge/Item/Held/Cane.hs 51;" f
right src/DoubleStack.hs 16;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 98;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 117;" f
rightPad src/Padding.hs 22;" f
rightPadNoSquash src/Padding.hs 26;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f
@@ -5885,6 +5894,7 @@ toColor8 src/Color.hs 148;" f
toCombNodeLabel src/Dodge/Combine/Graph.hs 81;" f
toFloatVAs src/Shader/Compile.hs 211;" f
toLabel src/Dodge/Cleat.hs 16;" f
toLasgunUpdate src/Dodge/Item/Grammar.hs 99;" f
toMultiset src/Multiset.hs 58;" f
toOnward src/Dodge/Tree/Compose.hs 101;" f
toTopLeft src/Dodge/Render/List.hs 185;" f
@@ -5893,7 +5903,7 @@ toV3 src/Geometry/Data.hs 38;" f
toV4 src/Geometry/Data.hs 40;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 32;" f
toggleCommand src/Dodge/Terminal.hs 194;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 54;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 75;" f
toggleJust src/MaybeHelp.hs 41;" f
toggleMap src/Dodge/Update/Input/InGame.hs 237;" f
toggleTweakInv src/Dodge/Update/Input/InGame.hs 244;" f
@@ -5912,7 +5922,7 @@ torso src/Dodge/Creature/Picture.hs 102;" f
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
tractorBeamAt src/Dodge/HeldUse.hs 265;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 67;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 64;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 375;" f
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
@@ -6135,8 +6145,8 @@ upperPrismPolyST src/Shape.hs 107;" f
upperPrismPolySU src/Shape.hs 113;" f
upperPrismPolyTS src/Shape.hs 119;" f
upperRounded src/Shape.hs 183;" f
useBreakL' src/Dodge/Item/Grammar.hs 23;" f
useBreakListsLinkTest src/Dodge/Item/Grammar.hs 29;" f
useBreakL src/Dodge/Item/Grammar.hs 22;" f
useBreakListsLinkTest src/Dodge/Item/Grammar.hs 28;" f
useBulletPayload src/Dodge/Bullet.hs 105;" f
useC src/Dodge/Cuse.hs 8;" f
useC' src/Dodge/Cuse.hs 13;" f
@@ -6144,9 +6154,9 @@ useE src/Dodge/Euse.hs 24;" f
useEquipment src/Dodge/Creature/State.hs 145;" f
useGasParams src/Dodge/HeldUse.hs 412;" f
useHotKey src/Dodge/Creature/YourControl.hs 48;" f
useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 124;" f
useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 99;" f
useItemLeftClick' src/Dodge/Creature/Impulse/UseItem.hs 112;" f
useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 145;" f
useItemLeftClick src/Dodge/Creature/Impulse/UseItem.hs 120;" f
useItemLeftClick' src/Dodge/Creature/Impulse/UseItem.hs 133;" f
useL src/Dodge/Luse.hs 13;" f
useLnkRoomPos src/Dodge/PlacementSpot.hs 244;" f
useLoadedAmmo src/Dodge/HeldUse.hs 207;" f