]> 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
 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
 .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
 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
 .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
  *  Known contributors to this file:
  *     Ken Stevens, 1995
  *     Steve McClure, 1998-2000
- *     Markus Armbruster, 2004-2010
+ *     Markus Armbruster, 2004-2012
  */
 
 #include <config.h>
  */
 
 #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;
     /* 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;
        pr("\n");
        lnd_print(llp->unit.land.lnd_own, llp, "fails morale check!");
        llp->unit.land.lnd_mission = 0;