|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 3078 (0xc06)
Types: TextFile
Names: »retrieve.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Galaxy/src/retrieve.c«
/*
* %W% (mrdch&amnnon) %G%
*/
# include "header"
/*
* This function enables recovering from real stupid typing
* mistakes. It could happen that when giving a command
* involving money, too many '000...' will be typed.
* Retrieving that money ( or part of it ) is made possible.
* To avoid as much as possible the influence of such command
* on the tactics one employs, it is NOT general, and it costs
* some percentenge of the money asked to be retrieved.
*/
# define PERC_LOST 15
retrieve (s)
char *s;
{
planet * pp;
int i,
money;
double d;
skipwhite (s);
money = atoi (s);
assert_number (money);
skipword (s);
skipwhite (s);
switch (*s++) {
case 'f': /* food */
assert_end (s);
if (food[player] < money) {
say ("But you don't have that much there, sir!!!");
return;
}
i = count_popul (player) - count_class (player, CITI);
i = i / FEED_RATIO; /* that much they consume */
money -= i;
if (money <= 0) {
say ("This much was consumed already, sir.");
return;
}
food[player] -= money;
d = (double) money * ((double) PERC_LOST + (rand () % 5)) / 100.;
money -= (int) d;
break;
case 't': /* trade */
assert_end (s);
if (trade[player] < money) {
say ("But you don't have that much there, sir!!!");
return;
}
trade[player] -= money;
d = (double) money * ((double) PERC_LOST + (rand () % 5)) / 100.;
money -= (int) d;
break;
case 's': /* ships */
pp = getpl (s); /* get planet id */
assert_end (s);
assert_player (pp); /* verify existence + owner */
if (pp -> to_build[BUILD_MONEY] < money) {
say ("But you don't have that much there, sir!!!");
return;
}
pp -> to_build[BUILD_MONEY] -= money;
d = (double) money * ((double) PERC_LOST + (rand () % 5)) / 100.;
money -= (int) d;
break;
case 'b': /* blackout */
pp = getpl (s); /* get planet id */
assert_end (s);
assert_player (pp); /* verify existence + owner */
if (pp -> secur < money) {
say ("But you don't have that much there, sir!!!");
return;
}
pp -> secur -= money;
d = (double) money * ((double) PERC_LOST + (rand () % 5)) / 100.;
money -= (int) d;
break;
default:
say ("Source of retrivel is not clear, sir.");
return;
}
if (money == 0) {
say ("Sorry sir. Couldn't get anything out of it.");
return;
}
teller[player] += money;
say ("Menaged to retrieve only %d Tellers, sir.", money);
}