diff --git a/info/Selector.t b/info/Selector.t index 2e54c108..cd1f3ab3 100644 --- a/info/Selector.t +++ b/info/Selector.t @@ -42,11 +42,12 @@ designation/infrastructure .L effic .L mobil .L terr +alias for terr0 (mortal player) or dterr (deity) .L terr0 -alias for terr .L terr1 .L terr2 .L terr3 +.L dterr .L timestamp .L fallout .L road diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index 359c9038..86b6dc64 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -47,6 +47,7 @@ static void *nsc_ver(struct valstr *, struct natstr *, void *); static void *nsc_ver_maxnoc(struct valstr *, struct natstr *, void *); +static void *nsc_sct_terr(struct valstr *, struct natstr *, void *); static void *nsc_pln_att(struct valstr *, struct natstr *, void *); static void *nsc_pln_def(struct valstr *, struct natstr *, void *); static void *nsc_lnd_att(struct valstr *, struct natstr *, void *); @@ -133,8 +134,8 @@ struct castr sect_ca[] = { {"effic", fldoff(sct_effic), NSC_UCHAR, 0, NULL, EF_BAD, 0}, {"mobil", fldoff(sct_mobil), NSC_SHORT, 0, NULL, EF_BAD, 0}, {"loyal", fldoff(sct_loyal), NSC_UCHAR, 0, NULL, EF_BAD, NSC_DEITY}, - {"terr", fldoff(sct_terr), NSC_UCHAR, 0, NULL, EF_BAD, 0}, - {"terr0", fldoff(sct_terr), NSC_UCHAR, 0, NULL, EF_BAD, NSC_EXTRA}, + {"terr", 0, NSC_UCHAR, 0, nsc_sct_terr, EF_BAD, NSC_EXTRA}, + {"terr0", fldoff(sct_terr), NSC_UCHAR, 0, NULL, EF_BAD, 0}, {"terr1", fldoff(sct_terr1), NSC_UCHAR, 0, NULL, EF_BAD, 0}, {"terr2", fldoff(sct_terr2), NSC_UCHAR, 0, NULL, EF_BAD, 0}, {"terr3", fldoff(sct_terr3), NSC_UCHAR, 0, NULL, EF_BAD, 0}, @@ -756,6 +757,17 @@ nsc_ver_maxnoc(struct valstr *val, struct natstr *np, void *ptr) return NULL; } +static void * +nsc_sct_terr(struct valstr *val, struct natstr *np, void *ptr) +{ + if (!np || np->nat_stat == STAT_GOD) + val->val_as.sym.off = offsetof(struct sctstr, sct_dterr); + else + val->val_as.sym.off = offsetof(struct sctstr, sct_terr); + val->val_as.sym.get = NULL; + return ptr; +} + static void * nsc_pln_def(struct valstr *val, struct natstr *np, void *ptr) {