]> git.pond.sub.org Git - empserver/commitdiff
Clean up land unit retreat chance and fix its documentation
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 16 Aug 2012 18:54:59 +0000 (20:54 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Wed, 8 May 2013 04:55:19 +0000 (06:55 +0200)
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.

info/morale.t
src/lib/subs/lndsub.c

index 5ebbdedb7ffc5ac2f0552f3a389008e76d25e775..d4a61bb50ea50ef1bd23b1ffc8a936c75ea71513 100644 (file)
@@ -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
index fa72430923be93c2e94c2b434c015c8acd39b137..a4bc04ac2482db77a1a938d1b6a2d23b630aa443 100644 (file)
@@ -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 <config.h>
@@ -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;