(nati, populace): Use it.
(populace, nati): Change hap, pct from float to double, because they
are used as double.
(nati): Print happiness needed with just two decimals, like the other
levels.
extern time_t fdate(int);
/* hap_fact.c */
extern double hap_fact(struct natstr *, struct natstr *);
+extern double hap_req(struct natstr *np);
/* hours.c */
extern int is_wday_allowed(int, char *);
extern int is_daytime_allowed(int, char *);
{
struct natstr *natp;
struct sctstr sect;
- float hap;
+ double hap;
int mil;
int civ;
int cnum;
pr("Max safe population for civs/uws: %d/%d\n", safepop, uwpop);
- hap = ((natp->nat_level[NAT_TLEV] - 40) / 40.0 +
- natp->nat_level[NAT_ELEV] / 3.0);
-
+ hap = hap_req(natp);
if (hap > 0.0)
- pr("Happiness needed is %f\n", hap);
+ pr("Happiness needed is %.2f\n", hap);
else
pr("No happiness needed\n");
hap_fact = 0.8;
return hap_fact;
}
+
+/* Return happiness required to keep NP's citizens happy. */
+double
+hap_req(struct natstr *np)
+{
+ return (np->nat_level[NAT_TLEV] - 40.0) / 40.0
+ + np->nat_level[NAT_ELEV] / 3.0;
+}
void
populace(struct natstr *np, struct sctstr *sp, int etu)
{
- float hap;
- float tech;
- float edu;
- float pct;
+ double hap, pct;
int n;
int civ = sp->sct_item[I_CIVIL];
int mil = sp->sct_item[I_MILIT];
}
hap = np->nat_level[NAT_HLEV];
- edu = np->nat_level[NAT_ELEV];
- tech = np->nat_level[NAT_TLEV];
- pct = (double)((tech - 40) / 40.0 + edu / 3.0);
+ pct = hap_req(np);
if (sp->sct_own == sp->sct_oldown && hap < pct &&
- chance(((double)pct - (double)hap) / (double)5.0)) {
+ chance((pct - hap) / 5.0)) {
/*
* zap the loyalty of unhappy civilians.
* there is a 20% chance per hap point below the