Move around ammo source checks
This commit is contained in:
+11
-1
@@ -459,15 +459,25 @@ overNozzle eff it cr w nz =
|
||||
maxa = _nzMaxWalkAngle nz
|
||||
wa = min maxa $ max (negate maxa) (_nzCurrentWalkAngle nz + walkamount)
|
||||
|
||||
getAmmoMagazine :: Item -> Creature -> Maybe ItemUse
|
||||
getAmmoMagazine itm cr = do
|
||||
invid <- itm ^? itLocation . ipInvID
|
||||
amtype <- itm ^? itUse . heldConsumption . ix 0
|
||||
mag <- cr ^? crInv . ix (invid + 1) . itUse
|
||||
magtype <- mag ^? amagType
|
||||
guard $ amtype == magtype
|
||||
return mag
|
||||
|
||||
useGasParams :: Nozzle -> Item -> Creature -> World -> World
|
||||
useGasParams nz it cr =
|
||||
createGas
|
||||
(_amCreateGas (_laAmmoType (_heldConsumption (_itUse it))))
|
||||
(_ampCreateGas (_amagParams amag))
|
||||
(_nzPressure nz)
|
||||
pos
|
||||
dir
|
||||
cr
|
||||
where
|
||||
amag = fromMaybe (error "cannot find gas ammo") $ getAmmoMagazine it cr
|
||||
dir = _crDir cr
|
||||
pos = _crPos cr +.+ (_nzLength nz *.* unitVectorAtAngle (_crDir cr))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user