about summary refs log tree commit diff
path: root/users/grfn/xanthous/src/Xanthous/App.hs
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/xanthous/src/Xanthous/App.hs')
-rw-r--r--users/grfn/xanthous/src/Xanthous/App.hs15
1 files changed, 11 insertions, 4 deletions
diff --git a/users/grfn/xanthous/src/Xanthous/App.hs b/users/grfn/xanthous/src/Xanthous/App.hs
index fa4ef2d6a5c3..1e915a03fe05 100644
--- a/users/grfn/xanthous/src/Xanthous/App.hs
+++ b/users/grfn/xanthous/src/Xanthous/App.hs
@@ -362,10 +362,7 @@ attackAt pos =
         message msg msgParams
         entities . ix creatureID . positioned .= SomeEntity creature'
 
-    whenM (uses character $ isNothing . weapon)
-      $ whenM (chance (0.08 :: Float)) $ do
-        say_ ["combat", "fistSelfDamage"]
-        character %= Character.damage 1
+    whenM (uses character $ isNothing . weapon) handleFists
 
     stepGame -- TODO
   weapon chr = chr ^? inventory . wielded . wieldedItems . wieldableItem
@@ -377,6 +374,16 @@ attackAt pos =
       Nothing ->
         Messages.lookup ["combat", "hit", "fists"]
 
+  handleFists = do
+    damageChance <- use $ character . body . knuckles . to fistDamageChance
+    whenM (chance damageChance) $ do
+      damageAmount <- use $ character . body . knuckles . to fistfightingDamage
+      say_ [ "combat" , if damageAmount > 1
+                        then "fistExtraSelfDamage"
+                        else "fistSelfDamage" ]
+      character %= Character.damage damageAmount
+      character . body . knuckles %= damageKnuckles
+
 entityMenu_
   :: (Comonad w, Entity entity)
   => [w entity]