diff options
author | Griffin Smith <root@gws.fyi> | 2020-05-11T00·26-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2020-05-11T00·26-0400 |
commit | ce3730ba3a5831e590dd9cc037649eb49e2f0804 (patch) | |
tree | 80af1801baedcc8543521ddfed048fb0fc304ee8 /src/Xanthous/Random.hs | |
parent | b64dd08c6ec5f68539c6b4159b10d960e8e96bc3 (diff) |
Small chance of hurting self when punching
When attacking monsters with bare fists, there is a small chance (8%, right now) of causing 1 point of self-damage
Diffstat (limited to 'src/Xanthous/Random.hs')
-rw-r--r-- | src/Xanthous/Random.hs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Xanthous/Random.hs b/src/Xanthous/Random.hs index 3cb0b068d3d7..41c80ab73c4c 100644 --- a/src/Xanthous/Random.hs +++ b/src/Xanthous/Random.hs @@ -9,6 +9,7 @@ module Xanthous.Random , evenlyWeighted , weightedBy , subRand + , chance ) where -------------------------------------------------------------------------------- import Xanthous.Prelude @@ -85,3 +86,17 @@ instance (Num w, Ord w, Distribution Uniform w, Excludable w) => Choose (Weighte subRand :: MonadRandom m => Rand StdGen a -> m a subRand sub = evalRand sub . mkStdGen <$> getRandom + +-- | Has a @n@ chance of returning 'True' +-- +-- eg, chance 0.5 will return 'True' half the time +chance + :: (Num w, Ord w, Distribution Uniform w, Excludable w, MonadRandom m) + => w + -> m Bool +chance n = choose $ weightedBy (bool 1 (n * 2)) bools + +-------------------------------------------------------------------------------- + +bools :: NonEmpty Bool +bools = True :| [False] |