home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume5 / omega2 / part15 / ocom1.c < prev    next >
C/C++ Source or Header  |  1988-07-26  |  9KB  |  325 lines

  1. /* omega copyright (C) by Laurence Raphael Brothers, 1987,1988 */
  2. /* ocom1.c */
  3.  
  4. /* This file has the two toplevel command scanners, p_process,
  5. which works everywhere but the countryside, and p_couyntry_process,
  6. which works.... */
  7.  
  8. #include "oglob.h"
  9.  
  10.  
  11. /* deal with a new player command in dungeon or city mode*/
  12. void p_process()
  13. {
  14.   static int searchval=0;
  15.  
  16.   if (Player.status[BERSERK]) 
  17.     if (goberserk()) {
  18.     setgamestatus(SKIP_PLAYER);
  19.     drawvision();
  20.   }
  21.   if (! gamestatusp(SKIP_PLAYER)) {
  22.     if (searchval > 0) {
  23.       searchval--;
  24.       if (searchval == 0) resetgamestatus(FAST_MOVE);
  25.     }
  26.     drawvision(Player.x,Player.y);
  27.     if (! gamestatusp(FAST_MOVE)) {
  28.       searchval = 0;
  29.       Cmd = mgetc();
  30.       clear_if_necessary();
  31.     }
  32.     Command_Duration = 0;
  33.     switch (Cmd) {
  34.     case ' ': 
  35.     case 13: setgamestatus(SKIP_MONSTERS); break; /*no op on space or return*/
  36.     case 6: abortshadowform(); break; /* ^f */
  37.     case 7: wizard(); break; /* ^g */
  38.     case 9: display_pack(); morewait(); xredraw(); break; /* ^i */
  39.     case 11: if (gamestatusp(CHEATED)) frobgamestatus();
  40.     case 12: xredraw(); setgamestatus(SKIP_MONSTERS); break; /* ^l */
  41.     case 16: bufferprint(); setgamestatus(SKIP_MONSTERS); break; /* ^p */ 
  42.     case 18: redraw();  setgamestatus(SKIP_MONSTERS); break; /* ^r */
  43.     case 23: if (gamestatusp(CHEATED)) drawscreen();  break; /* ^w */
  44.     case 24: /* ^x */ 
  45.       if (gamestatusp(CHEATED) || 
  46.       Player.rank[ADEPT]) 
  47.     wish(1);
  48.       Command_Duration = 5;
  49.       break;
  50.     case 'a': zapwand();
  51.       Command_Duration =((int) 8.0*Player.speed/5.0); 
  52.       break;
  53.     case 'c': closedoor();  
  54.       Command_Duration =((int) 2.0*Player.speed/5.0); 
  55.       break;
  56.     case 'd': drop();
  57.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  58.       break;
  59.     case 'e': eat();
  60.       Command_Duration = 30;
  61.       break;
  62.     case 'f': fire();
  63.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  64.       break;
  65.     case 'g': pickup();
  66.       Command_Duration =((int) 10.0*Player.speed/5.0); 
  67.       break;
  68.     case 'i': 
  69.       if (optionp(TOPINV)) top_inventory_control();
  70.       else {
  71.     menuclear();
  72.     display_possessions();
  73.     inventory_control();
  74.       }
  75.       break;
  76.     case 'm': magic();
  77.       Command_Duration = 12;
  78.       break;
  79.     case 'o': opendoor();
  80.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  81.       break;
  82.     case 'p': pickpocket();
  83.       Command_Duration =((int) 20.0*Player.speed/5.0); 
  84.       break;
  85.     case 'q': quaff();
  86.       Command_Duration = 10;
  87.       break;
  88.     case 'r': peruse();
  89.       Command_Duration = 20;
  90.       break;
  91.     case 's': search(&searchval);
  92.       Command_Duration = 20;
  93.       break;
  94.     case 't': talk();
  95.       Command_Duration = 10;
  96.       break;
  97.     case 'v': vault();
  98.       Command_Duration =((int) 10.0*Player.speed/5.0); 
  99.       break;
  100.     case 'x': examine();
  101.       Command_Duration = 1;
  102.       break;
  103.     case 'z': bash_location();
  104.       Command_Duration =((int) 10.0*Player.speed/5.0); 
  105.       break;
  106.     case 'A': activate();
  107.       Command_Duration = 10;
  108.       break;
  109.     case 'C': callitem();
  110.       break;
  111.     case 'D': disarm();
  112.       Command_Duration = 30;
  113.       break;
  114.     case 'E': dismount_steed();
  115.       Command_Duration =((int) 10.0*Player.speed/5.0); 
  116.       break;
  117.     case 'F': tacoptions();
  118.       break;
  119.     case 'G': give();
  120.       Command_Duration = 10;
  121.       break;
  122.     case 'I':
  123.       if (! optionp(TOPINV)) top_inventory_control();
  124.       else {
  125.     menuclear();
  126.     display_possessions();
  127.     inventory_control();
  128.       }
  129.       break;
  130.     case 'M': city_move();
  131.       Command_Duration = 10;
  132.       break;
  133.     case 'O': setoptions();
  134.       break;
  135.     case 'P': show_license();
  136.       break; /* actually show_license is in ofile */
  137.     case 'Q': quit(); 
  138.       break;
  139.     case 'R': rename_player();
  140.       break;
  141.     case 'S': save(TRUE); 
  142.       break;
  143.     case 'T': tunnel(); 
  144.       Command_Duration = ((int) 30.0*Player.speed/5.0); 
  145.       break;
  146.     case 'V': version(); 
  147.       break;
  148.     case 'Z': bash_item();
  149.       Command_Duration =((int) 10.0*Player.speed/5.0); 
  150.       break;
  151.     case '.': rest();
  152.       Command_Duration = 10;
  153.       break;
  154.     case ',': 
  155.       Command_Duration = 10;
  156.       nap();
  157.       break;
  158.     case '>': 
  159.       downstairs();
  160.       break;
  161.     case '<':
  162.       upstairs();
  163.       break;
  164.     case '@': 
  165.       p_movefunction(Level->site[Player.x][Player.y].p_locf);
  166.       Command_Duration = 5; 
  167.       break;
  168.     case '/': charid(); setgamestatus(SKIP_MONSTERS);
  169.       break;
  170.     case '?': help(); setgamestatus(SKIP_MONSTERS);
  171.       break;
  172.     case '4':           
  173.     case 'h': moveplayer(-1,0);
  174.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  175.       break;
  176.     case '2':
  177.     case 'j': moveplayer(0,1);  
  178.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  179.       break;
  180.     case '8':
  181.     case 'k': moveplayer(0,-1);
  182.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  183.       break;
  184.     case '6':
  185.     case 'l': moveplayer(1,0);
  186.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  187.       break;
  188.     case '1':
  189.     case 'b': moveplayer(-1,1);
  190.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  191.       break;
  192.     case '3':          
  193.     case 'n': moveplayer(1,1); 
  194.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  195.       break;
  196.     case '7':
  197.     case 'y': moveplayer(-1,-1);  
  198.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  199.       break;
  200.     case '9':
  201.     case 'u': moveplayer(1,-1);  
  202.       Command_Duration =((int) 5.0*Player.speed/5.0); 
  203.       break;
  204.     case '5': 
  205.       setgamestatus(SKIP_MONSTERS); /* don't do anything; a dummy turn */
  206.       Cmd = mgetc();
  207.       while ((Cmd != ESCAPE) &&
  208.          ((Cmd < '1') || (Cmd > '9') || (Cmd=='5'))) {
  209.     print3("Run in keypad direction [ESCAPE to abort]: ");
  210.     Cmd = mgetc();
  211.       }
  212.       if (Cmd != ESCAPE) setgamestatus(FAST_MOVE);
  213.       break;
  214.     case 'H': setgamestatus(FAST_MOVE); Cmd = 'h'; moveplayer(-1,0);
  215.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  216.       break; 
  217.     case 'J': setgamestatus(FAST_MOVE); Cmd = 'j'; moveplayer(0,1);
  218.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  219.       break;  
  220.     case 'K': setgamestatus(FAST_MOVE); Cmd = 'k'; moveplayer(0,-1);
  221.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  222.       break; 
  223.     case 'L': setgamestatus(FAST_MOVE); Cmd = 'l'; moveplayer(1,0);
  224.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  225.       break;  
  226.     case 'B': setgamestatus(FAST_MOVE); Cmd = 'b'; moveplayer(-1,1);
  227.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  228.       break; 
  229.     case 'N': setgamestatus(FAST_MOVE); Cmd = 'n'; moveplayer(1,1);
  230.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  231.       break;  
  232.     case 'Y': setgamestatus(FAST_MOVE); Cmd = 'y'; moveplayer(-1,-1);  
  233.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  234.       break;
  235.     case 'U': setgamestatus(FAST_MOVE); Cmd = 'u'; moveplayer(1,-1);
  236.       Command_Duration =((int) 4.0*Player.speed/5.0); 
  237.       break;
  238.     default: commanderror();  setgamestatus(SKIP_MONSTERS); break;
  239.     }
  240.   }
  241.   if (Current_Environment != E_COUNTRYSIDE) roomcheck();
  242.   screencheck(Player.y);
  243. }
  244.  
  245.  
  246.  
  247.  
  248.  
  249. /* deal with a new player command in countryside mode */
  250. void p_country_process()
  251. {
  252.   int no_op;
  253.   
  254.   drawvision(Player.x,Player.y);
  255.   do {
  256.     no_op = FALSE;
  257.     Cmd = mgetc();
  258.     clear_if_necessary();
  259.     switch (Cmd) {
  260.     case ' ': 
  261.     case 13: no_op = TRUE; break;
  262.     case 7: wizard(); break; /* ^g */
  263.     case 14: xredraw(); no_op = TRUE; break; /* ^l */
  264.     case 16: bufferprint(); no_op = TRUE; break; /* ^p */ 
  265.     case 18: redraw(); no_op = TRUE; break; /* ^r */
  266.     case 23: if (gamestatusp(CHEATED)) drawscreen();  break; /* ^w */
  267.     case 24: if (gamestatusp(CHEATED) || 
  268.          Player.rank[ADEPT]) wish(1);  break; /* ^x */
  269.     case 'd': drop();  break;
  270.     case 'e': eat();  break;
  271.     case 'i': 
  272.       if (optionp(TOPINV)) top_inventory_control();
  273.       else {
  274.     menuclear();
  275.     display_possessions();
  276.     inventory_control();
  277.       }
  278.       break;
  279.     case 's': countrysearch(); break;
  280.     case 'x': examine(); break;
  281.     case 'E': dismount_steed(); break;
  282.     case 'H': hunt(Country[Player.x][Player.y].current_terrain_type); break;
  283.     case 'I': 
  284.       if (! optionp(TOPINV)) top_inventory_control();
  285.       else {
  286.     menuclear();
  287.     display_possessions();
  288.     inventory_control();
  289.       }
  290.       break;
  291.     case 'O': setoptions(); break;
  292.     case 'P': show_license(); break; /* actually show_license is in ofile */
  293.     case 'Q': quit(); break;
  294.     case 'R': rename_player(); break;
  295.     case 'S': save(TRUE); break;
  296.     case 'V': version(); break;
  297.     case '>': 
  298.       enter_site(Country[Player.x][Player.y].base_terrain_type);
  299.       break;
  300.     case '/': charid(); no_op = TRUE; break;
  301.     case '?': help(); no_op = TRUE; break;
  302.     case '4':           
  303.     case 'h': movepincountry(-1,0);  break;
  304.     case '2':
  305.     case 'j': movepincountry(0,1);  break;
  306.     case '8':
  307.     case 'k': movepincountry(0,-1);  break;
  308.     case '6':
  309.     case 'l': movepincountry(1,0);  break;
  310.     case '1':
  311.     case 'b': movepincountry(-1,1);  break;
  312.     case '3':          
  313.     case 'n': movepincountry(1,1);  break;
  314.     case '7':
  315.     case 'y': movepincountry(-1,-1);  break;
  316.     case '9':
  317.     case 'u': movepincountry(1,-1);  break;
  318.     default: commanderror();  no_op = TRUE; break;
  319.     }
  320.   } while (no_op);
  321.   screencheck(Player.y);
  322. }
  323.  
  324.  
  325.