(sctstr): New member sct_dterr.

(terr): Let the deity set it, and default the field argument to it.
(sect_ca): New selector dterr.
This commit is contained in:
Markus Armbruster 2006-06-17 19:27:22 +00:00
parent 602b2a07cb
commit db1ac2edf4
4 changed files with 16 additions and 5 deletions

View file

@ -55,6 +55,7 @@ struct sctstr {
unsigned char sct_terr1; /* territory 1 id # of sector */ unsigned char sct_terr1; /* territory 1 id # of sector */
unsigned char sct_terr2; /* territory 2 id # of sector */ unsigned char sct_terr2; /* territory 2 id # of sector */
unsigned char sct_terr3; /* territory 3 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_x; /* Dist sector */
coord sct_dist_y; coord sct_dist_y;
short sct_avail; /* available workforce for "other things" */ short sct_avail; /* available workforce for "other things" */

View 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 However, you are not limited to rectangular regions and you have
99 values to choose from. 99 values to choose from.
.s1 .s1
There are four independent territory fields. If the optional field There are four independent territory fields terr, terr1, terr2, terr3
argument is empty, field 0 is used. 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 .s1
.EX territory #1 5 1 .EX territory #1 5 1
.s1 .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 .s1
.EX sect * ?terr1=6&terr2=12 .EX sect * ?terr1=6&terr2=12
.s1 .s1

View file

@ -55,10 +55,10 @@ terr(void)
if (!snxtsct(&nstr, player->argp[1])) if (!snxtsct(&nstr, player->argp[1]))
return RET_SYN; return RET_SYN;
if (player->argp[3] && isdigit(*(player->argp[3]))) { if (player->argp[3]) {
field = atoi(player->argp[3]); field = atoi(player->argp[3]);
} else { } else {
field = 0; field = player->god ? -1 : 0;
} }
while (nxtsct(&nstr, &sect)) { while (nxtsct(&nstr, &sect)) {
if (!player->owner) if (!player->owner)
@ -87,6 +87,12 @@ terr(void)
case 3: case 3:
sect.sct_terr3 = terr_n; sect.sct_terr3 = terr_n;
break; break;
case -1:
if (player->god) {
sect.sct_dterr = terr_n;
break;
}
/* fall through */
default: default:
sect.sct_terr = terr_n; sect.sct_terr = terr_n;
} }

View 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_terr1), "terr1", EF_BAD},
{NSC_UCHAR, 0, 0, fldoff(sctstr, sct_terr2), "terr2", 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, 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_XCOORD, 0, 0, fldoff(sctstr, sct_dist_x), "xdist", EF_BAD},
{NSC_YCOORD, 0, 0, fldoff(sctstr, sct_dist_y), "ydist", 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}, {NSC_SHORT, 0, 0, fldoff(sctstr, sct_avail), "avail", EF_BAD},