reject: Replace getrejects() by nat_accepts()

All callers of getrejects() also check whether the sender is a deity.
Factor out the common code into nat_accepts(), and drop getrejects().

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-10-31 11:39:05 +01:00
parent 5983fa2f6c
commit 9d153f547c
8 changed files with 12 additions and 16 deletions

View file

@ -181,7 +181,7 @@ extern char *relatename(struct natstr *np, natid other);
extern char *natstate(struct natstr *np); extern char *natstate(struct natstr *np);
extern int getrel(struct natstr *np, natid them); extern int getrel(struct natstr *np, natid them);
extern int relations_with(natid, natid); extern int relations_with(natid, natid);
extern int getrejects(natid them, struct natstr *np); extern int nat_accepts(struct natstr *, natid, int);
extern int in_contact(natid, natid); extern int in_contact(natid, natid);
extern void putrel(struct natstr *np, natid them, int relate); extern void putrel(struct natstr *np, natid them, int relate);
extern void agecontact(struct natstr *np); extern void agecontact(struct natstr *np);

View file

@ -80,11 +80,9 @@ static void
pr_accept(struct natstr *to, natid from) pr_accept(struct natstr *to, natid from)
{ {
static char *yes_no[] = { "YES", " NO" }; static char *yes_no[] = { "YES", " NO" };
int rej = getrejects(from, to);
int from_deity = getnatp(from)->nat_stat == STAT_GOD;
pr(" %s %s %s", pr(" %s %s %s",
yes_no[!from_deity && (rej & REJ_TELE)], yes_no[!nat_accepts(to, from, REJ_TELE)],
yes_no[!from_deity && (rej & REJ_ANNO)], yes_no[!nat_accepts(to, from, REJ_ANNO)],
yes_no[!from_deity && (rej & REJ_LOAN)]); yes_no[!nat_accepts(to, from, REJ_LOAN)]);
} }

View file

@ -78,7 +78,7 @@ do_loan(void)
return RET_FAIL; return RET_FAIL;
} }
natp = getnatp(recipient); natp = getnatp(recipient);
if (!player->god && (getrejects(player->cnum, natp) & REJ_LOAN)) { if (!nat_accepts(natp, player->cnum, REJ_LOAN)) {
pr("%s is rejecting your loans.\n", cname(recipient)); pr("%s is rejecting your loans.\n", cname(recipient));
return RET_SYN; return RET_SYN;
} }

View file

@ -107,8 +107,7 @@ rea(void)
if (res <= 0) if (res <= 0)
break; break;
if (*kind == 'a') { if (*kind == 'a') {
if ((getnatp(tgm.tel_from)->nat_stat != STAT_GOD if ((!nat_accepts(np, tgm.tel_from, REJ_ANNO))
&& (getrejects(tgm.tel_from, np) & REJ_ANNO))
|| tgm.tel_date < then) { || tgm.tel_date < then) {
res = tel_read_body(telfp, mbox, &tgm, NULL, NULL); res = tel_read_body(telfp, mbox, &tgm, NULL, NULL);
if (res < 0) if (res < 0)

View file

@ -92,8 +92,7 @@ tele(void)
kk++; kk++;
continue; continue;
} }
if (!player->god if (!nat_accepts(natp, player->cnum, REJ_TELE)) {
&& (getrejects(player->cnum, natp) & REJ_TELE)) {
pr("%s is rejecting your telegrams.\n", cname(to)); pr("%s is rejecting your telegrams.\n", cname(to));
return RET_SYN; return RET_SYN;
} }

View file

@ -90,9 +90,10 @@ relations_with(natid us, natid them)
} }
int int
getrejects(natid them, struct natstr *np) nat_accepts(struct natstr *np, natid them, int what)
{ {
return np->nat_rejects[them]; return getnatp(them)->nat_stat == STAT_GOD
|| !(np->nat_rejects[them] & what);
} }
void void

View file

@ -88,7 +88,7 @@ setrel(natid us, natid them, int rel)
pr("%s\n", addendum); pr("%s\n", addendum);
mpr(us, "Diplomatic relations with %s %s to \"%s\".\n", mpr(us, "Diplomatic relations with %s %s to \"%s\".\n",
cname(them), whichway, relates[rel]); cname(them), whichway, relates[rel]);
if (mynp->nat_stat == STAT_GOD || !(getrejects(us, themnp) & REJ_TELE)) if (nat_accepts(themnp, us, REJ_TELE))
mpr(them, mpr(them,
"Country %s has %s their relations with you to \"%s\"!\n", "Country %s has %s their relations with you to \"%s\"!\n",
prnat(mynp), whichway, relates[rel]); prnat(mynp), whichway, relates[rel]);

View file

@ -153,8 +153,7 @@ typed_wu(natid from, natid to, char *message, int type)
for (to = 0; NULL != (np = getnatp(to)); to++) { for (to = 0; NULL != (np = getnatp(to)); to++) {
if (np->nat_stat < STAT_SANCT) if (np->nat_stat < STAT_SANCT)
continue; continue;
if (getnatp(from)->nat_stat != STAT_GOD if (!nat_accepts(np, from, REJ_ANNO))
&& (getrejects(from, np) & REJ_ANNO))
continue; continue;
if (!np->nat_ann || !tel.tel_cont) { if (!np->nat_ann || !tel.tel_cont) {
np->nat_ann++; np->nat_ann++;