]> git.pond.sub.org Git - empserver/commitdiff
(sctstr): New member sct_dterr.
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 17 Jun 2006 19:27:22 +0000 (19:27 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 17 Jun 2006 19:27:22 +0000 (19:27 +0000)
(terr): Let the deity set it, and default the field argument to it.
(sect_ca): New selector dterr.

include/sect.h
info/territory.t
src/lib/commands/terr.c
src/lib/global/nsc.c

index a2a060751322a4ef3ce9c34d44430a6f9280fd3f..ba8288f42badbf25e4b257d462fc1a3f4ca97080 100644 (file)
@@ -55,6 +55,7 @@ struct sctstr {
     unsigned char sct_terr1;   /* territory 1 id # of sector */
     unsigned char sct_terr2;   /* territory 2 id # of sector */
     unsigned char sct_terr3;   /* territory 3 id # of sector */
+    unsigned char sct_dterr;   /* deity's territory # */
     coord sct_dist_x;          /* Dist sector */
     coord sct_dist_y;
     short sct_avail;           /* available workforce for "other things" */
index 1a5f0e7717dcaa5889ba10626566772341c7691a..c1762db91086d8c76040b2a6623d09704c94ff8c 100644 (file)
@@ -12,12 +12,15 @@ In this sense it is essentially an extended \*Qrealm\*U.
 However, you are not limited to rectangular regions and you have 
 99 values to choose from.
 .s1
-There are four independent territory fields.  If the optional field
-argument is empty, field 0 is used.
+There are four independent territory fields terr, terr1, terr2, terr3
+selected by field arguments 0, 1, 2, 3, respectively.  Deities can use
+an additional territory field dterr, selected by -1.  If the optional
+field argument is empty, terr is assumed for mortals and dterr for
+deities.
 .s1
 .EX territory #1 5 1
 .s1
-Would set terr1 field to 5 for all sectors in realm 1.
+Would set terr1 to 5 for all sectors in realm 1.
 .s1
 .EX sect * ?terr1=6&terr2=12
 .s1
index 9ea2ad0cb3434ef9e23a0393e241fb8d79227512..c6f18f65f911844867d81328b2158c870eec5c32 100644 (file)
@@ -55,10 +55,10 @@ terr(void)
 
     if (!snxtsct(&nstr, player->argp[1]))
        return RET_SYN;
-    if (player->argp[3] && isdigit(*(player->argp[3]))) {
+    if (player->argp[3]) {
        field = atoi(player->argp[3]);
     } else {
-       field = 0;
+       field = player->god ? -1 : 0;
     }
     while (nxtsct(&nstr, &sect)) {
        if (!player->owner)
@@ -87,6 +87,12 @@ terr(void)
        case 3:
            sect.sct_terr3 = terr_n;
            break;
+       case -1:
+           if (player->god) {
+               sect.sct_dterr = terr_n;
+               break;
+           }
+           /* fall through */
        default:
            sect.sct_terr = terr_n;
        }
index c6f3c22c97372accd1d8f6afa490128fe5c52e42..e976bf73fe8c6c48a86e6bdf9c051f4e2849f7c3 100644 (file)
@@ -131,6 +131,7 @@ struct castr sect_ca[] = {
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_terr1), "terr1", EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_terr2), "terr2", EF_BAD},
     {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_terr3), "terr3", EF_BAD},
+    {NSC_UCHAR, NSC_DEITY, 0, fldoff(sctstr, sct_dterr), "dterr", EF_BAD},
     {NSC_XCOORD, 0, 0, fldoff(sctstr, sct_dist_x), "xdist", EF_BAD},
     {NSC_YCOORD, 0, 0, fldoff(sctstr, sct_dist_y), "ydist", EF_BAD},
     {NSC_SHORT, 0, 0, fldoff(sctstr, sct_avail), "avail", EF_BAD},