diff --git a/src/Dodge/Bullet.hs b/src/Dodge/Bullet.hs index 4b024b5a2..789ee6313 100644 --- a/src/Dodge/Bullet.hs +++ b/src/Dodge/Bullet.hs @@ -22,10 +22,8 @@ import Data.Bifunctor updateBullet :: World -> Bullet -> (World, Maybe Bullet) updateBullet w bu | magV (_buVel bu) < 1 = (endspawn w, Nothing) - | otherwise = - second (fmap updateBulVel) - . hitEffFromBul w - $ applyMagnetsToBul bu w +-- have to be slightly carefull not to accelerate bullets using magnets + | otherwise = second (Just . updateBulVel) . hitEffFromBul w $ applyMagnetsToBul bu w where endspawn = fromMaybe id $ do partspawn <- useBulletPayload bu @@ -34,18 +32,19 @@ updateBullet w bu -- do we want this to drain energy from the deflection source? applyMagnetsToBul :: Bullet -> World -> Bullet -applyMagnetsToBul bu = - foldl' (flip doMagnetBuBu) bu . _oldMagnets . _lWorld . _cWorld +applyMagnetsToBul bu = foldl' doMagnetBuBu bu . _oldMagnets . _lWorld . _cWorld -doMagnetBuBu :: Magnet -> Bullet -> Bullet -doMagnetBuBu mg bu = if isclose - then case _mgField mg of - MagnetAlign -> bu & buVel %~ vecTurnTo (10 * pi / (d+40)) bpos mgalignpos - MagnetDeflect -> bu & buVel %~ vecTurnTo (10 * pi / (d+40)) bpos mgdeflectpos - MagnetAttract -> bu & buVel %~ vecTurnTo (10 * pi / (d+40)) bpos mpos - MagnetRepulse -> bu & buVel %~ vecTurnTo (10 * pi / (d+40)) bpos (2*bpos - mpos) - else bu +doMagnetBuBu :: Bullet -> Magnet -> Bullet +doMagnetBuBu bu mg + | notclose = bu + | otherwise = case _mgField mg of + MagnetAlign -> doturntowards mgalignpos + MagnetDeflect -> doturntowards mgdeflectpos + MagnetAttract -> doturntowards mpos + MagnetRepulse -> doturntowards (2*bpos - mpos) where + notclose = d > 100 + doturntowards p = bu & buVel %~ vecTurnTo (10 * pi / (d+40)) bpos p bvel = bu ^. buVel mpos = mg ^. mgPos bpos = bu ^. buPos @@ -56,10 +55,9 @@ doMagnetBuBu mg bu = if isclose | dotV bvel (bpos - mpos) > 0 = bpos - mpos | otherwise = mpos - bpos d = dist (bu ^. buPos) (mg ^. mgPos) - isclose = d < 100 updateBulVel :: Bullet -> Bullet -updateBulVel bt = bt & buVel .*.*~ _buDrag bt +updateBulVel bt = bt & buVel .*.*~ _buDrag bt --case _buTrajectory bt of -- BasicBulletTrajectory -> bt & buVel .*.*~ _buDrag bt -- MagnetTrajectory tpos -> bt @@ -155,10 +153,7 @@ makeFlak bu _ w = w & cWorld . lWorld . bullets .++~ [f x | x <- xs] ] g x v = v +.+ x *.* normalizeV (vNormal v) -hitEffFromBul :: - World -> - Bullet -> - (World, Maybe Bullet) +hitEffFromBul :: World -> Bullet -> (World, Bullet) hitEffFromBul w bu = case _buEffect bu of PenetrateBullet -> movePenBullet bu hitstream w BounceBullet -> case List.safeHead hitstream of @@ -167,8 +162,7 @@ hitEffFromBul w bu = case _buEffect bu of dir <- bounceDir (hp, crwl) return ( w - , Just $ - bu + , bu & buPos .~ hp +.+ normalizeV (_buPos bu -.- hp) & buVel %~ reflectIn dir -- & buTrajectory .~ BasicBulletTrajectory @@ -196,22 +190,18 @@ expireAndDamage :: Bullet -> [(Point2, Either Creature Wall)] -> World -> - (World, Maybe Bullet) + (World, Bullet) expireAndDamage bt things w = case List.safeHead things of Nothing -> (w, moveBullet bt) - Just x -> (damageThingHit bt x w, destroyAt (fst x) bt) + Just x -> (damageThingHit bt x w, stopBulletAt (fst x) bt) -moveBullet :: Bullet -> Maybe Bullet -moveBullet pt = - Just $ - pt +moveBullet :: Bullet -> Bullet +moveBullet pt = pt & buPos %~ (+.+ _buVel pt) & buOldPos .~ _buPos pt -destroyAt :: Point2 -> Bullet -> Maybe Bullet -destroyAt hitp pt = - Just $ - pt +stopBulletAt :: Point2 -> Bullet -> Bullet +stopBulletAt hitp pt = pt & buPos .~ hitp +.+ normalizeV (p -.- hitp) & buOldPos .~ p & buVel .~ 0 @@ -222,7 +212,7 @@ movePenBullet :: Bullet -> [(Point2, Either Creature Wall)] -> World -> - (World, Maybe Bullet) + (World, Bullet) movePenBullet bu hitstream w = case hitstream of [] -> (w, moveBullet bu) ((p, crwl) : strm) -> diff --git a/tags b/tags index e524ac57d..62d5e0b57 100644 --- a/tags +++ b/tags @@ -19,22 +19,22 @@ <$> src/Dodge/Data/Creature.hs 88;" o <$> src/Dodge/Data/LWorld.hs 159;" o <$> src/Dodge/Data/Terminal.hs 127;" o -ABSOLUTE src/Dodge/Data/Item/Combine.hs 37;" C -AIUNIT src/Dodge/Data/Item/Combine.hs 72;" C -ALTERIFLE src/Dodge/Data/Item/Combine.hs 151;" C +ABSOLUTE src/Dodge/Data/Item/Combine.hs 38;" C +AIUNIT src/Dodge/Data/Item/Combine.hs 73;" C +ALTERIFLE src/Dodge/Data/Item/Combine.hs 152;" C AMMOMAG src/Dodge/Data/Item/Combine.hs 20;" C -AMR src/Dodge/Data/Item/Combine.hs 156;" C -ANTIMATTER src/Dodge/Data/Item/Combine.hs 66;" C +AMR src/Dodge/Data/Item/Combine.hs 157;" C +ANTIMATTER src/Dodge/Data/Item/Combine.hs 67;" C APInt src/Dodge/Data/Item/Use.hs 77;" C APNothing src/Dodge/Data/Item/Use.hs 78;" C APProjectiles src/Dodge/Data/Item/Use.hs 76;" C AQUAMARINE src/Color/Data.hs 24;" C -ARHUD src/Dodge/Data/Item/Combine.hs 33;" C +ARHUD src/Dodge/Data/Item/Combine.hs 34;" C ARHUDSF src/Dodge/Data/ComposedItem.hs 50;" C ATTACH src/Dodge/Data/Item/Combine.hs 19;" C -AUTOAMR src/Dodge/Data/Item/Combine.hs 157;" C -AUTOPISTOL src/Dodge/Data/Item/Combine.hs 143;" C -AUTORIFLE src/Dodge/Data/Item/Combine.hs 152;" C +AUTOAMR src/Dodge/Data/Item/Combine.hs 158;" C +AUTOPISTOL src/Dodge/Data/Item/Combine.hs 144;" C +AUTORIFLE src/Dodge/Data/Item/Combine.hs 153;" C AZURE src/Color/Data.hs 23;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 28;" C Action src/Dodge/Data/ActionPlan.hs 78;" t @@ -62,7 +62,7 @@ AmmoEffectSF src/Dodge/Data/ComposedItem.hs 60;" C AmmoInLink src/Dodge/Data/ComposedItem.hs 17;" C AmmoMag src/Dodge/Data/Item.hs 34;" C AmmoMagSF src/Dodge/Data/ComposedItem.hs 51;" C -AmmoMagType src/Dodge/Data/Item/Combine.hs 103;" t +AmmoMagType src/Dodge/Data/Item/Combine.hs 104;" t AmmoModLink src/Dodge/Data/ComposedItem.hs 19;" C AmmoModifierSF src/Dodge/Data/ComposedItem.hs 57;" C AmmoParams src/Dodge/Data/Item/Use.hs 114;" t @@ -97,7 +97,7 @@ AtEase src/Dodge/Data/Creature/Stance.hs 40;" C AtomicWaste src/Dodge/Data/Scenario.hs 26;" C Attach src/Dodge/Item/Attach.hs 1;" m AttachParams src/Dodge/Data/Item/Use.hs 75;" t -AttachType src/Dodge/Data/Item/Combine.hs 89;" t +AttachType src/Dodge/Data/Item/Combine.hs 90;" t 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 @@ -110,27 +110,27 @@ AuxAddition src/Shader/AuxAddition.hs 1;" m Avatar src/Dodge/Data/Creature/Misc.hs 70;" C Awareness src/Dodge/Data/Creature/Perception.hs 65;" t Awareness src/Dodge/Creature/Picture/Awareness.hs 1;" m -BANGCONE src/Dodge/Data/Item/Combine.hs 145;" C -BANGROD src/Dodge/Data/Item/Combine.hs 154;" C -BANGSTICK src/Dodge/Data/Item/Combine.hs 137;" C -BATTERY src/Dodge/Data/Item/Combine.hs 108;" C -BATTERYPACK src/Dodge/Data/Item/Combine.hs 132;" C -BELTMAG src/Dodge/Data/Item/Combine.hs 106;" C -BGATE src/Dodge/Data/Item/Combine.hs 30;" C +BANGCONE src/Dodge/Data/Item/Combine.hs 146;" C +BANGROD src/Dodge/Data/Item/Combine.hs 155;" C +BANGSTICK src/Dodge/Data/Item/Combine.hs 138;" C +BATTERY src/Dodge/Data/Item/Combine.hs 109;" C +BATTERYPACK src/Dodge/Data/Item/Combine.hs 133;" C +BELTMAG src/Dodge/Data/Item/Combine.hs 107;" C +BINGATE src/Dodge/Data/Item/Combine.hs 31;" C BLACK src/Color/Data.hs 28;" C -BLINKER src/Dodge/Data/Item/Combine.hs 176;" C -BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 177;" C -BLOWTORCH src/Dodge/Data/Item/Combine.hs 163;" C +BLINKER src/Dodge/Data/Item/Combine.hs 177;" C +BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 178;" C +BLOWTORCH src/Dodge/Data/Item/Combine.hs 164;" C BLUE src/Color/Data.hs 17;" C -BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 146;" C +BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 147;" C BLUNT src/Dodge/Data/Damage/Type.hs 13;" C BQuad src/Geometry/Bezier.hs 9;" t -BRAINHAT src/Dodge/Data/Item/Combine.hs 123;" C -BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 131;" C -BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 130;" C +BRAINHAT src/Dodge/Data/Item/Combine.hs 124;" C +BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 132;" C +BULLETBELTPACK src/Dodge/Data/Item/Combine.hs 131;" C BULLETMOD src/Dodge/Data/Item/Combine.hs 22;" C -BULLETSYNTH src/Dodge/Data/Item/Combine.hs 91;" C -BURSTRIFLE src/Dodge/Data/Item/Combine.hs 153;" C +BULLETSYNTH src/Dodge/Data/Item/Combine.hs 92;" C +BURSTRIFLE src/Dodge/Data/Item/Combine.hs 154;" C BackdropCursor src/Dodge/Data/SelectionList.hs 21;" C BackgroundSound src/Dodge/Data/SoundOrigin.hs 15;" C Ball src/Dodge/Tesla/Ball.hs 1;" m @@ -243,11 +243,11 @@ ButtonEvent src/Dodge/Data/Button.hs 22;" t ButtonPress src/Dodge/Data/Button.hs 24;" C ButtonSimpleSwith src/Dodge/Data/Button.hs 40;" C ButtonState src/Dodge/Data/Button.hs 63;" t -CAMERA src/Dodge/Data/Item/Combine.hs 73;" C -CAN src/Dodge/Data/Item/Combine.hs 54;" C +CAMERA src/Dodge/Data/Item/Combine.hs 74;" C +CAN src/Dodge/Data/Item/Combine.hs 55;" C CDoNothing src/Dodge/Data/Item/HeldUse.hs 15;" C CHARTREUSE src/Color/Data.hs 25;" C -CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 109;" C +CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 110;" C CHeal src/Dodge/Data/Item/HeldUse.hs 16;" C CIRCLE src/Dodge/Data/GenParams.hs 20;" C CLICKER src/Dodge/Data/Item/Combine.hs 27;" C @@ -255,8 +255,8 @@ CME src/Dodge/Data/MuzzleEffect.hs 11;" C CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C COPIER src/Dodge/Data/Item/Combine.hs 28;" C CRAFT src/Dodge/Data/Item/Combine.hs 18;" C -CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 182;" C -CREATURESENSOR src/Dodge/Data/Item/Combine.hs 83;" C +CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 183;" C +CREATURESENSOR src/Dodge/Data/Item/Combine.hs 84;" C CRUSHING src/Dodge/Data/Damage/Type.hs 16;" C CUTTING src/Dodge/Data/Damage/Type.hs 14;" C CWGen src/Dodge/Data/CWorld.hs 34;" t @@ -356,7 +356,7 @@ Configuration src/Dodge/Data/Config.hs 38;" t Connectors src/Dodge/Render/Connectors.hs 3;" m ConstFloat src/Dodge/Data/GenFloat.hs 11;" C Consumable src/Dodge/Item/Consumable.hs 1;" m -ConsumableItemType src/Dodge/Data/Item/Combine.hs 112;" t +ConsumableItemType src/Dodge/Data/Item/Combine.hs 113;" t Consumables src/Dodge/Data/Item.hs 32;" t Consumption src/Dodge/Data/Item/Use/Consumption.hs 8;" m Consumption src/Dodge/Default/Item/Use/Consumption.hs 1;" m @@ -409,7 +409,7 @@ CrWlID src/Dodge/Data/CrWlID.hs 6;" m Cr_awareness src/Dodge/Data/Config.hs 72;" C Cr_status src/Dodge/Data/Config.hs 71;" C CraftClust src/Dodge/Combine/Graph.hs 19;" C -CraftType src/Dodge/Data/Item/Combine.hs 47;" t +CraftType src/Dodge/Data/Item/Combine.hs 48;" t Craftable src/Dodge/Item/Craftable.hs 1;" m Create src/Dodge/Projectile/Create.hs 1;" m Create src/Dodge/Prop/Create.hs 1;" m @@ -439,10 +439,10 @@ CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cuse src/Dodge/Data/Item/HeldUse.hs 14;" t Cuse src/Dodge/Cuse.hs 1;" m Cylinder src/Shape/Data.hs 19;" C -DETECTOR src/Dodge/Data/Item/Combine.hs 32;" C +DETECTOR src/Dodge/Data/Item/Combine.hs 33;" C DPoint2 src/Geometry/Data.hs 34;" t DROPPER src/Dodge/Data/Item/Combine.hs 26;" C -DRUMMAG src/Dodge/Data/Item/Combine.hs 105;" C +DRUMMAG src/Dodge/Data/Item/Combine.hs 106;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 30;" C DTBottomNode src/Dodge/Data/DoubleTree.hs 20;" C @@ -506,7 +506,7 @@ Destroy src/Dodge/Machine/Destroy.hs 1;" m DestroyBeing src/Dodge/Data/Scenario.hs 8;" C DestroyBullet src/Dodge/Data/Bullet.hs 36;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C -Detector src/Dodge/Data/Item/Combine.hs 180;" t +Detector src/Dodge/Data/Item/Combine.hs 181;" t Dirt src/Dodge/Data/Material.hs 11;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t Display src/Dodge/Item/Display.hs 3;" m @@ -595,13 +595,13 @@ EBO src/Shader/Data.hs 88;" t EDoNothing src/Dodge/Data/Item/HeldUse.hs 20;" C EHeadLamp src/Dodge/Data/Item/HeldUse.hs 23;" C ELECTRICAL src/Dodge/Data/Damage/Type.hs 20;" C -ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 155;" C +ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 156;" C EMagShield src/Dodge/Data/Item/HeldUse.hs 21;" C ENTERREMENT src/Dodge/Data/Damage/Type.hs 24;" C EQUIP src/Dodge/Data/Item/Combine.hs 17;" C EWristShield src/Dodge/Data/Item/HeldUse.hs 22;" C EXPLOSIVE src/Dodge/Data/Damage/Type.hs 21;" C -EXPLOSIVES src/Dodge/Data/Item/Combine.hs 114;" C +EXPLOSIVES src/Dodge/Data/Item/Combine.hs 115;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 5;" C East8 src/Dodge/Data/CardinalPoint.hs 13;" C @@ -630,7 +630,7 @@ EonWristShield src/Dodge/Data/Item/Use/Equipment.hs 31;" C EquipCounter src/Dodge/Data/Item/Use/Equipment.hs 38;" C EquipEffect src/Dodge/Data/Item/Use/Equipment.hs 17;" t EquipID src/Dodge/Data/Item/Use/Equipment.hs 37;" C -EquipItemType src/Dodge/Data/Item/Combine.hs 117;" t +EquipItemType src/Dodge/Data/Item/Combine.hs 118;" t EquipOptions src/Dodge/Data/RightButtonOptions.hs 15;" C EquipParams src/Dodge/Data/Item/Use/Equipment.hs 35;" t EquipSite src/Dodge/Data/Equipment/Misc.hs 21;" t @@ -659,16 +659,16 @@ ExternallyGeneratedSounds src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 2;" ExtraEffect src/Dodge/Item/Weapon/ExtraEffect.hs 6;" m Eyes src/Dodge/Data/Creature/Perception.hs 41;" C FBO src/Shader/Data.hs 57;" t -FLAMESHIELD src/Dodge/Data/Item/Combine.hs 119;" C -FLAMESPITTER src/Dodge/Data/Item/Combine.hs 159;" C -FLAMETHROWER src/Dodge/Data/Item/Combine.hs 160;" C -FLAMETORRENT src/Dodge/Data/Item/Combine.hs 161;" C -FLAMEWALL src/Dodge/Data/Item/Combine.hs 162;" C +FLAMESHIELD src/Dodge/Data/Item/Combine.hs 120;" C +FLAMESPITTER src/Dodge/Data/Item/Combine.hs 160;" C +FLAMETHROWER src/Dodge/Data/Item/Combine.hs 161;" C +FLAMETORRENT src/Dodge/Data/Item/Combine.hs 162;" C +FLAMEWALL src/Dodge/Data/Item/Combine.hs 163;" C FLAMING src/Dodge/Data/Damage/Type.hs 18;" C -FLATSHIELD src/Dodge/Data/Item/Combine.hs 174;" C -FRONTARMOUR src/Dodge/Data/Item/Combine.hs 120;" C -FUELCELL src/Dodge/Data/Item/Combine.hs 85;" C -FUELPACK src/Dodge/Data/Item/Combine.hs 129;" C +FLATSHIELD src/Dodge/Data/Item/Combine.hs 175;" C +FRONTARMOUR src/Dodge/Data/Item/Combine.hs 121;" C +FUELCELL src/Dodge/Data/Item/Combine.hs 86;" C +FUELPACK src/Dodge/Data/Item/Combine.hs 130;" C FacilityType src/Dodge/Data/Scenario.hs 55;" t Faction src/Dodge/Data/Creature/State.hs 34;" t Factory src/Dodge/Data/Scenario.hs 56;" C @@ -737,16 +737,16 @@ FunctionChangeLink src/Dodge/Data/ComposedItem.hs 30;" C FunctionChangeSF src/Dodge/Data/ComposedItem.hs 61;" C GBounce src/Dodge/Data/Projectile.hs 53;" C GEqC src/SameConstr.hs 20;" c -GIMBAL src/Dodge/Data/Item/Combine.hs 94;" C -GLASSSHARD src/Dodge/Data/Item/Combine.hs 58;" C -GLAUNCHER src/Dodge/Data/Item/Combine.hs 170;" C +GIMBAL src/Dodge/Data/Item/Combine.hs 95;" C +GLASSSHARD src/Dodge/Data/Item/Combine.hs 59;" C +GLAUNCHER src/Dodge/Data/Item/Combine.hs 171;" C GLHelp src/GLHelp.hs 1;" m -GRAPECANNON src/Dodge/Data/Item/Combine.hs 147;" C +GRAPECANNON src/Dodge/Data/Item/Combine.hs 148;" C GREEN src/Color/Data.hs 16;" C GStick src/Dodge/Data/Projectile.hs 54;" C GStuckCreature src/Dodge/Data/Projectile.hs 55;" C GStuckWall src/Dodge/Data/Projectile.hs 56;" C -GYROSCOPE src/Dodge/Data/Item/Combine.hs 95;" C +GYROSCOPE src/Dodge/Data/Item/Combine.hs 96;" C GadgetPlatformSF src/Dodge/Data/ComposedItem.hs 45;" C GameOverOptions src/Dodge/Data/Universe.hs 70;" C GameRoom src/Dodge/GameRoom.hs 15;" t @@ -800,15 +800,15 @@ Grid src/Grid.hs 1;" m Gust src/Dodge/Data/Gust.hs 13;" t Gust src/Dodge/Data/Gust.hs 6;" m GymSS src/Dodge/Data/Scenario.hs 104;" C -HARDDRIVE src/Dodge/Data/Item/Combine.hs 70;" C -HARDWARE src/Dodge/Data/Item/Combine.hs 50;" C -HAT src/Dodge/Data/Item/Combine.hs 124;" C -HEADLAMP src/Dodge/Data/Item/Combine.hs 125;" C -HEALTH src/Dodge/Data/Item/Combine.hs 43;" C -HEATSENSOR src/Dodge/Data/Item/Combine.hs 80;" C +HARDDRIVE src/Dodge/Data/Item/Combine.hs 71;" C +HARDWARE src/Dodge/Data/Item/Combine.hs 51;" C +HAT src/Dodge/Data/Item/Combine.hs 125;" C +HEADLAMP src/Dodge/Data/Item/Combine.hs 126;" C +HEALTH src/Dodge/Data/Item/Combine.hs 44;" C +HEATSENSOR src/Dodge/Data/Item/Combine.hs 81;" C HELD src/Dodge/Data/Item/Combine.hs 16;" C -HOMINGMODULE src/Dodge/Data/Item/Combine.hs 99;" C -HOSE src/Dodge/Data/Item/Combine.hs 52;" C +HOMINGMODULE src/Dodge/Data/Item/Combine.hs 100;" C +HOSE src/Dodge/Data/Item/Combine.hs 53;" C HUD src/Dodge/Data/HUD.hs 44;" t HUD src/Dodge/Data/HUD.hs 6;" m HUD src/Dodge/Render/HUD.hs 3;" m @@ -828,7 +828,7 @@ HasHammer src/Dodge/Data/Hammer.hs 14;" C HeavySmokeFlare src/Dodge/Data/Item/Use.hs 137;" C Held src/Dodge/Item/Held.hs 1;" m HeldDelay src/Dodge/Data/Item/HeldDelay.hs 6;" m -HeldItemType src/Dodge/Data/Item/Combine.hs 136;" t +HeldItemType src/Dodge/Data/Item/Combine.hs 137;" t HeldOffset src/Dodge/Item/HeldOffset.hs 1;" m HeldParams src/Dodge/Data/Item/Use.hs 81;" t HeldPlatformSF src/Dodge/Data/ComposedItem.hs 41;" C @@ -866,10 +866,10 @@ Humanoid src/Dodge/Humanoid.hs 1;" m HumanoidAI src/Dodge/Data/Creature/Misc.hs 48;" t ILink src/Dodge/Data/ComposedItem.hs 71;" C IMSS src/Dodge/Data/SelectionList.hs 37;" t -INTROSCAN src/Dodge/Data/Item/Combine.hs 31;" C -INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 122;" C -IRONBAR src/Dodge/Data/Item/Combine.hs 77;" C -ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 181;" C +INTROSCAN src/Dodge/Data/Item/Combine.hs 32;" C +INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 123;" C +IRONBAR src/Dodge/Data/Item/Combine.hs 78;" C +ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 182;" C ITEMSCAN src/Dodge/Data/Item/Combine.hs 24;" C ImmediateEffect src/Loop/Data.hs 8;" C Importance src/Shape/Data.hs 34;" t @@ -922,14 +922,14 @@ Intention src/Dodge/Creature/Intention.hs 1;" m Intersect src/Geometry/Intersect.hs 5;" m IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 48;" C -IntroScanType src/Dodge/Data/Item/Combine.hs 42;" t +IntroScanType src/Dodge/Data/Item/Combine.hs 43;" t InvInt src/Dodge/Data/Item/Location.hs 19;" t InvSize src/Dodge/Item/InvSize.hs 2;" m Inventory src/Dodge/Inventory.hs 2;" m InventoryChange src/Dodge/Data/World.hs 31;" C InventoryColor src/Dodge/Item/InventoryColor.hs 1;" m InventoryConnectSound src/Dodge/Data/SoundOrigin.hs 14;" C -InventoryPathing src/Dodge/Data/Item/Combine.hs 36;" t +InventoryPathing src/Dodge/Data/Item/Combine.hs 37;" t InventorySound src/Dodge/Data/SoundOrigin.hs 13;" C Investigate src/Dodge/Data/ActionPlan.hs 184;" C Invisible src/Dodge/Data/CamouflageStatus.hs 13;" C @@ -973,17 +973,17 @@ ItmCrWdWd src/Dodge/Data/Item/Use/Equipment.hs 28;" t ItmCrWdWdDoNothing src/Dodge/Data/Item/Use/Equipment.hs 29;" C ItmInt src/Dodge/Data/Item/Location.hs 25;" t JGK src/Control/Foldl/JGK.hs 1;" m -JOYSTICK src/Dodge/Data/Item/Combine.hs 93;" C -JUMPLEGS src/Dodge/Data/Item/Combine.hs 128;" C +JOYSTICK src/Dodge/Data/Item/Combine.hs 94;" C +JUMPLEGS src/Dodge/Data/Item/Combine.hs 129;" C JoinClust src/Dodge/Combine/Graph.hs 21;" C JoystickLink src/Dodge/Data/ComposedItem.hs 25;" C JoystickSF src/Dodge/Data/ComposedItem.hs 53;" C Just' src/MaybeHelp.hs 13;" C JustStartedPlaying src/Sound/Data.hs 25;" C Justify src/Justify.hs 1;" m -KEYCARD src/Dodge/Data/Item/Combine.hs 175;" C +KEYCARD src/Dodge/Data/Item/Combine.hs 176;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C -LASER src/Dodge/Data/Item/Combine.hs 166;" C +LASER src/Dodge/Data/Item/Combine.hs 167;" C LASERING src/Dodge/Data/Damage/Type.hs 19;" C LDT src/Dodge/Data/DoubleTree.hs 40;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 28;" C @@ -992,10 +992,10 @@ LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 26;" C LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 27;" C LDTRootNode src/Dodge/Data/DoubleTree.hs 24;" C LDTTopNode src/Dodge/Data/DoubleTree.hs 25;" C -LED src/Dodge/Data/Item/Combine.hs 75;" C +LED src/Dodge/Data/Item/Combine.hs 76;" C LHS src/Geometry/LHS.hs 1;" m -LIGHTER src/Dodge/Data/Item/Combine.hs 64;" C -LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 78;" C +LIGHTER src/Dodge/Data/Item/Combine.hs 65;" C +LIGHTSENSOR src/Dodge/Data/Item/Combine.hs 79;" C LS src/Dodge/Data/LightSource.hs 23;" C LSParam src/Dodge/Data/LightSource.hs 16;" t LTest src/Dodge/Data/ComposedItem.hs 78;" C @@ -1090,25 +1090,25 @@ LtAutoAI src/Dodge/Data/Creature/Misc.hs 53;" C LtAutoCrit src/Dodge/Creature/LtAutoCrit.hs 1;" m Lure src/Dodge/Data/ActionPlan.hs 179;" C Luse src/Dodge/Luse.hs 2;" m -MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 142;" C +MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 143;" C MAGENTA src/Color/Data.hs 20;" C -MAGNET src/Dodge/Data/Item/Combine.hs 65;" C -MAGSHIELD src/Dodge/Data/Item/Combine.hs 118;" C +MAGNET src/Dodge/Data/Item/Combine.hs 66;" C +MAGSHIELD src/Dodge/Data/Item/Combine.hs 119;" C MAPPER src/Dodge/Data/Item/Combine.hs 25;" C -MAXHEALTH src/Dodge/Data/Item/Combine.hs 44;" C +MAXHEALTH src/Dodge/Data/Item/Combine.hs 45;" C MBranch src/Dodge/Data/MetaTree.hs 16;" C MBranch src/Dodge/Tree/Compose/Data.hs 10;" C MCrAc src/Dodge/Data/CreatureEffect.hs 45;" t MCrNoAction src/Dodge/Data/CreatureEffect.hs 45;" C -MEDKIT src/Dodge/Data/Item/Combine.hs 113;" C -MICROCHIP src/Dodge/Data/Item/Combine.hs 69;" C -MICROPHONE src/Dodge/Data/Item/Combine.hs 81;" C -MINIDISPLAY src/Dodge/Data/Item/Combine.hs 74;" C -MINIGUNX src/Dodge/Data/Item/Combine.hs 148;" C +MEDKIT src/Dodge/Data/Item/Combine.hs 114;" C +MICROCHIP src/Dodge/Data/Item/Combine.hs 70;" C +MICROPHONE src/Dodge/Data/Item/Combine.hs 82;" C +MINIDISPLAY src/Dodge/Data/Item/Combine.hs 75;" C +MINIGUNX src/Dodge/Data/Item/Combine.hs 149;" C MODBlockedString src/Dodge/Data/Universe.hs 97;" C MODString src/Dodge/Data/Universe.hs 96;" C MODStringOption src/Dodge/Data/Universe.hs 98;" C -MOTOR src/Dodge/Data/Item/Combine.hs 61;" C +MOTOR src/Dodge/Data/Item/Combine.hs 62;" C MP2Ac src/Dodge/Data/CreatureEffect.hs 56;" t MP2NoAction src/Dodge/Data/CreatureEffect.hs 56;" C MTRS src/Dodge/Annotation/Data.hs 12;" t @@ -1239,13 +1239,14 @@ MuzzleUnsafeBlink src/Dodge/Data/Item/Use.hs 158;" C MvForward src/Dodge/Data/ActionPlan.hs 35;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 34;" C MvWalking src/Dodge/Data/Creature/Misc.hs 39;" C -NAILBOX src/Dodge/Data/Item/Combine.hs 76;" C +NAILBOX src/Dodge/Data/Item/Combine.hs 77;" C NInt src/NewInt.hs 15;" C NIntMap src/NewInt.hs 18;" C NS src/Dodge/Data/CardinalPoint.hs 25;" C NSE src/Dodge/Data/CardinalPoint.hs 23;" C NSEW src/Dodge/Data/CardinalPoint.hs 22;" C NSW src/Dodge/Data/CardinalPoint.hs 24;" C +NULGATE src/Dodge/Data/Item/Combine.hs 29;" C NearCosmicRays src/Dodge/Data/Scenario.hs 84;" C NearDustBelt src/Dodge/Data/Scenario.hs 85;" C NearGravityFlux src/Dodge/Data/Scenario.hs 83;" C @@ -1395,24 +1396,24 @@ P2Imp src/Dodge/Data/CreatureEffect.hs 28;" t P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C PIERCING src/Dodge/Data/Damage/Type.hs 12;" C -PIPE src/Dodge/Data/Item/Combine.hs 48;" C -PISTOL src/Dodge/Data/Item/Combine.hs 141;" C +PIPE src/Dodge/Data/Item/Combine.hs 49;" C +PISTOL src/Dodge/Data/Item/Combine.hs 142;" C PJStabiliser src/Dodge/Projectile/Create.hs 17;" t -PLANK src/Dodge/Data/Item/Combine.hs 57;" C -PLATE src/Dodge/Data/Item/Combine.hs 67;" C +PLANK src/Dodge/Data/Item/Combine.hs 58;" C +PLATE src/Dodge/Data/Item/Combine.hs 68;" C PLUS src/Dodge/Data/GenParams.hs 20;" C POISONDAM src/Dodge/Data/Damage/Type.hs 23;" C -POISONSPRAYER src/Dodge/Data/Item/Combine.hs 171;" C -PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 86;" C -POWERLEGS src/Dodge/Data/Item/Combine.hs 126;" C +POISONSPRAYER src/Dodge/Data/Item/Combine.hs 172;" C +PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 87;" C +POWERLEGS src/Dodge/Data/Item/Combine.hs 127;" C PPLevelReset src/Dodge/Data/PressPlate.hs 16;" C -PRISM src/Dodge/Data/Item/Combine.hs 63;" C +PRISM src/Dodge/Data/Item/Combine.hs 64;" C PS src/Dodge/Data/GenWorld.hs 62;" C PSNoShiftCont src/Dodge/Data/GenWorld.hs 63;" C PSPos src/Dodge/Data/GenWorld.hs 64;" C PSRoomRand src/Dodge/Data/GenWorld.hs 69;" C PSType src/Dodge/Data/GenWorld.hs 30;" t -PUMP src/Dodge/Data/Item/Combine.hs 60;" C +PUMP src/Dodge/Data/Item/Combine.hs 61;" C Padding src/Padding.hs 2;" m Pair src/FoldlHelp.hs 10;" t PaletteColor src/Color/Data.hs 14;" t @@ -1568,18 +1569,18 @@ PutWorldUpdate src/Dodge/Data/GenWorld.hs 54;" C QuarterRes src/Dodge/Data/Config.hs 97;" C Quaternion src/Quaternion.hs 12;" m QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C -RAM src/Dodge/Data/Item/Combine.hs 71;" C +RAM src/Dodge/Data/Item/Combine.hs 72;" C RBList src/Dodge/Inventory/RBList.hs 1;" m RED src/Color/Data.hs 15;" C -RELCURS src/Dodge/Data/Item/Combine.hs 38;" C -RELITEM src/Dodge/Data/Item/Combine.hs 39;" C -REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 97;" C -REMOTESCREEN src/Dodge/Data/Item/Combine.hs 92;" C -REWINDER src/Dodge/Data/Item/Combine.hs 138;" C +RELCURS src/Dodge/Data/Item/Combine.hs 39;" C +RELITEM src/Dodge/Data/Item/Combine.hs 40;" C +REMOTEDETONATOR src/Dodge/Data/Item/Combine.hs 98;" C +REMOTESCREEN src/Dodge/Data/Item/Combine.hs 93;" C +REWINDER src/Dodge/Data/Item/Combine.hs 139;" C RGBA src/Color/Data.hs 31;" t -RIFLE src/Dodge/Data/Item/Combine.hs 150;" C -RLAUNCHER src/Dodge/Data/Item/Combine.hs 168;" C -RLAUNCHERX src/Dodge/Data/Item/Combine.hs 169;" C +RIFLE src/Dodge/Data/Item/Combine.hs 151;" C +RLAUNCHER src/Dodge/Data/Item/Combine.hs 169;" C +RLAUNCHERX src/Dodge/Data/Item/Combine.hs 170;" C ROSE src/Color/Data.hs 21;" C RPLinkStatus src/Dodge/Data/Room.hs 55;" t RProps src/Dodge/Layout/Generate.hs 13;" C @@ -1674,26 +1675,26 @@ RoomWire src/Dodge/Data/Room.hs 51;" t RoundedFaces src/Shape/Data.hs 18;" C RunPast src/Dodge/Room/RunPast.hs 1;" m RunningSideEffect src/Dodge/Data/Universe.hs 67;" C -SCRAPMETAL src/Dodge/Data/Item/Combine.hs 59;" C +SCRAPMETAL src/Dodge/Data/Item/Combine.hs 60;" C SFLink src/Dodge/Data/ComposedItem.hs 36;" C -SHATTERGUN src/Dodge/Data/Item/Combine.hs 172;" C +SHATTERGUN src/Dodge/Data/Item/Combine.hs 173;" C SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C -SHELLMAG src/Dodge/Data/Item/Combine.hs 107;" C -SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 100;" C -SMG src/Dodge/Data/Item/Combine.hs 144;" C -SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 98;" C -SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 158;" C -SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 79;" C -SPARKGUN src/Dodge/Data/Item/Combine.hs 164;" C +SHELLMAG src/Dodge/Data/Item/Combine.hs 108;" C +SHELLPAYLOAD src/Dodge/Data/Item/Combine.hs 101;" C +SMG src/Dodge/Data/Item/Combine.hs 145;" C +SMOKEREDUCER src/Dodge/Data/Item/Combine.hs 99;" C +SNIPERRIFLE src/Dodge/Data/Item/Combine.hs 159;" C +SOUNDSENSOR src/Dodge/Data/Item/Combine.hs 80;" C +SPARKGUN src/Dodge/Data/Item/Combine.hs 165;" C SPARKING src/Dodge/Data/Damage/Type.hs 15;" C -SPEEDLEGS src/Dodge/Data/Item/Combine.hs 127;" C -SPRING src/Dodge/Data/Item/Combine.hs 51;" C +SPEEDLEGS src/Dodge/Data/Item/Combine.hs 128;" C +SPRING src/Dodge/Data/Item/Combine.hs 52;" C SPic src/ShapePicture/Data.hs 7;" t SPic src/Dodge/Item/Draw/SPic.hs 3;" m SQUARE src/Dodge/Data/GenParams.hs 20;" C ST src/Dodge/Data/MetaTree.hs 18;" C ST src/Dodge/Tree/Compose/Data.hs 12;" C -STEELDRUM src/Dodge/Data/Item/Combine.hs 56;" C +STEELDRUM src/Dodge/Data/Item/Combine.hs 57;" C STICKYMOD src/Dodge/Data/Item/Combine.hs 23;" C SameConstr src/SameConstr.hs 5;" m Save src/Dodge/Save.hs 1;" m @@ -1882,20 +1883,20 @@ SwarmPlacement src/Dodge/LevelGen/SwarmPlacement.hs 1;" m Switch src/Dodge/LevelGen/Switch.hs 1;" m SwitchAlteRifle src/Dodge/Data/Item/Use.hs 59;" C SwitchToItem src/Dodge/Data/ActionPlan.hs 38;" C -TAPE src/Dodge/Data/Item/Combine.hs 53;" C +TAPE src/Dodge/Data/Item/Combine.hs 54;" C TARGETING src/Dodge/Data/Item/Combine.hs 21;" C -TESLAGUN src/Dodge/Data/Item/Combine.hs 165;" C -THERMOMETER src/Dodge/Data/Item/Combine.hs 82;" C +TESLAGUN src/Dodge/Data/Item/Combine.hs 166;" C +THERMOMETER src/Dodge/Data/Item/Combine.hs 83;" C THREELINES src/Dodge/Data/GenParams.hs 20;" C -TIMESCROLLER src/Dodge/Data/Item/Combine.hs 140;" C -TIMESTOPPER src/Dodge/Data/Item/Combine.hs 139;" C -TIN src/Dodge/Data/Item/Combine.hs 55;" C -TINMAG src/Dodge/Data/Item/Combine.hs 104;" C +TIMESCROLLER src/Dodge/Data/Item/Combine.hs 141;" C +TIMESTOPPER src/Dodge/Data/Item/Combine.hs 140;" C +TIN src/Dodge/Data/Item/Combine.hs 56;" C +TINMAG src/Dodge/Data/Item/Combine.hs 105;" C TO src/Shader/Data.hs 59;" t -TORCH src/Dodge/Data/Item/Combine.hs 173;" C -TRACTORGUN src/Dodge/Data/Item/Combine.hs 167;" C -TRANSFORMER src/Dodge/Data/Item/Combine.hs 62;" C -TRANSMITTER src/Dodge/Data/Item/Combine.hs 68;" C +TORCH src/Dodge/Data/Item/Combine.hs 174;" C +TRACTORGUN src/Dodge/Data/Item/Combine.hs 168;" C +TRANSFORMER src/Dodge/Data/Item/Combine.hs 63;" C +TRANSMITTER src/Dodge/Data/Item/Combine.hs 69;" C TSbackspace src/Dodge/Data/Input.hs 64;" C TSdelete src/Dodge/Data/Input.hs 65;" C TSdown src/Dodge/Data/Input.hs 70;" C @@ -1905,7 +1906,7 @@ TSreturn src/Dodge/Data/Input.hs 63;" C TSright src/Dodge/Data/Input.hs 68;" C TStab src/Dodge/Data/Input.hs 66;" C TSup src/Dodge/Data/Input.hs 69;" C -TUBE src/Dodge/Data/Item/Combine.hs 49;" C +TUBE src/Dodge/Data/Item/Combine.hs 50;" C Tank src/Dodge/Placement/Instance/Tank.hs 1;" m Tanks src/Dodge/Room/Tanks.hs 1;" m Tap src/Dodge/Data/SoundOrigin.hs 38;" C @@ -2038,8 +2039,8 @@ TwoHandUnder src/Dodge/Data/Item/Use.hs 191;" C Type src/Dodge/Data/Damage/Type.hs 6;" m Type src/Dodge/Terminal/Type.hs 1;" m Typical src/Shape/Data.hs 36;" C -UGATE src/Dodge/Data/Item/Combine.hs 29;" C -UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 96;" C +UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 97;" C +UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C UnderBarrelPlatformLink src/Dodge/Data/ComposedItem.hs 34;" C UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 43;" C UnderBarrelSlotLink src/Dodge/Data/ComposedItem.hs 33;" C @@ -2105,7 +2106,7 @@ VAO src/Shader/Data.hs 64;" t VBO src/Shader/Data.hs 81;" t VF src/Polyhedra/Data.hs 21;" t VIOLET src/Color/Data.hs 22;" C -VOLLEYGUN src/Dodge/Data/Item/Combine.hs 149;" C +VOLLEYGUN src/Dodge/Data/Item/Combine.hs 150;" C Vector src/Geometry/Vector.hs 3;" m Vector3D src/Geometry/Vector3D.hs 2;" m VertexAttribute src/Shader/Data.hs 68;" t @@ -2120,12 +2121,12 @@ Vision src/Dodge/Data/Creature/Perception.hs 41;" t Vocalization src/Dodge/Data/Creature/Misc.hs 27;" t Vocalization src/Dodge/Creature/Vocalization.hs 1;" m Volition src/Dodge/Creature/Volition.hs 2;" m -WALLDETECTOR src/Dodge/Data/Item/Combine.hs 183;" C +WALLDETECTOR src/Dodge/Data/Item/Combine.hs 184;" C WASD src/Dodge/WASD.hs 1;" m WHITE src/Color/Data.hs 27;" C -WIRE src/Dodge/Data/Item/Combine.hs 84;" C -WRISTARMOUR src/Dodge/Data/Item/Combine.hs 121;" C -WRIST_ECG src/Dodge/Data/Item/Combine.hs 133;" C +WIRE src/Dodge/Data/Item/Combine.hs 85;" C +WRISTARMOUR src/Dodge/Data/Item/Combine.hs 122;" C +WRIST_ECG src/Dodge/Data/Item/Combine.hs 134;" C WaitThen src/Dodge/Data/ActionPlan.hs 103;" C WalkCycle src/Dodge/Creature/State/WalkCycle.hs 1;" m Walking src/Dodge/Data/Creature/Stance.hs 21;" C @@ -2209,7 +2210,7 @@ WorldPos src/Dodge/WorldPos.hs 1;" m YELLOW src/Color/Data.hs 18;" C You src/Dodge/Base/You.hs 1;" m YourControl src/Dodge/Creature/YourControl.hs 1;" m -ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 90;" C +ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 91;" C ZombieFaction src/Dodge/Data/Creature/State.hs 36;" C Zone src/Dodge/Wall/Zone.hs 1;" m Zone src/Geometry/Zone.hs 1;" m @@ -2636,10 +2637,10 @@ _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 20;" f _ibtAttach src/Dodge/Data/Item/Combine.hs 19;" f _ibtBulletMod src/Dodge/Data/Item/Combine.hs 22;" f _ibtCraft src/Dodge/Data/Item/Combine.hs 18;" f -_ibtDetector src/Dodge/Data/Item/Combine.hs 32;" f +_ibtDetector src/Dodge/Data/Item/Combine.hs 33;" f _ibtEquip src/Dodge/Data/Item/Combine.hs 17;" f _ibtHeld src/Dodge/Data/Item/Combine.hs 16;" f -_ibtIntroScanType src/Dodge/Data/Item/Combine.hs 31;" f +_ibtIntroScanType src/Dodge/Data/Item/Combine.hs 32;" f _ibtPathing src/Dodge/Data/Item/Combine.hs 28;" f _ibtTargeting src/Dodge/Data/Item/Combine.hs 21;" f _ieInv src/Dodge/Data/Item/Effect.hs 17;" f @@ -3075,7 +3076,7 @@ _shaderVAO src/Shader/Data.hs 54;" f _shapeEBO src/Data/Preload/Render.hs 26;" f _shapeHalfSize src/Shape/Data.hs 18;" f _shapeShader src/Data/Preload/Render.hs 25;" f -_shellPayload src/Dodge/Data/Item/Combine.hs 100;" f +_shellPayload src/Dodge/Data/Item/Combine.hs 101;" f _shockwaves src/Dodge/Data/LWorld.hs 115;" f _siColor src/Dodge/Data/SelectionList.hs 49;" f _siColor src/Dodge/Data/SelectionList.hs 58;" f @@ -3335,9 +3336,9 @@ _wpMaxCharge src/Dodge/Data/Item/Use/Consumption.hs 34;" f _wsBlock src/Dodge/Data/Wall/Structure.hs 16;" f _wsDoor src/Dodge/Data/Wall/Structure.hs 14;" f _wsMachine src/Dodge/Data/Wall/Structure.hs 15;" f -_xNum src/Dodge/Data/Item/Combine.hs 137;" f -_xNum src/Dodge/Data/Item/Combine.hs 147;" f -_xNum src/Dodge/Data/Item/Combine.hs 169;" f +_xNum src/Dodge/Data/Item/Combine.hs 138;" f +_xNum src/Dodge/Data/Item/Combine.hs 148;" f +_xNum src/Dodge/Data/Item/Combine.hs 170;" f aDroneWithItemParams src/Dodge/Item/Weapon/Drone.hs 30;" f aFlame src/Dodge/Gas.hs 18;" f aFlameParticle src/Dodge/Flame.hs 21;" f @@ -3409,7 +3410,7 @@ allVisibleWalls src/Dodge/Base/Collide.hs 131;" f alongSegBy src/Geometry.hs 43;" f alteRifle src/Dodge/Item/Held/Cane.hs 65;" f ammoMagInfo src/Dodge/Item/Info.hs 42;" f -ammoMagSPic src/Dodge/Item/Draw/SPic.hs 123;" f +ammoMagSPic src/Dodge/Item/Draw/SPic.hs 124;" f amr src/Dodge/Item/Held/Rod.hs 44;" f analyser src/Dodge/Placement/Instance/Analyser.hs 12;" f analyserByDoor src/Dodge/Room/LasTurret.hs 76;" f @@ -3428,7 +3429,7 @@ applyGravityPU src/Dodge/Projectile/Update.hs 56;" f applyIndividualDamage src/Dodge/Creature/Damage.hs 49;" f applyIndividualDamage' src/Dodge/Creature/Damage.hs 52;" f applyInvLock src/Dodge/HeldUse.hs 177;" f -applyMagnetsToBul src/Dodge/Bullet.hs 36;" f +applyMagnetsToBul src/Dodge/Bullet.hs 33;" f applyNoDamage src/Dodge/Creature/Damage.hs 11;" f applyPastDamages src/Dodge/Creature/State.hs 142;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 57;" f @@ -3448,7 +3449,7 @@ applyToSubtree src/TreeHelp.hs 70;" f applyTorqueCME src/Dodge/HeldUse.hs 214;" f applyWorldConfig src/Dodge/Config/Update.hs 38;" f aquamarine src/Color.hs 23;" f -arHUD src/Dodge/Item/Scope.hs 126;" f +arHUD src/Dodge/Item/Scope.hs 135;" f arc src/Picture/Base.hs 287;" f arcFull src/Picture/Arc.hs 11;" f arcPart src/Picture/Arc.hs 24;" f @@ -3495,28 +3496,28 @@ azure src/Color.hs 22;" f bQuadToF src/Geometry/Bezier.hs 37;" f bQuadToLine src/Geometry/Bezier.hs 30;" f backpackCombinations src/Dodge/Combine/Combinations.hs 26;" f -backpackShape src/Dodge/Item/Draw/SPic.hs 172;" f +backpackShape src/Dodge/Item/Draw/SPic.hs 173;" f backspaceInputted src/Dodge/Update/Input/Text.hs 25;" f bangCone src/Dodge/Item/Held/Cone.hs 11;" f -bangConeShape src/Dodge/Item/Draw/SPic.hs 285;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 286;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 388;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" f bangStick src/Dodge/Item/Held/Stick.hs 16;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -baseAMRShape src/Dodge/Item/Draw/SPic.hs 398;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 399;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCI src/Dodge/Item/Grammar.hs 183;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 305;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 306;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 308;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 395;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 375;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 309;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 396;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 376;" f baseShoulder src/Dodge/Creature/Picture.hs 131;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 282;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 277;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 283;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 278;" f baseStickSpread src/Dodge/Item/Held/Stick.hs 39;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 127;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 37;" f @@ -3535,9 +3536,9 @@ belowNumX src/Dodge/Combine/Graph.hs 85;" f beltMag src/Dodge/Item/Ammo.hs 48;" f bfsNodePoints src/Dodge/Path.hs 58;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 216;" f -bgate src/Dodge/Item/Scope.hs 95;" f -bgateCalc src/Dodge/Inventory/SelectionList.hs 98;" f +bgateCalc src/Dodge/Inventory/SelectionList.hs 112;" f bindFBO src/Render.hs 244;" f +bingate src/Dodge/Item/Scope.hs 110;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f @@ -3567,7 +3568,7 @@ blunderbuss src/Dodge/Item/Held/Cone.hs 27;" f boosterGun src/Dodge/Item/Equipment/Booster.hs 9;" f bossKeyItems src/Dodge/LockAndKey.hs 12;" f bossRoom src/Dodge/Room/Boss.hs 60;" f -bounceDir src/Dodge/Bullet.hs 113;" f +bounceDir src/Dodge/Bullet.hs 110;" f bouncePoint src/Dodge/Base/Collide.hs 87;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 19;" f @@ -3588,8 +3589,8 @@ bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 109;" f bulletBeltPack src/Dodge/Item/Equipment.hs 91;" f -bulletModule src/Dodge/Item/Scope.hs 109;" f -bulletPayloadModule src/Dodge/Item/Scope.hs 123;" f +bulletModule src/Dodge/Item/Scope.hs 118;" f +bulletPayloadModule src/Dodge/Item/Scope.hs 132;" f bulletSynthesizer src/Dodge/Item/Ammo.hs 122;" f bulletWeapons src/Dodge/Combine/Combinations.hs 247;" f burstRifle src/Dodge/Item/Held/Cane.hs 83;" f @@ -3672,13 +3673,13 @@ cleatOnward src/Dodge/Cleat.hs 24;" f cleatSide src/Dodge/Cleat.hs 27;" f click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 434;" f clickGetCreature src/Dodge/Debug.hs 107;" f -clicker src/Dodge/Item/Scope.hs 81;" f +clicker src/Dodge/Item/Scope.hs 82;" f clipV src/Geometry/Vector.hs 47;" f clipZoom src/Dodge/Update/Camera.hs 185;" f clockCycle src/Dodge/Clock.hs 9;" f -closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 187;" f -closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 172;" f -closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 201;" f +closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 217;" f +closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 202;" f +closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 231;" f closeObjectInfo src/Dodge/Render/HUD.hs 223;" f closestCreatureID src/Dodge/Debug.hs 116;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f @@ -3742,7 +3743,7 @@ contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f convexHull src/Geometry/Polygon.hs 104;" f convexHullSafe src/Geometry/Polygon.hs 111;" f convexPolysOverlap src/Geometry/ConvexPoly.hs 50;" f -copier src/Dodge/Item/Scope.hs 87;" f +copier src/Dodge/Item/Scope.hs 88;" f copierItemUpdate src/Dodge/ItEffect.hs 35;" f copyItemToFloor src/Dodge/FloorItem.hs 18;" f copyItemToFloorID src/Dodge/FloorItem.hs 22;" f @@ -3785,7 +3786,7 @@ crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f crZoneSize src/Dodge/Zoning/Creature.hs 40;" f craftInfo src/Dodge/Item/Info.hs 161;" f -craftItemSPic src/Dodge/Item/Draw/SPic.hs 55;" f +craftItemSPic src/Dodge/Item/Draw/SPic.hs 56;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 440;" f createArc src/Dodge/Tesla/Arc.hs 81;" f createBarrelSpark src/Dodge/Spark.hs 44;" f @@ -3863,7 +3864,7 @@ damageHP src/Dodge/Creature/Damage.hs 65;" f damageMaterial src/Dodge/Material/Damage.hs 7;" f damageSensor src/Dodge/Placement/Instance/Sensor.hs 15;" f damageStone src/Dodge/Material/Damage.hs 20;" f -damageThingHit src/Dodge/Bullet.hs 188;" f +damageThingHit src/Dodge/Bullet.hs 182;" f damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 45;" f damageWall src/Dodge/Wall/Damage.hs 15;" f damageWallEffect src/Dodge/Wall/DamageEffect.hs 11;" f @@ -3908,7 +3909,7 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 334;" f defDamageMaterial src/Dodge/Material/Damage.hs 17;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f -defSPic src/Dodge/Item/Draw/SPic.hs 291;" f +defSPic src/Dodge/Item/Draw/SPic.hs 292;" f defaultAimMvType src/Dodge/Default/Creature.hs 117;" f defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f defaultAimingCrit src/Dodge/Default/Creature.hs 126;" f @@ -3984,7 +3985,7 @@ deleteWallFromZones src/Dodge/Wall/Zone.hs 23;" f deleteWallID src/Dodge/Wall/Delete.hs 13;" f deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f denormalEdges src/Polyhedra.hs 136;" f -destroyAt src/Dodge/Bullet.hs 211;" f +destroyAt src/Dodge/Bullet.hs 203;" f destroyBlock src/Dodge/Block.hs 56;" f destroyDoor src/Dodge/Block.hs 83;" f destroyInvItem src/Dodge/Inventory.hs 39;" f @@ -3998,7 +3999,7 @@ destroyMounts src/Dodge/Block.hs 99;" f destroyProjectile src/Dodge/Projectile/Update.hs 139;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 41;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 444;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 445;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f detectorInfo src/Dodge/Item/Info.hs 216;" f determineProjectileTracking src/Dodge/HeldUse.hs 657;" f @@ -4020,7 +4021,7 @@ displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 198;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f -displayPulse src/Dodge/Inventory/SelectionList.hs 143;" f +displayPulse src/Dodge/Inventory/SelectionList.hs 173;" f displayTerminalLineString src/Dodge/Update.hs 426;" f dist src/Geometry/Vector.hs 179;" f dist3 src/Geometry/Vector3D.hs 101;" f @@ -4080,7 +4081,7 @@ doItmCrWdWd src/Dodge/Euse.hs 27;" f doLoop src/Loop.hs 60;" f doMCrAc src/Dodge/CreatureEffect.hs 57;" f doMP2Ac src/Dodge/CreatureEffect.hs 73;" f -doMagnetBuBu src/Dodge/Bullet.hs 40;" f +doMagnetBuBu src/Dodge/Bullet.hs 36;" f doMagnetBuBu src/Dodge/MagnetBuBu.hs 7;" f doMagnetUpdate src/Dodge/Magnet/Update.hs 6;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -4264,7 +4265,7 @@ dropByState src/Dodge/Creature/State.hs 130;" f dropExcept src/Dodge/Creature/Action.hs 167;" f dropInventoryPath src/Dodge/HeldUse.hs 787;" f dropItem src/Dodge/Creature/Action.hs 173;" f -dropper src/Dodge/Item/Scope.hs 75;" f +dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 42;" f dtIL src/Dodge/DoubleTree.hs 75;" f dtToAdjRootParent src/Dodge/DoubleTree.hs 126;" f @@ -4292,13 +4293,13 @@ encircleP src/Dodge/Creature/Boid.hs 27;" f endCombineRegex src/Dodge/Update/Input/InGame.hs 265;" f endRegex src/Dodge/Update/Input/InGame.hs 252;" f enterCombineInv src/Dodge/DisplayInventory.hs 323;" f -epText src/Dodge/Inventory/SelectionList.hs 72;" f +epText src/Dodge/Inventory/SelectionList.hs 73;" f eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqSiteToPositions src/Dodge/Inventory/RBList.hs 75;" f equipAllocString src/Dodge/Render/HUD.hs 307;" f equipInfo src/Dodge/Item/Info.hs 134;" f -equipItemSPic src/Dodge/Item/Draw/SPic.hs 143;" f +equipItemSPic src/Dodge/Item/Draw/SPic.hs 144;" f equipPosition src/Dodge/Item/Draw.hs 28;" f equipSiteInfo src/Dodge/Item/Info.hs 245;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f @@ -4318,7 +4319,7 @@ expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f expandPolyCorners src/Dodge/LevelGen/StaticWalls.hs 103;" f expandToSquare src/Dodge/LevelGen/StaticWalls/Deprecated.hs 83;" f -expireAndDamage src/Dodge/Bullet.hs 195;" f +expireAndDamage src/Dodge/Bullet.hs 189;" f expireAndDamageFL src/Dodge/Flame.hs 47;" f explodeShell src/Dodge/Projectile/Update.hs 238;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 416;" f @@ -4365,12 +4366,12 @@ flameSpitter src/Dodge/Item/Held/SprayGuns.hs 29;" f flameThrower src/Dodge/Item/Held/SprayGuns.hs 72;" f flameTorrent src/Dodge/Item/Held/SprayGuns.hs 40;" f flameWall src/Dodge/Item/Held/SprayGuns.hs 56;" f -flamerPic src/Dodge/Item/Draw/SPic.hs 378;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 379;" f flareCircleAt src/Dodge/HeldUse.hs 295;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 50;" f flatLookupItems src/Dodge/Combine.hs 38;" f flatShield src/Dodge/Item/Held/Utility.hs 20;" f -flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 431;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 432;" f fleeFrom src/Dodge/CreatureEffect.hs 120;" f fleeFromTarget src/Dodge/CreatureEffect.hs 66;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f @@ -4407,7 +4408,7 @@ forceFoldable src/StrictHelp.hs 7;" f forceSpine src/StrictHelp.hs 4;" f fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f fpsText src/Dodge/Render/Picture.hs 47;" f -fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 136;" f +fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 137;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 376;" f @@ -4464,7 +4465,7 @@ getDistortions src/Dodge/Render.hs 383;" f getEquipmentAllocation src/Dodge/Inventory/RBList.hs 45;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 702;" f getInventoryPath src/Dodge/Inventory/Path.hs 8;" f -getItemValue src/Dodge/Inventory/SelectionList.hs 115;" f +getItemValue src/Dodge/Inventory/SelectionList.hs 141;" f getLaserColor src/Dodge/HeldUse.hs 311;" f getLaserDamage src/Dodge/HeldUse.hs 308;" f getLaserPhaseV src/Dodge/HeldUse.hs 305;" f @@ -4484,7 +4485,7 @@ getTiles src/Dodge/Layout.hs 208;" f getViewpoints src/Dodge/Viewpoints.hs 29;" f getWallSPic src/Dodge/Render/Walls.hs 51;" f getWindowSize src/Dodge/WindowSize.hs 5;" f -gimbal src/Dodge/Item/Scope.hs 145;" f +gimbal src/Dodge/Item/Scope.hs 154;" f girder src/Dodge/Room/Foreground.hs 211;" f girderV src/Dodge/Room/Foreground.hs 182;" f girderV' src/Dodge/Room/Foreground.hs 157;" f @@ -4500,7 +4501,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 458;" f glassSwitchBack src/Dodge/Room/Room.hs 70;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 99;" f glassWallDamage src/Dodge/Wall/DamageEffect.hs 48;" f -glauncherPic src/Dodge/Item/Draw/SPic.hs 384;" f +glauncherPic src/Dodge/Item/Draw/SPic.hs 385;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 136;" f @@ -4526,7 +4527,7 @@ gut3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 374;" f gut4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f gut5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f gut6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f -gyroscope src/Dodge/Item/Scope.hs 148;" f +gyroscope src/Dodge/Item/Scope.hs 157;" f hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 48;" f halfWidth src/Dodge/Base/Window.hs 48;" f @@ -4550,7 +4551,7 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 218;" f hat src/Dodge/Item/Equipment.hs 133;" f head src/DoubleStack.hs 14;" f headLamp src/Dodge/Item/Equipment.hs 139;" f -headLampShape src/Dodge/Item/Draw/SPic.hs 434;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 435;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -4565,7 +4566,7 @@ heldInfo src/Dodge/Item/Info.hs 84;" f heldItemOffset src/Dodge/Item/HeldOffset.hs 78;" f heldItemOrient2D src/Dodge/Item/HeldOffset.hs 26;" f heldItemRelativeOrient src/Dodge/Item/HeldOffset.hs 31;" f -heldItemSPic src/Dodge/Item/Draw/SPic.hs 219;" f +heldItemSPic src/Dodge/Item/Draw/SPic.hs 220;" f heldPositionInfo src/Dodge/Item/Info.hs 232;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f @@ -4575,15 +4576,15 @@ highBar src/Dodge/Room/Foreground.hs 89;" f highDiagonalMesh src/Dodge/Room/Foreground.hs 35;" f highMesh src/Dodge/Room/Foreground.hs 25;" f hit1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 432;" f -hitEffFromBul src/Dodge/Bullet.hs 158;" f +hitEffFromBul src/Dodge/Bullet.hs 155;" f hitS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 400;" f holdForm src/Dodge/Creature/Boid.hs 136;" f holsterWeapon src/Dodge/Creature/Volition.hs 14;" f -homingModule src/Dodge/Item/Scope.hs 47;" f +homingModule src/Dodge/Item/Scope.hs 48;" f horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f -hotkeyToChar src/Dodge/Inventory/SelectionList.hs 152;" f +hotkeyToChar src/Dodge/Inventory/SelectionList.hs 182;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 70;" f -hotkeyToString src/Dodge/Inventory/SelectionList.hs 149;" f +hotkeyToString src/Dodge/Inventory/SelectionList.hs 179;" f humanoidAIList src/Dodge/Humanoid.hs 181;" f iShape src/Dodge/Placement/Instance/LightSource.hs 73;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f @@ -4653,8 +4654,8 @@ intersectSegSegTest src/Geometry/Intersect.hs 122;" f intersectSegsSeg src/Geometry/Intersect.hs 232;" f intervalList src/Geometry.hs 329;" f interweave src/Justify.hs 17;" f -introScan src/Dodge/Item/Scope.hs 56;" f -introScanValue src/Dodge/Inventory/SelectionList.hs 76;" f +introScan src/Dodge/Item/Scope.hs 57;" f +introScanValue src/Dodge/Inventory/SelectionList.hs 77;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f invAdj src/Dodge/Item/Grammar.hs 289;" f invCursorParams src/Dodge/ListDisplayParams.hs 36;" f @@ -4666,7 +4667,7 @@ invLDT src/Dodge/Item/Grammar.hs 269;" f invRootItemEffs src/Dodge/Creature/State.hs 171;" f invRootMap src/Dodge/Item/Grammar.hs 278;" f invRootTrees src/Dodge/Item/Grammar.hs 299;" f -invSelectionItem src/Dodge/Inventory/SelectionList.hs 29;" f +invSelectionItem src/Dodge/Inventory/SelectionList.hs 30;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 165;" f invSize src/Dodge/Inventory/CheckSlots.hs 25;" f @@ -4715,13 +4716,13 @@ itemBlips src/Dodge/RadarSweep.hs 93;" f itemCombinations src/Dodge/Combine/Combinations.hs 55;" f itemCombinationsEdges src/Dodge/Combine/Graph.hs 60;" f itemDetectorEffect src/Dodge/HeldUse.hs 371;" f -itemDisplay src/Dodge/Inventory/SelectionList.hs 46;" f +itemDisplay src/Dodge/Inventory/SelectionList.hs 47;" f itemEquipPict src/Dodge/Item/Draw.hs 16;" f -itemExternalValue src/Dodge/Inventory/SelectionList.hs 81;" f -itemFromAmmoMag src/Dodge/Item.hs 39;" f -itemFromAttachType src/Dodge/Item.hs 48;" f +itemExternalValue src/Dodge/Inventory/SelectionList.hs 82;" f +itemFromAmmoMag src/Dodge/Item.hs 40;" f +itemFromAttachType src/Dodge/Item.hs 49;" f itemFromBase src/Dodge/Item.hs 17;" f -itemFromEquipType src/Dodge/Item.hs 63;" f +itemFromEquipType src/Dodge/Item.hs 64;" f itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 14;" f itemInternalValue src/Dodge/Item/Display.hs 32;" f @@ -4729,9 +4730,10 @@ itemInvColor src/Dodge/Item/InventoryColor.hs 9;" f itemRooms src/Dodge/LockAndKey.hs 39;" f itemRotTreeSPic src/Dodge/Item/Draw/SPic.hs 27;" f itemSPic src/Dodge/Item/Draw/SPic.hs 34;" f -itemScan src/Dodge/Item/Scope.hs 62;" f +itemScan src/Dodge/Item/Scope.hs 63;" f itemScroll src/Dodge/Update/Scroll.hs 50;" f -itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 104;" f +itemScrollDisplay src/Dodge/Inventory/SelectionList.hs 118;" f +itemScrollValue src/Dodge/Inventory/SelectionList.hs 145;" f itemString src/Dodge/Item/Display.hs 53;" f itemToBreakLists src/Dodge/Item/Grammar.hs 59;" f itemToFunction src/Dodge/Item/Grammar.hs 138;" f @@ -4745,7 +4747,7 @@ itmUsageInfo src/Dodge/Item/Info.hs 222;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f joinItemsInList src/Dodge/Item/Grammar.hs 259;" f -joystick src/Dodge/Item/Scope.hs 141;" f +joystick src/Dodge/Item/Scope.hs 150;" 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 @@ -4760,7 +4762,7 @@ keyCard src/Dodge/Item/Held/Utility.hs 30;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 70;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 58;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f -keyPic src/Dodge/Item/Draw/SPic.hs 450;" f +keyPic src/Dodge/Item/Draw/SPic.hs 451;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 478;" f lConnect src/Dodge/Render/Connectors.hs 42;" f @@ -4772,7 +4774,7 @@ lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 58;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 113;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f -lasGunPic src/Dodge/Item/Draw/SPic.hs 404;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 405;" f lasRayAt src/Dodge/HeldUse.hs 449;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 106;" f lasTunnel src/Dodge/Room/LasTurret.hs 125;" f @@ -4797,7 +4799,7 @@ left src/DoubleStack.hs 16;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 231;" f leftPad src/Padding.hs 15;" f leftRightCombine src/Dodge/Item/Grammar.hs 245;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 468;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 469;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 45;" f @@ -4903,14 +4905,14 @@ makeDefaultCorpse src/Dodge/Corpse/Make.hs 14;" f makeDoorDebris src/Dodge/Block/Debris.hs 18;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f makeExplosionAt src/Dodge/WorldEvent/Explosion.hs 72;" f -makeFlak src/Dodge/Bullet.hs 144;" f +makeFlak src/Dodge/Bullet.hs 141;" f makeFlame src/Dodge/Flame.hs 131;" f makeFlameExplosionAt src/Dodge/WorldEvent/Explosion.hs 55;" f makeFlamelet src/Dodge/EnergyBall.hs 17;" f makeFlamerSmokeAt src/Dodge/WorldEvent/Cloud.hs 68;" f makeFlashBall src/Dodge/EnergyBall.hs 78;" f makeFootstepSound src/Dodge/Creature/State/WalkCycle.hs 32;" f -makeFragBullets src/Dodge/Bullet.hs 129;" f +makeFragBullets src/Dodge/Bullet.hs 126;" f makeGasCloud src/Dodge/WorldEvent/SpawnParticle.hs 80;" f makeGrid src/Grid.hs 46;" f makeIntInterval src/Dodge/Zoning/Base.hs 34;" f @@ -4945,7 +4947,7 @@ makeThinSmokeAt src/Dodge/WorldEvent/Cloud.hs 57;" f makeTileFromPoly src/Tile.hs 34;" f makeTypeCraft src/Dodge/Item/Craftable.hs 18;" f makeTypeCraftNum src/Dodge/Item/Craftable.hs 12;" f -mapper src/Dodge/Item/Scope.hs 69;" f +mapper src/Dodge/Item/Scope.hs 70;" f maxDamageType src/Dodge/Damage.hs 37;" f maxShowX src/Dodge/Combine/Graph.hs 49;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f @@ -5016,8 +5018,8 @@ minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 340;" f miniGunCrit src/Dodge/Creature.hs 62;" f miniGunX src/Dodge/Item/Held/Cane.hs 96;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 356;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 351;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 357;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 352;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 538;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 12;" f @@ -5044,12 +5046,12 @@ modTo src/Geometry/Zone.hs 10;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 59;" f mouseCursorType src/Dodge/Render/Picture.hs 80;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 48;" f -moveBullet src/Dodge/Bullet.hs 204;" f +moveBullet src/Dodge/Bullet.hs 198;" f moveCombineSel src/Dodge/Update/Scroll.hs 112;" f moveHammerUp src/Dodge/Hammer.hs 5;" f moveInverseShockwave src/Dodge/Shockwave/Update.hs 53;" f moveLSThen src/Dodge/Placement/Instance/LightSource.hs 30;" f -movePenBullet src/Dodge/Bullet.hs 221;" f +movePenBullet src/Dodge/Bullet.hs 213;" f moveRoomBy src/Dodge/Room/Link.hs 53;" f moveShockwave src/Dodge/Shockwave/Update.hs 17;" f moveToSideFirstOutLink src/Dodge/Room/Warning.hs 54;" f @@ -5107,6 +5109,7 @@ normalizeAnglePi src/Dodge/Base.hs 154;" f normalizeColor src/Color.hs 76;" f normalizeV src/Geometry/Vector.hs 43;" f normalizeV3 src/Geometry/Vector3D.hs 84;" f +nulgate src/Dodge/Item/Scope.hs 96;" f nullCommand src/Dodge/Update/Scroll.hs 167;" f numColor src/Color.hs 128;" f numDrawableVertices src/Shader/Parameters.hs 34;" f @@ -5183,7 +5186,7 @@ pauseSound src/Dodge/SoundLogic.hs 41;" f pauseTime src/Dodge/Update.hs 180;" f peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f -penThing src/Dodge/Bullet.hs 233;" f +penThing src/Dodge/Bullet.hs 225;" f perMat src/MatrixHelper.hs 49;" f perceptionUpdate src/Dodge/Creature/Perception.hs 22;" f performAction src/Dodge/Creature/Action.hs 92;" f @@ -5475,8 +5478,8 @@ reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 448;" f reloadLevelStart src/Dodge/Save.hs 71;" f reloadS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f -remoteDetonator src/Dodge/Item/Scope.hs 136;" f -remoteScreen src/Dodge/Item/Scope.hs 131;" f +remoteDetonator src/Dodge/Item/Scope.hs 145;" f +remoteScreen src/Dodge/Item/Scope.hs 140;" f removeAmmoFromMag src/Dodge/HeldUse.hs 459;" f removeDot src/ShortShow.hs 29;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f @@ -5525,7 +5528,7 @@ rightIsParentCombine src/Dodge/Item/Grammar.hs 238;" f rightPad src/Padding.hs 19;" f rightPadNoSquash src/Padding.hs 23;" f rlPosDir src/Dodge/RoomLink.hs 94;" f -rlauncherPic src/Dodge/Item/Draw/SPic.hs 381;" f +rlauncherPic src/Dodge/Item/Draw/SPic.hs 382;" f rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 60;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f @@ -5670,7 +5673,7 @@ setCrPosture src/Dodge/Creature/YourControl.hs 172;" f setDepth src/Picture/Base.hs 128;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f setFallback src/Dodge/PlacementSpot.hs 127;" f -setFromToDams src/Dodge/Bullet.hs 183;" f +setFromToDams src/Dodge/Bullet.hs 177;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f @@ -5724,11 +5727,11 @@ shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxSize src/Shape/Parameters.hs 10;" f shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f -shatterGunSPic src/Dodge/Item/Draw/SPic.hs 294;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 295;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 85;" f shellMag src/Dodge/Item/Ammo.hs 61;" f -shellModule src/Dodge/Item/Scope.hs 115;" f +shellModule src/Dodge/Item/Scope.hs 124;" f shellShape src/Dodge/Projectile/Draw.hs 34;" f shellTrailCloud src/Dodge/WorldEvent/Cloud.hs 65;" f shieldWall src/Dodge/Euse.hs 87;" f @@ -5772,11 +5775,11 @@ shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 536;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 81;" f shoulderSH src/Dodge/Creature/Picture.hs 139;" f shoulderSP src/Dodge/Creature/HandPos.hs 170;" f -showAttachItem src/Dodge/Item/Display.hs 87;" f -showEquipItem src/Dodge/Item/Display.hs 101;" f +showAttachItem src/Dodge/Item/Display.hs 88;" f +showEquipItem src/Dodge/Item/Display.hs 102;" f showInt src/Dodge/Item/Info.hs 67;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f -showInventoryPathing src/Dodge/Item/Display.hs 81;" f +showInventoryPathing src/Dodge/Item/Display.hs 82;" f showManObj src/Dodge/TestString.hs 76;" f showTerminalError src/Dodge/Debug/Terminal.hs 78;" f showTimeFlow src/Dodge/TestString.hs 99;" f @@ -5819,7 +5822,7 @@ smallPillar src/Dodge/Room/Pillar.hs 32;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f smg src/Dodge/Item/Held/Stick.hs 72;" f smokeCloudAt src/Dodge/WorldEvent/Cloud.hs 41;" f -smokeReducer src/Dodge/Item/Scope.hs 154;" f +smokeReducer src/Dodge/Item/Scope.hs 163;" f sndV2 src/Geometry/Data.hs 52;" f sniperRifle src/Dodge/Item/Held/Rod.hs 54;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5894,7 +5897,7 @@ ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 98;" f stackPicturesAtOff src/Dodge/Render/List.hs 101;" f stackText src/Picture/Base.hs 188;" f -stackedInventory src/Dodge/Creature.hs 305;" f +stackedInventory src/Dodge/Creature.hs 308;" f startCr src/Dodge/Creature.hs 91;" f startCrafts src/Dodge/Room/Start.hs 92;" f startDrag src/Dodge/Update/Input/InGame.hs 277;" f @@ -5905,7 +5908,7 @@ startRoom src/Dodge/Room/Start.hs 52;" f startSeedGame src/Dodge/StartNewGame.hs 20;" f startSeedGameConc src/Dodge/StartNewGame.hs 27;" f statsModifier src/Dodge/Creature/Info.hs 14;" f -stickyMod src/Dodge/Item/Scope.hs 50;" f +stickyMod src/Dodge/Item/Scope.hs 51;" f stone1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 404;" f stone2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f stone3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 428;" f @@ -5965,7 +5968,7 @@ targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 13;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 7;" f targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 194;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f -targetingScope src/Dodge/Item/Scope.hs 37;" f +targetingScope src/Dodge/Item/Scope.hs 38;" f telRoomLev src/Dodge/Room/Teleport.hs 14;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 396;" f termButton src/Dodge/Placement/Instance/Terminal.hs 51;" f @@ -5979,12 +5982,12 @@ terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalWheelEvent src/Dodge/Update/Scroll.hs 122;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 401;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 402;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 37;" f teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f testEvent src/Dodge/Event/Test.hs 10;" f -testInventory src/Dodge/Creature.hs 286;" f +testInventory src/Dodge/Creature.hs 289;" f testStringInit src/Dodge/TestString.hs 28;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f @@ -6024,6 +6027,7 @@ tinitusS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f titleOptionsMenu src/Dodge/Menu.hs 99;" f titleOptionsNoWrite src/Dodge/Menu.hs 102;" f tmUpdate src/Dodge/Update.hs 429;" f +toBinary src/Dodge/Inventory/SelectionList.hs 135;" f toBothLnk src/Dodge/RoomLink.hs 121;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f @@ -6052,14 +6056,14 @@ topPrismEdgeIndices src/Shader/Poke.hs 335;" f topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 72;" f torch src/Dodge/Item/Held/Utility.hs 33;" f -torchShape src/Dodge/Item/Draw/SPic.hs 263;" f +torchShape src/Dodge/Item/Draw/SPic.hs 264;" f torqueCr src/Dodge/WorldEffect.hs 67;" f torso src/Dodge/Creature/Picture.hs 105;" f tractCr src/Dodge/TractorBeam/Update.hs 28;" f tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f tractorBeamAt src/Dodge/HeldUse.hs 418;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 428;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 429;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -6143,10 +6147,11 @@ twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 406;" f twoStepS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f twoStepSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 436;" f ubyteSize src/Shader/Parameters.hs 13;" f -ugate src/Dodge/Item/Scope.hs 102;" f +ugateCalc src/Dodge/Inventory/SelectionList.hs 106;" f uncurryV src/Geometry/Data.hs 46;" f -underBarrelSlot src/Dodge/Item/Scope.hs 151;" f +underBarrelSlot src/Dodge/Item/Scope.hs 160;" f unfoldrMID src/MonadHelp.hs 33;" f +unigate src/Dodge/Item/Scope.hs 103;" f unitVectorAtAngle src/Geometry/Vector.hs 100;" f unlockInv src/Dodge/Inventory/Lock.hs 12;" f unpause src/Dodge/Menu.hs 192;" f @@ -6171,7 +6176,7 @@ updateBarrel src/Dodge/Barreloid.hs 45;" f updateBarreloid src/Dodge/Barreloid.hs 13;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 28;" f updateBounds src/Dodge/Update/Camera.hs 215;" f -updateBulVel src/Dodge/Bullet.hs 61;" f +updateBulVel src/Dodge/Bullet.hs 58;" f updateBullet src/Dodge/Bullet.hs 22;" f updateBullets src/Dodge/Update.hs 523;" f updateCamera src/Dodge/Update/Camera.hs 27;" f @@ -6292,7 +6297,7 @@ upperPrismPolyTS src/Shape.hs 119;" f upperRounded src/Shape.hs 184;" f useBreakL src/Dodge/Item/Grammar.hs 28;" f useBreakListsLinkTest src/Dodge/Item/Grammar.hs 36;" f -useBulletPayload src/Dodge/Bullet.hs 118;" f +useBulletPayload src/Dodge/Bullet.hs 115;" f useC src/Dodge/Cuse.hs 8;" f useC' src/Dodge/Cuse.hs 13;" f useE src/Dodge/Euse.hs 34;" f @@ -6348,7 +6353,7 @@ visibleWalls src/Dodge/Base/Collide.hs 123;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f vocalizationTest src/Dodge/Creature/Vocalization.hs 8;" f volleyGun src/Dodge/Item/Held/Cane.hs 31;" f -volleyGunShape src/Dodge/Item/Draw/SPic.hs 339;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 340;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f walkNozzle src/Dodge/HeldUse.hs 386;" f walkableNodeNear src/Dodge/Path.hs 48;" f @@ -6467,5 +6472,5 @@ zoomFloatingCamera src/Dodge/Update/Camera.hs 68;" f zoomFromItem src/Dodge/Update/Camera.hs 181;" f zoomInLongGun src/Dodge/Update/Scroll.hs 96;" f zoomOutLongGun src/Dodge/Update/Scroll.hs 104;" f -zoomScope src/Dodge/Item/Scope.hs 32;" f +zoomScope src/Dodge/Item/Scope.hs 33;" f zoomSpeed src/Dodge/Update/Scroll.hs 93;" f