LCOV - code coverage report
Current view: top level - omega-rpg-0.90-pa9 - house.c (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 156 0.0 %
Date: 2017-09-08 22:00:26 Functions: 0 3 0.0 %
Branches: 0 60 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
       2                 :            : /* house.c */
       3                 :            : /* some functions to make the house levels */
       4                 :            : 
       5                 :            : #include "glob.h"
       6                 :            : 
       7                 :            : 
       8                 :            : /* loads the house level into Level*/
       9                 :          0 : void load_house(int kind, int populate)
      10                 :            : {
      11                 :            :   map *home;
      12                 :            :   int i,j;
      13                 :            :   char site;
      14                 :            :   int stops;
      15                 :            :   
      16                 :          0 :   TempLevel = Level;
      17                 :          0 :   initrand(Current_Environment, Player.x + Player.y + hour()*10);
      18         [ #  # ]:          0 :   if (ok_to_free(TempLevel)) {
      19                 :            : #ifndef SAVE_LEVELS
      20                 :          0 :     free_level(TempLevel);
      21                 :            : #endif
      22                 :          0 :     TempLevel = NULL;
      23                 :            :   }
      24                 :            : #ifndef SAVE_LEVELS
      25                 :          0 :   Level = ((plv) checkmalloc(sizeof(levtype)));
      26                 :            : #else
      27                 :            :   msdos_changelevel(TempLevel,0,-1);
      28                 :            :   Level = &TheLevel;
      29                 :            : #endif
      30                 :          0 :   clear_level(Level);
      31      [ #  #  # ]:          0 :   switch(kind) {
      32                 :            :   case E_HOUSE:
      33                 :          0 :     home = map_open(MAP_house);
      34                 :          0 :     break;
      35                 :            :   case E_MANSION:
      36                 :          0 :     home = map_open(MAP_mansion);
      37                 :          0 :     break;
      38                 :            :   default:
      39                 :            :   case E_HOVEL:
      40                 :          0 :     home = map_open(MAP_hovel);
      41                 :          0 :     break;
      42                 :            :   }
      43                 :          0 :   Level->level_width=map_getWidth(home);
      44                 :          0 :   Level->level_length=map_getLength(home);
      45                 :          0 :   map_setLevel(home, 0);
      46                 :            :   
      47                 :          0 :   stops = 0;
      48         [ #  # ]:          0 :   for(j=0;j<Level->level_length;j++) {
      49         [ #  # ]:          0 :     for(i=0;i<Level->level_width;i++) {
      50         [ #  # ]:          0 :       if (kind == E_HOVEL) Level->site[i][j].lstatus = SEEN;
      51                 :          0 :       else Level->site[i][j].lstatus = 0;
      52                 :          0 :       Level->site[i][j].roomnumber = RS_CORRIDOR;
      53                 :          0 :       Level->site[i][j].p_locf = L_NO_OP;
      54                 :          0 :       site = map_getSiteChar(home,i,j);
      55   [ #  #  #  #  :          0 :       switch(site) {
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
      56                 :            :       case 'N':
      57                 :          0 :         Level->site[i][j].locchar = FLOOR;
      58                 :          0 :         Level->site[i][j].roomnumber = RS_BEDROOM;
      59 [ #  # ][ #  # ]:          0 :         if (random_range(2) && populate) make_house_npc(i,j);
      60                 :          0 :         break;
      61                 :            :       case 'H':
      62                 :          0 :         Level->site[i][j].locchar = FLOOR;
      63                 :          0 :         Level->site[i][j].roomnumber = RS_BEDROOM;
      64 [ #  # ][ #  # ]:          0 :         if (random_range(2) && populate) make_mansion_npc(i,j);
      65                 :          0 :         break;
      66                 :            :       case 'D':
      67                 :          0 :         Level->site[i][j].locchar = FLOOR;
      68                 :          0 :         Level->site[i][j].roomnumber = RS_DININGROOM;
      69                 :          0 :         break;
      70                 :            :       case '.':
      71                 :          0 :         Level->site[i][j].locchar = FLOOR;
      72         [ #  # ]:          0 :         if (stops) {
      73                 :          0 :           lset(i,j,STOPS);
      74                 :          0 :           stops = 0;
      75                 :            :         }
      76                 :          0 :         break;
      77                 :            :       case 'c':
      78                 :          0 :         Level->site[i][j].locchar = FLOOR;
      79                 :          0 :         Level->site[i][j].roomnumber = RS_CLOSET;
      80                 :          0 :         break;
      81                 :            :       case 'G':
      82                 :          0 :         Level->site[i][j].locchar = FLOOR;
      83                 :          0 :         Level->site[i][j].roomnumber = RS_BATHROOM;
      84                 :          0 :         break;
      85                 :            :       case 'B':
      86                 :          0 :         Level->site[i][j].locchar = FLOOR;
      87                 :          0 :         Level->site[i][j].roomnumber = RS_BEDROOM;
      88                 :          0 :         break;
      89                 :            :       case 'K':
      90                 :          0 :         Level->site[i][j].locchar = FLOOR;
      91                 :          0 :         Level->site[i][j].roomnumber = RS_KITCHEN;
      92                 :          0 :         break;
      93                 :            :       case 'S':
      94                 :          0 :         Level->site[i][j].locchar = FLOOR;
      95                 :          0 :         Level->site[i][j].showchar = WALL;
      96                 :          0 :         lset(i,j,SECRET);
      97                 :          0 :         Level->site[i][j].roomnumber = RS_SECRETPASSAGE;
      98                 :          0 :         break;
      99                 :            :       case '3':
     100                 :          0 :         Level->site[i][j].locchar = SAFE;
     101                 :          0 :         Level->site[i][j].showchar = WALL;
     102                 :          0 :         lset(i,j,SECRET);
     103                 :          0 :         Level->site[i][j].p_locf = L_SAFE;
     104                 :          0 :         break;
     105                 :            :       case '^':
     106                 :          0 :         Level->site[i][j].locchar = FLOOR;
     107                 :          0 :         Level->site[i][j].p_locf = TRAP_BASE+random_range(NUMTRAPS);
     108                 :          0 :         break;
     109                 :            :       case 'P':
     110                 :          0 :         Level->site[i][j].locchar = PORTCULLIS;
     111                 :          0 :         Level->site[i][j].p_locf = L_PORTCULLIS;
     112                 :          0 :         break;
     113                 :            :       case 'R':
     114                 :          0 :         Level->site[i][j].locchar = FLOOR;
     115                 :          0 :         Level->site[i][j].p_locf = L_RAISE_PORTCULLIS;
     116                 :          0 :         break;
     117                 :            :       case 'p':
     118                 :          0 :         Level->site[i][j].locchar = FLOOR;
     119                 :          0 :         Level->site[i][j].p_locf = L_PORTCULLIS;
     120                 :          0 :         break;
     121                 :            :       case 'T':
     122                 :          0 :         Level->site[i][j].locchar = FLOOR;
     123                 :          0 :         Level->site[i][j].p_locf = L_PORTCULLIS_TRAP;
     124                 :          0 :         break;
     125                 :            :       case 'X':
     126                 :          0 :         Level->site[i][j].locchar = FLOOR;
     127                 :          0 :         Level->site[i][j].p_locf = L_HOUSE_EXIT;
     128                 :          0 :         stops = 1;
     129                 :          0 :         break;
     130                 :            :       case '#':
     131                 :          0 :         Level->site[i][j].locchar = WALL;
     132   [ #  #  #  # ]:          0 :         switch (kind) {
     133                 :          0 :           case E_HOVEL: Level->site[i][j].aux = 10; break;
     134                 :          0 :           case E_HOUSE: Level->site[i][j].aux = 50; break;
     135                 :          0 :           case E_MANSION: Level->site[i][j].aux = 150; break;
     136                 :            :         }
     137                 :          0 :         break;
     138                 :            :       case '|':
     139                 :          0 :         Level->site[i][j].locchar = OPEN_DOOR;
     140                 :          0 :         Level->site[i][j].roomnumber = RS_CORRIDOR;
     141                 :          0 :         lset(i,j,STOPS);
     142                 :          0 :         break;
     143                 :            :       case '+':
     144                 :          0 :         Level->site[i][j].locchar = CLOSED_DOOR;
     145                 :          0 :         Level->site[i][j].roomnumber = RS_CORRIDOR;
     146                 :          0 :         Level->site[i][j].aux = LOCKED;
     147                 :          0 :         lset(i,j,STOPS);
     148                 :          0 :         break;
     149                 :            :       case 'd':
     150                 :          0 :         Level->site[i][j].locchar = FLOOR;
     151                 :          0 :         Level->site[i][j].roomnumber = RS_CORRIDOR;
     152         [ #  # ]:          0 :         if (populate)
     153                 :          0 :           make_site_monster(i,j,DOBERMAN);
     154                 :          0 :         break;
     155                 :            :       case 'a':
     156                 :          0 :         Level->site[i][j].locchar = FLOOR;
     157                 :          0 :         Level->site[i][j].roomnumber = RS_CORRIDOR;
     158                 :          0 :         Level->site[i][j].p_locf = L_TRAP_SIREN;
     159                 :          0 :         break;
     160                 :            :       case 'A':
     161                 :          0 :         Level->site[i][j].locchar = FLOOR;
     162                 :          0 :         Level->site[i][j].roomnumber = RS_CORRIDOR;
     163         [ #  # ]:          0 :         if (populate)
     164                 :          0 :           make_site_monster(i,j,AUTO_MINOR); /* automaton */
     165                 :          0 :         break;
     166                 :            :       }
     167                 :          0 :       Level->site[i][j].showchar = ' ';
     168                 :            :     }
     169                 :            :   }
     170                 :          0 :   map_close(home);
     171                 :          0 :   initrand(E_RESTORE, 0);
     172                 :          0 : }
     173                 :            : 
     174                 :            : 
     175                 :            :   
     176                 :            : /* makes a log npc for houses and hovels */
     177                 :          0 : void make_house_npc(int i, int j)
     178                 :            : {
     179                 :          0 :   pml ml = ((pml) checkmalloc(sizeof(mltype)));
     180                 :            :   pob ob;
     181                 :          0 :   ml->m = ((pmt) checkmalloc(sizeof(montype)));
     182                 :          0 :   *(ml->m) = Monsters[NPC];
     183                 :          0 :   make_log_npc(ml->m);
     184         [ #  # ]:          0 :   if (ml->m->id == NPC) mprint("You detect signs of life in this house.");
     185                 :          0 :   else mprint("An eerie shiver runs down your spine as you enter....");
     186                 :            :   /* if not == NPC, then we got a ghost off the npc list */
     187                 :          0 :   ml->m->x = i;
     188                 :          0 :   ml->m->y = j;
     189                 :          0 :   Level->site[i][j].creature = ml->m;
     190                 :          0 :   ml->m->click = (Tick + 1) % 50;
     191                 :          0 :   ml->next = Level->mlist;
     192                 :          0 :   Level->mlist = ml;
     193                 :          0 :   m_status_set(ml->m,HOSTILE);
     194         [ #  # ]:          0 :   if (nighttime())
     195                 :          0 :     m_status_reset(ml->m,AWAKE);
     196                 :          0 :   else m_status_set(ml->m,AWAKE);
     197         [ #  # ]:          0 :   if (ml->m->startthing > -1) {
     198                 :          0 :     ob = ((pob) checkmalloc(sizeof(objtype)));    
     199                 :          0 :     *ob = Objects[ml->m->startthing];
     200                 :          0 :     m_pickup(ml->m,ob);
     201                 :            :   }
     202                 :          0 : }
     203                 :            : 
     204                 :            : 
     205                 :            : /* makes a hiscore npc for mansions */
     206                 :          0 : void make_mansion_npc(int i, int j)
     207                 :            : {
     208                 :          0 :   pml ml = ((pml) checkmalloc(sizeof(mltype)));
     209                 :          0 :   ml->m = ((pmt) checkmalloc(sizeof(montype)));
     210                 :          0 :   *(ml->m) = Monsters[NPC];
     211                 :          0 :   make_hiscore_npc(ml->m,random_range(14) + 1);
     212                 :          0 :   mprint("You detect signs of life in this house.");
     213                 :          0 :   ml->m->x = i;
     214                 :          0 :   ml->m->y = j;
     215                 :          0 :   Level->site[i][j].creature = ml->m;
     216                 :          0 :   ml->m->click = (Tick + 1) % 50;
     217                 :          0 :   ml->next = Level->mlist;
     218                 :          0 :   Level->mlist = ml;
     219                 :          0 :   m_status_set(ml->m,HOSTILE);
     220         [ #  # ]:          0 :   if (nighttime())
     221                 :          0 :     m_status_reset(ml->m,AWAKE);
     222                 :          0 :   else m_status_set(ml->m,AWAKE);
     223                 :          0 : }
     224                 :            : 

Generated by: LCOV version 1.11