]> git.pond.sub.org Git - empserver/blob - src/lib/commands/setres.c
Indented with src/scripts/indent-emp.
[empserver] / src / lib / commands / setres.c
1 /*
2  *  Empire - A multi-player, client/server Internet based war game.
3  *  Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
4  *                           Ken Stevens, Steve McClure
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2 of the License, or
9  *  (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, write to the Free Software
18  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  *  ---
21  *
22  *  See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
23  *  related information and legal notices. It is expected that any future
24  *  projects/authors will amend these files as needed.
25  *
26  *  ---
27  *
28  *  setres.c: Set resources of a sector
29  * 
30  *  Known contributors to this file:
31  *     David Muir Sharnoff
32  *     Karl Hagen
33  *     Steve McClure, 1998
34  */
35
36 #include <stdio.h>
37 #include <ctype.h>
38 #include "misc.h"
39 #include "player.h"
40 #include "var.h"
41 #include "xy.h"
42 #include "sect.h"
43 #include "nat.h"
44 #include "news.h"
45 #include "nsc.h"
46 #include "item.h"
47 #include "file.h"
48 #include "commands.h"
49 #include "optlist.h"
50
51 /*
52  * format: setres resource <amt>  <sect>
53  */
54 int
55 setres(void)
56 {
57     struct sctstr sect;
58     s_char *what;
59     int amt;
60     s_char *p;
61     struct nstr_sect nstr;
62     s_char buf[1024];
63
64     if ((what = getstarg(player->argp[1],
65                          "Set What (iron, gold, oil, uranium, fertility)? ",
66                          buf)) == 0)
67         return RET_SYN;
68     switch (what[0]) {
69     case 'i':
70         if (!snxtsct(&nstr, player->argp[2]))
71             return RET_SYN;
72         while (nxtsct(&nstr, &sect) > 0) {
73             if (!(p = getstarg(player->argp[3], "What value : ", buf)) ||
74                 (*p == '\0'))
75                 return RET_SYN;
76             amt = atoi(p);
77             if (amt > 100)
78                 amt = 100;
79             if (amt < 0)
80                 amt = 0;
81             if (sect.sct_own != 0)
82                 resnoise(&sect, 1, "Iron ore content",
83                          (int)sect.sct_min, amt);
84             sect.sct_min = (u_char)amt;
85             putsect(&sect);
86         }
87         break;
88     case 'g':
89         if (!snxtsct(&nstr, player->argp[2]))
90             return RET_SYN;
91         while (nxtsct(&nstr, &sect) > 0) {
92             if (!(p = getstarg(player->argp[3], "What value : ", buf)) ||
93                 (*p == '\0'))
94                 return RET_SYN;
95             amt = atoi(p);
96             if (amt > 100)
97                 amt = 100;
98             if (amt < 0)
99                 amt = 0;
100             if (sect.sct_own != 0)
101                 resnoise(&sect, 1, "Gold content",
102                          (int)sect.sct_gmin, amt);
103             sect.sct_gmin = (u_char)amt;
104             putsect(&sect);
105         }
106         break;
107     case 'o':
108         if (!snxtsct(&nstr, player->argp[2]))
109             return RET_SYN;
110         while (nxtsct(&nstr, &sect) > 0) {
111             if (!(p = getstarg(player->argp[3], "What value : ", buf)) ||
112                 (*p == '\0'))
113                 return RET_SYN;
114             amt = atoi(p);
115             if (amt > 100)
116                 amt = 100;
117             if (amt < 0)
118                 amt = 0;
119             if (sect.sct_own != 0)
120                 resnoise(&sect, 1, "Oil content", (int)sect.sct_oil, amt);
121             sect.sct_oil = (u_char)amt;
122             putsect(&sect);
123         }
124         break;
125     case 'f':
126         if (!snxtsct(&nstr, player->argp[2]))
127             return RET_SYN;
128         while (nxtsct(&nstr, &sect) > 0) {
129             if (!(p = getstarg(player->argp[3], "What value : ", buf)) ||
130                 (*p == '\0'))
131                 return RET_SYN;
132             amt = atoi(p);
133             if (amt > 100)
134                 amt = 100;
135             if (amt < 0)
136                 amt = 0;
137             if (sect.sct_own != 0)
138                 resnoise(&sect, 1, "Fertility content",
139                          (int)sect.sct_fertil, amt);
140             sect.sct_fertil = (u_char)amt;
141             putsect(&sect);
142         }
143         break;
144     case 'u':
145         if (!snxtsct(&nstr, player->argp[2]))
146             return RET_SYN;
147         while (nxtsct(&nstr, &sect) > 0) {
148             if (!(p = getstarg(player->argp[3], "What value : ", buf)) ||
149                 (*p == '\0'))
150                 return RET_SYN;
151             amt = atoi(p);
152             if (amt > 100)
153                 amt = 100;
154             if (amt < 0)
155                 amt = 0;
156             if (sect.sct_own != 0)
157                 resnoise(&sect, 1, "Uranium content",
158                          (int)sect.sct_uran, amt);
159             sect.sct_uran = (u_char)amt;
160             putsect(&sect);
161         }
162         break;
163     default:
164         pr("huh?\n");
165         return RET_SYN;
166     }
167     return RET_OK;
168 }