home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / vmsspace / part02 < prev    next >
Encoding:
Internet Message Format  |  1993-06-06  |  38.0 KB

  1. Path: uunet!mcsun!chsun!pega!dr_who
  2. From: dr_who@pegasus.ch (Sysop of PEGASUS)
  3. Newsgroups: vmsnet.sources.games
  4. Subject: SPCEMP.C   Part 02/06
  5. Message-ID: <1993Jun7.093029.123@pegasus.ch>
  6. Date: 7 Jun 93 09:30:29 +0200
  7. Organization: Pegasus BBS, Switzerland
  8. Lines: 1289
  9. Xref: uunet vmsnet.sources.games:735
  10.  
  11. ----> START OF PART 2 <----
  12.  
  13. /********************************************************************/
  14. check_new()
  15. {
  16. FILE   *fp;
  17. char   ostring[80];
  18. char   s[90];
  19. time_t current_time;
  20. double diffsec;
  21. long   newmoves;
  22. long   diffhours;
  23.  
  24.     get_username(player[pn].player);
  25.     get_username(username);
  26.     if(check_player(player[pn].player)==TRUE)
  27.       get_datas(pn);
  28.  
  29.         if((check_player(player[pn].player)==TRUE)&&((player[pn].governp > 0) || (player[pn].orep > 0)))
  30.       {
  31.       current_time = time (¤t_time);
  32.       diffsec      = difftime(current_time,player[pn].last_time);
  33.       diffhours    = diffsec/(60*60);
  34.  
  35.       if(diffhours>1000)                    /* in case of a corrupt datafile */
  36.         diffhours=21;
  37.  
  38.       newmoves     = diffhours/4;
  39.       player[pn].moves=player[pn].moves+newmoves;
  40.  
  41.       printf("\nWelcome back, %s...\n\n",player[pn].player);
  42.  
  43.       if(diffhours>1)
  44.         printf("\n You did not play for %d hours. ( You'll get 1 move for every 4 hours )\n",diffhours); 
  45.       if(diffhours>((24*3)-1))
  46.         {
  47.         printf("\n You lost your protection because you did not play for more than 3 days.\n\n");
  48.         player[pn].protection=0;
  49.         }
  50.       if (player[pn].moves==0)
  51.         {
  52.         printf("\n Sorry you have no moves left today. \n\n");
  53.         printf("Do you want to see the Scores ? (Y/n) ");
  54.         gets(ostring);
  55.           if (toupper(ostring[0])!='N')  
  56.             display_users();
  57.         press_return();
  58.         bye();
  59.         }
  60.       if ((player[pn].moves>25)&&(player[pn].played_moves<=10))
  61.         {
  62.         printf("\n Sorry there is a maximum of 25 moves a day.\n");
  63.         player[pn].moves=25;
  64.         }
  65.       if ((player[pn].moves>10)&&(player[pn].played_moves>10))
  66.         {
  67.         printf("\n Sorry there is a maximum of 10 moves a day.\n");
  68.         player[pn].moves=10;
  69.         }
  70.       if (newmoves>0)
  71.         printf("\n You get %d new moves. \n",newmoves);
  72.       if (player[pn].moves>0)
  73.         {
  74.         printf("\n Total moves left:%d \n",player[pn].moves);
  75.         news(999,"");
  76.         }
  77.  
  78.       player[pn].last_time = time (&player[pn].last_time);
  79.       put_datas(pn);
  80.       }
  81.         else
  82.       new_user();
  83. }
  84.  
  85. /********************************************************************/
  86. new_user()
  87. {
  88. FILE   *fp;
  89. char   ostring[80];
  90.  
  91. printf("\nWell...  Here you are.  Just another new emperor with a hoard of cash, some\n");
  92.  
  93. printf("food, and the massive population your father left you on these three measly\n");
  94. printf("planets.  What are you waiting for?  Start buying some weapons!  Do what\n");
  95. printf("nobody in your family has done before!  CONQUER!  DESTROY!  YOU can rule\n");
  96. printf("the universe if you TRY! \n\n");
  97. news(50,"");
  98. get_stddatas();
  99. put_datas(pn);
  100. printf("Just a little question : What terminal(emulation) do you use ?\n");
  101. printf("0=ASCII 1=DEC-ANSI(default) 2=IBM-ANSI : ");
  102. gets(ostring);
  103. sscanf(ostring,"%d",&player[pn].terminal);
  104. points(1);
  105. sprintf(ostring,"SPCEMP_PLAYERS:MSG_%s.TXT",player[pn].player);
  106. fp=fopen(ostring,"w");
  107. fprintf(fp,"%s\n",welcometxt);
  108. fclose(fp);
  109.  
  110. player[pn].race=get_race();
  111.  
  112. }
  113.  
  114. /********************************************************************/
  115. get_tradedatas()
  116. {
  117. FILE *fp;
  118.  
  119. char ostring[80];
  120.  
  121. sprintf(ostring,"SPCEMP_PLAYERS:%s.trade",player[pn].player);
  122. if (check_file(ostring)==FALSE)
  123.     return;
  124.  
  125. fp=fopen(ostring,"r");
  126.  
  127. fgets(ostring,60,fp);
  128. sscanf(ostring,"%s",&dummy);
  129. fgets(ostring,60,fp);
  130. sscanf(ostring,"%d",&textiles);
  131. fgets(ostring,60,fp);
  132. sscanf(ostring,"%d",&minerals);
  133. fgets(ostring,60,fp);
  134. sscanf(ostring,"%d",&aloys);
  135. fgets(ostring,60,fp);
  136. sscanf(ostring,"%d",&machines);
  137. fgets(ostring,60,fp);
  138. sscanf(ostring,"%d",&computers);
  139. fgets(ostring,60,fp);
  140. sscanf(ostring,"%d",&silver);
  141. fgets(ostring,60,fp);
  142. sscanf(ostring,"%d",&gems);
  143.  
  144. fclose(fp);
  145. }
  146.  
  147.  
  148. /********************************************************************/
  149. put_tradedatas()
  150. {
  151. FILE *fp;
  152. char ostring[80];
  153.  
  154. points(1);
  155.  
  156. sprintf(ostring,"SPCEMP_PLAYERS:%s.trade",player[pn].player);
  157. delete(ostring);
  158. fp=fopen(ostring,"w");
  159.  
  160. fprintf(fp,"%d\n",file_ver);
  161. fprintf(fp,"%d\n",textiles);
  162. fprintf(fp,"%d\n",minerals);
  163. fprintf(fp,"%d\n",aloys);
  164. fprintf(fp,"%d\n",machines);
  165. fprintf(fp,"%d\n",computers);
  166. fprintf(fp,"%d\n",silver);
  167. fprintf(fp,"%d\n",gems);
  168.  
  169. fclose(fp);
  170. }
  171.  
  172. /********************************************************************/
  173. /* add_uridium()                 Add a player to the uridium throne */
  174. /********************************************************************/
  175. add_uridium(char *uridium_player)
  176. {
  177. FILE *fp;
  178.  
  179.  if(strcmp(lord_name,"Nobody")==0)
  180.    strcpy(lord_name,uridium_player);
  181.   else
  182.    sprintf(lord_name,"%s %s",lord_name,uridium_player);
  183.  lord_days=0;
  184.  lord_count++;
  185.  if(check_file("SPCEMP:EMPIRE.DAT")==TRUE)
  186.    delete_file("SPCEMP:EMPIRE.DAT");
  187.  
  188.  fp=fopen("SPCEMP:EMPIRE.DAT","w");
  189.    fprintf(fp,"%s\n",date);
  190.    fprintf(fp,"%d\n",lord_count);
  191.    fprintf(fp,"%d\n",lord_days);
  192.    fprintf(fp,"%s\n",lord_name);
  193.  fclose(fp);
  194. }
  195.  
  196. /********************************************************************/
  197. /* rem_uridium()              Remove a player to the uridium throne */
  198. /********************************************************************/
  199. rem_uridium(char *uridium_player)
  200. {
  201. char old_players[12][6]="";
  202. FILE *fp;
  203. int x=0;
  204.  
  205.  for(x=1;x<7;x++)
  206.    strcpy(old_players[x]," ");
  207.  sscanf(lord_name,"%s %s %s %s %s %s",&old_players[1],&old_players[2],&old_players[3],&old_players[4],&old_players[5],&old_players[6]);
  208.  x=0;
  209.  for(x=1;x<7;x++)
  210.   {
  211.    if(strcmp(uridium_player,old_players[x])==0)
  212.      strcpy(old_players[x]," ");
  213.   }
  214.  strcpy(lord_name," ");
  215.  sprintf(lord_name,"%s %s %s %s %s %s",&old_players[1],&old_players[2],&old_players[3],&old_players[4],&old_players[5],&old_players[6]);
  216.  lord_days=0;
  217.  lord_count--;
  218.  if(lord_count==0)
  219.    strcpy(lord_name,"Nobody");
  220.  if(check_file("SPCEMP:EMPIRE.DAT")==TRUE)
  221.    delete_file("SPCEMP:EMPIRE.DAT");
  222.  fp=fopen("SPCEMP:EMPIRE.DAT","w");
  223.    fprintf(fp,"%s\n",date);
  224.    fprintf(fp,"%d\n",lord_count);
  225.    fprintf(fp,"%d\n",lord_days);
  226.    fprintf(fp,"%s\n",lord_name);
  227.  fclose(fp);
  228. }
  229.  
  230.  
  231. /********************************************************************/
  232. /* win_uridium()                            A player win the game */
  233. /********************************************************************/
  234. win_uridium()
  235. {
  236. char ostring[80],zstring[80];
  237. FILE *fp;
  238.  
  239.  /* Get the score */
  240.  strcpy(player[epn].player,lord_name);
  241.  get_datas(epn);
  242.  sprintf(zstring,"SPCEMP:HIGH.SCORES");
  243.  sprintf(ostring,"%s wins the game!   %d planets   %d points",lord_name,(player[epn].orep+player[epn].foodp+player[epn].defensep+player[epn].tradep+player[epn].tourismp+player[epn].governp),player[epn].score);
  244.  optlog(ostring,zstring);
  245.  
  246.  printf("%s\n",ostring);
  247.  printf("Space Empire will be reseted...\n");
  248.  
  249.  /* Clear EMPIRE.DAT */
  250.  lord_days=0;
  251.  lord_count=0;
  252.  strcpy(lord_name,"Nobody");
  253.  if(check_file("SPCEMP:EMPIRE.DAT")==TRUE)
  254.    delete_file("SPCEMP:EMPIRE.DAT");
  255.  fp=fopen("SPCEMP:EMPIRE.DAT","w");
  256.    fprintf(fp,"%s\n",date);
  257.    fprintf(fp,"%d\n",lord_count);
  258.    fprintf(fp,"%d\n",lord_days);
  259.    fprintf(fp,"%s\n",lord_name);
  260.  fclose(fp);
  261.  
  262.  /* Delete all user-files */
  263.  system("DELETE SPCEMP_PLAYERS:*.*;*");
  264.  
  265.  /* Delete & init Score-file */
  266.  if(check_file("SPCEMP:PLAYERS.SCORES")==TRUE)
  267.    system("DELETE SPCEMP:PLAYERS.SCORES;*");
  268.  fp=fopen("SPCEMP:PLAYERS.SCORES","w");
  269.    fprintf(fp,"-+-"); 
  270.  fclose(fp);
  271.  
  272.  /* Delete Lottery-file */
  273.  system("DELETE SPCEMP:LOTTERY.*;*");
  274. }
  275.  
  276. /********************************************************************/
  277. /********************************************************************/
  278. /********************************************************************/
  279. get_datas(int nr)
  280. {
  281. FILE *fp;
  282.  
  283. char ostring[80];
  284.  
  285. sprintf(ostring,"SPCEMP_PLAYERS:%s.sdat",player[nr].player);
  286.  
  287. fp=fopen(ostring,"r");
  288. fread(&player[nr],sizeof(player[nr]),1,fp);
  289. fclose(fp);
  290.  
  291. }
  292.  
  293. /********************************************************************/
  294. put_datas(int nr)
  295. {
  296. FILE *fp;
  297. char ostring[80];
  298.  
  299. e_points(1);
  300. points(1);
  301.  
  302. if((player[nr].score>=uridium_limit)&&(player[nr].space_lord==FALSE))
  303.  {
  304.   if(lord_count<uridium_turn)
  305.    {
  306.     player[nr].space_lord=TRUE;
  307.     printf("%s is now sitting at the uridium throne.\n",player[nr].player);
  308.     add_uridium(player[nr].player);
  309.    }
  310.    else
  311.     printf("SORRY, no more place for sitting at the uridium throne.\n");
  312.  }
  313. if((player[nr].score<uridium_limit)&&(player[nr].space_lord==TRUE)) /* user lost throne */
  314.  {
  315.   player[nr].space_lord=FALSE;
  316.   printf("%s lost the place at the uridium throne.\n",player[nr].player);
  317.   rem_uridium(player[nr].player);
  318.  }
  319.  
  320. sprintf(ostring,"SPCEMP_PLAYERS:%s.sdat",player[nr].player);
  321. delete(ostring);
  322.  
  323. fp=fopen(ostring,"w");
  324. fwrite(&player[nr],sizeof(player[nr]),1,fp);
  325. fclose(fp);
  326.  
  327. }
  328.  
  329. /********************************************************************/
  330. get_stddatas()
  331. {
  332. player[pn].last_time = time (&player[pn].last_time);
  333. player[pn].credits=100000;
  334. player[pn].acredits=0;
  335. player[pn].food=6000;
  336. player[pn].protection=original_prot;
  337. player[pn].health=0;
  338.  
  339. player[pn].population=500;
  340.  
  341. player[pn].orep=2;
  342. player[pn].foodp=1;
  343. player[pn].defensep=0;
  344. player[pn].tradep=0;
  345. player[pn].tourismp=0;
  346. player[pn].supplyp=0;
  347. player[pn].governp=1;
  348.  
  349. player[pn].harmony=0;
  350. player[pn].morale=0;
  351. player[pn].soldiers=0;
  352. player[pn].defense=0;
  353. player[pn].fighters=0;
  354. player[pn].ywings=0;
  355. player[pn].starfighters=0;
  356. player[pn].deathstars=0;
  357. player[pn].carriers=0;
  358. player[pn].cruisers=0;
  359. player[pn].missiledefense=10;
  360.  
  361. player[pn].pilots=0;
  362. player[pn].freighters=0;
  363.  
  364. player[pn].agents=0;
  365. player[pn].space_lord=FALSE;
  366. player[pn].team_num=0;
  367. player[pn].team_apply=0;
  368. player[pn].team_defense=0;
  369. player[pn].team_soldiers=0;
  370. player[pn].team_cruisers=0;
  371.  
  372. player[pn].score=0;
  373. player[pn].score_modifier=0;
  374. player[pn].moves=new_moves;
  375. player[pn].played_moves=0;
  376.  
  377. player[pn].tax=10;
  378.  
  379. strcpy(player[pn].last_game,date);
  380.  
  381.  
  382. }
  383.  
  384. /********************************************************************/
  385. show_stats(int pn)
  386. {
  387.  cls();
  388.  if(player[pn].space_lord==TRUE)
  389.    printf("%s%s%sLord ",ansi(TT_BACKCYAN),ansi(TT_FORWHITE),ansi(TT_BOLD));
  390.   else
  391.    printf("%s%s%s",ansi(TT_BACKCYAN),ansi(TT_FORWHITE),ansi(TT_BOLD));
  392.  printf("%s's Empire    Score : %ld   Turns : %d/%d   Credits : %d mcr/%d mcr %s\n\n",player[pn].player,player[pn].score,player[pn].moves,player[pn].played_moves,player[pn].credits/1000000,player[pn].acredits/1000000,ansi(TT_RESET));
  393.  printf("Population:  %d Million (%s)   Health Status: %s\n",player[pn].population,harmony_level(2,player[pn].harmony),harmony_level(3,player[pn].health));
  394.  printf("Technology:  %s   (%s)\n",harmony_level(4,player[pn].tech_level),race[player[pn].race].name);
  395.  printf("Food      :  %ld Kilotons\n",player[pn].food);
  396.  printf("Military  :  [Troops=%ld] [X-Wings=%ld] [Carriers=%ld] [Agents=%ld]\n",player[pn].soldiers,player[pn].fighters,player[pn].carriers,player[pn].agents);
  397.  printf("          :  [Def. Stations=%ld] ",player[pn].defense);
  398.  if(player[pn].tech_level>4)
  399.     printf("[Y-Wings=%ld] ",player[pn].ywings);
  400.  if(player[pn].tech_level>0)
  401.     printf("[Cruisers=%ld] \n",player[pn].cruisers);
  402.  else  printf("\n");
  403.  
  404.  if(player[pn].tech_level>8)
  405.     printf("          :  [Missile Defense=%ld] \n",player[pn].missiledefense);
  406.  
  407.  if(player[pn].tech_level>70-(race[player[pn].race].knowledge*3))
  408.     printf("          :  [Imperial Starfighters=%ld] ",player[pn].starfighters);
  409.  if(player[pn].tech_level>80-(race[player[pn].race].knowledge*3))
  410.     printf("[Death-Stars=%ld]\n",player[pn].deathstars);
  411.  else
  412.     printf("\n");
  413.  
  414.  
  415.  printf("Planets   :  [Agricultural=%ld] [Mining=%ld] [Defense=%ld] \n",player[pn].foodp,player[pn].orep,player[pn].defensep);
  416.  printf("          :  [Trade=%ld] [Tourism=%ld] [Governing=%ld]\n",player[pn].tradep,player[pn].tourismp,player[pn].governp);
  417.  printf("Trade     :  [Pilots=%ld] [freighters=%ld] \n",player[pn].pilots,player[pn].freighters);
  418.  if(player[pn].protection>0) 
  419.    printf("\nYou have %d turn(s) of protection remaining.\n",player[pn].protection);
  420.  printf("\n");
  421. }
  422.  
  423. /********************************************************************/
  424. earning(int pn)
  425. {
  426. long taxes,mearned,tradecapacity,earned,traded,fgrown,d_built,f_built,c_built,y_built,intrest;
  427.  
  428. /* Normal earning stage */
  429.  
  430.     pop_increase=1;
  431.     taxes=player[pn].population*10*player[pn].tax;
  432.     mearned=player[pn].orep*22000;
  433.     earned=(player[pn].tourismp*50000);
  434.     if ((earned>(player[pn].population*1000))&&(player[pn].harmony<0))
  435.         earned=0;
  436.     if ((earned>(player[pn].population*1000))&&(player[pn].harmony>0))
  437.         earned=player[pn].tourismp*21000;
  438.     if (earned<0)
  439.         earned=0;
  440.     if (player[pn].harmony<0)
  441.         earned=0;
  442.     traded=player[pn].tradep*17000;
  443.     if (player[pn].freighters>player[pn].pilots)
  444.         tradecapacity=player[pn].pilots;
  445.     if (player[pn].pilots>player[pn].freighters)
  446.         tradecapacity=player[pn].freighters;
  447.     if (player[pn].pilots==player[pn].freighters)
  448.         tradecapacity=player[pn].freighters;
  449.     if (tradecapacity>(player[pn].tradep*10))
  450.         tradecapacity=player[pn].tradep*10;
  451.     if (player[pn].tradep>0)
  452.         traded=traded+(tradecapacity*1000);
  453.     if (player[pn].acredits>10000000)
  454.       intrest=player[pn].acredits*zins1;
  455.          else
  456.       if (player[pn].acredits>1000000)
  457.         intrest=player[pn].acredits*zins2;
  458.            else
  459.         intrest=player[pn].acredits*zins3;
  460.     player[pn].acredits=player[pn].acredits+intrest;
  461.     fgrown=player[pn].foodp*4000;
  462.     d_built=player[pn].defensep*2;
  463.     f_built=player[pn].defensep*2;
  464.     c_built=player[pn].defensep;
  465.     y_built=player[pn].defensep*1.5;
  466.     player[pn].credits=player[pn].credits+traded;
  467.     player[pn].credits=player[pn].credits+earned;
  468.     player[pn].credits=player[pn].credits+mearned;
  469.     player[pn].credits=player[pn].credits+taxes;
  470.     player[pn].food=   player[pn].food+fgrown;
  471.     player[pn].defense =player[pn].defense+d_built;
  472.     player[pn].fighters=player[pn].fighters+f_built;
  473.     player[pn].cruisers=player[pn].cruisers+c_built;
  474.     player[pn].ywings  =player[pn].ywings+y_built;
  475.     sol_work=0;
  476.     cov_work=0;
  477.  
  478.     show_stats(pn);
  479.  
  480.     printf(" You earned: %7ld cr. taxes /",taxes);
  481.     printf(" %7ld cr. mined ",mearned);     
  482.     if (player[pn].tradep>0)
  483.         printf("/ %7ld cr. traded \n",traded);     
  484.     else printf("\n");
  485.     if ((player[pn].tourismp>0)&&(earned>0))
  486.         printf("             %7ld cr. throug tourism. \n",earned);     
  487.     if ((player[pn].tourismp>0)&&(earned==0))
  488.         printf("             The people are in a bad mood they dont want to travel around ...\n");
  489.     if (player[pn].acredits>0)
  490.         printf("             %7ld cr. intrest and \n",intrest);     
  491.     printf("             %7ld kilotons of food were grown. \n\n",fgrown);
  492.  
  493.     if(player[pn].defensep>0)
  494.         {
  495.             printf(" Defense industry turns out : ");
  496.             printf(" %d x-wings / ",f_built);
  497.         if (player[pn].tech_level>4)
  498.             printf(" %d y-wings \n ",y_built); 
  499.         else printf("\n");    
  500.         printf("                              %d defense stations /",d_built);         
  501.         if (player[pn].tech_level>0)
  502.             printf(" %d cruisers \n",c_built);     
  503.         else printf("\n");    
  504.         printf("\n");    
  505.         }
  506. }
  507.  
  508. /********************************************************************/
  509. ruling_stage(int pn)
  510. {
  511. unsigned long money;
  512. unsigned long m2;
  513. unsigned long m3;
  514. char ochar[80];
  515. char ostring[80];
  516. unsigned long foodgive;
  517.  
  518. money=(player[pn].orep+player[pn].foodp+player[pn].defensep+player[pn].tradep+player[pn].tourismp)*10000;
  519. money=money+(player[pn].governp*20000);
  520. m3=(you_give("planets",money));
  521. player[pn].credits=(player[pn].credits-m3);
  522.  
  523. if(m3<money) 
  524.     {
  525.     player[pn].harmony = player[pn].harmony - 2;
  526.     }
  527.  
  528. if(m3*2<money) 
  529.     {
  530.     player[pn].harmony = player[pn].harmony - 1;
  531.     player[pn].morale = player[pn].morale - 1;
  532.     }
  533.  
  534. if(m3*8<money) 
  535.     {
  536.     player[pn].harmony = player[pn].harmony - 10;
  537.     player[pn].morale = player[pn].morale - 3;
  538.     }
  539.  
  540. if(m3>money*2) 
  541.     {
  542.     player[pn].harmony = player[pn].harmony + 1;
  543.     player[pn].morale = player[pn].morale + 1;
  544.     }
  545.  
  546. if((2*(player[pn].governp*25))<(player[pn].foodp+player[pn].defensep+player[pn].orep+player[pn].tradep+player[pn].tourismp))  
  547.     {
  548.     player[pn].harmony = player[pn].harmony - 2;
  549.     }
  550.  
  551. money=((player[pn].cruisers)*10)+((player[pn].soldiers)*2)+((player[pn].fighters)*5)+((player[pn].carriers)*4);
  552. money=money*15;
  553. if(money>0) 
  554.     { 
  555.     m3=(you_give("armed forces",money));
  556.     player[pn].credits=(player[pn].credits-m3);
  557.     if(m3<money) sol_work=1;
  558.     if((m3*2)<=money) player[pn].morale=player[pn].morale-1;
  559.     if(m3>=money*3) player[pn].morale=player[pn].morale+1;
  560.     }
  561.  
  562. money=((player[pn].agents)*1000);
  563. if(money>0) 
  564.     {
  565.     m3=(you_give("covert agents",money));
  566.     player[pn].credits=(player[pn].credits-m3);
  567.     if(m3<money) cov_work=1;
  568.     }
  569.  
  570. do
  571.  {
  572.   do
  573.    {
  574.     printf("\nYou have %ld kilotons of food. ",player[pn].food);
  575.     printf("(S)ell, (B)uy, or [C]ontinue? ");
  576.     gets(ochar);
  577.  
  578.     ochar[0]=toupper(ochar[0]);
  579.   
  580.     switch(ochar[0]) {
  581.     case 'S': printf("");
  582.           do
  583.            {
  584.             printf("Sell how many kilotons at 3 credits each? (Max %ld) ",player[pn].food);
  585.             gets(ostring);
  586.             sscanf(ostring,"%ld",&m2);
  587.            }
  588.           while(m2>player[pn].food);
  589.           if(m2>0) 
  590.           {
  591.             player[pn].credits = player[pn].credits + (3*m2);
  592.             player[pn].food = player[pn].food - m2;
  593.           }
  594.           break;
  595.     case 'B': printf("");
  596.           do
  597.            {
  598.             m2=0; if(player[pn].credits>0) m2=(player[pn].credits/4);
  599.             if(m2==0) 
  600.                      { 
  601.               printf("You don't have enough credits to buy any!\n"); 
  602.               break;
  603.                      }
  604.             printf("Buy how many kilotons at 4 credits each? (Max %ld) ",m2);
  605.             gets(ostring);
  606.             sscanf(ostring,"%ld",&m2);
  607.             if((m2*p_food)>player[pn].credits) 
  608.               printf("You don't have that much money!\n");
  609.            }
  610.           while((m2*4)>player[pn].credits);
  611.           player[pn].food = player[pn].food + m2;
  612.           player[pn].credits = player[pn].credits - (4*m2);
  613.           if (player[pn].credits<0)
  614.             player[pn].credits=0;
  615.           break;
  616.     default : 
  617.           ochar[0]='C';
  618.           break;
  619.     }
  620.  
  621.    }
  622.   while(ochar[0]!='C');
  623.   money=(player[pn].population)*(20-race[player[pn].race].dexterity);    /*RACE*/
  624.   m2 = money;
  625.   if(m2>player[pn].food) m2=player[pn].food;
  626.   printf("\nYour hungry mobs require %ld kilotons of food.  You give: [%ld] ",money,m2);
  627.   strcpy(ostring,"");
  628.   gets(ostring);
  629.   if(ostring[0]!=0) 
  630.      sscanf(ostring,"%ld",&foodgive);
  631.   else 
  632.      foodgive = m2;
  633.   if(foodgive>player[pn].food) 
  634.    {
  635.     printf("You don't have that much!\n");
  636.    }
  637.  }
  638. while(foodgive>player[pn].food);
  639.  
  640. player[pn].food = player[pn].food - foodgive;
  641. if(foodgive*2<=money) player[pn].harmony = player[pn].harmony - 1;
  642. if(foodgive*4<=money) player[pn].harmony = player[pn].harmony - 1;
  643. if(foodgive>=money*2) player[pn].harmony = player[pn].harmony + 1;
  644. if(foodgive>=money*4) player[pn].harmony = player[pn].harmony + 1;
  645.  
  646.  
  647. /* health research */
  648.  
  649. player[pn].harmony=player[pn].harmony+player[pn].health_radioactivity;
  650.  
  651. money=player[pn].population*(30-race[player[pn].race].perception);  /*RACE*/
  652. m3=(you_give("health research",money));
  653. player[pn].credits=(player[pn].credits-m3);
  654. if(m3<money)      
  655.     player[pn].health=player[pn].health-1;
  656. if((m3*2)<=money) 
  657.     player[pn].health=player[pn].health+1;
  658. if(m3>=money*3)   
  659.     player[pn].health=player[pn].health+2;
  660.  
  661.  
  662. /* technical research */
  663.  
  664. money=money+(player[pn].governp*(500*(30-(race[player[pn].race].knowledge+race[player[pn].race].technical))));  /*RACE*/
  665.  
  666. m3=(you_give("Technology research",money));
  667. player[pn].credits=(player[pn].credits-m3);
  668. if(m3==0)         
  669.     player[pn].tech_level=player[pn].tech_level-2;
  670. if(m3<money)      
  671.     player[pn].tech_level=player[pn].tech_level-1;
  672. if((m3*2)<=money) 
  673.     player[pn].tech_level=player[pn].tech_level+1;
  674. if(m3>=money*3)   
  675.     player[pn].tech_level=player[pn].tech_level+2;
  676.  
  677. }
  678.  
  679. /***********************************************************************/
  680. long you_give(mstring,mneed)
  681. char mstring[80];
  682. unsigned long mneed;
  683. {
  684. char string[80],ostring[80];
  685. unsigned long tmpn;
  686. unsigned long mavailable;
  687.  
  688. mavailable=mneed;
  689. if(player[pn].credits<mneed) mavailable=player[pn].credits;
  690.  
  691. getmoney:
  692. do
  693.  {
  694.   printf("Your %s require(s) %ld credits. You give: [%ld] ",mstring,mneed,mavailable);
  695.   gets(ostring);
  696.   sscanf(ostring,"%ld",&tmpn);
  697.   if(ostring[0]==0) tmpn=mavailable;
  698.  
  699.   if(tmpn>player[pn].credits) 
  700.     {
  701.     printf("\nSorry, you only have %ld credits!\n",player[pn].credits);
  702.     }
  703.  }
  704. while(tmpn>player[pn].credits);
  705.  
  706. return tmpn;
  707. printf("\n");
  708. }
  709.  
  710. /********************************************************************/
  711. /********************************************************************/
  712. random_stage(int pn)
  713. {
  714.   int x;
  715.   int x1;
  716.   x = (rnd(100)+1);
  717.  
  718.  
  719.   if( x <= 1 )  /* 2 % chance */
  720.     {
  721.     if( player[pn].governp > 1 )
  722.       {
  723.       printf("A government planet has exploded!\n");
  724.       player[pn].governp -= 1;
  725.       }
  726.     }
  727.   else if( x > 1 && x <= 6 )  /* 5 % chance */
  728.     {
  729.     if(player[pn].credits > 1)
  730.       {
  731.       x1 = player[pn].credits / ( 3 + rnd(4) );
  732.       printf("Space pirates steal %d credits!\n",x1++);
  733.       player[pn].credits -= x1;
  734.       };
  735.     }
  736.   else if( x > 6 && x <= 9 )  /* 3 % chance */
  737.     {
  738.     x1 = player[pn].food / ( 3 + rnd(5) );
  739.     if( x1 > 0 && player[pn].food > 0)
  740.       {
  741.       printf("Rats eat part of your food!\n");
  742.       player[pn].food -= x1;
  743.       };
  744.     }
  745.   else if( x > 9 && x <= 11 ) /* 2 % chance */
  746.     {
  747.     x1 = rnd(10);
  748.     if( x1 > 0 )
  749.       {
  750.       printf("Space exploration yields %d new planet(s)!\n",x1);
  751.       giveplanets(x1);
  752.       }
  753.     else printf("Space exploration finds only dead and uninhabitable planets.\n");
  754.     }
  755.   else if( x > 11 && x <= 13 ) /* 2 % chance */
  756.     {
  757.     x1 = player[pn].population/( player[pn].orep + player[pn].foodp + player[pn].defensep + player[pn].governp);
  758.     printf("Deep Core Drilling has cause massive earthquakes and destroyed a");
  759.     if( player[pn].orep > 0 )
  760.       {
  761.       printf("n ore");
  762.       player[pn].orep--;
  763.       }
  764.     else if( player[pn].foodp > 0)
  765.       {
  766.       printf(" food");
  767.       player[pn].foodp--;
  768.       }
  769.     else if( player[pn].defensep > 0 )
  770.       {
  771.       printf(" defense");
  772.       player[pn].defensep--;
  773.       };
  774.     printf(" planet.\n");
  775.     printf(" %d million people were lost in the disaster.\n",x1);
  776.     player[pn].population -= x1;
  777.     }
  778.  
  779.   /* IF YOUR TECH LEVEL IS TOO LOW : */
  780.  
  781.  
  782.   if((player[pn].tech_level<0)&&(x>13)&&(x<23)&&(player[pn].orep>2)) /* 10 % chance */
  783.       {
  784.       printf("An ore planet has exploded, because of a lack of technology!\n");
  785.       player[pn].orep -= 1;     
  786.       }
  787.  
  788.   if((player[pn].tech_level>1)&&(x>13)&&(x<15)) /* 2 % chance */
  789.       {
  790.       x1=rnd(2);
  791.       player[pn].tech_level = player[pn].tech_level+x1;     
  792.       player[pn].harmony=player[pn].harmony+1;
  793.       printf("Your research institutes have done a good work.\n");
  794.       printf("Your Techlevel is now : %s.\n",harmony_level(4,player[pn].tech_level));
  795.       }
  796.  
  797.  if((player[pn].health<-15)&&(x>13)&&(x<33)) /* 20 % chance */
  798.       {
  799.       x1=rnd(player[pn].population/4);
  800.       printf("There is a new terminal disease. You lost %ld million people !!\n",x1);
  801.       printf("You really need to spend more money into health research !!\n");
  802.       printf("Spend at least twice as much as asked for, to cure your people !!\n");
  803.       player[pn].population=player[pn].population-x1;;     
  804.       }
  805.  
  806. /****** THIS HAS NOTHING TO DO WITH RANDOM THINGS PUR FACTS *********/
  807.  
  808. if(player[pn].health>5) 
  809.     {
  810.     player[pn].harmony=player[pn].harmony+1;
  811.     player[pn].health=player[pn].health-rnd(5);
  812.     player[pn].health_radioactivity=0;
  813.     }
  814. if(player[pn].health<0) 
  815.     {
  816.     printf("Health problems doesn't make the population happy...\n");
  817.     printf("- %d million of your population died on a disease ...\n",(player[pn].population/100)*10);
  818.     if(player[pn].soldiers>0)
  819.         printf("- %d of your soldiers died on a disease ...\n",(player[pn].soldiers/100)*10);
  820.     player[pn].harmony=player[pn].harmony-1;
  821.     player[pn].population=(player[pn].population/100)*90;
  822.     if(player[pn].soldiers>0)
  823.         player[pn].soldiers=(player[pn].soldiers/100)*90;
  824.     printf("\n");
  825.     }
  826.  
  827.  
  828. }
  829.  
  830. /********************************************************************/
  831. /********************************************************************/
  832. /********************************************************************/
  833. trading_menu(int sell)
  834. {
  835.  
  836.  if (player[pn].freighters>player[pn].pilots)
  837.     transport=player[pn].pilots;
  838.  if (player[pn].freighters<player[pn].pilots)
  839.     transport=player[pn].freighters;
  840.  if (player[pn].freighters==player[pn].pilots)
  841.     transport=player[pn].freighters;
  842.  
  843.  transport=transport*500;
  844.  
  845.  if (sell==TRUE)
  846.   printf("\n\nSELL STUFF \n");
  847.  else
  848.   printf("\n\nBUY STUFF \n");
  849.  
  850.  cls();
  851.  printf("#   Item               Price       Owned      could buy    could earn\n");
  852.  printf("----------------------------------------------------------------------\n");
  853.  printf(" 1) Food ...............%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_food,player[pn].food,player[pn].credits/p_food,player[pn].food*p_food);
  854.  printf(" 2) Textiles............%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_textiles,textiles,player[pn].credits/p_textiles,textiles*p_textiles);
  855.  printf(" 3) Minerals............%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_minerals,minerals,player[pn].credits/p_minerals,minerals*p_minerals);
  856.  printf(" 4) Alloys..............%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_aloys,aloys,player[pn].credits/p_aloys,aloys*p_aloys);
  857.  printf(" 5) Machines............%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_machines,machines,player[pn].credits/p_machines,machines*p_machines);
  858.  printf(" 6) Computers...........%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_computers,computers,player[pn].credits/p_computers,computers*p_computers);
  859.  printf(" 7) Silver..............%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_silver,silver,player[pn].credits/p_silver,silver*p_silver);
  860.  printf(" 8) Gems................%3ld cr.  %7ld p.  %7ld p.   %9ld cr.\n",p_gems,gems,player[pn].credits/p_gems,gems*p_gems);
  861.  printf("---------------------------------------------------------------------\n");
  862.  printf("Total Transport capacity        :     %9ld kt.\n",transport);
  863.  printf("Total FREE Transport capacity   :     %9ld kt.\n",transport-usedtransport);
  864.  printf("You have %ld Credits.\n",player[pn].credits);
  865.  
  866. }
  867.  
  868. /********************************************************************/
  869. /********************************************************************/
  870. /********************************************************************/
  871. trading_stage()
  872. {
  873. char ostring[80];
  874. long n=0;
  875. int sell=FALSE;
  876.  
  877. get_tradedatas();
  878. trading_menu(sell);
  879.  
  880. do 
  881. {
  882.  
  883.  if(sell==FALSE)
  884.    printf("Which would you like to buy? [?] for Trade-List [S] for sell ");
  885.   else
  886.    printf("Which would you like to sell? [?] for Trade-List [B] for buy ");
  887.  gets(ostring);
  888.  sscanf(ostring,"%d",&n);
  889.  if(strlen(ostring)<1)
  890.     n=0; 
  891.  
  892.  if((ostring[0]=='s')||ostring[0]=='S')
  893.    if(sell==FALSE)
  894.     {
  895.      sell=TRUE;
  896.      n=255;
  897.      trading_menu(sell);
  898.     }
  899.  if((ostring[0]=='b')||ostring[0]=='B')
  900.    if(sell==TRUE)
  901.     {
  902.      sell=FALSE;
  903.      n=255;
  904.      trading_menu(sell);
  905.     }
  906.  
  907.  if(ostring[0]=='?') 
  908.         trading_menu(sell);
  909.  
  910.  if((n>0)&&(n<9)) 
  911.    if(sell==FALSE)
  912.      {
  913.      trade_buyitem(n);
  914.      n=255;
  915.      }
  916.     else
  917.      {
  918.      trade_sellitem(n);
  919.      n=255;
  920.      }
  921. while (n!=0);
  922.  
  923.  
  924. printf("\n");
  925.  
  926. put_tradedatas();
  927.  
  928. }
  929.  
  930. /********************************************************************/
  931. trade_buyitem(long n)
  932. {
  933. unsigned long price;
  934. unsigned long amount;
  935. unsigned long maxval;
  936. unsigned long val;
  937. char ostring[80];
  938. char astring[80];
  939. unsigned long totalstuff;
  940. unsigned long maxstuff;
  941.  
  942. totalstuff=(player[pn].food+textiles+minerals+aloys+machines+computers+silver+gems);
  943. maxstuff=player[pn].tradep*50000;
  944.  
  945.     switch(n) {
  946.         case 1: price=p_food;
  947.             val=player[pn].food;
  948.             break;
  949.         case 2: price=p_textiles;
  950.             val=textiles;
  951.             break;
  952.         case 3: price=p_minerals;
  953.             val=minerals;
  954.             break;
  955.         case 4: price=p_aloys;
  956.             val=aloys;
  957.             break;
  958.         case 5: price=p_machines;
  959.             val=machines;
  960.             break;
  961.         case 6: price=p_computers;
  962.             val=computers;
  963.             break;
  964.         case 7: price=p_silver;
  965.             val=silver;
  966.             break;
  967.         case 8: price=p_gems;
  968.             val=gems;
  969.             break;
  970.     }
  971.  
  972.     if(price>player[pn].credits) {
  973.         printf("\nYou don't have enough credits to buy even one!\n");
  974.         return;
  975.     }
  976.  
  977.     do
  978.      {
  979.       printf("\n");
  980.       maxval=(player[pn].credits/price);
  981.  
  982.       printf("Max. Stock    :%-8ld kt.\n",maxstuff);
  983.       printf("Free Stock    :%-8ld kt.\n",maxstuff-totalstuff);
  984.       printf("Total in Stock:%-8ld kt.\n",totalstuff);
  985.       printf("Buy how many? Max %ld. [0] :",maxval);
  986.       gets(ostring);
  987.       if(ostring[0]==0) 
  988.         return;
  989.       sscanf(ostring,"%ld",&amount);
  990.       if(strlen(ostring)<1) 
  991.             amount=0;
  992.       if(amount<0) 
  993.         amount=0;
  994.       else if(amount+val>1000000)
  995.         printf("Sorrry, max. stock is 1 mio megatons.\n");
  996.       else if((amount*price)>player[pn].credits) 
  997.         printf("Sorry, the most you can afford is %ld.\n",(player[pn].credits/price));
  998.       else if(amount>transport) 
  999.         printf("Sorry, your transport-capacity is max. %ld.\n",transport);
  1000.       else if(amount>transport-usedtransport) 
  1001.         {
  1002.         printf("Sorry, your transport-capacity is max. %ld.\n",transport-usedtransport);
  1003.         amount=0;
  1004.         }
  1005.       else if(amount+totalstuff>maxstuff)
  1006.         printf("Sorry your stock capacity is max. %ld kilotons\nStill Empty :%ld kt.\n",maxstuff,maxstuff-totalstuff);
  1007.      }
  1008.     while(((amount*price)>player[pn].credits)||(amount<0)||(amount>transport)||(amount+val>1000000)||(amount+totalstuff>maxstuff));
  1009.  
  1010.     player[pn].credits=player[pn].credits-(price*amount);
  1011.  
  1012.     switch(n) {
  1013.         case 1: player[pn].food=player[pn].food+amount;
  1014.             break;
  1015.         case 2: textiles=textiles+amount;
  1016.             break;
  1017.         case 3: minerals=minerals+amount;
  1018.             break;
  1019.         case 4: aloys=aloys+amount;
  1020.             break;
  1021.         case 5: machines=machines+amount;
  1022.             break;
  1023.         case 6: computers=computers+amount;
  1024.             break;
  1025.         case 7: silver=silver+amount;
  1026.             break;
  1027.         case 8: gems=gems+amount;
  1028.             break;
  1029.     }
  1030. usedtransport=usedtransport+amount;
  1031. }
  1032.  
  1033. /********************************************************************/
  1034. trade_sellitem(long n)
  1035. {
  1036. unsigned long price;
  1037. unsigned long amount;
  1038. unsigned long maxval;
  1039. unsigned long ellig;
  1040. char ostring[80];
  1041. char astring[80];
  1042.  
  1043.     switch(n) {
  1044.         case 1: price=p_food;
  1045.             maxval=player[pn].food;
  1046.             break;
  1047.         case 2: price=p_textiles;
  1048.             maxval=textiles;
  1049.             break;
  1050.         case 3: price=p_minerals;
  1051.             maxval=minerals;
  1052.             break;
  1053.         case 4: price=p_aloys;
  1054.             maxval=aloys;
  1055.             break;
  1056.         case 5: price=p_machines;
  1057.             maxval=machines;
  1058.             break;
  1059.         case 6: price=p_computers;
  1060.             maxval=computers;
  1061.             break;
  1062.         case 7: price=p_silver;
  1063.             maxval=silver;
  1064.             break;
  1065.         case 8: price=p_gems;
  1066.             maxval=gems;
  1067.             break;
  1068.     }
  1069.  
  1070.     do
  1071.      {
  1072.       printf("\n");
  1073.       printf("Sell how many? Max %ld. [0] ",maxval);
  1074.       gets(ostring);
  1075.       if(ostring[0]==0) 
  1076.         return;
  1077.       sscanf(ostring,"%ld",&amount);
  1078.       if(strlen(ostring)<1) 
  1079.             amount=0;
  1080.       if(amount<0) 
  1081.         printf("Use the buymenu to buy anything...\n");
  1082.       if(amount>maxval) 
  1083.         printf("Sorry, the most you could sell is %ld. [Transport max.- %ld kt]\n",maxval,transport);
  1084.       if(amount>transport) 
  1085.         printf("Sorry, your transport-capacity is max.- %ld kt.\n",transport);
  1086.       else if(amount>transport-usedtransport) 
  1087.         {
  1088.         printf("Sorry, your transport-capacity is max. %ld.\n",transport-usedtransport);
  1089.         amount=0;
  1090.         }
  1091.      }
  1092.     while((amount<0)||(amount>maxval)||(amount>transport));
  1093.     player[pn].credits=player[pn].credits+(price*amount);
  1094.  
  1095.     switch(n) {
  1096.         case 1: player[pn].food=player[pn].food-amount;
  1097.             break;
  1098.         case 2: textiles=textiles-amount;
  1099.             break;
  1100.         case 3: minerals=minerals-amount;
  1101.             break;
  1102.         case 4: aloys=aloys-amount;
  1103.             break;
  1104.         case 5: machines=machines-amount;
  1105.             break;
  1106.         case 6: computers=computers-amount;
  1107.             break;
  1108.         case 7: silver=silver-amount;
  1109.             break;
  1110.         case 8: gems=gems-amount;
  1111.             break;
  1112.     }
  1113. usedtransport=usedtransport+amount;
  1114. }
  1115.  
  1116. /********************************************************************/
  1117. /********************************************************************/
  1118. /********************************************************************/
  1119. def_menu()
  1120. {
  1121.  int long max=0;
  1122.  int long def_credits=0;
  1123.  int long actual=0;
  1124.  
  1125.  cls(); 
  1126.  printf("#   Item                #/turn     Actual\n");
  1127.  printf("-------------------------------------------\n");
  1128.  max = (planet_price*player[pn].defensep)/price_soldiers;
  1129.  actual=(int)max*def_soldiers;
  1130.  printf(" 1) Soldier Troop.......%6ld   %6ld\n",max,actual);
  1131.  max = (planet_price*player[pn].defensep)/price_fighters;
  1132.  actual=max*def_fighters;
  1133.  printf(" 2) X-Wing Fighters.....%6ld   %6ld\n",max,actual);
  1134.  max = (planet_price*player[pn].defensep)/price_defense;
  1135.  actual=max*def_defense;
  1136.  printf(" 3) Defense station.....%6ld   %6ld\n",max,actual);
  1137.  max = (planet_price*player[pn].defensep)/price_cruisers;
  1138.  actual=max*def_cruisers;
  1139.  printf(" 4) Heavy cruiser.......%6ld   %6ld\n",max,actual);
  1140.  max = (planet_price*player[pn].defensep)/price_carriers;
  1141.  actual=max*def_carriers;
  1142.  printf(" 5) Carrier.............%6ld   %6ld\n",max,actual);
  1143.  max = (planet_price*player[pn].defensep)/price_pilots;
  1144.  actual=max*def_pilots;
  1145.  printf(" 6) freighter pilot.....%6ld   %6ld\n",max,actual);
  1146.  max = (planet_price*player[pn].defensep)/price_freighters;
  1147.  actual=max*def_freighters;
  1148.  printf(" 7) MK-IV freighter.....%6ld   %6ld\n",max,actual);
  1149.  printf("-------------------------------------------\n");
  1150. }
  1151.  
  1152. /********************************************************************/
  1153. /********************************************************************/
  1154. /********************************************************************/
  1155. def_stage()
  1156. {
  1157.  char ostring[80];
  1158.  long tdef_credits=0;
  1159.  long number=0;
  1160.  float tdef_soldiers=0;
  1161.  float tdef_fighters=0;
  1162.  float tdef_defense=0;
  1163.  float tdef_cruisers=0;
  1164.  float tdef_carriers=0;
  1165.  float tdef_freighters=0;
  1166.  float tdef_pilots=0;
  1167.  
  1168.  printf("\n\nYou own %d defense planet(s).\n",player[pn].defensep);
  1169.  printf("Every planet produce utilities for 10000 Credits.\n",player[pn].defensep);
  1170.  def_menu();
  1171.  do
  1172.   {
  1173.    tdef_soldiers=0;
  1174.    tdef_fighters=0;
  1175.    tdef_defense=0;
  1176.    tdef_cruisers=0;
  1177.    tdef_carriers=0;
  1178.    tdef_freighters=0;
  1179.    tdef_pilots=0;
  1180.    tdef_credits=player[pn].defensep*planet_price;
  1181.  
  1182.    printf("Build how many soldier troops/turn [%d credits avail.] : ",tdef_credits);
  1183.    gets(ostring);
  1184.    number=0;
  1185.    sscanf(ostring,"%d",&number);
  1186.    tdef_credits=player[pn].defensep*planet_price-number*price_soldiers;
  1187.    tdef_soldiers=number*(price_soldiers/planet_price)/player[pn].defensep;
  1188.  
  1189.    printf("Build how many fighters/turn [%d credits avail.] : ",tdef_credits);
  1190.    gets(ostring);
  1191.    number=0;
  1192.    sscanf(ostring,"%d",&number);
  1193.    tdef_credits=player[pn].defensep*planet_price-number*price_fighters;
  1194.    tdef_fighters=(price_fighters*number)/(planet_price*player[pn].defensep);
  1195.  
  1196.   }
  1197.  while(tdef_credits<0);
  1198.  def_soldiers=tdef_soldiers;
  1199.  def_fighters=tdef_fighters;
  1200.  def_defense=tdef_defense;
  1201.  def_cruisers=tdef_cruisers;
  1202.  def_carriers=tdef_carriers;
  1203.  def_freighters=tdef_freighters;
  1204.  def_pilots=tdef_pilots;
  1205.  def_menu();
  1206. }
  1207.  
  1208. /********************************************************************/
  1209. /********************************************************************/
  1210. /********************************************************************/
  1211. buying_menu()
  1212. {
  1213. unsigned long pvalue;
  1214. unsigned long totplanets;
  1215.  
  1216. totplanets=player[pn].orep+player[pn].foodp+player[pn].defensep+player[pn].tradep+player[pn].tourismp;
  1217. pvalue=20000+(500*(totplanets));
  1218. if ((player[pn].credits/pvalue)>50)
  1219.     pvalue=player[pn].credits/50;
  1220.  
  1221.  cls();
  1222.  printf("\n\nGovernment spending\n");
  1223.  printf("#   Item               Price    Owned     max.Afford\n");
  1224.  printf("----------------------------------------------------\n");
  1225.  printf(" 1) Soldier Troop.......%4ld   %6ld         %6ld\n",price_soldiers,player[pn].soldiers,player[pn].credits/price_soldiers);
  1226.  printf(" 2) freighter pilots....%4ld   %6ld         %6ld\n",price_pilots,player[pn].pilots,player[pn].credits/price_pilots);
  1227.  printf(" 3) Intelligence Agent..%4ld   %6ld         %6ld\n",price_agents,player[pn].agents,player[pn].credits/price_agents);
  1228.  printf("\n");
  1229.  printf(" 4) X-Wing Fighters.....%4ld   %6ld         %6ld\n",price_fighters,player[pn].fighters,player[pn].credits/price_fighters);
  1230.  if(player[pn].tech_level>4)
  1231.     printf(" 5) Y-Wing Fighters.....%4ld   %6ld         %6ld\n",price_ywings,player[pn].ywings,player[pn].credits/price_ywings);
  1232.  if(player[pn].tech_level>0)
  1233.      printf(" 6) Heavy cruiser.......%4ld   %6ld         %6ld\n",price_cruisers,player[pn].cruisers,player[pn].credits/price_cruisers);
  1234.  if(player[pn].tech_level>70-(race[player[pn].race].knowledge*3))
  1235.      printf(" 7) Imp.Starfighter....%5ld   %6ld         %6ld\n",price_starfighters,player[pn].starfighters,player[pn].credits/price_starfighters);
  1236.  if(player[pn].tech_level>80-(race[player[pn].race].knowledge*3))
  1237.      printf(" 8) Death-Star......%8ld   %6ld         %6ld\n",price_deathstars,player[pn].deathstars,player[pn].credits/price_deathstars);
  1238.  printf("10) Carrier............%5ld   %6ld         %6ld\n",price_carriers,player[pn].carriers,player[pn].credits/price_carriers);
  1239.  printf("11) MK-IV freighter....%5ld   %6ld         %6ld\n",price_freighters,player[pn].freighters,player[pn].credits/price_freighters);
  1240.  printf("12) Defense station.....%4ld   %6ld         %6ld\n",price_defense,player[pn].defense,player[pn].credits/price_defense);
  1241.  if(player[pn].tech_level>8)
  1242.      printf("13) Missile Defense.....%4ld   %6ld         %6ld\n",price_missiledefense,player[pn].missiledefense,player[pn].credits/price_missiledefense);
  1243.  printf("\n");
  1244.  printf("15) Cultivate planet.%7ld   %6ld         %6ld\n",pvalue,totplanets,player[pn].credits/pvalue);
  1245.  printf("16) Governing planet.%7ld   %6ld         %6ld\n",(pvalue+(pvalue/2)),player[pn].governp,player[pn].credits/(pvalue+(pvalue/2)));
  1246.  printf("----------------------------------------------------\n");
  1247.  printf("You have %ld Credits.\n",player[pn].credits);
  1248. }
  1249.  
  1250.  
  1251. /********************************************************************/
  1252. /********************************************************************/
  1253. /********************************************************************/
  1254. buying_stage()
  1255. {
  1256. char ostring[80];
  1257. long n=0;
  1258.  
  1259. buying_menu();
  1260.  
  1261. do 
  1262. {
  1263.  printf("Which would you like to buy? ");
  1264.  gets(ostring);
  1265.  sscanf(ostring,"%d",&n);
  1266.  if(strlen(ostring)<1)
  1267.     n=0; 
  1268.  if(ostring[0]=='?')
  1269.      buying_menu();
  1270.  if((n>0)&&(n<20)) 
  1271.     {
  1272.     if((n!=13)&&(n!=6)&&(n!=5))
  1273.        buyitem(n);
  1274.     else if((n== 6)&&(player[pn].tech_level>0))
  1275.     buyitem( 6);
  1276.     else if((n== 5)&&(player[pn].tech_level>4))
  1277.     buyitem( 5);
  1278.     else if((n== 7)&&(player[pn].tech_level>70-(race[player[pn].race].knowledge*3)))
  1279.     buyitem( 7);
  1280.     else if((n== 8)&&(player[pn].tech_level>80-(race[player[pn].race].knowledge*3)))
  1281.     buyitem( 8);
  1282.     else if((n==13)&&(player[pn].tech_level>8))
  1283.     buyitem(13);
  1284.     n=255;
  1285.    }
  1286. } while (n!=0);
  1287.  
  1288. printf("\n");
  1289. }
  1290.  
  1291. ----> END OF PART 2 <----
  1292. -- 
  1293.       Internet: Dr_who@pegasus.ch         __
  1294.       Phone   : ++41-71-71 70 42         ///
  1295.       FAX     : ++41-71-71 27 87    __  ///    "I'M THE DOCTORE BECAUSE 
  1296.                                     \\\///      IT'S FUN FUN FUN ! "
  1297.      BBS Phone: ++41-71-71 55 77     \XX/       - TOM BAKER 
  1298.       X.25    : +228 4752 1 2574        
  1299.