From db1ac2edf44d0249c8ff61cf8014f9a3dc5c13e0 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 17 Jun 2006 19:27:22 +0000 Subject: [PATCH] (sctstr): New member sct_dterr. (terr): Let the deity set it, and default the field argument to it. (sect_ca): New selector dterr. --- include/sect.h | 1 + info/territory.t | 9 ++++++--- src/lib/commands/terr.c | 10 ++++++++-- src/lib/global/nsc.c | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/include/sect.h b/include/sect.h index a2a060751..ba8288f42 100644 --- a/include/sect.h +++ b/include/sect.h @@ -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" */ diff --git a/info/territory.t b/info/territory.t index 1a5f0e771..c1762db91 100644 --- a/info/territory.t +++ b/info/territory.t @@ -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 diff --git a/src/lib/commands/terr.c b/src/lib/commands/terr.c index 9ea2ad0cb..c6f18f65f 100644 --- a/src/lib/commands/terr.c +++ b/src/lib/commands/terr.c @@ -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, §)) { 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; } diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index c6f3c22c9..e976bf73f 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -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}, -- 2.43.0