feat(grfn/xanthous): Use dual-wielding to calculate damage

When dual-wielding weapons, do damage from both weapons and use both
weapons' attack messages.

Change-Id: I3c404946d0167c9b5c2bcf58ab5c3429cc5269fc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5605
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
Griffin Smith 2022-05-14 11:49:15 -04:00 committed by clbot
parent 194007b020
commit af31da8cfc
6 changed files with 33 additions and 17 deletions

View file

@ -467,19 +467,24 @@ attackAt pos =
attackCreature creature = do
charDamage <- uses character characterDamage
creature' <- damageCreature creature charDamage
msg <- uses character getAttackMessage
unless (Creature.isDead creature')
. message msg $ object ["creature" A..= creature']
unless (Creature.isDead creature') $ writeAttackMessage creature'
whenM (uses character $ isNothing . weapon) handleFists
stepGame
weapon chr = chr ^? inventory . wielded . wieldedItems . wieldableItem
getAttackMessage chr =
case weapon chr of
Just wi ->
fromMaybe (Messages.lookup ["combat", "hit", "generic"])
$ wi ^. attackMessage
Nothing ->
Messages.lookup ["combat", "hit", "fists"]
writeAttackMessage creature = do
let params = object ["creature" A..= creature]
attackMessages <- uses character getAttackMessages
msg <- intercalate " and " <$> for attackMessages (`Messages.render` params)
writeMessage $ "You " <> msg
getAttackMessages chr =
case chr ^.. inventory . wielded . wieldedItems . wieldableItem of
[] -> [Messages.lookup ["combat", "hit", "fists"]]
is ->
is
<&> \wi ->
fromMaybe (Messages.lookup ["combat", "hit", "generic"])
$ wi ^. attackMessage
handleFists = do
damageChance <- use $ character . body . knuckles . to fistDamageChance