From af31da8cfc9caee8c2cd44df5ee5c1ed3a9b3ed7 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Sat, 14 May 2022 11:49:15 -0400 Subject: 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 Tested-by: BuildkiteCI Reviewed-by: grfn --- users/grfn/xanthous/src/Xanthous/App.hs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'users/grfn/xanthous/src/Xanthous/App.hs') 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 -- cgit 1.4.1