|
|
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 s
Length: 1874 (0x752)
Types: TextFile
Names: »set_missle.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Galaxy/src/set_missle.c«
/*
* %W% (mrdch&amnnon) %G%
*/
# include "header"
/*
* In order to set new missiles, several requirements have to be met.
* The planet on which it is to be build must have enough soldiers
* on it.
* The knowledge level on that planet has to be at least equal to the
* level of missiles to be build.
*/
set_missile (s)
char *s;
{
planet * pp;
int j,
factor,
nmissiles,
missile_type,
money;
pp = getpl (s); /* get planet id */
assert_player (pp); /* verify existence + owner */
skipwhite (s);
nmissiles = atoi (s); /* see how many missiles to build */
assert_negative (nmissiles);
if (nmissiles) { /* skip the no. chars */
skipnum (s); /* go to the missile type */
skipwhite (s);
}
else
nmissiles = 1; /* if none given, assume 1 */
if (*s < 'a')
*s += ('a' - 'A'); /* transform type to l.c. */
if ((*s < 'a') || (*s > 'a' + MAXSHIPS - 1)) {
say ("The type of missile is not clear, sir!!");
return;
}
missile_type = *s - 'a';
if (pp -> inventar.know < missile_type) {
say ("The knowledge there is insufficient, sir.");
return;
}
s++;
assert_end (s);
factor = 1;
j = missile_type;
while (j-- > 0)
factor *= 2; /* calculate money for X type missile. */
j = factor * NCREW ;
if (pp -> inventar.popul[FIGT] < j ) {
say ("But sir, no fighters there to carry out this work!!");
return;
}
money = factor * nmissiles * MISSILE_COST;
assert_money (money); /* see if he owns that much */
teller[player] -= money; /* take player's money */
pp -> missile[missile_type] += nmissiles;
say ("The missiles are ready. Prepare detection, sir!!");
}