From 30abc318aeae7565ba596cbf264fd5e2455d3c51 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 4 Dec 2021 11:45:43 +0000 Subject: [PATCH] Input more combinations --- src/Dodge/Combine.hs | 3 +++ src/Dodge/Combine/Data.hs | 3 +++ src/Dodge/Creature.hs | 2 ++ src/Dodge/Item/Weapon/BulletGuns.hs | 26 ++++++++++++++++++++------ src/Dodge/Item/Weapon/TriggerType.hs | 16 ++++++++++++++++ 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/Dodge/Combine.hs b/src/Dodge/Combine.hs index f66d3d3e3..0e8256cd2 100644 --- a/src/Dodge/Combine.hs +++ b/src/Dodge/Combine.hs @@ -22,6 +22,9 @@ itemCombinations = map (first toMultiset) $ , p [VERYLONGPIPE,HARDWARE] bangRod , p [PIPE,PIPE] $ makeTypeCraft LONGPIPE , p [LONGPIPE,PIPE] $ makeTypeCraft VERYLONGPIPE + , p [BANGSTICK 1,CAN] revolver + , p [BANGSTICK 1,TIN] pistol + , p [PISTOL, SPRING, HARDWARE] ltAutoGun ] ++ map (\i -> ([PIPE,BANGSTICK i],bangStick (i+1))) [1..8] where diff --git a/src/Dodge/Combine/Data.hs b/src/Dodge/Combine/Data.hs index 32f254901..3ce8e5ecd 100644 --- a/src/Dodge/Combine/Data.hs +++ b/src/Dodge/Combine/Data.hs @@ -44,6 +44,9 @@ data CombineType | VERYLONGPIPE | HARDWARE | SPRING + | CAN + | TIN + | DRUM | TPipe | NoCombineType | TLongPipe diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index d4110f03e..e7627dc94 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -172,6 +172,8 @@ testInventory :: IM.IntMap Item testInventory = IM.fromList $ zip [0..] [ makeTypeCraftNum 9 PIPE , makeTypeCraft HARDWARE + , makeTypeCraft CAN + , makeTypeCraft TIN ] stackedInventory :: IM.IntMap Item stackedInventory = IM.fromList $ zip [0..] diff --git a/src/Dodge/Item/Weapon/BulletGuns.hs b/src/Dodge/Item/Weapon/BulletGuns.hs index 07eef9cee..9e917dd79 100644 --- a/src/Dodge/Item/Weapon/BulletGuns.hs +++ b/src/Dodge/Item/Weapon/BulletGuns.hs @@ -1,5 +1,6 @@ module Dodge.Item.Weapon.BulletGuns ( pistol + , revolver , bangStick , bangRod , bangCane @@ -91,7 +92,9 @@ autoGunPic it = noPic $ x = fromIntegral $ _ammoLoaded $ _itConsumption it bangStick :: Int -> Item bangStick i = defaultGun - { _itName = "BANGSTICK"++ show i + { _itName = case i of + 1 -> "BANGSTICK" + _ -> "BANGSTICKx"++ show i , _itCombineType = BANGSTICK i , _itConsumption = defaultAmmo { _aoType = basicBullet @@ -100,8 +103,7 @@ bangStick i = defaultGun , _reloadType = ActivePartial 1 } , _itUse = useAmmoParamsRate 8 upHammer - [ ammoCheckI - , hammerCheckI + [ ammoHammerCheck , useTimeCheck , withSoundStart tap3S , useAllAmmo @@ -154,6 +156,18 @@ bangRod = bangCane & itUse . useAim . aimStance .~ TwoHandTwist & itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1.5} +revolver :: Item +revolver = pistol + { _itName = "REVOLVER" + , _itConsumption = defaultAmmo + { _aoType = basicBullet + , _ammoMax = 6 + , _ammoLoaded = 0 + , _reloadTime = 15 + , _reloadType = ActivePartial 1 + } + } + pistol :: Item pistol = defaultGun { _itName = "PISTOL" @@ -161,9 +175,9 @@ pistol = defaultGun , _itConsumption = defaultAmmo { _aoType = basicBullet , _ammoMax = 15 - , _ammoLoaded = 15 - , _reloadTime = 15 - , _reloadType = ActivePartial 1 + , _ammoLoaded = 0 + , _reloadTime = 90 + , _reloadType = ActiveClear } , _itUse = useAmmoParamsRate 8 upHammer [ ammoCheckI diff --git a/src/Dodge/Item/Weapon/TriggerType.hs b/src/Dodge/Item/Weapon/TriggerType.hs index 975eba81c..89eba95f5 100644 --- a/src/Dodge/Item/Weapon/TriggerType.hs +++ b/src/Dodge/Item/Weapon/TriggerType.hs @@ -37,6 +37,7 @@ module Dodge.Item.Weapon.TriggerType , ammoCheckI , applyInaccuracy , modClock + , ammoHammerCheck ) where import Dodge.Data @@ -102,6 +103,21 @@ ammoCheckI eff item cr w -- | _reloadState (_itConsumption item) /= Nothing' = w | otherwise = eff item cr $ w & creatures . ix (_crID cr) %~ crStopReloading +-- combined ammo and hammer check: want to be able to auto-reload even if the +-- hammer is down? +ammoHammerCheck :: ChainEffect +ammoHammerCheck eff it cr w + | _ammoLoaded (_itConsumption it) <= 0 = fromMaybe w (startReloadingWeapon cr w) + & setHammerDown + | otherwise = case it ^? itUse . useHammer . hammerPosition of + Just HammerUp -> eff it cr $ setHammerDown w & creatures . ix (_crID cr) %~ crStopReloading + _ -> setHammerDown w + where + cid = _crID cr + setHammerDown = creatures . ix cid . crInv . ix (_crInvSel cr) . itUse + . useHammer . hammerPosition .~ HammerDown + + itUseAmmo :: Int -> Item -> Item itUseAmmo x = itConsumption . ammoLoaded %~ (max 0 . subtract x)