Work towards duct taping torch

This commit is contained in:
2022-07-14 10:50:12 +01:00
parent bfe9073808
commit 2cfa3ca3a7
8 changed files with 40 additions and 11 deletions
+8
View File
@@ -130,6 +130,14 @@ moduleCombinations =
,amod [cr MOTOR,cr HARDWARE] BELTMAG
]
)
, ( ModHeldAttach
, [rifle
,autoRifle
,burstRifle
]
, [amod [cr DUCTTAPE,HELD TORCH] ATTACHTORCH
]
)
, ( ModAutoMag
, [autoRifle
,autoPistol
+3 -1
View File
@@ -22,6 +22,7 @@ data CraftType
| TUBE
| HARDWARE
| SPRING
| DUCTTAPE
| CAN
| TIN
| DRUM
@@ -197,6 +198,7 @@ data ItemModuleType
| WEPTELE
| LAUNCHHOME
| EXTRABATTERY
| ATTACHTORCH
deriving (Eq,Ord,Show)
data Detector
@@ -215,7 +217,7 @@ data ModuleSlot
| ModBattery
| ModTeleport
| ModDualBeam
| ModAlongsideWeapon
| ModHeldAttach
deriving (Eq,Ord,Show)
makeLenses ''ItemType
+1
View File
@@ -38,6 +38,7 @@ moduleModification imt = case imt of
WEPTELE -> makeDirectedTele
LAUNCHHOME -> itConsumption . laAmmoType . amPjCreation .~ fireTrackingShell
EXTRABATTERY -> itConsumption . laMax +~ 1000
ATTACHTORCH -> itUse . heldAttachment .~ Torch
where
f ameff = itConsumption . laAmmoType . amBulEff .~ ameff
makeDirectedTele it = it
+16 -3
View File
@@ -11,7 +11,7 @@ import Dodge.Prop.Gib
import Dodge.Base
import Dodge.Creature.State.WalkCycle
import Dodge.Creature.Impulse.Movement
--import Dodge.Creature.Test
import Dodge.LightSource.Torch
--import Dodge.Base
import Dodge.SoundLogic
import RandomHelp
@@ -24,12 +24,12 @@ import Picture
import Shape
import ShapePicture
import qualified IntMapHelp as IM
import LensHelp
--import StrictHelp
--import FoldableHelp
import Data.Function
import Control.Lens
--import qualified Data.IntSet as IS
--import Data.Maybe
--import Control.Applicative
@@ -212,7 +212,20 @@ equipmentEffects cr = flip (foldr $ useEquipment cr) (IM.keys $ _crInvEquipped c
invSideEff :: Creature -> World -> World
invSideEff cr w = weaponReloadSounds cr $ IM.foldrWithKey f w (_crInv cr)
where
f i it w' = doItemTargeting i cr w' & maybe id (\g -> g it cr) (it ^? itEffect . ieInv)
f i it w' = itemInvSideEffect cr it
$ doItemTargeting i cr w' & maybe id (\g -> g it cr) (it ^? itEffect . ieInv)
itemInvSideEffect :: Creature -> Item -> World -> World
itemInvSideEffect cr it
| hastorchattach = createAttachLight cr it
| otherwise = id
where
hastorchattach = it ^? itType . iyModules . ix ModHeldAttach == Just ATTACHTORCH && _itIsHeld it
createAttachLight :: Creature -> Item -> World -> World
createAttachLight cr it = createTorchLightOffset cr it attachoff
where
attachoff = it ^?! itUse . heldAttachPos
itemUpdate :: Creature -> Int -> Item -> Item
itemUpdate cr i
+5 -3
View File
@@ -11,7 +11,7 @@ import Geometry
import Data.Maybe
itemSPic :: Item -> SPic
itemSPic it = modulesSPic it <> case it ^. itType . iyBase of
itemSPic it = foldMap (modulesSPic it) (_iyModules $ _itType it) $ case it ^. itType . iyBase of
HELD ht -> heldItemSPic ht it
LEFT lt -> leftItemSPic lt it
EQUIP et -> equipItemSPic et it
@@ -116,8 +116,10 @@ torchShape = colorSH blue
back = upperPrismPoly 3 $ rectXH 1 2
modulesSPic :: Item -> SPic
modulesSPic _ = mempty
modulesSPic :: Item -> ItemModuleType -> SPic -> SPic
modulesSPic it imt = case imt of
ATTACHTORCH -> (<> noPic (overPosSH (+.+.+ _heldAttachPos (_itUse it)) torchShape))
_ -> id
baseStickShapeX :: Item -> Int -> Shape
baseStickShapeX it i = foldMap f [0..i-1]
+5 -4
View File
@@ -17,6 +17,7 @@ module Dodge.Item.Equipment
, flameShield
) where
import Dodge.Data
import Dodge.LightSource.Torch
import Dodge.Item.Draw
import Dodge.Item.Equipment.Booster
import Dodge.LightSource
@@ -114,11 +115,11 @@ torch = defaultWeapon
& itUse . useAim . aimMuzPos .~ 10
createHeldLight :: Creature -> Int -> World -> World
createHeldLight cr i w = w
& tempLightSources .:~ tlsTimeRadColPos 1 250 0.7
(p +.+.+ rotate3 (_crDir cr) (heldItemOffset itm cr (V3 8 0 1.5)))
createHeldLight cr i = createTorchLightOffset cr itm 0
-- tempLightSources .:~ tlsTimeRadColPos 1 250 0.7
-- (p +.+.+ rotate3 (_crDir cr) (heldItemOffset itm cr (V3 8 0 1.5)))
where
p = addZ 0 $ _crPos cr
-- p = addZ 0 $ _crPos cr
itm = cr ^?! crInv . ix i
flatShield :: Item
+1
View File
@@ -124,6 +124,7 @@ rifle = defaultBangCane
& itUse . useAim . aimRange .~ 1
-- & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5}
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 2}
& itType . iyModules . at ModHeldAttach ?~ EMPTYMODULE
repeater :: Item
repeater = rifle
& itType . iyModules . at ModRifleMag ?~ EMPTYMODULE
+1
View File
@@ -45,6 +45,7 @@ moduleName imt = case imt of
WEPTELE -> Just "+DIRECTEDTELE"
LAUNCHHOME -> Just "+TARGET HOMING"
EXTRABATTERY -> Just "+BATTERY"
ATTACHTORCH -> Just "+TORCH"
--moduleFold :: (m -> m -> m) -> (ItemModule -> Maybe m) -> m -> Item -> m
--moduleFold g f e = foldr (g . fromMaybe e . f) e