summaryrefslogtreecommitdiff
path: root/0006-npcs-eat-when-hungry.patch
blob: 2074beff0915d254ca18f21869eecf89ad963092 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--- a/src/npcmove.cpp
+++ b/src/npcmove.cpp
@@ -1829,7 +1829,9 @@
     }
 
     if( one_in( 3 ) && ( get_thirst() > 40 ||
-                         get_stored_kcal() + stomach.get_calories() < get_healthy_kcal() * 0.95 ) ) {
+                         get_stored_kcal() + stomach.get_calories() < get_healthy_kcal() * 0.95 ||
+                         ( get_hunger() > 160 &&
+                           ( get_stored_kcal() + stomach.get_calories() < get_healthy_kcal() ) ) ) ) {
         if( consume_food_from_camp() ) {
             return npc_noop;
         }
@@ -3697,12 +3699,15 @@
         return true;
     }
     faction *yours = g->u.get_faction();
-    int camp_kcals = std::min( std::max( 0, 19 * get_healthy_kcal() / 20 - get_stored_kcal() -
+    int camp_kcals = std::min( std::max( 0, get_healthy_kcal() - get_stored_kcal() -
                                          stomach.get_calories() ), yours->food_supply );
     if( camp_kcals > 0 ) {
         mod_hunger( -camp_kcals );
         mod_stored_kcal( camp_kcals );
         yours->food_supply -= camp_kcals;
+        stomach.mod_calories( camp_kcals );
+        stomach.mod_contents( -2400_ml );
+        stomach.mod_contents( 1200_ml );
         return true;
     }
     return false;