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.
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
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
* 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
/* 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;