home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / BBSONLIN / MARVEL.ZIP / MARVEL.PAS < prev    next >
Pascal/Delphi Source File  |  1988-12-24  |  51KB  |  1,675 lines

  1. program marvelactionuniverse;
  2.  
  3.  
  4.     {    Please remember after you compile the game, compile your BBS     }
  5.     {    over again with the CODE segment set to to 0D28 and your DATA    }
  6.     {    segment set to 0FDC.  This can be accompilshed my press C for    }
  7.     {    com file and pressing O for CODE and D for DATA.                 }
  8.  
  9.  
  10.  
  11. {$C-} {$V-}
  12. {$I COMMON.PAS}
  13.  
  14. type
  15.   playertype =
  16.     record
  17.       name,pseudo,password,ally,killer : string[30];
  18.       gaspd:string[60];
  19.       status,flights,alliance,plus : integer;
  20.       r,experience,strength,intelligence,gold,luck,dexterity,constitution,
  21.       charisma,weapon,vehicle,shield,damage,bank,attack,power,wins,loses : real;
  22.     end;
  23.  
  24.   opponent =
  25.     record
  26.       name : string[30];
  27.       gold,strength,dexterity,shield,luck,experience,weapon,weapon2,attack,power,vehicle : real;
  28.     end;
  29.  
  30. var
  31.   required          : array[1..28] of real;
  32.   wname,sname       : array[1..25] of string[30];
  33.   cross,strip,temp  : string[50];
  34.   cost,w2,w3        : array[1..25] of real;
  35.   vary,vary2,d,e,rd : real;
  36.   roll,z,opt,x,buy,g: real;
  37.   option            : string[1];
  38.   mess              : array[1..20] of string[85];
  39.   blt               : array[1..4] of string[60];
  40.   infile,outfile    : text;
  41.   messfile          : text;
  42.   opp               : opponent;
  43.   name,password,ugh : string[30];
  44.   ugh2,ugh3         : string[60];
  45.   enemy,a,b,m,j     : integer;
  46.   number,dog,f,y,p  : integer;
  47.   number_of_players : integer;
  48.   number2,verify,okea,gam    : integer;
  49.   trips,tint,spc,amount: integer;
  50.   allied,finder     : boolean;
  51.   play,doga         : boolean;
  52.   uni,live,found,ftn: boolean;
  53.   badchar,mg,fini,next   : boolean;
  54.   partone           : boolean;
  55.   bothover,healall  : boolean;
  56.   player            : array[1..30] of playertype;
  57.   result            : array[1..30] of string[80];
  58.   opty              : char;
  59.   abort,gonado,logit,yaya : boolean;
  60.  
  61.  
  62. function playerattack : real;
  63.   begin
  64.     playerattack:=(vary*player[b].attack*player[b].strength*player[b].dexterity*(random*5+1))/
  65.                   (opp.vehicle*opp.dexterity*opp.luck*vary2);
  66.   end;
  67.  
  68. function playerattack2 : real;
  69.   begin
  70.     playerattack2:=round((vary*player[b].power*player[b].strength*(random*5+1)*(random*5+1))/
  71.                    ((opp.vehicle)*opp.luck*vary2));
  72.   end;
  73.  
  74. function roller : integer;
  75.   begin
  76.     roller:=round(random*3+1);
  77.   end;
  78.  
  79.  
  80. function opponentattack : real;
  81.   begin
  82.     opponentattack:=(vary2*opp.weapon*opp.strength*opp.dexterity*(random*5+1))/
  83.                     ((player[b].vehicle)*player[b].dexterity*player[b].luck*vary);
  84.   end;
  85.  
  86.  
  87. function opponentattack2 : real;
  88.   begin
  89.     opponentattack2:=round((vary2*opp.weapon2*opp.strength*(random*5+1)*((random*5)+1))/
  90.                      ((player[b].vehicle)*player[b].luck*vary));
  91.   end;
  92.  
  93.  
  94. function find1 : real;
  95.   begin
  96.     find1:=w2[round(player[b].weapon)];
  97.   end;
  98.  
  99. function find2 : real;
  100.   begin
  101.     find2:=w3[round(player[b].weapon)];
  102.   end;
  103.  
  104. function supplant : real;
  105.   begin
  106.     supplant:=(random(4)/10+(0.8));
  107.   end;
  108.  
  109. function experience: real;
  110.   begin
  111.     experience:=((opp.vehicle-1+(opp.weapon+opp.weapon2-2)/2)*20+(opp.shield*7.5)+((opp.strength-10)*20)+
  112.     (opp.luck+opp.dexterity-20)*17);
  113.   end;
  114.  
  115. function spin : real;
  116.   begin
  117.     spin:=(random*6+1)+(random*6+1)+(random*6+1);
  118.   end;
  119.  
  120.  
  121. overlay procedure depobank;
  122. var tempbank : real;
  123. begin
  124.   tempbank:=player[b].gold;
  125.   if tempbank<0 then tempbank:=0;
  126.   player[b].gold:=player[b].gold-tempbank;
  127.   player[b].bank:=player[b].bank+tempbank;
  128.   str(player[b].bank:1:0,temp);
  129.   nl;
  130.   ansic(3); print(temp+' dollars are in the bank. ');
  131. end;
  132.  
  133.  
  134. overlay procedure withdrawbank;
  135.   var
  136.     tempbank : real;
  137.   begin
  138.     tempbank:=player[b].bank;
  139.     if tempbank<0 then tempbank:=0;
  140.     player[b].gold:=player[b].gold+tempbank;
  141.     player[b].bank:=player[b].bank-tempbank;
  142.     str(player[b].gold:1:0,temp);
  143.     nl;
  144.     ansic(5); print('You are now carring '+temp+' dollars.');
  145.   end;
  146.  
  147. procedure checkday;
  148.   var
  149.     oldy : str;
  150.     h,a : integer;
  151.   begin
  152.     for a:=1 to number_of_players-1 do
  153.      begin
  154.       for h:=a+1 to number_of_players do
  155.        begin
  156.         if player[h].experience>player[a].experience then
  157.          begin
  158.           if h=b then b:=a
  159.           else if a=b then b:=h;
  160.           player[number_of_players+1]:=player[h];
  161.           player[h]:=player[a];
  162.           player[a]:=player[number_of_players+1];
  163.          end;
  164.        end;
  165.      end;
  166.     assign(infile,'MARVEL\date.mau');
  167.     reset(infile);
  168.     readln(infile,oldy);
  169.     if oldy<>date then
  170.       begin
  171.         rewrite(infile);
  172.         writeln(infile,date);
  173.         for a:=1 to number_of_players do
  174.           begin
  175.             player[a].flights:=3;
  176.             player[a].status:=0;
  177.           end;
  178.         assign(outfile,'MARVEL\record.mau');
  179.         rewrite(outfile);
  180.         writeln(outfile,'0');
  181.         close(outfile);
  182.       end;
  183.     close(infile);
  184. end;
  185.  
  186. procedure playerlist;
  187.   var
  188.     q,v,t,spc: integer;
  189.     ts:str;
  190.     tempaa,tempbb,tempcc,tempdd,tempee,tempff:string[10];
  191.     tch:string[5];
  192.   begin
  193.    checkday;
  194.    cls;
  195.    nl;
  196.    ansic(5);
  197.    print('Player Rankings:');
  198.    print('~~~~~~~~~~~~~~~~');
  199.    a:=1;
  200.    repeat
  201.      nl;
  202.      str(a,temp);
  203.      str(player[a].r:2:0,tempaa);
  204.      str(player[a].wins:2:0,tempcc);
  205.      str(player[a].loses:2:0,tempdd);
  206.      if player[a].status=1 then tch:='DEAD '
  207.      else tch:='ALIVE';
  208.      ansic(5);
  209.      if a<10 then prompt(' '+temp+'.  ') else
  210.      prompt(temp+'.  ');
  211.      ansic(3);
  212.      prompt(player[a].pseudo);
  213.      for spc:=1 to 30-length(player[a].pseudo) do prompt('.');
  214.      ansic(2);printa('Lev='+tempaa+'  W='+tempcc+'  L='+tempdd+'  S='+tch,abort,next);
  215.      a:=a+1;
  216.    until (a>number_of_players) or (abort);
  217.   end;
  218.  
  219.  
  220. procedure leave;
  221. var a:integer;
  222.   begin
  223.   nl;
  224.   assign(outfile,'MARVEL\characte.mau');
  225.   rewrite(outfile);
  226.   writeln(outfile,number_of_players);
  227.   for a:= 1 to number_of_players do
  228.     begin
  229.       writeln(outfile,player[a].name);
  230.       writeln(outfile,player[a].pseudo);
  231.       writeln(outfile,player[a].gaspd);
  232.       writeln(outfile,player[a].status);
  233.       if player[a].status=1 then
  234.         writeln(outfile,player[a].killer);
  235.       writeln(outfile,round(player[a].strength),' ',round(player[a].intelligence),' ',
  236.        round(player[a].luck),' ',round(player[a].dexterity),' ',round(player[a].constitution),
  237.        ' ',round(player[a].charisma),' ',(player[a].experience):1:0,' ',
  238.        round(player[a].r),' ',round(player[a].shield),' ',round(player[a].weapon),
  239.        ' ',round(player[a].vehicle),' ',player[a].gold:1:0,' ',
  240.        ' ',player[a].flights,' ',player[a].bank:1:0,' ',round(player[a].wins),' ',round(player[a].loses),
  241.        ' ',player[a].plus);
  242.     end;
  243.   close(outfile);
  244.   return;
  245. end;
  246.  
  247. overlay procedure heal;
  248. var
  249. tempts : string[50];
  250.   begin
  251.     healall:=false;
  252.     cls;
  253.     str(round(8*player[b].r),temp);
  254.     ansic(5); print('Healing cost '+temp+' dollars per wound.');
  255.     str(player[b].damage:1:0,tempts); nl;
  256.     ansic(4); print('You have '+tempts+' points of damage to heal.');
  257.     ansic(3); prompt('How many do points do you want healed? ');
  258.     repeat
  259.       {$I-}
  260.       input(temp,3);
  261.       if temp='' then healall:=true;
  262.       opt:=value(temp);
  263.       {$I+}
  264.       checkhangup;
  265.     until (ioresult=0) or hangup;
  266.     if opt<0 then opt:=0;
  267.     if hangup then leave;
  268.     if healall then opt:=player[b].damage;
  269.     if ((round(opt))*(player[b].r)*10)>player[b].gold then
  270.       begin
  271.     ansic(8);print('Sorry, you do not have enough money.');
  272.         opt:=0;
  273.       end
  274.     else if opt>player[b].damage then opt:=player[b].damage;
  275.     player[b].damage:=player[b].damage-opt;
  276.     player[b].gold:=player[b].gold-8*opt*player[b].r;
  277.     str(round(opt),temp);
  278.     print(temp+' hit points healed.');
  279.   end;
  280.  
  281. procedure findo;
  282. begin
  283.   nl;
  284.   ansic(4);
  285.   print('You notice someting on the ground.');
  286.   ynq('Do you want to pick it up? ');
  287.   if yn then begin
  288.    okea:=round(random(99)+1);
  289.    if (okea < 10) and (player[b].weapon>=25) then begin
  290.      player[b].weapon:=player[b].weapon+1;
  291.      print('you have found '+wname[round(player[b].weapon)]+' who gladly joins your team as offense.');
  292.    end;
  293.    if (okea > 11) and (okea < 40) then begin
  294.      player[b].gold:=player[b].gold+40;
  295.      print('you have come across 40 dollars');
  296.    end else print('must have been a mirage...');
  297.   end else print('Never know what it could have been...');
  298. end;
  299.  
  300. procedure battle; forward;
  301.  
  302. overlay procedure recorda;
  303.   var
  304.     o:integer;
  305.   begin
  306.     assign(outfile,'MARVEL\record.mau');
  307.     rewrite(outfile);
  308.     writeln(outfile,number);
  309.     for o:=1 to number do
  310.     writeln(outfile,result[o]);
  311.     close(outfile);
  312.   end;
  313.  
  314. procedure readla;
  315.   var
  316.     o:integer;
  317.   begin
  318.     assign(infile,'MARVEL\record.mau');
  319.     reset(infile);
  320.     readln(infile,number);
  321.     if number >30 then number:=30;
  322.     for o:=1 to number do readln(infile,result[o]);
  323.     close(infile);
  324.   end;
  325.  
  326. overlay procedure mutantvictory;
  327. var bt:integer;
  328.   begin
  329.     a:=m;
  330.     if not doga then opp.gold:=opp.gold*supplant;
  331.     str(opp.gold:0:0,temp);
  332.     nl;
  333.     print('You take his '+temp+' dollars.');
  334.     player[b].gold:=player[b].gold+opp.gold;
  335.     if doga then
  336.       begin
  337.         nl;
  338.         ansic(7); print('In a scream of pain your opponent says...'); nl;
  339.         print('"'+player[a].gaspd+'"'); nl;
  340.         player[b].wins:=player[b].wins+1;
  341.         player[a].loses:=player[a].loses+1;
  342.         player[a].killer:=player[b].name;
  343.         player[a].status:=1;
  344.         player[a].gold:=0;
  345.           if player[a].weapon>player[b].weapon then
  346.             begin
  347.               d:=player[b].weapon;
  348.               player[b].weapon:=player[a].weapon;
  349.               player[a].weapon:=d;
  350.               bt:=player[b].plus;
  351.               player[b].plus:=player[a].plus;
  352.               player[a].plus:=bt;
  353.               ansic(7);
  354.               print('Opponent''s offense team member transfered.');
  355.             end;
  356.           if player[a].vehicle>player[b].vehicle then
  357.             begin
  358.               d:=player[b].vehicle;
  359.               player[b].vehicle:=player[a].vehicle;
  360.               player[a].vehicle:=d;
  361.               ansic(4);
  362.               print('Opponent''s defense team member transfered.');
  363.             end;
  364.           player[b].attack:=find1;
  365.           player[b].power:=find2;
  366.           readla;
  367.           number:=number+1;
  368.           result[number]:=(player[b].pseudo+' conquered '+player[a].pseudo);
  369.           recorda;
  370.        end;
  371.     z:=z*supplant;
  372.     player[b].experience:=player[b].experience+z;
  373.     str(z:0:0,temp);
  374.     print('You obtain '+temp+' exp points.');
  375.     doga:=false;
  376.   end;
  377.  
  378.  
  379.  
  380. overlay procedure levelupdate;
  381. var x,a:integer; tempaa:string[10];
  382.   begin
  383.     str(required[round(player[b].r+1)]:3:0,temp);
  384.     ansic(7);
  385.     str(player[b].experience:9:0,temp);
  386.     if player[b].experience>required[round(player[b].r+1)] then
  387.       begin
  388.         player[b].r:=player[b].r+1;
  389.         str(player[b].r:2:0,tempaa);
  390.         ansic(4);
  391.         print('Welcome to level '+tempaa+'!');
  392.         x:=random(6)+1;
  393.         case x of
  394.             1:player[b].strength:=player[b].strength+1;
  395.             2:player[b].intelligence:=player[b].intelligence+1;
  396.             3:player[b].luck:=player[b].luck+1;
  397.             4:player[b].dexterity:=player[b].dexterity+1;
  398.             5:player[b].constitution:=player[b].constitution+1;
  399.             6:player[b].charisma:=player[b].charisma+1;
  400.           end;
  401.         player[b].shield:=player[b].shield+(random*5+1)+(player[b].constitution/4);
  402.          for a:= 1 to 10 do
  403.            begin
  404.              checkhangup;
  405.              if hangup=true then begin play:=false; leave;end;
  406.            end;
  407.       end
  408.      else for a:=1 to 2 do
  409.       begin
  410.        checkhangup;
  411.        if hangup=true then leave;
  412.       end;
  413.     end;
  414.  
  415.  
  416.  
  417. procedure quickexit;
  418. begin
  419.   print('Sorry, there is no room for additional players.');
  420.   return;
  421. end;
  422.  
  423.  
  424. procedure amode;
  425. begin
  426.   roll:=playerattack;
  427.   if roll<1.5 then
  428.     begin
  429.       tint:=round(random(3)+1);
  430.       case tint of
  431.         1:print('You missed, ''Nuff Said!!!');
  432.         2:print('He dodges your attack!');
  433.         3:print('The attack is blocked!');
  434.         4: print('You slash vigorously and miss!');
  435.       end;
  436.     end
  437.   else
  438.     begin
  439.       roll:=playerattack2;
  440.       if roll>5*player[b].power then roll:=5*player[b].power;
  441.       opp.shield:=opp.shield-roll;
  442.       str(round(roll),temp);
  443.       tint:=round(random(2)+1);
  444.          case tint of
  445.            1:print('You hit him for '+temp+'.');
  446.            2:print('A swift blow to the body for '+temp+'.');
  447.            3:print('You got him for '+temp+'.');
  448.          end;
  449.       if opp.shield<=0 then
  450.         begin
  451.           nl;
  452.           tint:=round(random(3)+1);
  453.              case tint of
  454.                1:print('A swift death!');
  455.                2:print('It died, ''Nuff Said!');
  456.                3:print('A vigilanty killing!');
  457.                4:print('It won''t be back!');
  458.              end;
  459.           okea:=round(random(99)+1);
  460.           if okea<30 then findo;
  461.           mutantvictory;
  462.           live:=false;
  463.         end;
  464.     end;
  465. end;
  466.  
  467. procedure bmode;
  468. var bt:integer;
  469. begin
  470.   if (opp.shield>0) and live then
  471.     begin
  472.       roll:=opponentattack;
  473.         if roll<1.5 then
  474.           begin
  475.             ansic(7); print('His attack glaces your skin.');
  476.           end
  477.         else
  478.           begin
  479.             roll:=opponentattack2;
  480.             if roll>5*opp.weapon2 then roll:=5*opp.weapon2;
  481.               str(round(roll),temp);
  482.               tint:=round(random(2)+1);
  483.                  case tint of
  484.                    1:print('He hit you for '+temp+'.');
  485.                    2:print('He inflicted a crushing blow for '+temp+'.');
  486.                    3:print('He leads a sudden attack for '+temp+'.');
  487.                  end;
  488.               player[b].damage:=player[b].damage+roll;
  489.             if (player[b].damage>=player[b].shield) then begin
  490.               nl;
  491.               tint:=round(random(3)+1);
  492.                  case tint of
  493.                    1:print('You died! -''Nuff Said!!!..sayonara');
  494.                    2:print('You bit the dust!');
  495.                    3:print('Down into the depths you slowly die!');
  496.                    4:print('Your outta here!');
  497.                  end;
  498.               if doga then
  499.                 begin
  500.                   player[a].wins:=player[a].wins+1;
  501.                   player[b].loses:=player[b].loses+1;
  502.                   player[a].gold:=player[a].gold+player[b].gold;
  503.                   player[b].gold:=0;
  504.                   readla;
  505.                   number:=number+1;
  506.                   result[number]:=(player[b].name+' conqured '+player[a].name);
  507.                   recorda;
  508.                 end;
  509.                 live:=false;
  510.                 leave;
  511.                 play:=false;
  512.               end;
  513.              end;
  514.            end;
  515. end;
  516.  
  517. overlay procedure statshow;
  518. var
  519. tempaa,tempbb,tempcc,tempdd,tempee,tempff,tempgg,temphh,tempii,tempjj,tempkk,templl,tempmm,tempnn,
  520. tempoo,temppp,tempqq : string[50];
  521. word : string[20];
  522.  begin
  523.   cls;
  524.   str(round(player[b].r),tempaa);
  525.   str(player[b].gold:1:0,tempbb);
  526.   str(player[b].strength:2:0,tempcc);
  527.   str(player[b].intelligence:2:0,tempdd);
  528.   str(player[b].luck:2:0,tempee);
  529.   str(player[b].dexterity:2:0,tempff);
  530.   str(player[b].constitution:2:0,tempmm);
  531.   str(player[b].charisma:2:0,tempnn);
  532.   str(player[b].experience:1:0,tempgg);
  533.   str((player[b].shield-player[b].damage):1:0,temphh);
  534.   str(player[b].shield:1:0,tempii);
  535.   str(player[b].bank:1:0,tempjj);
  536.   str(player[b].flights,tempkk);
  537.   str(round(3-dog),tempoo);
  538.   str(round(player[b].wins),temppp);
  539.   str(round(player[b].loses),tempqq);
  540.   str(10-trips,templl);
  541.   ansic(5); print('Name: '+player[b].pseudo+'   Level: '+tempaa+'   W/L: '+temppp+'/'+tempqq+'   Exp: '+tempgg);nl;
  542.   ansic(4); print('Str: '+tempcc+'      Int: '+tempdd+'      Con: '+tempmm+'     Money(in hand) $'+tempbb);
  543.   ansic(4); print('Dex: '+tempff+'      Luk: '+tempee+'      Chr: '+tempnn+'     Money(in bank) $'+tempjj);
  544.   nl;
  545.   ansic(2); print('Battles: '+tempoo+'   Runs: '+tempkk+'    Fights: '+templl+'   Hps: '+temphh+'('+tempii+')');
  546.   nl;
  547.   ansic(3); print('Your team consists of');
  548.   ansic(3); print('Offense: '+wname[round(player[b].weapon)]+'   Defense: '+sname[round(player[b].vehicle)]);
  549.  end;
  550.  
  551. overlay procedure chstats;
  552. var temp1a,temp1b,temp1c,temp1d,temp1e,temp1f : real;
  553.     tempaa,tempbb,tempcc,tempdd,tempee,tempff : string[50];
  554.  
  555.   procedure incre;
  556.   begin
  557.     prompt('Increase which stat? '); onek(opty,'123456Q');
  558.     case opty of
  559.       '1':player[b].strength:=player[b].strength+1;
  560.       '2':player[b].intelligence:=player[b].intelligence+1;
  561.       '3':player[b].dexterity:=player[b].dexterity+1;
  562.       '4':player[b].luck:=player[b].luck+1;
  563.       '5':player[b].constitution:=player[b].constitution+1;
  564.       '6':player[b].charisma:=player[b].charisma+1;
  565.       'Q':partone:=false;
  566.     end;
  567.   end;
  568.  
  569.   procedure decre;
  570.   begin
  571.     prompt('Decrease which stat? '); onek(opty,'123456');
  572.     case opty of
  573.       '1':player[b].strength:=player[b].strength-2;
  574.       '2':player[b].intelligence:=player[b].intelligence-2;
  575.       '3':player[b].dexterity:=player[b].dexterity-2;
  576.       '4':player[b].luck:=player[b].luck-2;
  577.       '5':player[b].constitution:=player[b].constitution-2;
  578.       '6':player[b].charisma:=player[b].charisma-2;
  579.     end;
  580.   end;
  581.  
  582.   procedure ministat;
  583.   begin
  584.     yaya:=true;
  585.     partone:=false;
  586.     str(player[b].strength:1:0,tempaa);
  587.     str(player[b].intelligence:1:0,tempbb);
  588.     str(player[b].dexterity:1:0,tempdd);
  589.     str(player[b].luck:1:0,tempcc);
  590.     str(player[b].constitution:1:0,tempee);
  591.     str(player[b].charisma:1:0,tempff);
  592.     nl;
  593.     print('Status Change:');
  594.     print('~~~~~~~~~~~~~~');
  595.     print('1> Str: '+tempaa);
  596.     print('2> Int: '+tempbb);
  597.     print('3> Dex: '+tempdd);
  598.     print('4> Luk: '+tempcc);
  599.     print('5> Con: '+tempee);
  600.     print('6> Chr: '+tempff); nl;
  601.     if player[b].strength < 6 then begin yaya:=false;nl; print('Strength cannot go below 6');end;
  602.     if player[b].intelligence < 6 then begin yaya:=false;nl; print('Intelligence cannot go below 6');end;
  603.     if player[b].dexterity < 6 then begin yaya:=false;nl; print('Dexterity cannot go below 6');end;
  604.     if player[b].luck < 6 then begin yaya:=false;nl; print('Luck cannot go below 6');end;
  605.     if player[b].constitution < 6 then begin yaya:=false;nl; print('Constitution cannot go below 6');end;
  606.     if player[b].charisma < 6 then begin yaya:=false;nl; print('Charisma cannot go below 6');end;
  607.     if yaya then begin
  608.       ynq('Is this correct? ');
  609.       if not yn then begin
  610.         player[b].strength:=temp1a;
  611.         player[b].intelligence:=temp1b;
  612.         player[b].dexterity:=temp1d;
  613.         player[b].luck:=temp1c;
  614.         player[b].constitution:=temp1e;
  615.         player[b].charisma:=temp1f;
  616.         bothover:=false;
  617.        end
  618.       else bothover:=false;
  619.     end
  620.     else begin
  621.       if not yaya then begin
  622.         player[b].strength:=temp1a;
  623.         player[b].intelligence:=temp1b;
  624.         player[b].dexterity:=temp1d;
  625.         player[b].luck:=temp1c;
  626.         player[b].constitution:=temp1e;
  627.         player[b].charisma:=temp1f;
  628.         bothover:=false;
  629.        end
  630.       else bothover:=false;
  631.     end;
  632.   end;
  633.  
  634. begin
  635.   cls;
  636.   bothover:=false;
  637.   temp1a:=player[b].strength;
  638.   temp1b:=player[b].intelligence;
  639.   temp1c:=player[b].luck;
  640.   temp1d:=player[b].dexterity;
  641.   temp1e:=player[b].constitution;
  642.   temp1f:=player[b].charisma;
  643.   str(player[b].strength:1:0,tempaa);
  644.   str(player[b].intelligence:1:0,tempbb);
  645.   str(player[b].luck:1:0,tempcc);
  646.   str(player[b].dexterity:1:0,tempdd);
  647.   str(player[b].constitution:1:0,tempee);
  648.   str(player[b].charisma:1:0,tempff);
  649.   repeat
  650.     partone:=true;
  651.     print('Status Change:');
  652.     print('~~~~~~~~~~~~~');
  653.     print('You may increase any stat by one,');
  654.     print('yet you must decrease another by two.');
  655.     nl;
  656.     print('1> Str: '+tempaa);
  657.     print('2> Int: '+tempbb);
  658.     print('3> Dex: '+tempdd);
  659.     print('4> Luk: '+tempcc);
  660.     print('5> Con: '+tempee);
  661.     print('6> Chr: '+tempff);nl;
  662.     incre; if partone then decre else partone:=false;
  663.     if partone then bothover:=true;
  664.     if not partone then bothover:=false else ministat;
  665.   until not bothover;
  666. end;
  667.  
  668. procedure attackmodes;
  669. begin
  670.   if opp.dexterity>player[b].dexterity then
  671.     begin
  672.       if play then bmode;
  673.       if play then amode;
  674.     end else
  675.   if opp.dexterity<player[b].dexterity then
  676.     begin
  677.       if play then amode;
  678.       if play then bmode;
  679.     end
  680.   else begin
  681.       if play then amode;
  682.       if play then bmode;
  683.     end
  684. end;
  685.  
  686.  
  687.  
  688. procedure searcher;
  689. var a:integer;
  690.   begin
  691.     trips:=trips+1;
  692.     readln(infile,amount);
  693.       rd:=random*(amount-1)+1;
  694.       amount:=round(rd);
  695.         for a:=1 to amount do
  696.          begin
  697.           readln(infile,opp.name);
  698.           readln(infile,opp.shield,opp.weapon,opp.weapon2,opp.vehicle,opp.luck,
  699.           opp.strength,opp.dexterity,opp.gold,z);
  700.  
  701.          end;
  702.          close(infile);
  703.          opp.weapon:=opp.weapon*supplant;
  704.          opp.weapon2:=opp.weapon2*supplant;
  705.          opp.vehicle:=opp.vehicle*supplant;
  706.          opp.luck:=opp.luck*supplant;
  707.          opp.strength:=opp.strength*supplant;
  708.          opp.dexterity:=opp.dexterity*supplant;
  709.          opp.shield:=opp.shield*supplant;
  710.   end;
  711.  
  712.  
  713. procedure fight(filename:str);
  714. begin
  715.   assign(infile,filename);
  716.   reset(infile);
  717.   searcher;
  718.   battle;
  719. end;
  720.  
  721.  
  722. procedure doggie;
  723. var
  724. tempaa,tempbb,tempcc,tempdd,tmpgg : string[10];
  725. tmphh : string[2];
  726. tch:string[5];
  727. spc,a:integer;
  728. gono:boolean;
  729.   begin
  730.    if dog<=3 then
  731.    begin
  732.    nl;
  733.    checkday;
  734.    repeat
  735.     repeat
  736.      cls;
  737.      ansic(4);
  738.      print('Engage in Character to Character Battle:');
  739.      print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
  740.       if number_of_players=1 then begin print('You are the only player so far!'); exit; end
  741.       else begin
  742.          begin
  743.           a:=1;
  744.           checkhangup;
  745.           if hangup then leave;
  746.           repeat
  747.             if player[a].r>player[b].r-4 then begin
  748.               nl;
  749.               str(a,temp);
  750.               str(player[a].r:2:0,tempaa);
  751.               str(player[a].wins:2:0,tempcc);
  752.               str(player[a].loses:2:0,tempdd);
  753.               if player[a].status=1 then tch:='DEAD '
  754.               else tch:='ALIVE';
  755.               ansic(5);
  756.               if a<10 then prompt(' '+temp+'.  ') else
  757.               prompt(temp+'.  ');
  758.               ansic(3);
  759.               prompt(player[a].pseudo);
  760.               for spc:=1 to 30-length(player[a].pseudo) do prompt('.');
  761.               ansic(2);printa('Lev='+tempaa+'  W='+tempcc+'  L='+tempdd+'  S='+tch,abort,next);
  762.             end;
  763.             a:=a+1;
  764.           until (a>number_of_players) or (abort);
  765.          end;
  766.         nl;
  767.         ansic(3);
  768.         prompt('Enter the rank # of your opponent: ');
  769.         {$I-}
  770.         input(tmphh,2);
  771.         enemy:=value(tmphh);
  772.         {$I+}
  773.         if (enemy=0) or (player[enemy].pseudo=player[b].pseudo) or (player[enemy].status=1) then exit;
  774.         checkhangup;
  775.       end;
  776.     until (hangup) or (enemy<>0);
  777.      if hangup then leave;
  778.      for a:=1 to number_of_players do
  779.        begin
  780.          if enemy=a then
  781.           begin
  782.             if player[a].r>(player[b].r-4) then
  783.              begin
  784.                finder:=true;
  785.                m:=a;
  786.              end;
  787.           end;
  788.        end;
  789.        checkhangup;
  790.     until (hangup) or (finder=true);
  791.     if hangup then leave;
  792.       a:=m;
  793.         begin
  794.           opp.name:=player[a].pseudo;
  795.           opp.shield:=player[a].shield;
  796.           f:=b;
  797.           vary2:=supplant;
  798.           doga:=true;
  799.           d:=player[b].attack;
  800.           e:=player[b].power;
  801.           g:=player[b].weapon;
  802.           b:=a;
  803.           dog:=dog+1;
  804.           opp.weapon:=find1;
  805.           opp.weapon2:=find2;
  806.           b:=f;
  807.           player[b].weapon:=g;
  808.           player[b].attack:=d;
  809.           player[b].power:=e;
  810.           opp.vehicle:=player[a].vehicle;
  811.           opp.luck:=player[a].luck;
  812.           opp.strength:=player[a].strength;
  813.           opp.dexterity:=player[a].dexterity;
  814.           opp.gold:=player[a].gold;
  815.           if opp.gold<0 then opp.gold:=0;
  816.           z:=player[a].experience/10;
  817.           finder:=false;
  818.           player[b].alliance:=0;
  819.           player[a].alliance:=0;
  820.           battle;
  821.         end;
  822.     end;
  823.   end;
  824.  
  825. procedure battle;
  826. var loss,playerrem:real; option:char; tempxx:string[50];
  827.   begin
  828.     nl;
  829.     live:=true;
  830.     while live=true do
  831.     begin
  832.     playerrem:=player[b].shield-player[b].damage;
  833.     str(playerrem:1:0,tempxx);
  834.     nl;
  835.     ansic(4); print('You come across a '+opp.name+'.');
  836.       repeat
  837.         ansic(2);prompt('Combat ('+tempxx+' hps): (A,R,S): ');
  838.         onek(option,'ARS?');
  839.         if option='?' then begin
  840.            nl;nl;
  841.            print('(A)ttack your opponent.');
  842.            print('(R)un from your opponent.');
  843.            print('(S)tatus check.');
  844.            nl;
  845.         end;
  846.       until (hangup) or (option='A') or (option='R') or (option='S');
  847.         if hangup then leave;
  848.         case option of
  849.              'A':attackmodes;
  850.              'S':statshow;
  851.              'R':if (random*4+1)+player[b].dexterity>opp.dexterity then
  852.                    begin
  853.                      nl;
  854.                      ansic(7); print('You flee from the battle sight.');
  855.                      doga:=false;
  856.                      live:=false;
  857.                      uni:=false
  858.                    end;
  859.         end;
  860.     end;
  861.   end;
  862.  
  863. overlay procedure credits;
  864.   begin
  865.     cls;
  866.     print('Marvel Action Universe Credits');
  867.     print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
  868.     print('Written By        :  Jim Keith  AKA  Night Dragon      ');
  869.     print('Idea From         :  Jim Keith  AKA  Night Dragon      ');
  870.     print('Special thanx to  :  MARVEL COMICS                     ');
  871.     print('And to            :  The person who made Brazil        ');
  872.     nl;
  873.     print('Brazil Originally modified from the Arena Source Code.');nl;
  874.     pausescr;
  875.   end;
  876.  
  877.  
  878. overlay procedure docs;
  879.   begin
  880.    cls;
  881.    printfile('MARVEL\docs.mau');
  882.    pausescr;
  883.   end;
  884.  
  885. procedure vic;
  886. var ahuh:boolean;
  887.  
  888.  procedure dit;
  889.   begin
  890.   nl;ansic(3);print('Enter your new Death chant.');
  891.   prompt('>');inputl(ugh3,60);
  892.   ynq('Is this correct? ');
  893.   if yn then ahuh:=true else ahuh:=false;
  894.   end;
  895.  
  896. begin
  897.   repeat
  898.     dit
  899.   until ahuh;
  900.   ahuh:=true;
  901. end;
  902.  
  903. procedure create(new:boolean);
  904. begin
  905.   if new then
  906.     begin
  907.       nl;
  908.       a:=number_of_players+1;
  909.       player[a].name:=thisuser.name;
  910.       player[a].pseudo:=thisuser.name;
  911.       a:=number_of_players+1;
  912.       vic;
  913.     end
  914.   else
  915.     begin
  916.       a:=b;
  917.     end;
  918.   with player[a] do
  919.     begin
  920.       strength:=12;
  921.       status:=0;
  922.       if new then number_of_players:=number_of_players+1;
  923.       intelligence:=12;
  924.       luck:=12;
  925.       alliance:=0;
  926.       damage:=0;
  927.       gaspd:=ugh3;
  928.       dexterity:=12;
  929.       constitution:=12;
  930.       charisma:=12;
  931.       gold:=round(random(100)+175);
  932.       weapon:=1;
  933.       vehicle:=1;
  934.       experience:=0;
  935.       plus:=0;
  936.       bank:=(random(199)+1);
  937.       r:=1;
  938.       shield:=(random*4+1)+player[a].constitution;
  939.       flights:=3;
  940.       wins:=0;
  941.       loses:=0;
  942.     end;
  943.   nl;
  944.   b:=a;
  945. end;
  946.  
  947. procedure strait;
  948. var p:integer;
  949. begin
  950.   for p:=1 to 25-length(strip) do
  951.     strip:=strip+' ';
  952. end;
  953.  
  954. procedure stripe;
  955. var p:integer;
  956. begin
  957.   for p:=1 to 25-length(cross) do
  958.     cross:=cross+' ';
  959. end;
  960.  
  961. procedure weaponlist;
  962. begin
  963.   nl;
  964.   nl;
  965.   a:=1;
  966.   print('  Num. Offense Team Member         Defense Team Member             Price   ');
  967.   print('(-------------------------------------------------------------------------)');
  968.   repeat
  969.     checkhangup;
  970.     if hangup then leave;
  971.     str(cost[a]:9:0,temp);
  972.     str(a:2,opp.name);
  973.     ansic(4);
  974.     strip:=wname[a];
  975.     strait;
  976.     cross:=sname[a];
  977.     stripe;
  978.     printa('  '+opp.name+'>  '+(strip)+'   '+(cross)+'   '+temp,abort,next);nl;
  979.     a:=a+1;
  980.   until (a>25) or (abort);
  981. end;
  982.  
  983.  
  984. procedure readlist;
  985.   begin
  986.     assign(infile,'MARVEL\characte.mau');
  987.     reset(infile);
  988.     readln(infile,number_of_players);
  989.     a:=1;
  990.     b:=1;
  991.     while (a<=number_of_players) do
  992.       begin
  993.         readln(infile,player[a].name,player[a].pseudo,player[a].gaspd,player[a].status);
  994.         if player[a].status=1 then
  995.           readln(player[a].killer);
  996.         read(infile,player[a].strength,player[a].intelligence,player[a].luck,player[a].dexterity);
  997.         read(infile,player[a].constitution,player[a].charisma,player[a].experience,player[a].r);
  998.         read(infile,player[a].shield,player[a].weapon,player[a].vehicle,player[a].gold);
  999.         read(infile,player[a].flights,player[a].bank,player[a].wins,player[a].loses);
  1000.         readln(infile,player[a].plus);
  1001.         a:=a+b;
  1002.       end;
  1003.     close(infile);
  1004. end;
  1005.  
  1006. procedure weaponquip;
  1007. begin
  1008.  
  1009.   input(temp,1);
  1010.   weaponlist;
  1011. end;
  1012.  
  1013.  
  1014. overlay procedure weaponshop;
  1015. var
  1016. tmpvv : string[2];
  1017. begin
  1018.   cls;
  1019.   ansic(4); print('Team Hiring Shop');
  1020.   ansic(7); print('~~~~~~~~~~~~~~~~');
  1021.   option:='H';
  1022.   while option<>'' do
  1023.     begin
  1024.       repeat
  1025.       nl;
  1026.       prompt('(H)ire, (S)ell, (L)ist, or (Q)uit ?');
  1027.       onek(opty,'HSQL');
  1028.       checkhangup;
  1029.       until (opty='H') or (opty='S') or (opty='') or (opty='Q') or (opty='L') or hangup;
  1030.       if hangup then leave;
  1031.         if opty='Q' then
  1032.         begin
  1033.          exit; end;
  1034.         if opty='L' then
  1035.           begin
  1036.             weaponlist;
  1037.           end;
  1038.         if opty='H' then
  1039.           begin
  1040.             nl;
  1041.            repeat
  1042.             {$I-}
  1043.             nl;
  1044.             prompt('Enter offense/armor team member # you wanna hire: ');
  1045.             input(temp,2);
  1046.             buy:=value(temp);
  1047.             {$I+}
  1048.             j:=ioresult;
  1049.             checkhangup;
  1050.            until (hangup) or(j=0);
  1051.            if hangup then leave;
  1052.            if buy=0 then exit;
  1053.            if cost[round(buy)]>player[b].gold then print('You don not have enough money.')
  1054.            else begin
  1055.                repeat
  1056.                  nl;
  1057.                  prompt('(O)ffensive or (D)efensive Team Member: ');
  1058.                  onek(opty,'OD');
  1059.                  checkhangup;
  1060.                until (hangup) or (option<>'D');
  1061.                if hangup then leave;
  1062.                if opty='O' then
  1063.                   begin
  1064.                     ynq('Are you sure you want Hire him? ');
  1065.                        if yn then begin
  1066.                           player[b].gold:=player[b].gold-cost[round(buy)];
  1067.                           player[b].weapon:=buy;
  1068.                           nl;
  1069.                           ansic(5); print('You''ve hires '+wname[round(buy)]);
  1070.                           player[b].attack:=find1;
  1071.                           player[b].power:=find2;
  1072.                        end;
  1073.                   end
  1074.                else if opty='D' then
  1075.                   begin
  1076.                     ynq('Are you sure you want Hire Him? ');
  1077.                        if yn then begin
  1078.                           player[b].gold:=player[b].gold-cost[round(buy)];
  1079.                           player[b].vehicle:=buy;
  1080.                           nl;
  1081.                          ansic(5); print('You''ve hired '+sname[round(buy)]);
  1082.                        end;
  1083.                   end
  1084.                else nl;
  1085.              end;
  1086.            end
  1087.          else if opty='S' then
  1088.             begin
  1089.               repeat
  1090.                 nl;
  1091.                 prompt('(O)ffense,(D)efense,(Q)uit :');
  1092.                 onek(opty,'ODQ');
  1093.                 checkhangup;
  1094.               until (hangup) or (opty='O') or (opty='D') or (opty='') or (opty='Q');
  1095.               if hangup then leave;
  1096.                 if opty='Q' then
  1097.                   begin
  1098.                     exit; end;
  1099.                 if opty='O' then
  1100.                   begin
  1101.                     y:=(round(player[b].weapon));
  1102.                     x:=player[b].charisma;
  1103.                     x:=x*cost[y];
  1104.                     x:=((1/20)*x);
  1105.                     str(x:0:0,temp);
  1106.                     repeat
  1107.                     nl;
  1108.                     prompt('I will purchase him for '+temp+', okay?');
  1109.                     onek(opty,'YN');
  1110.                     checkhangup;
  1111.                     until (hangup) or (opty<>'D');
  1112.                     if hangup then leave;
  1113.                     if opty='Y' then
  1114.                       begin
  1115.                         ansic(7); print('Thank you!');
  1116.                         player[b].weapon:=1;
  1117.                         player[b].gold:=player[b].gold+x;
  1118.  
  1119.                       end;
  1120.                    end
  1121.                  else if opty='D' then
  1122.                    begin
  1123.                      x:=((1/20)*(player[b].charisma)*(cost[round(player[b].vehicle)]));
  1124.                      str(x:7:0,temp);
  1125.                      repeat
  1126.                      nl;
  1127.                      prompt('I will purchase him for '+temp+', okay?');
  1128.                      onek(opty,'YN');
  1129.                      until (hangup) or (opty<>'D');
  1130.                      if opty='Y' then
  1131.                        begin
  1132.                          print('Thank you!');
  1133.                          player[b].vehicle:=1;
  1134.                          player[b].gold:=player[b].gold+x;
  1135.                        end;
  1136.                     end;
  1137.             end;
  1138.        end;
  1139. end;
  1140.  
  1141.  
  1142. procedure error;
  1143.   begin
  1144.     quickexit;
  1145.   end;
  1146.  
  1147. overlay procedure listplayers;
  1148. var a:integer;
  1149.   begin
  1150.     cls;
  1151.     ansic(4); print('Latest casualties due to the holocaust');
  1152.     ansic(5);print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
  1153.     readla;
  1154.     a:=1;
  1155.     repeat
  1156.      checkhangup;
  1157.      if hangup then leave;
  1158.      ansic(3);
  1159.      printa(result[a],abort,next);
  1160.      a:=a+1;
  1161.     until (a>=number) or (abort);
  1162.   end;
  1163.  
  1164. overlay procedure spy;
  1165. var aa,bb,cc,dd,ee,ff,gg,hh:string[30]; a:integer;
  1166.   begin
  1167.     cls;
  1168.     print('Spying on another user eh.. well you may spy, but to keep');
  1169.     print('you from copying this person''s stats, they will not be   ');
  1170.     print('available to you.  Note that this is gonna cost you some ');
  1171.     print('cash too.  Cost: 20 dollars                              ');
  1172.     nl;
  1173.     prompt('Who do you wish to spy on?'); input(aa,30);
  1174.     for a:=1 to number_of_players do
  1175.          if player[a].pseudo=aa then
  1176.            begin
  1177.              if player[b].gold<20 then
  1178.                begin
  1179.                  ansic(8);
  1180.                  print('You do not have enough money!');
  1181.                end
  1182.              else begin
  1183.                player[b].gold:=player[b].gold-20;
  1184.                str(player[a].r:1:0,bb);
  1185.                str(player[a].experience:1:0,cc);
  1186.                str(player[a].flights,dd);
  1187.                str((player[a].shield-player[a].damage):1:0,ee);
  1188.                str(player[a].bank:1:0,ff);
  1189.                str(player[a].gold:1:0,gg);
  1190.                str(player[a].shield:1:0,hh);
  1191.                nl;
  1192.                ansic(8);
  1193.                print(player[a].pseudo);nl;
  1194.                print('Level  :'+bb);
  1195.                print('Exp    :'+cc);
  1196.                print('Flights:'+dd);
  1197.                print('Hps    :'+ee+'('+hh+')');nl;
  1198.                ansic(5);
  1199.                print('Offense:'+wname[round(player[a].weapon)]);
  1200.                ansic(5);
  1201.                print('Defense:'+sname[round(player[a].vehicle)]);nl;
  1202.                ansic(4);
  1203.                print('Money(in hand)$'+gg);
  1204.                ansic(4);
  1205.                print('Money(in bank)$'+ff);nl;pausescr;
  1206.              end
  1207.            end
  1208.   end;
  1209.  
  1210. overlay procedure gamble;
  1211.  
  1212. var
  1213. tempgd:string[5];
  1214. realgold:real;
  1215.  
  1216.   begin
  1217.    nl;
  1218.    if trips>10 then print('Professor Xavier''s Obstacle Course is closed until tomorrow!')
  1219.    else begin
  1220.     cls;
  1221.     print('  Welcome to the Professor Xavier''s Obstacle Course');
  1222.     print('           Maximum wager is 25,000 dollars');
  1223.     nl;
  1224.     prt('How much money do you wish to wager? ');
  1225.     input(tempgd,5);
  1226.     {$I-}
  1227.     realgold:=value(tempgd);
  1228.     realgold:=round(realgold);
  1229.     {$I+}
  1230.     if realgold>player[b].gold then begin nl;
  1231.        print('You do not have enough money!'); end;
  1232.     if (realgold<>0) and ((player[b].gold>=realgold) and (realgold<=25000)) then begin
  1233.       okea:=round(random(99)+1);
  1234.       if okea <= 3 then begin
  1235.         realgold:=realgold*100;
  1236.         player[b].gold:=player[b].gold+realgold;
  1237.         str(realgold,tempgd);
  1238.         print('You clear all the obstacles and win '+tempgd+' dollars!');
  1239.       end;
  1240.       if (okea>3) and (okea<=15) then begin
  1241.         realgold:=realgold*10;
  1242.         player[b].gold:=player[b].gold+realgold;
  1243.         str(realgold,tempgd);
  1244.         print('You clear 50% of the obstacles and win '+tempgd+' dollars!');
  1245.       end;
  1246.       if (okea>15) and (okea<=30) then begin
  1247.         realgold:=realgold*3;
  1248.         player[b].gold:=player[b].gold+realgold;
  1249.         str(realgold,tempgd);
  1250.         print('You clear %25 of the obstacles and win '+tempgd+' gold pieces!');
  1251.       end;
  1252.       if okea>30 then begin
  1253.         player[b].gold:=player[b].gold-realgold;
  1254.         print('Sorry, you lose! Your money was donated to Professor Xavier''s School for TALENTED children.');
  1255.       end;
  1256.     end;
  1257.    end;
  1258.   end;
  1259.  
  1260.  
  1261. procedure afight;
  1262.   begin
  1263.     uni:=true;
  1264.     while uni do
  1265.       begin
  1266.         if trips>10 then
  1267.           begin
  1268.             nl;
  1269.             ansic(5); print('Fallout is evident at the time.');
  1270.             ansic(5); print('Better head back to the shelter.');
  1271.             uni:=false;
  1272.           end
  1273.         else
  1274.           begin
  1275.             cls;
  1276.             fight('MARVEL\junkm1.mau');
  1277.             uni:=false;
  1278.           end;
  1279.       end;
  1280.   end;
  1281.  
  1282. procedure bfight;
  1283.   begin
  1284.     uni:=true;
  1285.     while uni do
  1286.       begin
  1287.         if trips>10 then
  1288.           begin
  1289.             nl;
  1290.             ansic(5); print('Fallout is evident at the time.');
  1291.             ansic(5); print('Better head back to the shelter.');
  1292.             uni:=false;
  1293.           end
  1294.         else
  1295.           begin
  1296.             cls;
  1297.             fight('MARVEL\junkm2.mau');
  1298.             uni:=false;
  1299.           end;
  1300.       end;
  1301.   end;
  1302.  
  1303. procedure cfight;
  1304.   begin
  1305.     uni:=true;
  1306.     while uni do
  1307.       begin
  1308.         if trips>10 then
  1309.           begin
  1310.             nl;
  1311.             ansic(5); print('Fallout is evident at the time.');
  1312.             ansic(5); print('Better head back to the shelter.');
  1313.             uni:=false;
  1314.           end
  1315.         else
  1316.           begin
  1317.             cls;
  1318.             fight('MARVEL\junkm3.mau');
  1319.             uni:=false;
  1320.           end;
  1321.       end;
  1322.   end;
  1323.  
  1324. procedure dfight;
  1325.   begin
  1326.     uni:=true;
  1327.     while uni do
  1328.       begin
  1329.         if trips>10 then
  1330.           begin
  1331.             nl;
  1332.             ansic(5); print('Fallout is evident at the time.');
  1333.             ansic(5); print('Better head back to the shelter.');
  1334.             uni:=false;
  1335.           end
  1336.         else
  1337.           begin
  1338.             cls;
  1339.             fight('MARVEL\junkm4.mau');
  1340.             uni:=false;
  1341.           end;
  1342.       end;
  1343.   end;
  1344.  
  1345. procedure efight;
  1346.   begin
  1347.     uni:=true;
  1348.     while uni do
  1349.       begin
  1350.         if trips>10 then
  1351.           begin
  1352.             nl;
  1353.             ansic(5); print('Fallout is evident at the time.');
  1354.             ansic(5); print('Better head back to the shelter.');
  1355.             uni:=false;
  1356.           end
  1357.         else
  1358.           begin
  1359.             cls;
  1360.             printfile('MARVEL\guards.mau');
  1361.             fight('MARVEL\junkm5.mau');
  1362.             uni:=false;
  1363.           end;
  1364.       end;
  1365.   end;
  1366.  
  1367. procedure Bulletin;
  1368.  
  1369. var
  1370. endfil:boolean;
  1371. countr:integer;
  1372. tempcoun:string[2];
  1373.  
  1374. begin
  1375.   cls;
  1376.   countr:=0;
  1377.   printfile('MARVEL\bullet.mau');nl;
  1378.   ynq('Do you wish to enter a News Bulletin? ');
  1379.   if yn then begin
  1380.     nl;
  1381.     checkhangup;
  1382.     while (not endfil) do
  1383.      begin
  1384.       countr:=countr+1;
  1385.       str(countr,tempcoun);
  1386.       prt(tempcoun+'> ');
  1387.       inputl(blt[countr],60);
  1388.       if countr=4 then endfil:=true;
  1389.      end;
  1390.     nl;
  1391.     ynq('Is the bulletin correct? ');
  1392.     if yn then
  1393.      begin
  1394.       print('Saving Bulletin...');
  1395.       assign(messfile,'MARVEL\bullet.mau');
  1396.       rewrite(messfile);
  1397.       writeln(messfile,blt[1]);
  1398.       writeln(messfile,blt[2]);
  1399.       writeln(messfile,blt[3]);
  1400.       writeln(messfile,blt[4]);
  1401.       close(messfile);
  1402.      end;
  1403.   end;
  1404. end;
  1405.  
  1406. overlay procedure training;
  1407.  
  1408. var
  1409. temptrain : string[1];
  1410. realtrain : real;
  1411. tttgld    : integer;
  1412.  
  1413. begin
  1414.  nl;
  1415.  if trips>10 then print('Professor Xavier''s Training Grounds are closed until tomorrow!')
  1416.  else begin
  1417.   cls;
  1418.   print('Professor Xavier''s Training Grounds');
  1419.   print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
  1420.   print('Each characteristic you wish to upgrade');
  1421.   print('will cost 1,000,000 dollars per point.');
  1422.   nl;
  1423.   tttgld:=10000;
  1424.   ynq('Do you wish to upgrade a stat? ');
  1425.   if (yn) and (player[b].gold<(tttgld*100)) then
  1426.     print('Sorry, but you do not have enough money!')
  1427.   else if player[b].gold>=(tttgld*100) then begin
  1428.       nl;
  1429.       print('1> Strength       2> Intelligence');
  1430.       print('3> Dexterity      4> Luck        ');
  1431.       print('5> Constitution   6> Charisma    ');
  1432.       nl;
  1433.       prt('Which stat do you wish to increase? ');
  1434.       input(temptrain,1);
  1435.       {$I-}
  1436.       realtrain:=value(temptrain);
  1437.       {$I+}
  1438.       ynq('Are you sure? ');
  1439.       if yn then begin
  1440.         if realtrain=1 then begin
  1441.           player[b].strength:=player[b].strength+1;
  1442.           player[b].gold:=player[b].gold-(tttgld*100);
  1443.         end;
  1444.         if realtrain=2 then begin
  1445.           player[b].intelligence:=player[b].intelligence+1;
  1446.           player[b].gold:=player[b].gold-(tttgld*100);
  1447.         end;
  1448.         if realtrain=3 then begin
  1449.           player[b].dexterity:=player[b].dexterity+1;
  1450.           player[b].gold:=player[b].gold-(tttgld*100);
  1451.         end;
  1452.         if realtrain=4 then begin
  1453.           player[b].luck:=player[b].luck+1;
  1454.           player[b].gold:=player[b].gold-(tttgld*100);
  1455.         end;
  1456.         if realtrain=5 then begin
  1457.           player[b].constitution:=player[b].constitution+1;
  1458.           player[b].gold:=player[b].gold-(tttgld*100);
  1459.         end;
  1460.         if realtrain=6 then begin
  1461.           player[b].charisma:=player[b].charisma+1;
  1462.           player[b].gold:=player[b].gold-(tttgld*100);
  1463.         end;
  1464.       end;
  1465.   end;
  1466.  end;
  1467. end;
  1468.  
  1469. overlay procedure menuit;
  1470. begin
  1471. cls;
  1472. printfile('MARVEL\menu.mau');nl;
  1473. if so then
  1474. print('           SysOp''s please press (%) if you wish to reroll the game!');
  1475. end;
  1476.  
  1477. begin
  1478.   iport;
  1479.   gonado:=true;
  1480.   hangup:=false;
  1481.   allied:=false;
  1482.   ftn:=false;
  1483.   vary:=supplant;
  1484.   dog:=0;
  1485.   doga:=false;
  1486.   for a:=1 to 30 do
  1487.     player[a].damage:=0;
  1488.   play:=true;
  1489.   trips:=0;
  1490.   found:=false;
  1491.   verify:=0;
  1492.   name:=thisuser.name; cls;
  1493.   nl;nl;
  1494.   credits;
  1495.   cls;
  1496.   prt('     |    ');ansic(8);prompt(' <>Marvel Action Universe<> ');prt('  |  ');nl;
  1497.   prt('     |    ');ansic(1);prompt('         Version 1.01       ');prt('  |  ');nl;
  1498.   prt('     |    ');ansic(5);prompt('Hiring Prob has been fixed! ');prt('  |  ');nl;
  1499.   prt('     |    ');ansic(2);prompt('  Now enter New York as     ');prt('  |  ');nl;
  1500.   prt('     |    ');ansic(3);prompt(' you have never seen it     ');prt('  |  ');nl;
  1501.   prt('     |    ');ansic(2);prompt('  before. We have SUPER     ');prt('  |  ');nl;
  1502.   prt('   <_I_>  ');ansic(3);prompt(' HEROES galore. Battle the  ');prt('<_I_>');nl;
  1503.   prt('     Y    ');ansic(2);prompt(' SUPER VILLIANS to become...');prt('  Y  ');nl;
  1504.   prt('     V    ');ansic(8);prompt('  The ULTIMATE Mastermind   ');prt('  V  ');nl;
  1505.   nl;
  1506.   print('News Bulletin:');nl;
  1507.   printfile('MARVEL\bullet.mau');
  1508.   checkhangup;
  1509.   if hangup then leave;
  1510.       assign(infile,'MARVEL\characte.mau');
  1511.       reset(infile);
  1512.       readln(infile,number);
  1513.       number_of_players:=number;
  1514.       a:=1;
  1515.       b:=1;
  1516.       repeat
  1517.         with player[a] do
  1518.           begin
  1519.           readln(infile,name);
  1520.           readln(infile,pseudo);
  1521.           readln(infile,gaspd);
  1522.           readln(infile,status);
  1523.           if status=1 then readln(infile,killer);
  1524.           read(infile,strength,intelligence,luck,dexterity,constitution,charisma,experience,r,shield,weapon,vehicle,gold);
  1525.           read(infile,flights,bank,wins,loses,plus); readln(infile);
  1526.           a:=a+b;
  1527.           end;
  1528.        until (a>number_of_players);
  1529.        close(infile);
  1530.        for a:=1 to number_of_players do
  1531.          if player[a].name=name then
  1532.            begin
  1533.              found:=true;
  1534.              b:=a;
  1535.            end;
  1536.        if (not found) then begin
  1537.          if number_of_players >= 30 then quickexit else create(true);
  1538.        end;
  1539.        if player[b].status=1 then begin
  1540.          nl;
  1541.          ansic(3); print('A defeat was lead over you by '+player[b].killer+'.');
  1542.        end;
  1543.        checkday;
  1544.        if (player[b].flights<1) then
  1545.          begin
  1546.            trips:=12;
  1547.            dog:=4;
  1548.          end;
  1549.        player[b].flights:=player[b].flights-1;
  1550.        nl;
  1551.        pausescr; cls;
  1552.        assign(infile,'MARVEL\weapons.mau');
  1553.        ansic(2);
  1554.        reset(infile);
  1555.          for a:=1 to 25 do
  1556.           begin
  1557.            readln(infile,wname[a]);
  1558.            readln(infile,w2[a],w3[a]);
  1559.           end;
  1560.        close(infile); prompt(#13);
  1561.        assign(infile,'MARVEL\armor.mau');
  1562.        ansic(2);
  1563.        reset(infile);
  1564.          for a:=1 to 25 do
  1565.            readln(infile,sname[a]);
  1566.        close(infile);
  1567.          assign(infile,'MARVEL\prices.mau');
  1568.          reset(infile);
  1569.            for a:=1 to 25 do
  1570.              readln(infile,cost[a]);
  1571.          close(infile);
  1572.          player[b].attack:=find1;
  1573.          player[b].power:=find2;
  1574.          assign(infile,'MARVEL\experience.mau');
  1575.          reset(infile);
  1576.            for a:=1 to 28 do
  1577.              readln(infile,required[a]);
  1578.          close(infile);
  1579.         ansic(4);
  1580.         player[b].status:=0;
  1581.         vary2:=1;
  1582.         checkhangup;
  1583.         if hangup then leave;
  1584.         statshow;
  1585.         play:=true; mg:=false;
  1586.          repeat
  1587.            levelupdate;
  1588.            vary2:=1;
  1589.            if ((player[b].wins+1)*4)-(player[b].loses)<0 then begin
  1590.              nl;
  1591.              print('As a product of our twisted society, you have fallen');
  1592.              print('pray to mental breakdown.  You rampage the area in  ');
  1593.              print('absolute confusion and wander upon a group of Sector');
  1594.              print('Nineteen of Prof X''s police, they drag you to the side and');
  1595.              print('disrupt your molecular stucture, leaving you to be  ');
  1596.              print('nothing more than a pile of ashes.  Re-Rolled!      ');nl;
  1597.              pausescr;
  1598.              create(false); player[b].flights:=player[b].flights-1;
  1599.            end;
  1600.            nl;nl;
  1601.            prompt('Command (?): ');
  1602.            onek(opty,'Q12345CHWLABDGFRSTX+-?EZ%*#');
  1603.              case opty of
  1604.                   'Q':begin
  1605.                        ynq('Quit, are you sure? ');
  1606.                        if yn then play:=false;
  1607.                       end;
  1608.                   '1':afight;
  1609.                   '2':bfight;
  1610.                   '3':cfight;
  1611.                   '4':dfight;
  1612.                   '5':efight;
  1613.                   'C':chstats;
  1614.                   'H':heal;
  1615.                   'W':weaponshop;
  1616.                   'L':levelupdate;
  1617.                   'A':doggie;
  1618.                   'B':doggie;
  1619.                   'D':Docs;
  1620.                   'G':gamble;
  1621.                   'F':listplayers;
  1622.                   'R':playerlist;
  1623.                   'S':statshow;
  1624.                   'T':training;
  1625.                   'X':begin
  1626.                         print('Please note that this will completely purge');
  1627.                         print('your current character of all atributes!');nl;
  1628.                         ynq('Are you sure you want to REROLL your character? ');
  1629.                         if yn then begin
  1630.                           create(false);
  1631.                           player[b].flights:=player[b].flights-1;
  1632.                         end;
  1633.                       end;
  1634.                   '+':depobank;
  1635.                   '-':withdrawbank;
  1636.                   '?':menuit;
  1637.                   'E':bulletin;
  1638.                   'Z':spy;
  1639.                   '*':begin
  1640.                         nl;ansic(3);print('Your costume has changed off, the ');
  1641.                         ansic(3);print('X-Men give you a new one with the name...');
  1642.                         prompt('>');input(ugh,30);nl;
  1643.                         ynq('Are you sure?');
  1644.                         if (ugh<>'') and (yn) then player[b].pseudo:=ugh;
  1645.                       end;
  1646.                   '#':begin vic; player[b].gaspd:=ugh3;end;
  1647.                   '%':if so then begin
  1648.                        nl;
  1649.                        ynq('Are you sure you want to re-roll the game? ');
  1650.                        if yn then begin
  1651.                          assign(infile,'MARVEL\characte.mau');
  1652.                          rewrite(infile);
  1653.                          writeln(infile,'0');
  1654.                          print('Character Sheets RE-ROLLED');
  1655.                          close(infile);
  1656.                          assign(infile,'MARVEL\record.mau');
  1657.                          rewrite(infile);
  1658.                          writeln(infile,'0');
  1659.                          print('Fight Records Re-initialized');
  1660.                          close(infile);
  1661.                          assign(infile,'MARVEL\bullet.mau');
  1662.                          print('Bulletin Re-initiazled');
  1663.                          rewrite(infile);
  1664.                          close(infile);
  1665.                          play:=false;
  1666.                          gonado:=false;
  1667.                        end;
  1668.                       end;
  1669.              end;
  1670.              checkhangup;
  1671.           until (play=false) or (gonado=false) or (hangup);
  1672.           sysoplog('#*#*# '+thisuser.name+' Played Marvel ACTION Universe.');
  1673.           if gonado then leave;
  1674. end.
  1675.