diff options
author | Griffin Smith <grfn@gws.fyi> | 2022-05-14T15·49-0400 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-05-14T16·02+0000 |
commit | af31da8cfc9caee8c2cd44df5ee5c1ed3a9b3ed7 (patch) | |
tree | daaa748bfd7e9fb57aac37b1f2213fbef378b343 /users/grfn/xanthous/src/Xanthous/App.hs | |
parent | 194007b02069d2be0c283825aa1e1a4426b641a2 (diff) |
feat(grfn/xanthous): Use dual-wielding to calculate damage r/4073
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>
Diffstat (limited to 'users/grfn/xanthous/src/Xanthous/App.hs')
-rw-r--r-- | users/grfn/xanthous/src/Xanthous/App.hs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/users/grfn/xanthous/src/Xanthous/App.hs b/users/grfn/xanthous/src/Xanthous/App.hs index 4ae549d15983..426230cdc2fc 100644 --- a/users/grfn/xanthous/src/Xanthous/App.hs +++ b/users/grfn/xanthous/src/Xanthous/App.hs @@ -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 |