diff options
Diffstat (limited to '0005-npcs-eat-when-hungry.patch')
-rw-r--r-- | 0005-npcs-eat-when-hungry.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/0005-npcs-eat-when-hungry.patch b/0005-npcs-eat-when-hungry.patch new file mode 100644 index 0000000..2074bef --- /dev/null +++ b/0005-npcs-eat-when-hungry.patch @@ -0,0 +1,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; |