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
This commit is contained in:
parent
b64dd08c6e
commit
ce3730ba3a
3 changed files with 26 additions and 1 deletions
|
@ -548,9 +548,16 @@ attackAt pos =
|
||||||
msg <- uses character getAttackMessage
|
msg <- uses character getAttackMessage
|
||||||
message msg msgParams
|
message msg msgParams
|
||||||
entities . ix creatureID . positioned .= SomeEntity creature'
|
entities . ix creatureID . positioned .= SomeEntity creature'
|
||||||
|
|
||||||
|
whenM (uses character $ isNothing . weapon)
|
||||||
|
$ whenM (chance (0.08 :: Float)) $ do
|
||||||
|
say_ ["combat", "fistSelfDamage"]
|
||||||
|
character %= Character.damage 1
|
||||||
|
|
||||||
stepGame -- TODO
|
stepGame -- TODO
|
||||||
|
weapon chr = chr ^? inventory . wielded . wieldedItems . wieldableItem
|
||||||
getAttackMessage chr =
|
getAttackMessage chr =
|
||||||
case chr ^? inventory . wielded . wieldedItems . wieldableItem of
|
case weapon chr of
|
||||||
Just wi ->
|
Just wi ->
|
||||||
fromMaybe (Messages.lookup ["combat", "hit", "generic"])
|
fromMaybe (Messages.lookup ["combat", "hit", "generic"])
|
||||||
$ wi ^. attackMessage
|
$ wi ^. attackMessage
|
||||||
|
|
|
@ -9,6 +9,7 @@ module Xanthous.Random
|
||||||
, evenlyWeighted
|
, evenlyWeighted
|
||||||
, weightedBy
|
, weightedBy
|
||||||
, subRand
|
, subRand
|
||||||
|
, chance
|
||||||
) where
|
) where
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
import Xanthous.Prelude
|
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 :: MonadRandom m => Rand StdGen a -> m a
|
||||||
subRand sub = evalRand sub . mkStdGen <$> getRandom
|
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]
|
||||||
|
|
|
@ -57,6 +57,9 @@ character:
|
||||||
combat:
|
combat:
|
||||||
nothingToAttack: There's nothing to attack there.
|
nothingToAttack: There's nothing to attack there.
|
||||||
menu: Which creature would you like to attack?
|
menu: Which creature would you like to attack?
|
||||||
|
fistSelfDamage:
|
||||||
|
- You hit so hard with your fists you hurt yourself!
|
||||||
|
- The punch leaves your knuckles bloody!
|
||||||
hit:
|
hit:
|
||||||
fists:
|
fists:
|
||||||
- You punch the {{creature.creatureType.name}} with your bare fists! It hurts. A lot.
|
- You punch the {{creature.creatureType.name}} with your bare fists! It hurts. A lot.
|
||||||
|
|
Loading…
Reference in a new issue