diff --git a/include/nat.h b/include/nat.h index f233253a..e4f70a5e 100644 --- a/include/nat.h +++ b/include/nat.h @@ -181,7 +181,7 @@ extern char *relatename(struct natstr *np, natid other); extern char *natstate(struct natstr *np); extern int getrel(struct natstr *np, natid them); 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 void putrel(struct natstr *np, natid them, int relate); extern void agecontact(struct natstr *np); diff --git a/src/lib/commands/acce.c b/src/lib/commands/acce.c index e15aa23a..8ebbcef6 100644 --- a/src/lib/commands/acce.c +++ b/src/lib/commands/acce.c @@ -80,11 +80,9 @@ static void pr_accept(struct natstr *to, natid from) { static char *yes_no[] = { "YES", " NO" }; - int rej = getrejects(from, to); - int from_deity = getnatp(from)->nat_stat == STAT_GOD; pr(" %s %s %s", - yes_no[!from_deity && (rej & REJ_TELE)], - yes_no[!from_deity && (rej & REJ_ANNO)], - yes_no[!from_deity && (rej & REJ_LOAN)]); + yes_no[!nat_accepts(to, from, REJ_TELE)], + yes_no[!nat_accepts(to, from, REJ_ANNO)], + yes_no[!nat_accepts(to, from, REJ_LOAN)]); } diff --git a/src/lib/commands/offe.c b/src/lib/commands/offe.c index 0a76bede..c3022138 100644 --- a/src/lib/commands/offe.c +++ b/src/lib/commands/offe.c @@ -78,7 +78,7 @@ do_loan(void) return RET_FAIL; } 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)); return RET_SYN; } diff --git a/src/lib/commands/rea.c b/src/lib/commands/rea.c index baa103ee..cbb0968a 100644 --- a/src/lib/commands/rea.c +++ b/src/lib/commands/rea.c @@ -107,8 +107,7 @@ rea(void) if (res <= 0) break; if (*kind == 'a') { - if ((getnatp(tgm.tel_from)->nat_stat != STAT_GOD - && (getrejects(tgm.tel_from, np) & REJ_ANNO)) + if ((!nat_accepts(np, tgm.tel_from, REJ_ANNO)) || tgm.tel_date < then) { res = tel_read_body(telfp, mbox, &tgm, NULL, NULL); if (res < 0) diff --git a/src/lib/commands/tele.c b/src/lib/commands/tele.c index 05f6446f..a5e5e904 100644 --- a/src/lib/commands/tele.c +++ b/src/lib/commands/tele.c @@ -92,8 +92,7 @@ tele(void) kk++; continue; } - if (!player->god - && (getrejects(player->cnum, natp) & REJ_TELE)) { + if (!nat_accepts(natp, player->cnum, REJ_TELE)) { pr("%s is rejecting your telegrams.\n", cname(to)); return RET_SYN; } diff --git a/src/lib/common/nat.c b/src/lib/common/nat.c index 265a0401..87f0cff9 100644 --- a/src/lib/common/nat.c +++ b/src/lib/common/nat.c @@ -90,9 +90,10 @@ relations_with(natid us, natid them) } 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 diff --git a/src/lib/subs/rej.c b/src/lib/subs/rej.c index 279ea36f..d0a0abca 100644 --- a/src/lib/subs/rej.c +++ b/src/lib/subs/rej.c @@ -88,7 +88,7 @@ setrel(natid us, natid them, int rel) pr("%s\n", addendum); mpr(us, "Diplomatic relations with %s %s to \"%s\".\n", 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, "Country %s has %s their relations with you to \"%s\"!\n", prnat(mynp), whichway, relates[rel]); diff --git a/src/lib/subs/wu.c b/src/lib/subs/wu.c index d97b3c9f..18088cc7 100644 --- a/src/lib/subs/wu.c +++ b/src/lib/subs/wu.c @@ -153,8 +153,7 @@ typed_wu(natid from, natid to, char *message, int type) for (to = 0; NULL != (np = getnatp(to)); to++) { if (np->nat_stat < STAT_SANCT) continue; - if (getnatp(from)->nat_stat != STAT_GOD - && (getrejects(from, np) & REJ_ANNO)) + if (!nat_accepts(np, from, REJ_ANNO)) continue; if (!np->nat_ann || !tel.tel_cont) { np->nat_ann++;