{
int orig_mil, taken;
int cantake;
- int nunits = 0, each, deq;
+ int nunits = 0, each, deq, dam;
struct lndstr *lp;
struct nstr_item ni;
nunits++;
}
- if (nunits == 0)
+ if (CANT_HAPPEN(!nunits))
return taken;
each = (mc / nunits) + 2;
continue;
cantake = ((lp->lnd_effic - 40) / 100.0) * lp->lnd_item[I_MILIT];
+ cantake = MIN(lp->lnd_item[I_MILIT], cantake);
+ deq = MIN(cantake, each);
+ if (deq <= 0)
+ continue;
- if (cantake >= each) {
- deq = ((double)each / lp->lnd_item[I_MILIT]) * 100.0;
- mc -= each;
- } else if (cantake > 0) {
- deq = ((double)cantake / lp->lnd_item[I_MILIT]) * 100.0;
- mc -= cantake;
- } else
- deq = 0;
-
- lp->lnd_effic -= deq;
- lp->lnd_mobil -= deq / 2;
- deq = lchr[(int)lp->lnd_type].l_item[I_MILIT] * (deq / 100.0);
- taken += MIN(deq, lp->lnd_item[I_MILIT]);
+ mc -= deq;
+ taken += deq;
+ dam = ((double)deq / lp->lnd_item[I_MILIT]) * 100.0;
+ lp->lnd_effic -= dam;
+ lp->lnd_mobil -= dam / 2;
lnd_submil(lp, deq);
if (mc <= 0)
return taken;
continue;
cantake = ((lp->lnd_effic - 40) / 100.0) * lp->lnd_item[I_MILIT];
+ cantake = MIN(lp->lnd_item[I_MILIT], cantake);
+ deq = MIN(cantake, each);
+ if (deq <= 0)
+ continue;
- if (cantake >= each) {
- deq = ((double)each / lp->lnd_item[I_MILIT]) * 100.0;
- mc -= each;
- } else if (cantake > 0) {
- deq = ((double)cantake / lp->lnd_item[I_MILIT]) * 100.0;
- mc -= cantake;
- } else
- deq = 0;
-
- lp->lnd_effic -= deq;
- lp->lnd_mobil -= deq / 2;
- deq = lchr[(int)lp->lnd_type].l_item[I_MILIT] * (deq / 100.0);
- taken += MIN(deq, lp->lnd_item[I_MILIT]);
+ mc -= deq;
+ taken += deq;
+ dam = ((double)deq / lp->lnd_item[I_MILIT]) * 100.0;
+ lp->lnd_effic -= dam;
+ lp->lnd_mobil -= dam / 2;
lnd_submil(lp, deq);
if (mc <= 0)
return taken;
if (lchr[(int)lp->lnd_type].l_flags & L_SECURITY)
continue;
- mc -= (lp->lnd_effic / 100.0) * lp->lnd_item[I_MILIT];
+ mc -= lp->lnd_item[I_MILIT];
taken += lp->lnd_item[I_MILIT];
lnd_dies_fighting_che(lp);
if (mc <= 0)
if (!(lchr[(int)lp->lnd_type].l_flags & L_SECURITY))
continue;
- mc -= (lp->lnd_effic / 100.0) * lp->lnd_item[I_MILIT];
+ mc -= lp->lnd_item[I_MILIT];
taken += lp->lnd_item[I_MILIT];
lnd_dies_fighting_che(lp);
if (mc <= 0)
return taken;
}
- /* Hmm.. everyone dead.. too bad */
+ CANT_REACH();
return taken;
}
| BUG: "Sector -12,-8 has been retaken!" instead of takeover
| -10,-8 che win, don't take over
| -8,-8 che lose
-| BUG: che kill 4m more than they should
+| BUG: che kill 2m more than they should
| -6,-8 che lose
| BUG: inf#29 shouldn't die
| plague stage 4 (dying) -16:-1,-6 ship#10 land#10
25 0 -12 -8 20 0 -30 0 170 0 0 none 0 "" -1 0 42 () "" 0 0 0 0 0 0 0 0 9 0 0 0 0 0 healthy 0 -1 0
26 0 -12 -8 2 0 -30 0 50 0 0 none 0 "" -1 0 42 () "" 0 0 0 0 0 0 0 0 10 0 0 0 0 0 healthy 0 -1 0
27 0 -12 -8 20 0 0 0 170 0 0 none 0 "" -1 0 42 () "" 0 0 0 0 0 0 0 0 9 0 0 0 0 0 healthy 0 -1 0
-28 4 -8 -8 1 60 40 0 50 0 0 none 0 "" -1 0 42 () "" 0 10 0 0 0 0 0 0 9 0 0 0 0 0 healthy 0 -1 0
+28 4 -8 -8 1 60 40 0 50 0 0 none 0 "" -1 0 42 () "" 0 12 0 0 0 0 0 0 9 0 0 0 0 0 healthy 0 -1 0
29 0 -6 -8 2 0 0 0 50 0 0 none 0 "" -1 0 42 () "" 0 0 0 0 0 0 0 0 8 0 0 0 0 0 healthy 0 -1 0
30 2 -16 0 2 88 60 0 50 0 0 none 0 "" -1 0 42 () "" 0 100 0 0 0 0 0 0 7 0 0 0 0 0 healthy 0 -1 0
31 2 -16 0 2 10 60 0 50 0 0 none 0 "" -1 0 42 () "" 0 100 0 0 0 0 0 0 7 0 0 0 0 0 healthy 0 -1 0
Play#0 output Play#0 1 Guerrilla warfare in -10,-8
Play#0 output Play#0 1 body count: troops: 10, rebels: 5
Play#0 output Play#0 1 Guerrilla warfare in -8,-8
- Play#0 output Play#0 1 body count: troops: 11, rebels: 22
+ Play#0 output Play#0 1 body count: troops: 9, rebels: 22
Play#0 output Play#0 1 inf infantry #29 dies fighting guerrillas in -6,-8
Play#0 output Play#0 1 Guerrilla warfare in -6,-8
Play#0 output Play#0 1 body count: troops: 50, rebels: 52
Play#0 output Play#0 1 4 19 inf infantry -10,-6 100% 100 0 60 7 50 42% 0 0
Play#0 output Play#0 1 5 20 inf infantry -16,-8 20% 0 0 60 10 50 42% 0 0
Play#0 output Play#0 1 5 23 inf infantry -14,-8 20% 0 0 60 10 50 42% 0 0
- Play#0 output Play#0 1 4 28 linf light infa -8,-8 60% 10 0 40 9 50 42% 0 0
+ Play#0 output Play#0 1 4 28 linf light infa -8,-8 60% 12 0 40 9 50 42% 0 0
Play#0 output Play#0 1 13 units
Play#0 output Play#0 6 0 640
Play#0 input read 5