LCOV - code coverage report
Current view: top level - omega-rpg-0.90-pa9 - command1.c (source / functions) Hit Total Coverage
Test: lcov.info Lines: 104 250 41.6 %
Date: 2017-09-08 22:00:26 Functions: 2 2 100.0 %
Branches: 49 152 32.2 %

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

Generated by: LCOV version 1.11