diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 0aa5aba57..7207d5859 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -155,7 +155,6 @@ data HeldItemType | LAUNCHER | LAUNCHERX {_xNum :: Int} | POISONSPRAYER - | DRONELAUNCHER | SHATTERGUN | TORCH | FLATSHIELD diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index f61ba8f73..1347fd8e9 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -1,7 +1,6 @@ {-# LANGUAGE LambdaCase #-} module Dodge.Item ( - module Dodge.Item.Weapon, module Dodge.Item.Held, module Dodge.Item.Equipment, module Dodge.Item.Craftable, @@ -14,7 +13,6 @@ import Dodge.Item.Craftable import Dodge.Item.Equipment import Dodge.Item.Held import Dodge.Item.Scope -import Dodge.Item.Weapon itemFromBase :: ItemType -> Item itemFromBase = \case diff --git a/src/Dodge/Item/Craftable.hs b/src/Dodge/Item/Craftable.hs index 624e4e886..833b442a9 100644 --- a/src/Dodge/Item/Craftable.hs +++ b/src/Dodge/Item/Craftable.hs @@ -1,4 +1,5 @@ -module Dodge.Item.Craftable where +module Dodge.Item.Craftable + where import Dodge.Default.Item import Control.Lens diff --git a/src/Dodge/Item/Draw/SPic.hs b/src/Dodge/Item/Draw/SPic.hs index 4d18051ec..891542d7a 100644 --- a/src/Dodge/Item/Draw/SPic.hs +++ b/src/Dodge/Item/Draw/SPic.hs @@ -199,7 +199,6 @@ heldItemSPic ht it = case ht of LAUNCHER -> launcherPic it LAUNCHERX _ -> launcherPic it POISONSPRAYER -> flamerPic it - DRONELAUNCHER -> defSPic BLINKER -> defSPic BLINKERUNSAFE -> defSPic REWINDER -> defSPic diff --git a/src/Dodge/Item/Held.hs b/src/Dodge/Item/Held.hs index a52517593..9a4290901 100644 --- a/src/Dodge/Item/Held.hs +++ b/src/Dodge/Item/Held.hs @@ -11,7 +11,6 @@ module Dodge.Item.Held ( module Dodge.Item.Held.BatteryGuns, ) where -import Dodge.Item.Weapon.Utility import Dodge.Data.Item import Dodge.Item.Held.Launcher import Dodge.Item.Held.BatteryGuns @@ -69,6 +68,5 @@ itemFromHeldType ht = case ht of LAUNCHERX i -> launcherX i -- REMOTELAUNCHER -> remoteLauncher POISONSPRAYER -> poisonSprayer - DRONELAUNCHER -> undefined DETECTOR d -> detector d FLATSHIELD -> flatShield diff --git a/src/Dodge/Item/Held/Utility.hs b/src/Dodge/Item/Held/Utility.hs index 3350668ac..7eb2e760e 100644 --- a/src/Dodge/Item/Held/Utility.hs +++ b/src/Dodge/Item/Held/Utility.hs @@ -1,9 +1,20 @@ -module Dodge.Item.Held.Utility where +module Dodge.Item.Held.Utility ( + rewinder, + timeStopper, + timeScroller, + unsafeBlinker, + blinker, + keyCard, + torch, + detector, + flatShield, +) where -import Linear -import Dodge.Default.Item import Control.Lens import Dodge.Data.Item +import Dodge.Default.Item +import Linear + --import Geometry.Data flatShield :: Item @@ -19,9 +30,6 @@ flatShield = keyCard :: Int -> Item keyCard n = defaultHeldItem & itType .~ HELD (KEYCARD n) -latchkey :: Int -> Item -latchkey _ = defaultHeldItem - torch :: Item torch = defaultHeldItem @@ -29,7 +37,7 @@ torch = & itUse . heldAim . aimMuzzles . ix 0 . mzPos . _x .~ 10 & itAmmoSlots .~ singleAmmo ElectricalAmmo -{- | Sends out pulses that display walls. -} +-- | Sends out pulses that display walls. detector :: Detector -> Item detector dt = defaultHeldItem @@ -42,3 +50,43 @@ detector dt = & itType .~ HELD (DETECTOR dt) & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleDetector & itUse . heldAim . aimMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 100 + +blinker :: Item +blinker = + defaultHeldItem + & itUseCondition .~ UseableAnytime + & itUse . heldDelay . rateMax .~ 20 + & itUse . heldAim . aimRange .~ 1 + & itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1} + & itAmmoSlots .~ singleAmmo ElectricalAmmo + & itUse . heldParams .~ DefaultHeldParams + & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleBlink + & itUse . heldAim . aimMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 10000000 + & itType .~ HELD BLINKER + +unsafeBlinker :: Item +unsafeBlinker = + blinker + & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleUnsafeBlink + & itType .~ HELD BLINKERUNSAFE + +-- & itUse . uequipEffect . eeViewDist ?~ 400 + +rewinder :: Item +rewinder = + blinker + & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleRewind + & itType .~ HELD REWINDER + & itUse . heldAim . aimMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 100000 + +timeStopper :: Item +timeStopper = + blinker + & itType .~ HELD TIMESTOPPER + & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleStopper + +timeScroller :: Item +timeScroller = + timeStopper + & itType .~ HELD TIMESCROLLER + & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleScroller diff --git a/src/Dodge/Item/Info.hs b/src/Dodge/Item/Info.hs index 5c9f7b4c7..fd4961ec0 100644 --- a/src/Dodge/Item/Info.hs +++ b/src/Dodge/Item/Info.hs @@ -83,7 +83,6 @@ heldInfo hit = case hit of LAUNCHERX i -> over _head toUpper (showInt i) ++ " tubes that can launch self propelled projectiles. Tubes that do not face forward launch their projecitles at an angle." -- REMOTELAUNCHER -> "A large tube that can launch self propelled projectiles. Contains a transmitter allowing for remote control of launched projectiles." POISONSPRAYER -> "A weapon that releases noxious gases." - DRONELAUNCHER -> "A device for launching drones." SHATTERGUN -> "A seismic device that shatters hard items in its line of fire." -- FORCEFIELDGUN -> "A device that produces a durable forcefield." DETECTOR d -> "A device that detects " ++ detectorInfo d ++ " in an expanding radius." diff --git a/src/Dodge/Item/Instance.hs b/src/Dodge/Item/Instance.hs deleted file mode 100644 index a36bcd4a6..000000000 --- a/src/Dodge/Item/Instance.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Dodge.Item.Instance - ( module Dodge.Item.Weapon - , module Dodge.Item.Craftable - ) where -import Dodge.Item.Weapon -import Dodge.Item.Craftable diff --git a/src/Dodge/Item/Weapon.hs b/src/Dodge/Item/Weapon.hs deleted file mode 100644 index d165aa15d..000000000 --- a/src/Dodge/Item/Weapon.hs +++ /dev/null @@ -1,8 +0,0 @@ --- | Rexport all weapons -module Dodge.Item.Weapon ( - module Dodge.Item.Weapon.Utility, - module Dodge.Item.Weapon.Drone, -) where - -import Dodge.Item.Weapon.Drone -import Dodge.Item.Weapon.Utility diff --git a/src/Dodge/Item/Weapon/BatteryGuns.hs b/src/Dodge/Item/Weapon/BatteryGuns.hs deleted file mode 100644 index f6ada3e93..000000000 --- a/src/Dodge/Item/Weapon/BatteryGuns.hs +++ /dev/null @@ -1,161 +0,0 @@ -module Dodge.Item.Weapon.BatteryGuns ( --- lasRayAt, --- flameBeamCombine, --- teslaBeamCombine, --- splitBeamCombine, --- -- shootTeslaArc, --- shootLaser, --- --circleLaser, --- --shootDualLaser, --- aTractorBeam, -) where - ---import Geometry.Data ---import Color.Data ---import Dodge.Data.World ---import LensHelp - - ---lasWidePulse :: Item ---lasWidePulse = lasGun --- & itType . iyBase .~ LASGUNWIDEPULSE --- & itParams . lasColor .~ orange --- & itParams . lasDamage .~ 2 --- & itUse .~ ( ruseInstant shootLaser --- [ ammoCheckI --- , withItem $ \it -> withTempLight 1 (100 * frac it) (xyzV4 (_lasColor $ _itParams it)) --- , withItem $ \it -> withSoundForVol (frac it) tone440sawtoothquietS 2 --- , withItemUpdate itup --- $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) (frac it * 0.8) --- , useAmmoAmount 1 --- , withItemUpdate itup $ \it -> duplicateOffsets (xs it) --- ] --- & useAim . aimWeight .~ 6 --- & useAim . aimRange .~ 1 --- & useAim . aimStance .~ TwoHandTwist --- ) --- where --- itup it = it --- & itParams . lasCycle %~ (\i -> (i+1) `mod` 40) --- & itParams . lasDamage .~ ceiling ((22 :: Float) * frac it) --- & itParams . lasColor .~ frac it * orange --- frac it = 0.5 * (1 + sin (pi * fromIntegral (_lasCycle $ _itParams it) * 0.05)) --- xs it = [ 0.25 * (fromIntegral x - fromIntegral (n'-1) /2) | x <- [0..n'-1] ] --- where --- n' = (ceiling $ (150 :: Float) * frac it) :: Int ---lasSway :: Item ---lasSway = lasGun --- & itType . iyBase .~ LASGUNSWAY --- & itParams . lasColor .~ orange --- & itParams . lasDamage .~ 11 --- & itUse .~ ( ruseInstant shootLaser --- [ ammoCheckI --- , withItem $ \it -> withTempLight 1 100 (xyzV4 (_lasColor $ _itParams it)) --- , withItem $ \it -> withMuzPos $ flareCircleAt (_lasColor $ _itParams it) 0.8 --- , withSoundForI tone440sawtoothquietS 2 --- , useAmmoAmount 1 --- , withItemUpdate itup $ \it -> duplicateOffsets (x it) --- ] --- & useAim . aimWeight .~ 6 --- & useAim . aimRange .~ 1 --- & useAim . aimStance .~ TwoHandTwist --- ) --- where --- itup = itParams . lasCycle %~ (\i -> (i+1) `mod` 40) --- x it = [ 15 * sin (pi * fromIntegral x' * 0.05) ] --- where --- x' = _lasCycle $ _itParams it - - ---shootLaser :: Item -> Creature -> World -> World ---shootLaser it cr = --- cWorld . lWorld . lasers --- .:~ lasRayAt --- (_lasColor $ _itParams it) --- (_lasDamage $ _itParams it) --- (_phaseV $ _itParams it) --- (_crPos cr) --- (_crDir cr) - ----- this has the feel of a left click item ---circleLaser :: Item -> Creature -> World -> World ---circleLaser it cr w --- | hasLOSIndirect cpos pos w = --- w --- & cWorld . lWorld . lasers .:~ lasRayAt (_lasColor $ _itParams it) dam phasev pos dir --- | otherwise = w --- where --- cpos = _crPos cr --- mwp = mouseWorldPos (w ^. input) (w ^. wCam) --- pos = _crPos cr +.+ rotateV dir (V2 0 (max 70 $ dist cpos mwp)) --- dir = fromIntegral (_lasCycle (_itParams it)) * pi / 1000 --- phasev = _phaseV . _itParams $ _crInv cr IM.! itRef --- itRef = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change --- dam = _lasDamage $ _itParams it - ---shootDualLaser :: Item -> Creature -> World -> World ---shootDualLaser it cr w = --- w --- & cWorld . lWorld . newBeams . positronBeams .:~ dualRayAt (_lasBeam $ _itParams it) itid w (_lasColor $ _itParams it) dam phasev posl dirl --- & cWorld . lWorld . newBeams . electronBeams .:~ basicBeamAt itid w (_lasColor2 $ _itParams it) dam phasev posr dirr --- where --- itid = _itID it --- dir = _crDir cr --- pos = _crPos cr +.+ aimlength *.* unitVectorAtAngle dir --- aimlength = aimingMuzzleLength cr it --- gap = _dbGap . _itParams $ it --- posl = pos +.+ (- gap) *.* vNormal (unitVectorAtAngle dir) --- posr = pos +.+ gap *.* vNormal (unitVectorAtAngle dir) --- mwp = mouseWorldPos (w ^. input) (w ^. wCam) --- mwp' --- | dist mwp (_crPos cr) < aimlength + 5 = _crPos cr +.+ (aimlength + 5) *.* unitVectorAtAngle dir --- | otherwise = mwp --- dirl = argV $ mwp' -.- posl --- dirr = argV $ mwp' -.- posr --- phasev = _phaseV . _itParams $ _crInv cr IM.! itRef --- itRef = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change --- dam = _lasDamage $ _itParams it - ---basicBeamAt :: Int -> World -> Color -> Int -> Float -> Point2 -> Float -> Beam ---basicBeamAt itid w col dam phasev pos dir = --- Beam --- { _bmDraw = BasicBeamDraw --drawBeam --- , _bmPos = pos --- , _bmDir = dir --- , _bmDamage = dam --- , _bmRange = 800 --- , _bmPhaseV = phasev --- , _bmColor = col --- , _bmPoints = pos : ps --- , _bmFirstPoints = [] --- , _bmOrigin = Just itid --- , _bmType = BeamCombine NoBeamCombine --- } --- where --- (_, ps) = reflectLaserAlong phasev pos (pos +.+ 800 *.* unitVectorAtAngle dir) w - ---dualRayAt :: BeamType -> Int -> World -> Color -> Int -> Float -> Point2 -> Float -> Beam ---dualRayAt bt itid w col dam phasev pos dir = --- basicBeamAt itid w col dam phasev pos dir --- & bmType .~ bt - ---aTractorBeam :: Item -> Creature -> World -> World ---aTractorBeam itm cr w = w & cWorld . lWorld . tractorBeams .:~ tractorBeamAt spos outpos dir power --- where --- cpos = _crPos cr --- spos = cpos +.+ (_crRad cr + 10) *.* unitVectorAtAngle dir --- xpos = cpos +.+ 400 *.* unitVectorAtAngle dir --- dir = _crDir cr --- outpos = fst $ collidePointWallsFilter (const True) cpos xpos w --- power = _attractionPower . _itParams $ itm --- ---tractorBeamAt :: Point2 -> Point2 -> Float -> Point2 -> TractorBeam ---tractorBeamAt pos outpos dir power = --- TractorBeam --- { _tbPos = pos --- , _tbStartPos = outpos --- , _tbVel = d --- , _tbTime = 10 --- } --- where --- d = unitVectorAtAngle dir * power diff --git a/src/Dodge/Item/Weapon/Drone.hs b/src/Dodge/Item/Weapon/Drone.hs deleted file mode 100644 index 98423467f..000000000 --- a/src/Dodge/Item/Weapon/Drone.hs +++ /dev/null @@ -1,52 +0,0 @@ -module Dodge.Item.Weapon.Drone where - -import Dodge.Default.Item -import Control.Lens -import Dodge.Data.World -import Geometry -import Picture -import Shape -import ShapePicture - -droneLauncher :: Item -droneLauncher = - defaultHeldItem - & itUse . heldDelay . rateMax .~ 20 --- & itUse . heldMods .~ AmmoUseCheckMod - & itUse . heldAim . aimWeight .~ 8 - & itUse . heldAim . aimRange .~ 0.5 - & itUse . heldAim . aimStance .~ TwoHandOver - & itAmmoSlots .~ singleAmmo DroneAmmo - & itType .~ HELD DRONELAUNCHER - -lasDronesPic :: Item -> SPic -lasDronesPic _ = noPic - ( colorSH chartreuse $ - prismPoly Small Typical - (map (+.+.+ V3 10 0 4.5) $ polyCircx 4 5) - (map (+.+.+ V3 (-10) 0 4.5) $ polyCircx 4 5) - ) - -aDroneWithItemParams :: - -- | Firing item - Item -> - Creature -> - World -> - World -aDroneWithItemParams = undefined - ---aDroneWithItemParams it cr w = over props (IM.insert i theShell) w --- where --- am = _itConsumption it --- i = IM.newKey $ _props w --- pos = _crPos cr +.+ ((_crRad cr +1) *.* unitVectorAtAngle dir) --- dir = _crDir cr --- --ammoMvs pj w' = foldr (\pjP -> _pjMoveParam pjP (_pjIntParam pjP) it cr pj) w' (_amPjParams am) --- theShell = Drone --- { _prPos = pos --- , _pjStartPos = pos --- , _pjVel = rotateV dir (V2 1 0) --- , _prDraw = undefined --- , _pjID = i --- , _pjUpdate = const id --- } diff --git a/src/Dodge/Item/Weapon/SonicGuns.hs b/src/Dodge/Item/Weapon/SonicGuns.hs deleted file mode 100644 index 1124fb8a6..000000000 --- a/src/Dodge/Item/Weapon/SonicGuns.hs +++ /dev/null @@ -1,114 +0,0 @@ -module Dodge.Item.Weapon.SonicGuns where ---import Dodge.Data ---import Dodge.Reloading.Action ---import Dodge.Creature.HandPos ---import Dodge.Default.Weapon -----import Dodge.Item.Attachment -----import Dodge.WorldEvent.HelperParticle -----import Dodge.Base -----import Dodge.Zone ---import Geometry ---import Picture ---import LensHelp --- -----import Data.Maybe -----import Data.List -----import Data.Bifunctor -----import System.Random -----import Data.Tuple -----import qualified IntMapHelp as IM --- -----aSonicWave :: Item -> Creature -> World -> World -----aSonicWave it cr = instantParticles .:~ sonicWave pos dir cpos ----- where ----- pos = _crPos cr +.+ aimingMuzzlePos cr it *.* unitVectorAtAngle dir ----- cpos = _crPos cr ----- dir = _crDir cr --- -----sonicWave :: Point2 -> Float -> Point2 -> Particle -----sonicWave pos dir cpos = ShockLine ----- { _ptUpdate = mvSonicWave ----- , _ptPointDirs = [[makePointDir $ pos +.+ clockOrth,makePointDir $ pos -.- clockOrth]] ----- , _ptTimer = 1000 ----- , _ptColor = white ----- , _ptCenter = cpos ----- } ----- where ----- clockOrth = 10 *.* unitVectorAtAngle (dir + pi*0.5) ----- makePointDir p = (p, argV $ p -.- cpos) --- -----drawSonicWave :: Particle -> Picture -----drawSonicWave pt = foldMap (color (_ptColor pt) . setLayer BloomNoZWrite . setDepth 20 ----- . lineThick 20 ----- . map fst) ----- $ _ptPointDirs pt ----- -----mvSonicWave :: World -> Particle -> (World, Maybe Particle) -----mvSonicWave w pt ----- | _ptTimer pt <= 0 = (w,Nothing) ----- | otherwise = (w, Just $ pt & ptTimer -~ 1) ------- | otherwise = (w, Just pt') ------- where ------- mvPointDir (p,a) = case wallsHit p ep w of ------- [] -> Just ((ep, a), (True,True)) ------- (hp,wl):_ -> reflectShockLine wl p hp ep ------- where ------- ep = p +.+ 5 *.* unitVectorAtAngle a ------- dividePointDir (x:y:xs) = f x y ++ dividePointDir (y:xs) ------- dividePointDir xs = xs ------- f (p,a) (q,b) ------- | dist p q > 10 = [(p,a),(0.5 *.* (p +.+ q),mixAngles 0.5 a b)] ------- | otherwise = [(p,a)] ------- combineClose ((p,a):(q,b):pairs) ------- | dist p q < 5 = combineClose (( 0.5 *.* (p+.+q), mixa) : pairs) ------- | otherwise = (p,a) : combineClose ((q,b):pairs) ------- where ------- mixa = mixAngles 0.5 a b ------- combineClose pairs = pairs ------- pt' = pt & ptTimer -~ 10 ------- -- & ptPointDirs %~ (map dividePointDir . filter (not . null) . dosplit . map mvPointDir) ------- & ptPointDirs %~ (map (dividePointDir . combineClose) . filter (not . null) ------- . concatMap (dosplit . map mvPointDir)) ------- -- & ptPointDirs %~ (filter (not . null) . concatMap (dosplit . map mvPointDir)) ------- dosplit :: [Maybe ((Point2,Float),(Bool,Bool))] -> [[(Point2,Float)]] ------- dosplit (x:xs) = case x of ------- Nothing -> [] : dosplit xs ------- Just (pair,(True,True)) -> overHead (pair:) $ dosplit xs ------- Just (pair,(False,True)) -> [] : overHead (pair:) (dosplit xs) ------- Just (pair,(True,False)) -> [pair] : dosplit xs ------- Just (_,(False,False)) -> [] : dosplit xs ------- dosplit [] = [[]] --- -----overHead :: (a -> a) -> [a] -> [a] -----overHead f (x:xs) = f x: xs -----overHead _ [] = [] ----- ----- -----reflectShockLine :: Wall -> Point2 -> Point2 -> Point2 -> Maybe ((Point2,Float),(Bool,Bool)) -----reflectShockLine wl sp hitp ep ----- | angleVV wlV v < pi/3 = Just (pair, (False,True)) ----- | angleVV wlV v < 2 *pi/3 = Nothing ----- | otherwise = Just (pair, (True,False)) ----- where ----- reflv = reflectIn wlV (ep -.- hitp) ----- np = hitp +.+ reflv ----- pair = (np, argV reflv) ----- wlV = uncurry (-.-) $ _wlLine wl ----- v = hitp -.- sp ----- -----reflectShockLine' :: Wall -> Point2 -> Point2 -> Point2 -> Maybe ((Point2,Float),(Bool,Bool)) -----reflectShockLine' wl sp hitp ep ----- | angleVV wlV v < pi/3 = Just ((np +.+ wlVN,argV wlV), (False,True)) ----- | angleVV wlV v < 2 *pi/3 = Nothing ----- | otherwise = Just ((np -.- wlVN,argV $ V2 0 0 -.- wlV), (True,False)) ----- where ----- np = hitp +.+ normalizeV (sp -.- hitp) ----- wlV = uncurry (-.-) $ _wlLine wl ----- wlVN = dist hitp ep *.* normalizeV wlV ----- v = hitp -.- sp ----- -----dividePoly :: Float -> [Point2] -> [Point2] -----dividePoly x (a:b:bs) = init (divideLine x a b) ++ dividePoly x (b:bs) -----dividePoly _ [a] = [a] -----dividePoly _ _ = [] --- diff --git a/src/Dodge/Item/Weapon/Utility.hs b/src/Dodge/Item/Weapon/Utility.hs deleted file mode 100644 index 33a854d08..000000000 --- a/src/Dodge/Item/Weapon/Utility.hs +++ /dev/null @@ -1,51 +0,0 @@ -module Dodge.Item.Weapon.Utility - ( timeStopper - , rewinder - , timeScroller - , blinker - , unsafeBlinker - ) where - -import Control.Lens -import Dodge.Data.Item -import Dodge.Default - - -blinker :: Item -blinker = - defaultHeldItem - & itUseCondition .~ UseableAnytime - & itUse . heldDelay . rateMax .~ 20 - & itUse . heldAim . aimRange .~ 1 - & itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1} - & itAmmoSlots .~ singleAmmo ElectricalAmmo - & itUse . heldParams .~ DefaultHeldParams - & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleBlink - & itUse . heldAim . aimMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 10000000 - & itType .~ HELD BLINKER - -unsafeBlinker :: Item -unsafeBlinker = - blinker - & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleUnsafeBlink - & itType .~ HELD BLINKERUNSAFE --- & itUse . uequipEffect . eeViewDist ?~ 400 - -rewinder :: Item -rewinder = - blinker - & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleRewind - & itType .~ HELD REWINDER - & itUse . heldAim . aimMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 100000 - -timeStopper :: Item -timeStopper = - blinker - & itType .~ HELD TIMESTOPPER - & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleStopper - -timeScroller :: Item -timeScroller = - timeStopper - & itType .~ HELD TIMESCROLLER - & itUse . heldAim . aimMuzzles . ix 0 . mzEffect .~ MuzzleScroller diff --git a/tags b/tags index fe0cdcf5a..cf73eb034 100644 --- a/tags +++ b/tags @@ -16,7 +16,7 @@ <$> src/Dodge/Data/ActionPlan.hs 203;" o <$> src/Dodge/Data/CWorld.hs 49;" o <$> src/Dodge/Data/Camera.hs 39;" o -<$> src/Dodge/Data/Creature.hs 103;" o +<$> src/Dodge/Data/Creature.hs 100;" o <$> src/Dodge/Data/LWorld.hs 158;" o <$> src/Dodge/Data/Terminal.hs 131;" o AIUNIT src/Dodge/Data/Item/Combine.hs 51;" C @@ -117,8 +117,8 @@ BATTERY src/Dodge/Data/Item/Combine.hs 90;" C BATTERYPACK src/Dodge/Data/Item/Combine.hs 114;" C BELTMAG src/Dodge/Data/Item/Combine.hs 88;" C BLACK src/Color/Data.hs 28;" C -BLINKER src/Dodge/Data/Item/Combine.hs 164;" C -BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 165;" C +BLINKER src/Dodge/Data/Item/Combine.hs 163;" C +BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 164;" C BLOWTORCH src/Dodge/Data/Item/Combine.hs 150;" C BLUE src/Color/Data.hs 17;" C BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 134;" C @@ -251,7 +251,7 @@ CIRCLE src/Dodge/Data/GenParams.hs 20;" C CME src/Dodge/Data/MuzzleEffect.hs 11;" C CONCUSSIVE src/Dodge/Data/Damage/Type.hs 22;" C CRAFT src/Dodge/Data/Item/Combine.hs 19;" C -CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 170;" C +CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 169;" C CREATURESENSOR src/Dodge/Data/Item/Combine.hs 62;" C CRUSHING src/Dodge/Data/Damage/Type.hs 16;" C CUTTING src/Dodge/Data/Damage/Type.hs 14;" C @@ -413,20 +413,20 @@ Create src/Dodge/Wall/Create.hs 1;" m CreateFlame src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C CreatePoisonGas src/Dodge/Data/Item/Use/Consumption/Ammo.hs 54;" C CreateShieldWall src/Dodge/Data/Item/Effect.hs 22;" C -Creature src/Dodge/Data/Creature.hs 38;" t +Creature src/Dodge/Data/Creature.hs 36;" t Creature src/Dodge/Creature.hs 1;" m Creature src/Dodge/Data/Creature.hs 7;" m Creature src/Dodge/Default/Creature.hs 1;" m Creature src/Dodge/Placement/Instance/Creature.hs 1;" m Creature src/Dodge/Zoning/Creature.hs 1;" m -CreatureCorpse src/Dodge/Data/Creature.hs 86;" t +CreatureCorpse src/Dodge/Data/Creature.hs 83;" t CreatureDropType src/Dodge/Data/Creature/State.hs 23;" t CreatureEffect src/Dodge/CreatureEffect.hs 1;" m CreatureEffect src/Dodge/Data/CreatureEffect.hs 6;" m CreaturePart src/Dodge/Data/Wall.hs 53;" C CreatureState src/Dodge/Data/Creature/State.hs 16;" t CreatureStatistics src/Dodge/Data/Creature/Misc.hs 20;" t -CreatureTargeting src/Dodge/Data/Creature.hs 79;" t +CreatureTargeting src/Dodge/Data/Creature.hs 76;" t CreatureType src/Dodge/Data/Creature/Misc.hs 69;" t CryostatisSS src/Dodge/Data/Scenario.hs 91;" C Crystal src/Dodge/Data/Material.hs 11;" C @@ -436,9 +436,8 @@ CursorDisplay src/Dodge/Data/SelectionList.hs 19;" t Cuse src/Dodge/Data/Item/HeldUse.hs 13;" t Cuse src/Dodge/Cuse.hs 1;" m Cylinder src/Shape/Data.hs 19;" C -DETECTOR src/Dodge/Data/Item/Combine.hs 163;" C +DETECTOR src/Dodge/Data/Item/Combine.hs 162;" C DPoint2 src/Geometry/Data.hs 34;" t -DRONELAUNCHER src/Dodge/Data/Item/Combine.hs 158;" C DRUMMAG src/Dodge/Data/Item/Combine.hs 87;" C DS src/DoubleStack.hs 3;" t DT src/Dodge/Data/DoubleTree.hs 30;" C @@ -504,7 +503,7 @@ DestroyBeing src/Dodge/Data/Scenario.hs 8;" C DestroyBullet src/Dodge/Data/Bullet.hs 36;" C DestroyItem src/Dodge/Data/Scenario.hs 7;" C DestroyPU src/Dodge/Data/Item/Use/Consumption/Ammo.hs 34;" C -Detector src/Dodge/Data/Item/Combine.hs 168;" t +Detector src/Dodge/Data/Item/Combine.hs 167;" t Dirt src/Dodge/Data/Material.hs 11;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t Display src/Dodge/Item/Display.hs 1;" m @@ -668,7 +667,7 @@ FLAMETORRENT src/Dodge/Data/Item/Combine.hs 148;" C FLAMEWALL src/Dodge/Data/Item/Combine.hs 149;" C FLAMING src/Dodge/Data/Damage/Type.hs 18;" C FLASHMODULE src/Dodge/Data/Item/Combine.hs 67;" C -FLATSHIELD src/Dodge/Data/Item/Combine.hs 161;" C +FLATSHIELD src/Dodge/Data/Item/Combine.hs 160;" C FRAGCRAFT src/Dodge/Data/Item/Combine.hs 70;" C FRAGMODULE src/Dodge/Data/Item/Combine.hs 66;" C FRONTARMOUR src/Dodge/Data/Item/Combine.hs 102;" C @@ -857,7 +856,7 @@ ILink src/Dodge/Data/ComposedItem.hs 49;" C IMSS src/Dodge/Data/SelectionList.hs 36;" t INVISIBILITYEQUIPMENT src/Dodge/Data/Item/Combine.hs 104;" C IRONBAR src/Dodge/Data/Item/Combine.hs 56;" C -ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 169;" C +ITEMDETECTOR src/Dodge/Data/Item/Combine.hs 168;" C ImmediateEffect src/Loop/Data.hs 8;" C Importance src/Shape/Data.hs 34;" t Important src/Shape/Data.hs 35;" C @@ -904,7 +903,7 @@ IntAnno src/Dodge/Annotation/Data.hs 17;" C IntID src/Dodge/Data/Universe.hs 110;" t IntImp src/Dodge/Data/CreatureEffect.hs 20;" t IntMapHelp src/IntMapHelp.hs 8;" m -Intention src/Dodge/Data/Creature.hs 90;" t +Intention src/Dodge/Data/Creature.hs 87;" t Intention src/Dodge/Creature/Intention.hs 1;" m Intersect src/Geometry/Intersect.hs 5;" m IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 105;" C @@ -954,7 +953,7 @@ JoinClust src/Dodge/Combine/Graph.hs 21;" 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 162;" C +KEYCARD src/Dodge/Data/Item/Combine.hs 161;" C Kill src/Dodge/Data/ActionPlan.hs 198;" C LASER src/Dodge/Data/Item/Combine.hs 153;" C LASERING src/Dodge/Data/Damage/Type.hs 19;" C @@ -1110,7 +1109,7 @@ MagnetUpdate src/Dodge/Data/Magnet.hs 13;" t MagnetUpdateTimer src/Dodge/Data/Magnet.hs 13;" C Main appDodge/Main.hs 1;" m Make src/Dodge/Corpse/Make.hs 1;" m -MakeDefaultCorpse src/Dodge/Data/Creature.hs 86;" C +MakeDefaultCorpse src/Dodge/Data/Creature.hs 83;" C MakeSound src/Dodge/Data/ActionPlan.hs 43;" C MakeStartCloudAt src/Dodge/Data/WorldEffect.hs 30;" C MakeTempLight src/Dodge/Data/WorldEffect.hs 34;" C @@ -1626,7 +1625,7 @@ RoundedFaces src/Shape/Data.hs 18;" C RunPast src/Dodge/Room/RunPast.hs 1;" m RunningSideEffect src/Dodge/Data/Universe.hs 65;" C SCRAPMETAL src/Dodge/Data/Item/Combine.hs 38;" C -SHATTERGUN src/Dodge/Data/Item/Combine.hs 159;" C +SHATTERGUN src/Dodge/Data/Item/Combine.hs 158;" C SHATTERING src/Dodge/Data/Damage/Type.hs 17;" C SHELLMAG src/Dodge/Data/Item/Combine.hs 89;" C SIZEMODULE src/Dodge/Data/Item/Combine.hs 73;" C @@ -1834,7 +1833,7 @@ TIMESTOPPER src/Dodge/Data/Item/Combine.hs 127;" C TIN src/Dodge/Data/Item/Combine.hs 34;" C TINMAG src/Dodge/Data/Item/Combine.hs 86;" C TO src/Shader/Data.hs 59;" t -TORCH src/Dodge/Data/Item/Combine.hs 160;" C +TORCH src/Dodge/Data/Item/Combine.hs 159;" C TRACTORGUN src/Dodge/Data/Item/Combine.hs 154;" C TRANSFORMER src/Dodge/Data/Item/Combine.hs 41;" C TRANSMITTER src/Dodge/Data/Item/Combine.hs 47;" C @@ -2049,7 +2048,7 @@ 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 171;" C +WALLDETECTOR src/Dodge/Data/Item/Combine.hs 170;" C WASD src/Dodge/WASD.hs 1;" m WHITE src/Color/Data.hs 27;" C WIRE src/Dodge/Data/Item/Combine.hs 63;" C @@ -2326,47 +2325,46 @@ _cpRes src/Dodge/Data/Corpse.hs 22;" f _cpSPic src/Dodge/Data/Corpse.hs 21;" f _cpVigilance src/Dodge/Data/Creature/Perception.hs 33;" f _cpVision src/Dodge/Data/Creature/Perception.hs 36;" f -_crActionPlan src/Dodge/Data/Creature.hs 63;" f -_crCorpse src/Dodge/Data/Creature.hs 59;" f -_crDir src/Dodge/Data/Creature.hs 42;" f -_crEquipment src/Dodge/Data/Creature.hs 57;" f -_crFaction src/Dodge/Data/Creature.hs 68;" f -_crGroup src/Dodge/Data/Creature.hs 69;" f +_crActionPlan src/Dodge/Data/Creature.hs 60;" f +_crCorpse src/Dodge/Data/Creature.hs 56;" f +_crDir src/Dodge/Data/Creature.hs 39;" f +_crEquipment src/Dodge/Data/Creature.hs 54;" f +_crFaction src/Dodge/Data/Creature.hs 65;" f +_crGroup src/Dodge/Data/Creature.hs 66;" f _crGroupCenter src/Dodge/Data/CrGroupParams.hs 17;" f _crGroupID src/Dodge/Data/Creature/State.hs 49;" f _crGroupIDs src/Dodge/Data/CrGroupParams.hs 16;" f _crGroupParamID src/Dodge/Data/CrGroupParams.hs 15;" f _crGroupUpdate src/Dodge/Data/CrGroupParams.hs 18;" f -_crHP src/Dodge/Data/Creature.hs 51;" f -_crHammerPosition src/Dodge/Data/Creature.hs 72;" f -_crID src/Dodge/Data/Creature.hs 48;" f -_crIntention src/Dodge/Data/Creature.hs 70;" f -_crInv src/Dodge/Data/Creature.hs 53;" f -_crInvCapacity src/Dodge/Data/Creature.hs 55;" f -_crInvLock src/Dodge/Data/Creature.hs 56;" f -_crManipulation src/Dodge/Data/Creature.hs 54;" f -_crMass src/Dodge/Data/Creature.hs 50;" f -_crMaterial src/Dodge/Data/Creature.hs 60;" f -_crMaxHP src/Dodge/Data/Creature.hs 52;" f -_crMeleeCooldown src/Dodge/Data/Creature.hs 64;" f -_crMemory src/Dodge/Data/Creature.hs 66;" f -_crMvAim src/Dodge/Data/Creature.hs 45;" f -_crMvDir src/Dodge/Data/Creature.hs 44;" f -_crMvType src/Dodge/Data/Creature.hs 71;" f -_crName src/Dodge/Data/Creature.hs 73;" f -_crOldDir src/Dodge/Data/Creature.hs 43;" f -_crOldPos src/Dodge/Data/Creature.hs 40;" f -_crPastDamage src/Dodge/Data/Creature.hs 61;" f -_crPerception src/Dodge/Data/Creature.hs 65;" f -_crPos src/Dodge/Data/Creature.hs 39;" f -_crRad src/Dodge/Data/Creature.hs 49;" f -_crStance src/Dodge/Data/Creature.hs 62;" f -_crState src/Dodge/Data/Creature.hs 58;" f -_crStatistics src/Dodge/Data/Creature.hs 74;" f -_crTwist src/Dodge/Data/Creature.hs 46;" f -_crType src/Dodge/Data/Creature.hs 47;" f -_crVel src/Dodge/Data/Creature.hs 41;" f -_crVocalization src/Dodge/Data/Creature.hs 67;" f +_crHP src/Dodge/Data/Creature.hs 48;" f +_crHammerPosition src/Dodge/Data/Creature.hs 69;" f +_crID src/Dodge/Data/Creature.hs 45;" f +_crIntention src/Dodge/Data/Creature.hs 67;" f +_crInv src/Dodge/Data/Creature.hs 50;" f +_crInvCapacity src/Dodge/Data/Creature.hs 52;" f +_crInvLock src/Dodge/Data/Creature.hs 53;" f +_crManipulation src/Dodge/Data/Creature.hs 51;" f +_crMass src/Dodge/Data/Creature.hs 47;" f +_crMaterial src/Dodge/Data/Creature.hs 57;" f +_crMaxHP src/Dodge/Data/Creature.hs 49;" f +_crMeleeCooldown src/Dodge/Data/Creature.hs 61;" f +_crMemory src/Dodge/Data/Creature.hs 63;" f +_crMvAim src/Dodge/Data/Creature.hs 42;" f +_crMvDir src/Dodge/Data/Creature.hs 41;" f +_crMvType src/Dodge/Data/Creature.hs 68;" f +_crName src/Dodge/Data/Creature.hs 70;" f +_crOldDir src/Dodge/Data/Creature.hs 40;" f +_crOldPos src/Dodge/Data/Creature.hs 38;" f +_crPastDamage src/Dodge/Data/Creature.hs 58;" f +_crPerception src/Dodge/Data/Creature.hs 62;" f +_crPos src/Dodge/Data/Creature.hs 37;" f +_crRad src/Dodge/Data/Creature.hs 46;" f +_crStance src/Dodge/Data/Creature.hs 59;" f +_crState src/Dodge/Data/Creature.hs 55;" f +_crStatistics src/Dodge/Data/Creature.hs 71;" f +_crTwist src/Dodge/Data/Creature.hs 43;" f +_crType src/Dodge/Data/Creature.hs 44;" f +_crVocalization src/Dodge/Data/Creature.hs 64;" f _crZoning src/Dodge/Data/World.hs 49;" f _creatureGroups src/Dodge/Data/LWorld.hs 99;" f _creatures src/Dodge/Data/LWorld.hs 98;" f @@ -2375,10 +2373,10 @@ _csDropsOnDeath src/Dodge/Data/Creature/State.hs 19;" f _csLinks src/Dodge/Data/RoomCluster.hs 11;" f _csName src/Dodge/Data/RoomCluster.hs 10;" f _csSpState src/Dodge/Data/Creature/State.hs 18;" f -_ctActive src/Dodge/Data/Creature.hs 83;" f -_ctID src/Dodge/Data/Creature.hs 82;" f -_ctPos src/Dodge/Data/Creature.hs 80;" f -_ctType src/Dodge/Data/Creature.hs 81;" f +_ctActive src/Dodge/Data/Creature.hs 80;" f +_ctID src/Dodge/Data/Creature.hs 79;" f +_ctPos src/Dodge/Data/Creature.hs 77;" f +_ctType src/Dodge/Data/Creature.hs 78;" f _currentArc src/Dodge/Data/Item/Params.hs 22;" f _currentFoot src/Dodge/Data/Creature/Stance.hs 23;" f _cursSides src/Dodge/Data/SelectionList.hs 20;" f @@ -2752,7 +2750,7 @@ _musicData src/Data/Preload.hs 13;" f _muzVel src/Dodge/Data/Item/Use.hs 91;" f _mvAimSpeed src/Dodge/Data/Creature/Misc.hs 44;" f _mvSpeed src/Dodge/Data/Creature/Misc.hs 39;" f -_mvToPoint src/Dodge/Data/Creature.hs 92;" f +_mvToPoint src/Dodge/Data/Creature.hs 89;" f _mvTurnJit src/Dodge/Data/Creature/Misc.hs 43;" f _mvTurnRad src/Dodge/Data/Creature/Misc.hs 42;" f _mzAmmoPerShot src/Dodge/Data/Item/Use.hs 165;" f @@ -3078,7 +3076,7 @@ _taArcSteps src/Dodge/Data/TeslaArc.hs 18;" f _taColor src/Dodge/Data/TeslaArc.hs 19;" f _taPoints src/Dodge/Data/TeslaArc.hs 16;" f _taTimer src/Dodge/Data/TeslaArc.hs 17;" f -_targetCr src/Dodge/Data/Creature.hs 91;" f +_targetCr src/Dodge/Data/Creature.hs 88;" f _targetID src/Dodge/Data/ActionPlan.hs 85;" f _targetSeenAt src/Dodge/Data/ActionPlan.hs 86;" f _tbPos src/Dodge/Data/TractorBeam.hs 14;" f @@ -3203,7 +3201,7 @@ _vcWarnings src/Dodge/Data/Creature/Misc.hs 31;" f _vertices src/Polyhedra/Data.hs 22;" f _viDist src/Dodge/Data/Creature/Perception.hs 43;" f _viFOV src/Dodge/Data/Creature/Perception.hs 42;" f -_viewPoint src/Dodge/Data/Creature.hs 93;" f +_viewPoint src/Dodge/Data/Creature.hs 90;" f _volume_master src/Dodge/Data/Config.hs 39;" f _volume_music src/Dodge/Data/Config.hs 41;" f _volume_sound src/Dodge/Data/Config.hs 40;" f @@ -3313,7 +3311,7 @@ advanceScrollAmount src/Dodge/Update.hs 414;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f aimDelaySweep src/Dodge/Render/Picture.hs 239;" f -aimStanceInfo src/Dodge/Item/Info.hs 198;" f +aimStanceInfo src/Dodge/Item/Info.hs 197;" f aimTurn src/Dodge/Creature/YourControl.hs 154;" f aimingWeaponHandlePos src/Dodge/Item/HeldOffset.hs 69;" f aimingWeaponZeroPos src/Dodge/Item/HeldOffset.hs 63;" f @@ -3417,25 +3415,25 @@ backpackCombinations src/Dodge/Combine/Combinations.hs 25;" f backpackShape src/Dodge/Item/Draw/SPic.hs 93;" 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 234;" f +bangConeShape src/Dodge/Item/Draw/SPic.hs 233;" f bangEchoS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 382;" f bangRod src/Dodge/Item/Held/Rod.hs 18;" f bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 496;" f bangStick src/Dodge/Item/Held/Stick.hs 17;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -baseAMRShape src/Dodge/Item/Draw/SPic.hs 344;" f +baseAMRShape src/Dodge/Item/Draw/SPic.hs 343;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f -baseCaneShape src/Dodge/Item/Draw/SPic.hs 254;" f +baseCaneShape src/Dodge/Item/Draw/SPic.hs 253;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 45;" f basePCI src/Dodge/Item/Grammar.hs 110;" f -baseRifleShape src/Dodge/Item/Draw/SPic.hs 257;" f -baseRodShape src/Dodge/Item/Draw/SPic.hs 341;" f -baseSMGShape src/Dodge/Item/Draw/SPic.hs 324;" f +baseRifleShape src/Dodge/Item/Draw/SPic.hs 256;" f +baseRodShape src/Dodge/Item/Draw/SPic.hs 340;" f +baseSMGShape src/Dodge/Item/Draw/SPic.hs 323;" f baseShoulder src/Dodge/Creature/Picture.hs 131;" f -baseStickShape src/Dodge/Item/Draw/SPic.hs 231;" f -baseStickShapeX src/Dodge/Item/Draw/SPic.hs 226;" f +baseStickShape src/Dodge/Item/Draw/SPic.hs 230;" f +baseStickShapeX src/Dodge/Item/Draw/SPic.hs 225;" f baseStickSpread src/Dodge/Item/Held/Stick.hs 28;" f basicAttentionUpdate src/Dodge/Creature/Perception.hs 127;" f basicAwarenessUpdate src/Dodge/Creature/Perception.hs 37;" f @@ -3462,6 +3460,7 @@ blinkActionFail src/Dodge/Creature/Action/Blink.hs 85;" f blinkActionMousePos src/Dodge/Creature/Action/Blink.hs 19;" f blinkDistortions src/Dodge/Creature/Action/Blink.hs 40;" f blinkShockwave src/Dodge/Creature/Action/Blink.hs 76;" f +blinker src/Dodge/Item/Held/Utility.hs 48;" f blinker src/Dodge/Item/Weapon/Utility.hs 14;" f blipAt src/Dodge/RadarSweep.hs 59;" f blockLine src/Dodge/Placement/Instance/Wall.hs 41;" f @@ -3697,7 +3696,7 @@ crUpdate src/Dodge/Creature/State.hs 62;" f crUpdateInvidLocations src/Dodge/Inventory/Location.hs 61;" f crUpdateItemLocations src/Dodge/Inventory/Location.hs 42;" f crZoneSize src/Dodge/Zoning/Creature.hs 39;" f -craftInfo src/Dodge/Item/Info.hs 124;" f +craftInfo src/Dodge/Item/Info.hs 123;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 434;" f createArc src/Dodge/Tesla/Arc.hs 67;" f createBarrelSpark src/Dodge/Spark.hs 44;" f @@ -3818,13 +3817,13 @@ dededumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 462;" f dedumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 328;" f defDamageMaterial src/Dodge/Material/Damage.hs 17;" f defLSPic src/Dodge/LightSource/Draw.hs 10;" f -defSPic src/Dodge/Item/Draw/SPic.hs 240;" f -defaultAimMvType src/Dodge/Default/Creature.hs 122;" f +defSPic src/Dodge/Item/Draw/SPic.hs 239;" f +defaultAimMvType src/Dodge/Default/Creature.hs 121;" f defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f -defaultAimingCrit src/Dodge/Default/Creature.hs 131;" f +defaultAimingCrit src/Dodge/Default/Creature.hs 130;" f defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f -defaultAudition src/Dodge/Default/Creature.hs 99;" f +defaultAudition src/Dodge/Default/Creature.hs 98;" f defaultAutoWall src/Dodge/Default/Door.hs 15;" f defaultBangCane src/Dodge/Item/Held/Cane.hs 19;" f defaultBlock src/Dodge/Default/Block.hs 5;" f @@ -3835,15 +3834,15 @@ defaultButton src/Dodge/Default.hs 50;" f defaultCWCam src/Dodge/Default/World.hs 67;" f defaultCWGen src/Dodge/Default/World.hs 57;" f defaultCWorld src/Dodge/Default/World.hs 82;" f -defaultChaseMvType src/Dodge/Default/Creature.hs 113;" f +defaultChaseMvType src/Dodge/Default/Creature.hs 112;" f defaultClusterStatus src/Dodge/Default/Room.hs 38;" f defaultConfig src/Dodge/Data/Config.hs 125;" f defaultCorpse src/Dodge/Corpse/Make.hs 29;" f defaultCraftItem src/Dodge/Default/Item.hs 35;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f -defaultCreatureMemory src/Dodge/Default/Creature.hs 72;" f -defaultCreatureSkin src/Dodge/Default/Creature.hs 66;" f -defaultCreatureTargeting src/Dodge/Default/Creature.hs 63;" f +defaultCreatureMemory src/Dodge/Default/Creature.hs 71;" f +defaultCreatureSkin src/Dodge/Default/Creature.hs 65;" f +defaultCreatureTargeting src/Dodge/Default/Creature.hs 62;" f defaultCrystalWall src/Dodge/Default/Wall.hs 40;" f defaultDirtBlock src/Dodge/Default/Block.hs 19;" f defaultDirtWall src/Dodge/Default/Wall.hs 61;" f @@ -3860,10 +3859,10 @@ defaultHUD src/Dodge/Default/World.hs 155;" f defaultHeldItem src/Dodge/Default/Item.hs 16;" f defaultHeldUse src/Dodge/Default/Item/Use.hs 28;" f defaultImpulsive src/Dodge/Humanoid.hs 190;" f -defaultInanimate src/Dodge/Default/Creature.hs 69;" f +defaultInanimate src/Dodge/Default/Creature.hs 68;" f defaultInput src/Dodge/Default/World.hs 14;" f -defaultIntention src/Dodge/Default/Creature.hs 105;" f -defaultInvSize src/Dodge/Default/Creature.hs 79;" f +defaultIntention src/Dodge/Default/Creature.hs 104;" f +defaultInvSize src/Dodge/Default/Creature.hs 78;" f defaultItEffect src/Dodge/Default/Item.hs 47;" f defaultItZoom src/Dodge/Default/Item/Use/AimParams.hs 31;" f defaultLS src/Dodge/Default/LightSource.hs 8;" f @@ -3873,16 +3872,16 @@ defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f defaultMachine src/Dodge/Default.hs 32;" f defaultMachineWall src/Dodge/Default/Wall.hs 48;" f defaultPP src/Dodge/Default.hs 65;" f -defaultPerceptionState src/Dodge/Default/Creature.hs 82;" f +defaultPerceptionState src/Dodge/Default/Creature.hs 81;" f defaultProp src/Dodge/Default/Prop.hs 6;" f defaultProximitySensor src/Dodge/Default.hs 79;" f defaultRoom src/Dodge/Default/Room.hs 9;" f defaultSensorWall src/Dodge/Default/Wall.hs 58;" f -defaultState src/Dodge/Default/Creature.hs 140;" f +defaultState src/Dodge/Default/Creature.hs 139;" f defaultSwitchWall src/Dodge/Default/Door.hs 22;" f defaultTerminal src/Dodge/Default/Terminal.hs 9;" f defaultTerminalInput src/Dodge/Default/Terminal.hs 32;" f -defaultVision src/Dodge/Default/Creature.hs 92;" f +defaultVision src/Dodge/Default/Creature.hs 91;" f defaultWall src/Dodge/Default/Wall.hs 10;" f defaultWindow src/Dodge/Default/Wall.hs 74;" f defaultWorld src/Dodge/Default/World.hs 34;" f @@ -3907,9 +3906,9 @@ destroyMounts src/Dodge/Block.hs 101;" f destroyProjectile src/Dodge/Projectile/Update.hs 63;" f detV src/Geometry/Vector.hs 93;" f detector src/Dodge/Item/Held/Utility.hs 35;" f -detectorColor src/Dodge/Item/Draw/SPic.hs 390;" f +detectorColor src/Dodge/Item/Draw/SPic.hs 389;" f detectorEffect src/Dodge/Item/Weapon/Radar.hs 20;" f -detectorInfo src/Dodge/Item/Info.hs 179;" f +detectorInfo src/Dodge/Item/Info.hs 178;" f determineProjectileTracking src/Dodge/HeldUse.hs 549;" f diagonalLinesRect src/Dodge/Room/Foreground.hs 52;" f did src/Dodge/Item/InvSize.hs 53;" f @@ -3929,7 +3928,7 @@ displayControls src/Dodge/Menu.hs 206;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFreeSlots src/Dodge/DisplayInventory.hs 226;" f displayIndents src/Dodge/DisplayInventory.hs 123;" f -displayPulse src/Dodge/Item/Display.hs 92;" f +displayPulse src/Dodge/Item/Display.hs 88;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 118;" f displayTerminalLineString src/Dodge/Update.hs 443;" f dist src/Geometry/Vector.hs 179;" f @@ -4186,10 +4185,10 @@ eqConstr src/SameConstr.hs 17;" f eqPosText src/Dodge/Equipment/Text.hs 5;" f eqSiteToPositions src/Dodge/Inventory/RBList.hs 76;" f equipAllocString src/Dodge/Render/HUD.hs 295;" f -equipInfo src/Dodge/Item/Info.hs 97;" f +equipInfo src/Dodge/Item/Info.hs 96;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 64;" f equipPosition src/Dodge/Item/Draw.hs 30;" f -equipSiteInfo src/Dodge/Item/Info.hs 208;" f +equipSiteInfo src/Dodge/Item/Info.hs 207;" f equipSpeed src/Dodge/Creature/Impulse/Movement.hs 99;" f equipmentStrValue src/Dodge/Creature/Statistics.hs 20;" f errorAngleVV src/Geometry.hs 62;" f @@ -4252,12 +4251,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 327;" f +flamerPic src/Dodge/Item/Draw/SPic.hs 326;" f flareCircleAt src/Dodge/HeldUse.hs 235;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 49;" f flatLookupItems src/Dodge/Combine.hs 38;" f -flatShield src/Dodge/Item/Held/Utility.hs 9;" f -flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 377;" f +flatShield src/Dodge/Item/Held/Utility.hs 11;" f +flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 376;" 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 @@ -4429,7 +4428,7 @@ hasLOSIndirect src/Dodge/Base/Collide.hs 215;" 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 380;" f +headLampShape src/Dodge/Item/Draw/SPic.hs 379;" f headMap src/Dodge/DoubleTree.hs 170;" f heal src/Dodge/Item/Consumable.hs 17;" f heal25 src/Dodge/Item/Consumable.hs 14;" f @@ -4446,7 +4445,7 @@ 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 167;" f -heldPositionInfo src/Dodge/Item/Info.hs 195;" f +heldPositionInfo src/Dodge/Item/Info.hs 194;" f helpCommand src/Dodge/Terminal.hs 66;" f helpPoly3D src/Polyhedra.hs 125;" f heron src/Geometry.hs 221;" f @@ -4599,10 +4598,10 @@ itemFromAmmoMag src/Dodge/Item.hs 30;" f itemFromAttachType src/Dodge/Item.hs 39;" f itemFromBase src/Dodge/Item.hs 19;" f itemFromEquipType src/Dodge/Item.hs 48;" f -itemFromHeldType src/Dodge/Item/Held.hs 26;" f +itemFromHeldType src/Dodge/Item/Held.hs 25;" f itemInfo src/Dodge/Item/Info.hs 13;" f itemInvColor src/Dodge/Item/InventoryColor.hs 11;" f -itemNumberDisplay src/Dodge/Item/Display.hs 73;" f +itemNumberDisplay src/Dodge/Item/Display.hs 77;" 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 @@ -4614,9 +4613,9 @@ itemUpdate src/Dodge/Creature/State.hs 419;" f iterateUntil src/MonadHelp.hs 23;" f iterateWhile src/MonadHelp.hs 30;" f itmBaseInfo src/Dodge/Item/Info.hs 23;" f -itmEquipSiteInfo src/Dodge/Item/Info.hs 205;" f +itmEquipSiteInfo src/Dodge/Item/Info.hs 204;" f itmSpaceInfo src/Dodge/Item/Info.hs 18;" f -itmUsageInfo src/Dodge/Item/Info.hs 185;" f +itmUsageInfo src/Dodge/Item/Info.hs 184;" f jShape src/Dodge/Placement/Instance/LightSource.hs 85;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f joinItemsInList src/Dodge/Item/Grammar.hs 176;" f @@ -4629,11 +4628,11 @@ jspsJ src/Dodge/LevelGen/PlacementHelper.hs 45;" f jumpLegs src/Dodge/Item/Equipment.hs 155;" f justify src/Justify.hs 9;" f k src/ShortShow.hs 34;" f -keyCard src/Dodge/Item/Held/Utility.hs 19;" f +keyCard src/Dodge/Item/Held/Utility.hs 21;" f keyCardAnalyserByDoor src/Dodge/Room/LasTurret.hs 68;" f keyCardRoomRunPast src/Dodge/Room/LasTurret.hs 56;" f keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f -keyPic src/Dodge/Item/Draw/SPic.hs 396;" f +keyPic src/Dodge/Item/Draw/SPic.hs 395;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 470;" f lConnect src/Dodge/Render/Connectors.hs 42;" f @@ -4645,7 +4644,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 111;" f lasDronesPic src/Dodge/Item/Weapon/Drone.hs 22;" f -lasGunPic src/Dodge/Item/Draw/SPic.hs 350;" f +lasGunPic src/Dodge/Item/Draw/SPic.hs 349;" f lasRayAt src/Dodge/HeldUse.hs 363;" f lasSensorTurretTest src/Dodge/Room/LasTurret.hs 104;" f lasTunnel src/Dodge/Room/LasTurret.hs 123;" f @@ -4654,10 +4653,10 @@ lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f laser src/Dodge/Item/Held/BatteryGuns.hs 38;" f laserLinkTest src/Dodge/Item/Grammar.hs 119;" f lastMap src/Dodge/DoubleTree.hs 174;" f -latchkey src/Dodge/Item/Held/Utility.hs 22;" f +latchkey src/Dodge/Item/Held/Utility.hs 24;" f launcher src/Dodge/Item/Held/Launcher.hs 12;" f launcherCrit src/Dodge/Creature/LauncherCrit.hs 12;" f -launcherPic src/Dodge/Item/Draw/SPic.hs 330;" f +launcherPic src/Dodge/Item/Draw/SPic.hs 329;" f launcherX src/Dodge/Item/Held/Launcher.hs 29;" f layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 72;" f @@ -4674,7 +4673,7 @@ left src/DoubleStack.hs 16;" f leftIsParentCombine src/Dodge/Item/Grammar.hs 146;" f leftPad src/Padding.hs 14;" f leftRightCombine src/Dodge/Item/Grammar.hs 160;" f -legsSPic src/Dodge/Item/Draw/SPic.hs 414;" f +legsSPic src/Dodge/Item/Draw/SPic.hs 413;" f liShape src/Dodge/Placement/Instance/LightSource.hs 98;" f light src/Color.hs 104;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 43;" f @@ -4835,7 +4834,7 @@ maybeExitCombine src/Dodge/Update/Input/InGame.hs 583;" f maybeOpenTerminal src/Dodge/Update.hs 123;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 111;" f -maybeWarmupStatus src/Dodge/Item/Display.hs 98;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 94;" f mcApplyDamage src/Dodge/Machine/Update.hs 108;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f @@ -4888,8 +4887,8 @@ minOn src/FoldableHelp.hs 35;" f mini1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 334;" f miniGunCrit src/Dodge/Creature.hs 62;" f miniGunX src/Dodge/Item/Held/Cane.hs 81;" f -miniGunXPict src/Dodge/Item/Draw/SPic.hs 305;" f -miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 300;" f +miniGunXPict src/Dodge/Item/Draw/SPic.hs 304;" f +miniGunXPictItem src/Dodge/Item/Draw/SPic.hs 299;" f miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f miniTree2 src/Dodge/Room/Room.hs 106;" f minimumOn src/FoldlHelp.hs 12;" f @@ -5377,6 +5376,7 @@ retreatActionsPistol src/Dodge/Humanoid.hs 248;" f retreatFireLauncher src/Dodge/Humanoid.hs 269;" f retreatPointForFrom src/Dodge/Creature/Impulse/Flee.hs 7;" f reversePair src/Dodge/LevelGen.hs 82;" f +rewinder src/Dodge/Item/Held/Utility.hs 68;" f rewinder src/Dodge/Item/Weapon/Utility.hs 34;" f rezBox src/Dodge/Room/RezBox.hs 23;" f rezBox' src/Dodge/Room/RezBox.hs 31;" f @@ -5594,7 +5594,7 @@ 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 243;" f +shatterGunSPic src/Dodge/Item/Draw/SPic.hs 242;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f shellCollisionCheck src/Dodge/Projectile/Update.hs 52;" f shellCollisionEffect src/Dodge/Projectile/Update.hs 48;" f @@ -5643,7 +5643,7 @@ 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 59;" f -showEquipItem src/Dodge/Item/Display.hs 68;" f +showEquipItem src/Dodge/Item/Display.hs 72;" f showInt src/Dodge/Item/Info.hs 30;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showManObj src/Dodge/TestString.hs 73;" f @@ -5841,7 +5841,7 @@ terminalScreenGlow src/Dodge/Machine/Update.hs 34;" f terminalShape src/Dodge/Machine/Draw.hs 32;" f terminalWheelEvent src/Dodge/Update/Scroll.hs 78;" f teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f -teslaGunPic src/Dodge/Item/Draw/SPic.hs 347;" f +teslaGunPic src/Dodge/Item/Draw/SPic.hs 346;" 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 @@ -5876,7 +5876,9 @@ tilesFromRooms src/Dodge/Layout.hs 205;" f tilesToLine src/Shader/AuxAddition.hs 66;" f timeFlowUpdate src/Dodge/Update.hs 177;" f timeModule src/Dodge/Item/Craftable.hs 32;" f +timeScroller src/Dodge/Item/Held/Utility.hs 81;" f timeScroller src/Dodge/Item/Weapon/Utility.hs 47;" f +timeStopper src/Dodge/Item/Held/Utility.hs 75;" f timeStopper src/Dodge/Item/Weapon/Utility.hs 41;" f timerTLS src/Dodge/LightSource/Update.hs 22;" f tinMag src/Dodge/Item/Ammo.hs 27;" f @@ -5910,15 +5912,15 @@ topInvW src/Dodge/ListDisplayParams.hs 51;" f topPrismEdgeIndices src/Shader/Poke.hs 327;" f topPrismIndices src/Shader/Poke.hs 402;" f topTestPart src/Dodge/TestString.hs 69;" f -torch src/Dodge/Item/Held/Utility.hs 25;" f -torchShape src/Dodge/Item/Draw/SPic.hs 212;" f +torch src/Dodge/Item/Held/Utility.hs 27;" f +torchShape src/Dodge/Item/Draw/SPic.hs 211;" f torqueCr src/Dodge/WorldEffect.hs 63;" 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 332;" f tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f -tractorGunPic src/Dodge/Item/Draw/SPic.hs 374;" f +tractorGunPic src/Dodge/Item/Draw/SPic.hs 373;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tranRot src/Picture/Base.hs 124;" f @@ -6006,6 +6008,7 @@ unitVectorAtAngle src/Geometry/Vector.hs 100;" f unlockInv src/Dodge/Inventory/Lock.hs 12;" f unpause src/Dodge/Menu.hs 192;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 52;" f +unsafeBlinker src/Dodge/Item/Held/Utility.hs 61;" f unsafeBlinker src/Dodge/Item/Weapon/Utility.hs 27;" f unsafeSwapKeys src/IntMapHelp.hs 74;" f unshadowBlock src/Dodge/Block.hs 43;" f @@ -6204,7 +6207,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 30;" f -volleyGunShape src/Dodge/Item/Draw/SPic.hs 288;" f +volleyGunShape src/Dodge/Item/Draw/SPic.hs 287;" f waistSP src/Dodge/Creature/HandPos.hs 173;" f walkNozzle src/Dodge/HeldUse.hs 300;" f walkableNodeNear src/Dodge/Path.hs 48;" f @@ -6283,8 +6286,8 @@ you src/Dodge/Base/You.hs 18;" f youDropItem src/Dodge/Creature/Action.hs 190;" f yourAugmentedItem src/Dodge/Render/HUD.hs 223;" f yourControl src/Dodge/Creature/YourControl.hs 25;" f -yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f -yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f +yourDefaultSpeed src/Dodge/Default/Creature.hs 133;" f +yourDefaultStrideLength src/Dodge/Default/Creature.hs 136;" f yourInfo src/Dodge/Creature/Info.hs 8;" f yourInv src/Dodge/Base/You.hs 45;" f yourRootItem src/Dodge/Base/You.hs 26;" f