Cleanup
This commit is contained in:
@@ -93,11 +93,11 @@ bangCaneX i = bangCane
|
|||||||
, useTimeCheck
|
, useTimeCheck
|
||||||
, withSoundItemChoiceStart caneStickSoundChoice
|
, withSoundItemChoiceStart caneStickSoundChoice
|
||||||
, useAllAmmo
|
, useAllAmmo
|
||||||
, torqueAfterI 0.5
|
, withTorqueAfter
|
||||||
, duplicateLoadedBarrels
|
, duplicateLoadedBarrels
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, withRecoilI 50
|
, withRecoil
|
||||||
]
|
]
|
||||||
, _itDimension = ItemDimension
|
, _itDimension = ItemDimension
|
||||||
{ _dimRad = 8
|
{ _dimRad = 8
|
||||||
@@ -122,6 +122,7 @@ bangCaneX i = bangCane
|
|||||||
,_brlNum = i
|
,_brlNum = i
|
||||||
,_brlInaccuracy = 0.1
|
,_brlInaccuracy = 0.1
|
||||||
}
|
}
|
||||||
|
& itParams . torqueAfter .~ 0.48 + 0.2 * fromIntegral i
|
||||||
caneStickSoundChoice :: Item -> SoundID
|
caneStickSoundChoice :: Item -> SoundID
|
||||||
caneStickSoundChoice it
|
caneStickSoundChoice it
|
||||||
| _ammoLoaded (_itConsumption it) < 2 = tap3S
|
| _ammoLoaded (_itConsumption it) < 2 = tap3S
|
||||||
@@ -194,7 +195,7 @@ burstRifle = repeater
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, withRecoilI 50
|
, withRecoil
|
||||||
]
|
]
|
||||||
fastBurstRifle :: Item
|
fastBurstRifle :: Item
|
||||||
fastBurstRifle = repeater
|
fastBurstRifle = repeater
|
||||||
@@ -212,7 +213,7 @@ fastBurstRifle = repeater
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, withRecoilI 50
|
, withRecoil
|
||||||
]
|
]
|
||||||
completeBurstRifle :: Item
|
completeBurstRifle :: Item
|
||||||
completeBurstRifle = repeater
|
completeBurstRifle = repeater
|
||||||
@@ -231,7 +232,7 @@ completeBurstRifle = repeater
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, withRecoilI 50
|
, withRecoil
|
||||||
]
|
]
|
||||||
miniGunUse :: Int -> ItemUse
|
miniGunUse :: Int -> ItemUse
|
||||||
miniGunUse i = ruseInstant (useAmmoParams $ Just 1) NoHammer $
|
miniGunUse i = ruseInstant (useAmmoParams $ Just 1) NoHammer $
|
||||||
|
|||||||
@@ -98,12 +98,14 @@ elephantGun = bangRod
|
|||||||
, useTimeCheck
|
, useTimeCheck
|
||||||
, withSoundStart bangEchoS
|
, withSoundStart bangEchoS
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, torqueAfterI 0.1
|
, withTorqueAfter
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, withThickSmokeI
|
, withThickSmokeI
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, withRecoilI 50
|
, withRecoil
|
||||||
]
|
]
|
||||||
|
& itParams . recoil .~ 50
|
||||||
|
& itParams . torqueAfter .~ 0.1
|
||||||
amr :: Item
|
amr :: Item
|
||||||
amr = elephantGun
|
amr = elephantGun
|
||||||
& itName .~ "ANTIMATERIELRIFLE"
|
& itName .~ "ANTIMATERIELRIFLE"
|
||||||
|
|||||||
@@ -142,8 +142,8 @@ pistolAfterHamMods =
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withSoundStart tap3S
|
, withSoundStart tap3S
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, torqueAfterI 0.2
|
, withTorqueAfter
|
||||||
, withRecoilI 10
|
, withRecoil
|
||||||
, withSidePushI 50
|
, withSidePushI 50
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
]
|
]
|
||||||
@@ -153,9 +153,9 @@ machinePistolAfterHamMods =
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withSoundStart tap1S
|
, withSoundStart tap1S
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, torqueAfterI 0.2
|
, withTorqueAfter
|
||||||
, withSidePushI 50
|
, withSidePushI 50
|
||||||
, withRecoilI 20
|
, withRecoil
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
]
|
]
|
||||||
smgAfterHamMods :: [ChainEffect]
|
smgAfterHamMods :: [ChainEffect]
|
||||||
@@ -164,8 +164,8 @@ smgAfterHamMods =
|
|||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withSoundStart tap3S
|
, withSoundStart tap3S
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, torqueAfterI 0.05
|
, withTorqueAfter
|
||||||
, withRecoilI 10
|
, withRecoil
|
||||||
, withSidePushI 30
|
, withSidePushI 30
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
]
|
]
|
||||||
@@ -194,6 +194,8 @@ pistol = (bangStick 1)
|
|||||||
. ( rifling .~ 0.8 )
|
. ( rifling .~ 0.8 )
|
||||||
. ( bore .~ 2 )
|
. ( bore .~ 2 )
|
||||||
. ( gunBarrels .~ SingleBarrel 0.05 )
|
. ( gunBarrels .~ SingleBarrel 0.05 )
|
||||||
|
. ( recoil .~ 10 )
|
||||||
|
. ( torqueAfter .~ 0.2 )
|
||||||
)
|
)
|
||||||
autoPistol :: Item
|
autoPistol :: Item
|
||||||
autoPistol = pistol
|
autoPistol = pistol
|
||||||
@@ -208,6 +210,7 @@ machinePistol = autoPistol
|
|||||||
& itName .~ "MACHINEPISTOL"
|
& itName .~ "MACHINEPISTOL"
|
||||||
& itType .~ MACHINEPISTOL
|
& itType .~ MACHINEPISTOL
|
||||||
& itModules . at ModAutoMag .~ Nothing
|
& itModules . at ModAutoMag .~ Nothing
|
||||||
|
& itParams . recoil .~ 20
|
||||||
smg :: Item
|
smg :: Item
|
||||||
smg = autoPistol -- & some parameter affecting stability
|
smg = autoPistol -- & some parameter affecting stability
|
||||||
& itUse . useMods .~ (ammoCheckI : smgAfterHamMods)
|
& itUse . useMods .~ (ammoCheckI : smgAfterHamMods)
|
||||||
@@ -215,6 +218,7 @@ smg = autoPistol -- & some parameter affecting stability
|
|||||||
& itType .~ SMG
|
& itType .~ SMG
|
||||||
& itUse . useAim . aimStance .~ TwoHandTwist
|
& itUse . useAim . aimStance .~ TwoHandTwist
|
||||||
& itDimension . dimPortage . handlePos .~ 2
|
& itDimension . dimPortage . handlePos .~ 2
|
||||||
|
& itParams . torqueAfter .~ 0.05
|
||||||
& itDimension . dimSPic .~ \it -> noPic (baseSMGShape
|
& itDimension . dimSPic .~ \it -> noPic (baseSMGShape
|
||||||
<> makeTinClipAt 0 (V3 7 (-2) 0) it)
|
<> makeTinClipAt 0 (V3 7 (-2) 0) it)
|
||||||
revolverX :: Int -> Item
|
revolverX :: Int -> Item
|
||||||
@@ -233,7 +237,7 @@ revolverX i = revolver
|
|||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
-- , spreadLoaded
|
-- , spreadLoaded
|
||||||
, torqueAfterI 0.2
|
, withTorqueAfter
|
||||||
, withRecoilI 10
|
, withRecoil
|
||||||
]
|
]
|
||||||
} & itConsumption . ammoBaseMax .~ i * 6
|
} & itConsumption . ammoBaseMax .~ i * 6
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ module Dodge.Item.Weapon.BulletGuns
|
|||||||
, bigBlunderbuss
|
, bigBlunderbuss
|
||||||
, biggerBlunderbuss
|
, biggerBlunderbuss
|
||||||
, biggestBlunderbuss
|
, biggestBlunderbuss
|
||||||
, grapeShotCannon
|
|
||||||
, grenadeLauncher
|
, grenadeLauncher
|
||||||
, spreadGun
|
, spreadGun
|
||||||
, ltAutoGun
|
, ltAutoGun
|
||||||
@@ -215,31 +214,6 @@ biggestBlunderbuss = biggerBlunderbuss
|
|||||||
& itParams . torqueAfter .~ 0.7
|
& itParams . torqueAfter .~ 0.7
|
||||||
& itParams . randomOffset .~ 24
|
& itParams . randomOffset .~ 24
|
||||||
|
|
||||||
grapeShotCannon :: Item
|
|
||||||
grapeShotCannon = blunderbuss
|
|
||||||
{_itName = "GRAPESHOTCANNON"
|
|
||||||
,_itType = GRAPESHOTCANNON
|
|
||||||
,_itUse = ruseAmmoParamsRate 20 upHammer
|
|
||||||
[ ammoCheckI
|
|
||||||
, hammerCheckI
|
|
||||||
, useTimeCheck
|
|
||||||
, withSoundStart bangEchoS
|
|
||||||
, useAllAmmo
|
|
||||||
, torqueAfterI 0.1
|
|
||||||
, withRecoilI 150
|
|
||||||
, duplicateLoaded
|
|
||||||
, withMuzFlareI
|
|
||||||
, applyInaccuracy
|
|
||||||
, withRandomOffsetI 12
|
|
||||||
, withRandomItemUpdate coneRandItemUpdate
|
|
||||||
, withRandomItemParams coneRandItemParams
|
|
||||||
]
|
|
||||||
& useAim . aimStance .~ TwoHandTwist
|
|
||||||
& useAim . aimSpeed .~ 0.4
|
|
||||||
}
|
|
||||||
& itConsumption . ammoBaseMax .~ 15
|
|
||||||
& itConsumption . reloadTime .~ 30
|
|
||||||
|
|
||||||
grenadeLauncher :: Int -> Item
|
grenadeLauncher :: Int -> Item
|
||||||
grenadeLauncher _ = bangCone
|
grenadeLauncher _ = bangCone
|
||||||
|
|
||||||
@@ -255,7 +229,7 @@ hvAutoGun = defaultAutoGun
|
|||||||
}
|
}
|
||||||
, _itUse = ruseAmmoParamsRate 25 NoHammer
|
, _itUse = ruseAmmoParamsRate 25 NoHammer
|
||||||
[ ammoCheckI
|
[ ammoCheckI
|
||||||
, rateIncAB (torqueBeforeAtLeast 0.1 0.1) (torqueAfterI 0.2)
|
, rateIncAB (torqueBeforeAtLeast 0.1 0.1) withTorqueAfter
|
||||||
, withSoundStart bangEchoS
|
, withSoundStart bangEchoS
|
||||||
, withThinSmokeI
|
, withThinSmokeI
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
@@ -272,6 +246,7 @@ hvAutoGun = defaultAutoGun
|
|||||||
,"* " ++ fromMaybe " " (maybeRateStatus it) ++ " *"
|
,"* " ++ fromMaybe " " (maybeRateStatus it) ++ " *"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
& itParams. torqueAfter .~ 0.2
|
||||||
ltAutoGun :: Item
|
ltAutoGun :: Item
|
||||||
ltAutoGun = defaultAutoGun
|
ltAutoGun = defaultAutoGun
|
||||||
{ _itName = "AUTO-LT"
|
{ _itName = "AUTO-LT"
|
||||||
@@ -288,7 +263,7 @@ ltAutoGun = defaultAutoGun
|
|||||||
, withSoundStart tap1S
|
, withSoundStart tap1S
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, torqueAfterI 0.2
|
, withTorqueAfter
|
||||||
, withSidePushI 50
|
, withSidePushI 50
|
||||||
, modClock 2 withMuzFlareI
|
, modClock 2 withMuzFlareI
|
||||||
]
|
]
|
||||||
@@ -317,7 +292,7 @@ spreadGun = defaultGun
|
|||||||
, useTimeCheck
|
, useTimeCheck
|
||||||
, withSoundStart shotgunS
|
, withSoundStart shotgunS
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withRecoilI 100
|
, withRecoil
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, spreadNumI
|
, spreadNumI
|
||||||
]
|
]
|
||||||
@@ -351,7 +326,7 @@ multGun = defaultGun
|
|||||||
, useTimeCheck
|
, useTimeCheck
|
||||||
, withSoundStart shotgunS
|
, withSoundStart shotgunS
|
||||||
, useAllAmmo
|
, useAllAmmo
|
||||||
, withRecoilI 200
|
, withRecoil
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
, duplicateLoadedBarrels
|
, duplicateLoadedBarrels
|
||||||
]
|
]
|
||||||
@@ -390,7 +365,7 @@ longGun = defaultGun
|
|||||||
, withSoundStart bangEchoS
|
, withSoundStart bangEchoS
|
||||||
, useAmmoAmount 1
|
, useAmmoAmount 1
|
||||||
, withThickSmokeI
|
, withThickSmokeI
|
||||||
, torqueAfterI 0.05
|
, withTorqueAfter
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
]
|
]
|
||||||
& useAim . aimSpeed .~ 0.2
|
& useAim . aimSpeed .~ 0.2
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ module Dodge.Item.Weapon.TriggerType
|
|||||||
, rateIncAB
|
, rateIncAB
|
||||||
, torqueBefore
|
, torqueBefore
|
||||||
, torqueBeforeAtLeast
|
, torqueBeforeAtLeast
|
||||||
, torqueAfterI
|
-- , torqueAfterI
|
||||||
, withTorqueAfter
|
, withTorqueAfter
|
||||||
, torqueSideEffect
|
, torqueSideEffect
|
||||||
, withRandomItemParams
|
, withRandomItemParams
|
||||||
@@ -29,10 +29,8 @@ module Dodge.Item.Weapon.TriggerType
|
|||||||
, withPositionOffset
|
, withPositionOffset
|
||||||
, withPositionWallCheck
|
, withPositionWallCheck
|
||||||
, withPosDirWallCheck
|
, withPosDirWallCheck
|
||||||
, withRandomOffsetI
|
|
||||||
, withRandomOffset
|
, withRandomOffset
|
||||||
, withRandomDirI
|
, withRandomDirI
|
||||||
, withRecoilI
|
|
||||||
, withRecoil
|
, withRecoil
|
||||||
, afterRecoil
|
, afterRecoil
|
||||||
, withSidePushAfterI
|
, withSidePushAfterI
|
||||||
@@ -42,10 +40,8 @@ module Dodge.Item.Weapon.TriggerType
|
|||||||
, spreadLoaded
|
, spreadLoaded
|
||||||
, repeatOnFrames
|
, repeatOnFrames
|
||||||
, sideEffectOnFrame
|
, sideEffectOnFrame
|
||||||
-- , numBarrels
|
|
||||||
, duplicateLoadedBarrels
|
, duplicateLoadedBarrels
|
||||||
, duplicateLoaded
|
, duplicateLoaded
|
||||||
, randWalkAngle -- ^ should be made into a modifier, perhaps
|
|
||||||
, hammerCheckI
|
, hammerCheckI
|
||||||
, hammerCheckL
|
, hammerCheckL
|
||||||
, shootL
|
, shootL
|
||||||
@@ -54,8 +50,7 @@ module Dodge.Item.Weapon.TriggerType
|
|||||||
, applyInaccuracy
|
, applyInaccuracy
|
||||||
, modClock
|
, modClock
|
||||||
, ammoHammerCheck
|
, ammoHammerCheck
|
||||||
)
|
) where
|
||||||
where
|
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Base.Collide
|
import Dodge.Base.Collide
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
@@ -238,13 +233,6 @@ afterRecoil recoilAmount eff item cr = eff item (pushback cr) . over (creatures
|
|||||||
where
|
where
|
||||||
cid = _crID cr
|
cid = _crID cr
|
||||||
pushback = over crPos (+.+ rotateV (_crDir cr) (V2 ((-recoilAmount) / _crMass cr ) 0))
|
pushback = over crPos (+.+ rotateV (_crDir cr) (V2 ((-recoilAmount) / _crMass cr ) 0))
|
||||||
withRecoilI
|
|
||||||
:: Float -- ^ Recoil amount
|
|
||||||
-> ChainEffect
|
|
||||||
withRecoilI recoilAmount eff item cr = eff item cr . over (creatures . ix cid) pushback
|
|
||||||
where
|
|
||||||
cid = _crID cr
|
|
||||||
pushback = over crPos (+.+ rotateV (_crDir cr) (V2 ((-recoilAmount) / _crMass cr ) 0))
|
|
||||||
withRecoil :: ChainEffect
|
withRecoil :: ChainEffect
|
||||||
withRecoil eff it cr = eff it cr . over (creatures . ix cid) pushback
|
withRecoil eff it cr = eff it cr . over (creatures . ix cid) pushback
|
||||||
where
|
where
|
||||||
@@ -434,14 +422,6 @@ withPosDirWallCheck h f it cr w
|
|||||||
(p,a) = h it cr w
|
(p,a) = h it cr w
|
||||||
|
|
||||||
{- | Apply the effect to a translated creature. -}
|
{- | Apply the effect to a translated creature. -}
|
||||||
withRandomOffsetI
|
|
||||||
:: Float -- ^ Max possible translate
|
|
||||||
-> ChainEffect
|
|
||||||
withRandomOffsetI offsetAmount f item cr w = f item (cr & crPos %~ (+.+ offV)) $ set randGen g w
|
|
||||||
where
|
|
||||||
(offsetVal , g) = randomR (-offsetAmount,offsetAmount) $ _randGen w
|
|
||||||
offV = rotateV (_crDir cr) (V2 0 offsetVal)
|
|
||||||
{- | Apply the effect to a translated creature. -}
|
|
||||||
withRandomOffset :: ChainEffect
|
withRandomOffset :: ChainEffect
|
||||||
withRandomOffset f item cr w = f item (cr & crPos %~ (+.+ offV)) $ set randGen g w
|
withRandomOffset f item cr w = f item (cr & crPos %~ (+.+ offV)) $ set randGen g w
|
||||||
where
|
where
|
||||||
@@ -479,19 +459,6 @@ torqueBeforeAtLeast minTorque exTorque feff item cr w
|
|||||||
rot' | rot < 0 = rot - minTorque
|
rot' | rot < 0 = rot - minTorque
|
||||||
| otherwise = rot + minTorque
|
| otherwise = rot + minTorque
|
||||||
-- | Rotate a randomly creature after applying an effect.
|
-- | Rotate a randomly creature after applying an effect.
|
||||||
torqueAfterI :: Float -- ^ Max possible rotation
|
|
||||||
-> ChainEffect
|
|
||||||
torqueAfterI torque feff item cr w
|
|
||||||
-- | cid == 0 = rotateScope $ set randGen g $ over cameraRot (+rot) $ feff item cr w
|
|
||||||
| cid == 0 = set randGen g $ over cameraRot (+rot) $ feff item cr w
|
|
||||||
| otherwise = set randGen g $ over (creatures . ix cid . crDir) (+rot) $ feff item cr w
|
|
||||||
where
|
|
||||||
cid = _crID cr
|
|
||||||
(rot, g) = randomR (-torque,torque) $ _randGen w
|
|
||||||
-- rotateScope = creatures . ix 0 . crInv . ix (_crInvSel (_creatures w IM.! 0))
|
|
||||||
-- . itAttachment . scopePos %~ rotateV rot
|
|
||||||
--
|
|
||||||
-- | Rotate a randomly creature after applying an effect.
|
|
||||||
withTorqueAfter :: ChainEffect
|
withTorqueAfter :: ChainEffect
|
||||||
withTorqueAfter feff item cr w
|
withTorqueAfter feff item cr w
|
||||||
-- | cid == 0 = rotateScope $ set randGen g $ over cameraRot (+rot) $ feff item cr w
|
-- | cid == 0 = rotateScope $ set randGen g $ over cameraRot (+rot) $ feff item cr w
|
||||||
@@ -563,30 +530,3 @@ duplicateLoadedBarrels eff item cr w = foldr f w poss
|
|||||||
f pos = eff item (cr & crPos %~ (+.+ pos))
|
f pos = eff item (cr & crPos %~ (+.+ pos))
|
||||||
numBar = _brlNum . _gunBarrels $ _itParams item
|
numBar = _brlNum . _gunBarrels $ _itParams item
|
||||||
numBul = _ammoLoaded $ _itConsumption item
|
numBul = _ammoLoaded $ _itConsumption item
|
||||||
--numBarrels :: ChainEffect
|
|
||||||
--numBarrels eff item cr w = foldr f w poss
|
|
||||||
-- where
|
|
||||||
-- cp :: Float
|
|
||||||
-- cp = -0.5 * fromIntegral numBul
|
|
||||||
-- poss :: [V2 Float]
|
|
||||||
-- poss = map (rotateV (_crDir cr) . V2 0 . (*5) . (+ cp) . fromIntegral) [0 .. numBul - 1]
|
|
||||||
-- f pos = eff item (cr & crPos %~ (+.+ pos))
|
|
||||||
-- numBul = _brlNum . _gunBarrels $ _itParams item
|
|
||||||
{- | Uses '_wpSpread' as a parameter for the current offset angle. -}
|
|
||||||
randWalkAngle
|
|
||||||
:: (Creature -> World -> World) -- ^ Underlying effect
|
|
||||||
-> Creature -- ^ Creature id
|
|
||||||
-> World
|
|
||||||
-> World
|
|
||||||
randWalkAngle f cr w = w
|
|
||||||
& f (cr & crDir +~ a)
|
|
||||||
& creatures . ix cid . crInv . ix i . itParams . currentWalkAngle .~ newa
|
|
||||||
where
|
|
||||||
cid = _crID cr
|
|
||||||
a = _currentWalkAngle $ _itParams it
|
|
||||||
(walka, _) = randomR (-aspeed,aspeed) (_randGen w)
|
|
||||||
newa = min ma $ max (negate ma) (a + walka)
|
|
||||||
i = _crInvSel $ _creatures w IM.! cid
|
|
||||||
it = _crInv cr IM.! i
|
|
||||||
ma = _maxWalkAngle $ _itParams it
|
|
||||||
aspeed = _walkSpeed $ _itParams it
|
|
||||||
|
|||||||
Reference in New Issue
Block a user