7 #include "gb/powercmd.h" 12 #include "gb/GB_server.h" 13 #include "gb/buffers.h" 17 #include "gb/shlmisc.h" 19 #include "gb/victory.h" 23 void block(
const command_t &argv, GameObj &g) {
24 player_t Playernum = g.player;
25 governor_t Governor = g.governor;
33 Race = races[Playernum - 1];
35 if (argv.size() == 3 && argv[1] ==
"player") {
36 if (!(p = get_player(argv[2]))) {
37 g.out <<
"No such player.\n";
42 sprintf(buf,
"Race #%d [%s] is a member of ", p, r->name);
43 notify(Playernum, Governor, buf);
44 for (
int i = 1; i <= Num_races; i++) {
45 if (
isset(Blocks[i - 1].pledge, p) &&
isset(Blocks[i - 1].invite, p)) {
46 sprintf(buf,
"%s%d", (dummy_ == 0) ?
" " :
", ", i);
47 notify(Playernum, Governor, buf);
52 g.out <<
"no blocks\n";
57 sprintf(buf,
"Race #%d [%s] has been invited to join ", p, r->name);
58 notify(Playernum, Governor, buf);
59 for (
int i = 1; i <= Num_races; i++) {
60 if (!
isset(Blocks[i - 1].pledge, p) &&
isset(Blocks[i - 1].invite, p)) {
61 sprintf(buf,
"%s%d", (dummy_ == 0) ?
" " :
", ", i);
62 notify(Playernum, Governor, buf);
67 g.out <<
"no blocks\n";
72 sprintf(buf,
"Race #%d [%s] has pledged ", p, r->name);
73 notify(Playernum, Governor, buf);
74 for (
int i = 1; i <= Num_races; i++) {
75 if (
isset(Blocks[i - 1].pledge, p) && !
isset(Blocks[i - 1].invite, p)) {
76 sprintf(buf,
"%s%d", (dummy_ == 0) ?
" " :
", ", i);
77 notify(Playernum, Governor, buf);
82 g.out <<
"no blocks\n";
85 }
else if (argv.size() > 1) {
86 if (!(p = get_player(argv[1]))) {
87 g.out <<
"No such player,\n";
92 dummy[0] = (Blocks[p - 1].invite[0] & Blocks[p - 1].pledge[0]);
93 dummy[1] = (Blocks[p - 1].invite[1] & Blocks[p - 1].pledge[1]);
94 sprintf(buf,
" ========== %s Power Report ==========\n",
96 notify(Playernum, Governor, buf);
97 sprintf(buf,
" %-64.64s\n", Blocks[p - 1].motto);
98 notify(Playernum, Governor, buf);
100 " # Name troops pop money ship plan res " 102 notify(Playernum, Governor, buf);
104 for (
int i = 1; i <= Num_races; i++)
105 if (
isset(dummy, i)) {
108 sprintf(buf,
"%2d %-20.20s ", i, r->name);
109 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].troops
, Race
, i
));
111 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].popn
, Race
, i
));
113 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].money
, Race
, i
));
121 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].resource
, Race
, i
));
123 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].fuel
, Race
, i
));
125 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].destruct
, Race
, i
));
127 sprintf(temp,
" %3d%%\n", Race->translate[i - 1]);
129 notify(Playernum, Governor, buf);
134 sprintf(buf,
" ========== Alliance Blocks as of %s ==========\n",
136 notify(Playernum, Governor, buf);
138 " # Name memb money popn ship sys res fuel " 140 notify(Playernum, Governor, buf);
141 for (
int i = 1; i <= Num_races; i++)
142 if (Blocks[i - 1].VPs) {
143 sprintf(buf,
"%2d %-19.19s%3ld", i, Blocks[i - 1].name,
144 Power_blocks.members[i - 1]);
169 sprintf(temp,
" %3d%%\n", Race->translate[i - 1]);
171 notify(Playernum, Governor, buf);
176 void power(
const command_t &argv, GameObj &g) {
177 player_t Playernum = g.player;
178 governor_t Governor = g.governor;
187 if (argv.size() >= 2) {
188 if (!(p = get_player(argv[1]))) {
189 g.out <<
"No such player,\n";
195 Race = races[Playernum - 1];
198 " ========== Galactic Bloodshed Power Report ==========\n");
199 notify(Playernum, Governor, buf);
203 "%s # Name VP mil civ cash ship pl res " 204 "fuel dest morl VNs\n",
205 argv.size() < 2 ?
"rank" :
"");
208 "%s # Name VP mil civ cash ship pl res " 209 "fuel dest morl know\n",
210 argv.size() < 2 ?
"rank" :
"");
211 notify(Playernum, Governor, buf);
213 if (argv.size() < 2) {
215 for (
int i = 1; i <= Num_races; i++) {
216 p = vic[i - 1].racenum;
218 if (!r->dissolved && Race->translate[p - 1] >= 10) {
220 notify(Playernum, Governor, buf);
226 notify(Playernum, Governor, buf);
232 sprintf(buf,
"%2d ", rank);
235 sprintf(temp,
"[%2d]%s%s%-15.15s %5s", i,
236 isset(Race->allied, i) ?
"+" : (
isset(Race->atwar, i) ?
"-" :
" "),
237 isset(r->allied, Race->Playernum)
239 : (
isset(r->atwar, Race->Playernum) ?
"-" :
" "),
242 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].troops
, Race
, i
));
244 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].popn
, Race
, i
));
246 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].money
, Race
, i
));
248 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].ships_owned
, Race
, i
));
250 sprintf(temp,
"%3s",
Estimate_i((
int)Power[i - 1].planets_owned
, Race
, i
));
252 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].resource
, Race
, i
));
254 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].fuel
, Race
, i
));
256 sprintf(temp,
"%5s",
Estimate_i((
int)Power[i - 1].destruct
, Race
, i
));
261 sprintf(temp,
" %3d\n", Sdata.VN_hitlist[i - 1]);
263 sprintf(temp,
" %3d%%\n", Race->translate[i - 1]);
static void prepare_output_line(racetype *Race, racetype *r, int i, int rank)
void create_victory_list(struct vic vic[MAXPLAYERS])
void block(const command_t &argv, GameObj &g)
void power(const command_t &argv, GameObj &g)
char * Estimate_i(int data, Race *r, int p)