From: Markus Armbruster Date: Thu, 16 Aug 2012 18:54:59 +0000 (+0200) Subject: Clean up land unit retreat chance and fix its documentation X-Git-Tag: v4.3.31~94 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=5507ff311693784d6616e7588d1e381995adbac4 Clean up land unit retreat chance and fix its documentation Change chance in percent lnd_retreat - lnd_effic - 1 to lnd_retreat - lnd_effic. It's been that way since Empire 2, but I can't bring myself to document the silly -1. "info morale" wasn't updated when the retreat chance was changed in Empire 2. Fix that. --- diff --git a/info/morale.t b/info/morale.t index 5ebbdedb7..d4a61bb50 100644 --- a/info/morale.t +++ b/info/morale.t @@ -5,11 +5,9 @@ The \*Qmorale\*U command is used to set the retreat percentage of land units. .s1 -Normally, a land unit must start making morale checks during combat -when its efficiency is less than or equal to its retreat percentage. -(The chance of failing a morale check is: sqrt(100-effic)%/(men in unit). -Example: a 25 man unit is at 75% efficiency. Its chance of failing is -sqrt(100-75)%/25 = sqrt(25)%/25 = 20%) +Whenever a land unit takes a hit in combat, it may break off combat +and attempt to retreat. This is called \*Qfailing a morale check\*U. +The chance for it to happen is unit's retreat percentage - efficiency. .s1 The morale command allows you to adjust this percentage within a range. If, for example, you @@ -19,8 +17,8 @@ the enemy down a bit. Or, you could set your retreat percentage to the minimum, and make the unit stick around and fight more, but at the cost of more casualties. .s1 -The maximum allowed value is 100% (i.e. start making morale checks after -any casualties). The minimum value is based on happiness: +The maximum allowed value is 100%. The minimum value is based on +happiness: .ti 3 (morale_base) - happiness .s1 diff --git a/src/lib/subs/lndsub.c b/src/lib/subs/lndsub.c index fa7243092..a4bc04ac2 100644 --- a/src/lib/subs/lndsub.c +++ b/src/lib/subs/lndsub.c @@ -29,7 +29,7 @@ * Known contributors to this file: * Ken Stevens, 1995 * Steve McClure, 1998-2000 - * Markus Armbruster, 2004-2010 + * Markus Armbruster, 2004-2012 */ #include @@ -211,7 +211,7 @@ lnd_take_casualty(int combat_mode, struct ulist *llp, int cas) /* Have to make a retreat check */ ret_chance = llp->unit.land.lnd_retreat - llp->unit.land.lnd_effic; - if (roll(100) < ret_chance) { + if (roll(100) <= ret_chance) { pr("\n"); lnd_print(llp->unit.land.lnd_own, llp, "fails morale check!"); llp->unit.land.lnd_mission = 0;