diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index 4c0396802..2dbe3ad52 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -33,7 +33,7 @@ data ItemUse = UseHeld { _heldDelay :: UseDelay , _heldMuzzles :: [Muzzle] - , _heldParams :: HeldParams +-- , _heldParams :: HeldParams , _heldFrame :: Int , _heldUseEffect :: HeldUseEffect } @@ -73,12 +73,12 @@ data AttachParams | APNothing deriving (Eq, Show, Read) -data HeldParams - = DefaultHeldParams - | GasSprayParams { _weaponInvLock :: Int } - | BeamShooterParams - | BulletShooterParams { _weaponInvLock :: Int } - deriving (Eq, Show, Read) --Generic, Flat) +--data HeldParams +-- = DefaultHeldParams +-- | GasSprayParams { _weaponInvLock :: Int } +-- | BeamShooterParams +-- | BulletShooterParams { _weaponInvLock :: Int } +-- deriving (Eq, Show, Read) --Generic, Flat) data AmmoParams = BulletParams {_ampBullet :: Bullet} @@ -149,7 +149,7 @@ makeLenses ''ItemUse --makeLenses ''AimParams makeLenses ''Muzzle -makeLenses ''HeldParams +--makeLenses ''HeldParams makeLenses ''AttachParams makeLenses ''AmmoParams makeLenses ''MuzzleEffect @@ -163,7 +163,7 @@ deriveJSON defaultOptions ''UseCondition deriveJSON defaultOptions ''MuzzleEffect deriveJSON defaultOptions ''FlareType deriveJSON defaultOptions ''AmmoParams -deriveJSON defaultOptions ''HeldParams +--deriveJSON defaultOptions ''HeldParams deriveJSON defaultOptions ''AmmoPerShot deriveJSON defaultOptions ''Muzzle deriveJSON defaultOptions ''AttachParams diff --git a/src/Dodge/Default/Item/Use.hs b/src/Dodge/Default/Item/Use.hs index cc1f56f49..6c0496a6e 100644 --- a/src/Dodge/Default/Item/Use.hs +++ b/src/Dodge/Default/Item/Use.hs @@ -27,9 +27,9 @@ defaultHeldUse :: ItemUse defaultHeldUse = UseHeld { _heldDelay = FixedRate{_rateMax = 8, _rateTimeLastUsed = 0} , _heldMuzzles = defaultMuzzles - , _heldParams = BulletShooterParams - { _weaponInvLock = 0 - } +-- , _heldParams = BulletShooterParams +-- { _weaponInvLock = 0 +-- } , _heldFrame = 0 , _heldUseEffect = NoHeldUseEffect } diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index c84a85f86..ea2e903f0 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -231,15 +231,27 @@ itemSidePush = \case BLINKERUNSAFE -> 0 applyInvLock :: Item -> Creature -> World -> World -applyInvLock itm cr = case itm ^? itUse . heldParams . weaponInvLock of - Just i - | i > 0 -> +applyInvLock itm cr + | i <- itemInvLock itm + , i > 0 = (cWorld . lWorld . delayedEvents .:~ (i, UnlockInv cid)) . lockInv cid - _ -> id + | otherwise = id where cid = _crID cr +itemInvLock :: Item -> Int +itemInvLock itm = case itm ^. itType of + HELD hit -> heldItemInvLock hit + _ -> 0 + +heldItemInvLock :: HeldItemType -> Int +heldItemInvLock = \case + FLAMESPITTER -> 10 + VOLLEYGUN i -> i + 1 + BURSTRIFLE -> 7 + _ -> 0 + applySoundCME :: Item -> Creature -> World -> World applySoundCME itm cr = fromMaybe id $ do (soundid, x) <- bgunSound itm diff --git a/src/Dodge/Item/Held/BatteryGuns.hs b/src/Dodge/Item/Held/BatteryGuns.hs index 218f1a118..5639c9159 100644 --- a/src/Dodge/Item/Held/BatteryGuns.hs +++ b/src/Dodge/Item/Held/BatteryGuns.hs @@ -19,7 +19,7 @@ sparkGun = teslaGun :: Item teslaGun = defaultHeldItem - & itUse . heldParams .~ BeamShooterParams-- (Just (elecCrackleS, 2)) +-- & itUse . heldParams .~ BeamShooterParams-- (Just (elecCrackleS, 2)) & itParams .~ teslaParams & itUse . heldDelay .~ NoDelay & itUse . heldMuzzles . ix 0 . mzPos .~ V2 10 0 @@ -41,7 +41,7 @@ teslaParams = laser :: Item laser = defaultHeldItem - & itUse . heldParams .~ BeamShooterParams-- Nothing +-- & itUse . heldParams .~ BeamShooterParams-- Nothing & itAmmoSlots .~ singleAmmo ElectricalAmmo & itUse . heldDelay .~ NoDelay & itUse . heldMuzzles . ix 0 . mzPos .~ V2 6 0 @@ -60,7 +60,7 @@ laser = tractorGun :: Item tractorGun = defaultHeldItem - & itUse . heldParams .~ BeamShooterParams +-- & itUse . heldParams .~ BeamShooterParams & itAmmoSlots .~ singleAmmo ElectricalAmmo & itUse . heldMuzzles . ix 0 . mzPos .~ V2 30 0 & itUse . heldMuzzles . ix 0 . mzInaccuracy .~ 0 diff --git a/src/Dodge/Item/Held/Cane.hs b/src/Dodge/Item/Held/Cane.hs index 5f35dcd5b..bd1754fe0 100644 --- a/src/Dodge/Item/Held/Cane.hs +++ b/src/Dodge/Item/Held/Cane.hs @@ -37,7 +37,6 @@ volleyGun i = <*> pure (UseExactly 1) <*> ZipList [0..i-1] ) - & itUse . heldParams . weaponInvLock .~ i + 1 -- & itUse . heldParams . recoil .~ 30 & itType .~ HELD (VOLLEYGUN i) & itAmmoSlots .~ IM.fromList (zip [0..i-1] $ repeat BulletAmmo) @@ -74,7 +73,6 @@ burstRifle = & itType .~ HELD BURSTRIFLE & itUse . heldMuzzles . ix 0 . mzInaccuracy .~ 0.05 & itUse . heldDelay . rateMax .~ 6 - & itUse . heldParams . weaponInvLock .~ 7 & itUse . heldMuzzles %~ doreplicate where doreplicate (x:_) = [x,x & mzFrame .~ 3,x & mzFrame .~ 6] diff --git a/src/Dodge/Item/Held/SprayGuns.hs b/src/Dodge/Item/Held/SprayGuns.hs index 2c8fe9799..86ff3e74d 100644 --- a/src/Dodge/Item/Held/SprayGuns.hs +++ b/src/Dodge/Item/Held/SprayGuns.hs @@ -25,7 +25,7 @@ flameSpitter = flameThrower & itType .~ HELD FLAMESPITTER & itUse . heldDelay .~ FixedRate{_rateMax = 3, _rateTimeLastUsed = 0} - & itUse . heldParams . weaponInvLock .~ 10 +-- & itUse . heldParams . weaponInvLock .~ 10 -- & itUse . heldParams . weaponRepeat .~ [1..9] & itUse . heldMuzzles . ix 0 . mzEffect . nzPressure .~ UniRandFloat 3 4 @@ -79,7 +79,7 @@ flameThrower = ] & itAmmoSlots .~ singleAmmo GasAmmo & itType .~ HELD FLAMETHROWER - & itUse . heldParams .~ GasSprayParams - { _weaponInvLock = 0 --- , _weaponRepeat = mempty - } +-- & itUse . heldParams .~ GasSprayParams +-- { _weaponInvLock = 0 +---- , _weaponRepeat = mempty +-- } diff --git a/src/Dodge/Item/Held/Utility.hs b/src/Dodge/Item/Held/Utility.hs index bcab394b3..960a32c0f 100644 --- a/src/Dodge/Item/Held/Utility.hs +++ b/src/Dodge/Item/Held/Utility.hs @@ -41,7 +41,7 @@ detector dt = & itUse . heldDelay . rateMax .~ 20 -- & itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1} & itAmmoSlots .~ singleAmmo ElectricalAmmo - & itUse . heldParams .~ DefaultHeldParams +-- & itUse . heldParams .~ DefaultHeldParams & itType .~ DETECTOR dt & itUse . heldMuzzles . ix 0 . mzEffect .~ MuzzleDetector & itUse . heldMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 100 @@ -53,7 +53,7 @@ blinker = & itUse . heldDelay . rateMax .~ 20 -- & itUse . heldAim . aimZoom .~ defaultItZoom{_izFac = 1} & itAmmoSlots .~ singleAmmo ElectricalAmmo - & itUse . heldParams .~ DefaultHeldParams +-- & itUse . heldParams .~ DefaultHeldParams & itUse . heldMuzzles . ix 0 . mzEffect .~ MuzzleBlink & itUse . heldMuzzles . ix 0 . mzAmmoPerShot .~ UseExactly 10000000 & itType .~ HELD BLINKER