]> git.pond.sub.org Git - empserver/commitdiff
Change xdump nat to show only own country, and xdump cou to show to
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 17 Feb 2006 18:38:50 +0000 (18:38 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Fri, 17 Feb 2006 18:38:50 +0000 (18:38 +0000)
deities what xdump nat used to show:
(cou_ca): Remove initializer.
(ef_init_srv): Initialize cou_ca[] from nat_ca[].
(xdvisible): Change case EF_NATION to return true only for owner
even for deities.

src/lib/commands/xdump.c
src/lib/global/nsc.c
src/lib/subs/fileinit.c

index 5e4d9fc86f587aa2c4f7df4ce42cbf5b2adb9896..f92b4b3a8ada475cd99b64722e9803fddef4b2a2 100644 (file)
@@ -207,9 +207,7 @@ xdvisible(int type, void *p)
     case EF_LOST:
        return gp->own != 0 && (gp->own == player->cnum || player->god);
     case EF_NATION:
-       if (!player->god)
-           return gp->own == player->cnum;
-       /* fall through */
+       return gp->own == player->cnum;
     case EF_COUNTRY:
        return ((struct natstr *)p)->nat_stat != STAT_UNUSED;
     case EF_NEWS:
index eaf108f8cdceb10dbca3e7bc8641e2b5921aa155..f9499e8780bda2d01ab31e49ec98aab8c4df5c9c 100644 (file)
@@ -494,6 +494,11 @@ struct castr trade_ca[] = {
 };
 
 struct castr nat_ca[] = {
+    /*
+     * Keep selectors cnum, stat and cname at the beginning.
+     * ef_init_srv() makes their copies in cou_ca[] accessible for
+     * mortals.
+     */
     {NSC_NATID, 0, 0, fldoff(natstr, nat_cnum), "cnum", EF_NATION},
     {NSC_SITYPE(nat_status), 0, 0, fldoff(natstr, nat_stat), "stat",
      EF_NATION_STATUS},
@@ -535,13 +540,8 @@ struct castr nat_ca[] = {
     {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
 };
 
-struct castr cou_ca[] = {
-    {NSC_NATID, NSC_CONST, 0, fldoff(natstr, nat_cnum), "cnum", EF_NATION},
-    {NSC_SITYPE(nat_status), NSC_CONST, 0, fldoff(natstr, nat_stat), "stat",
-     EF_NATION_STATUS},
-    {NSC_STRINGY, NSC_CONST, 20, fldoff(natstr, nat_cnam), "cname", EF_BAD},
-    {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
-};
+struct castr cou_ca[sizeof(nat_ca) / sizeof(*nat_ca)];
+/* initialized in ef_init_srv() */
 
 struct castr realm_ca[] = {
     /* uid is encoded in cnum, realm */
index f2cf49d5d7ab4db89df9ff82315022dd39134c71..97373138450dfcf324acec67bfe4e7da2e567ac4 100644 (file)
@@ -77,6 +77,13 @@ ef_init_srv(void)
        empfile[fileinit[i].ef_type].postread = fileinit[i].postread;
        empfile[fileinit[i].ef_type].prewrite = fileinit[i].prewrite;
     }
+
+    for (i = 0; nat_ca[i].ca_name; i++) {
+       cou_ca[i] = nat_ca[i];
+       cou_ca[i].ca_flags |= NSC_CONST | (i < 3 ? 0 : NSC_DEITY);
+    }
+    cou_ca[i] = nat_ca[i];
+
     ef_open_srv();
     if (ef_verify() < 0)
        exit(EXIT_FAILURE);