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

           Branch data     Line data    Source code
       1                 :            : /* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
       2                 :            : /* effect2.c */
       3                 :            : 
       4                 :            : #include "glob.h"
       5                 :            : 
       6                 :          0 : void knowledge(int blessing)
       7                 :            : {
       8         [ #  # ]:          0 :   if (blessing < 0)
       9                 :          0 :     mprint("You feel ignorant.");
      10                 :            :   else {
      11                 :          0 :     mprint("You feel knowledgeable!");
      12                 :          0 :     menuclear();
      13                 :          0 :     menuprint("Current Point Total: ");
      14                 :          0 :     menulongprint(calc_points());
      15                 :          0 :     menuprint("\nAlignment:");
      16         [ #  # ]:          0 :     if (Player.alignment == 0)
      17                 :          0 :       menuprint("Neutral, embodying the Cosmic Balance");
      18 [ #  # ][ #  # ]:          0 :     else if (abs(Player.alignment) < 10)
      19                 :          0 :       menuprint("Neutral, tending toward ");
      20 [ #  # ][ #  # ]:          0 :     else if (abs(Player.alignment) < 50)
      21                 :          0 :       menuprint("Neutral-");
      22 [ #  # ][ #  # ]:          0 :     else if (abs(Player.alignment) < 100) ;
      23 [ #  # ][ #  # ]:          0 :     else if (abs(Player.alignment) < 200)
      24                 :          0 :       menuprint("Servant of ");
      25 [ #  # ][ #  # ]:          0 :     else if (abs(Player.alignment) < 400)
      26                 :          0 :       menuprint("Master of ");
      27 [ #  # ][ #  # ]:          0 :     else if (abs(Player.alignment) < 800)
      28                 :          0 :       menuprint("The Essence of ");
      29                 :          0 :     else menuprint("The Ultimate Avatar of ");
      30         [ #  # ]:          0 :     if (Player.alignment < 0) menuprint("Chaos\n");
      31         [ #  # ]:          0 :     else if (Player.alignment > 0) menuprint("Law\n");
      32                 :          0 :     showmenu();
      33                 :          0 :     morewait();
      34                 :          0 :     menuclear();
      35                 :          0 :     menuprint("Current stati:\n");
      36         [ #  # ]:          0 :     if (Player.status[BLINDED])
      37                 :          0 :       menuprint("Blinded\n");
      38         [ #  # ]:          0 :     if (Player.status[SLOWED])
      39                 :          0 :       menuprint("Slowed\n");
      40                 :            : #ifdef DEBUG
      41                 :            :     if (Player.status[SLOWED])
      42                 :            :       fprintf(DG_debug_log, "Slowed is %d\n", Player.status[SLOWED] );
      43                 :            : #endif
      44         [ #  # ]:          0 :     if (Player.status[HASTED])
      45                 :          0 :       menuprint("Hasted\n");
      46         [ #  # ]:          0 :     if (Player.status[DISPLACED])
      47                 :          0 :       menuprint("Displaced\n");
      48         [ #  # ]:          0 :     if (Player.status[SLEPT])
      49                 :          0 :       menuprint("Slept\n");
      50         [ #  # ]:          0 :     if (Player.status[DISEASED])
      51                 :          0 :       menuprint("Diseased\n");
      52         [ #  # ]:          0 :     if (Player.status[POISONED])
      53                 :          0 :       menuprint("Poisoned\n");
      54         [ #  # ]:          0 :     if (Player.status[BREATHING])
      55                 :          0 :       menuprint("Breathing\n");
      56         [ #  # ]:          0 :     if (Player.status[INVISIBLE])
      57                 :          0 :       menuprint("Invisible\n");
      58         [ #  # ]:          0 :     if (Player.status[REGENERATING])
      59                 :          0 :       menuprint("Regenerating\n");
      60         [ #  # ]:          0 :     if (Player.status[VULNERABLE])
      61                 :          0 :       menuprint("Vulnerable\n");
      62         [ #  # ]:          0 :     if (Player.status[BERSERK])
      63                 :          0 :       menuprint("Berserk\n");
      64         [ #  # ]:          0 :     if (Player.status[IMMOBILE])
      65                 :          0 :       menuprint("Immobile\n");
      66         [ #  # ]:          0 :     if (Player.status[ALERT])
      67                 :          0 :       menuprint("Alert\n");
      68         [ #  # ]:          0 :     if (Player.status[AFRAID])
      69                 :          0 :       menuprint("Afraid\n");
      70         [ #  # ]:          0 :     if (Player.status[ACCURATE])
      71                 :          0 :       menuprint("Accurate\n");
      72         [ #  # ]:          0 :     if (Player.status[HERO])
      73                 :          0 :       menuprint("Heroic\n");
      74         [ #  # ]:          0 :     if (Player.status[LEVITATING])
      75                 :          0 :       menuprint("Levitating\n");
      76         [ #  # ]:          0 :     if (Player.status[TRUESIGHT]) /* FIXED! 12/30/98 DG */
      77                 :          0 :       menuprint("Sharp\n");
      78         [ #  # ]:          0 :     if (Player.status[SHADOWFORM])
      79                 :          0 :       menuprint("Shadowy\n");
      80         [ #  # ]:          0 :     if (Player.status[ILLUMINATION])
      81                 :          0 :       menuprint("Glowing\n");
      82         [ #  # ]:          0 :     if (Player.status[DEFLECTION])
      83                 :          0 :       menuprint("Buffered\n");
      84         [ #  # ]:          0 :     if (Player.status[RETURNING])
      85                 :          0 :       menuprint("Returning\n");
      86                 :          0 :     showmenu();
      87                 :          0 :     morewait();
      88                 :          0 :     menuclear();
      89                 :          0 :     menuprint("Immunities:\n");
      90         [ #  # ]:          0 :     if (p_immune(NORMAL_DAMAGE))
      91                 :          0 :       menuprint("Normal Damage\n");
      92         [ #  # ]:          0 :     if (p_immune(FLAME))
      93                 :          0 :       menuprint("Flame\n");
      94         [ #  # ]:          0 :     if (p_immune(ELECTRICITY))
      95                 :          0 :       menuprint("Electricity\n");
      96         [ #  # ]:          0 :     if (p_immune(COLD))
      97                 :          0 :       menuprint("Cold\n");
      98         [ #  # ]:          0 :     if (p_immune(POISON))
      99                 :          0 :       menuprint("Poison\n");
     100         [ #  # ]:          0 :     if (p_immune(ACID))
     101                 :          0 :       menuprint("Acid\n");
     102         [ #  # ]:          0 :     if (p_immune(FEAR))
     103                 :          0 :       menuprint("Fear\n");
     104         [ #  # ]:          0 :     if (p_immune(SLEEP))
     105                 :          0 :       menuprint("Sleep\n");
     106         [ #  # ]:          0 :     if (p_immune(NEGENERGY))
     107                 :          0 :       menuprint("Negative Energies\n");
     108         [ #  # ]:          0 :     if (p_immune(THEFT))
     109                 :          0 :       menuprint("Theft\n");
     110         [ #  # ]:          0 :     if (p_immune(GAZE))
     111                 :          0 :       menuprint("Gaze\n");
     112         [ #  # ]:          0 :     if (p_immune(INFECTION))
     113                 :          0 :       menuprint("Infection\n");
     114                 :          0 :     showmenu();
     115                 :          0 :     morewait();
     116                 :          0 :     menuclear();
     117                 :          0 :     menuprint("Ranks:\n");
     118   [ #  #  #  #  :          0 :     switch(Player.rank[LEGION]) {
                   #  # ]
     119                 :            :     case COMMANDANT:
     120                 :          0 :       menuprint("Commandant of the Legion"); 
     121                 :          0 :       break;
     122                 :            :     case COLONEL:    
     123                 :          0 :       menuprint("Colonel of the Legion");
     124                 :          0 :       break;
     125                 :            :     case FORCE_LEADER:
     126                 :          0 :       menuprint("Force Leader of the Legion");
     127                 :          0 :       break;
     128                 :            :     case CENTURION:
     129                 :          0 :       menuprint("Centurion of the Legion");
     130                 :          0 :       break;
     131                 :            :     case LEGIONAIRE:
     132                 :          0 :       menuprint("Legionaire");
     133                 :          0 :       break;
     134                 :            :     }
     135         [ #  # ]:          0 :     if (Player.rank[LEGION] > 0) {
     136                 :          0 :       menuprint(" (");
     137                 :          0 :       menunumprint(Player.guildxp[LEGION]);
     138                 :          0 :       menuprint(" XP).\n");
     139                 :            :     }
     140   [ #  #  #  #  :          0 :     switch(Player.rank[ARENA]) {
                #  #  # ]
     141                 :            :     case -1:
     142                 :          0 :       menuprint("Ex-gladiator\n");
     143                 :          0 :       break;
     144                 :            :     case CHAMPION:
     145                 :          0 :       menuprint("Gladiator Champion");
     146                 :          0 :       break;
     147                 :            :     case GLADIATOR:    
     148                 :          0 :       menuprint("Gladiator of the Arena");
     149                 :          0 :       break;
     150                 :            :     case RETIARIUS:
     151                 :          0 :       menuprint("Retiarius of the Arena");
     152                 :          0 :       break;
     153                 :            :     case BESTIARIUS:
     154                 :          0 :       menuprint("Bestiarius of the Arena");
     155                 :          0 :       break;
     156                 :            :     case TRAINEE:
     157                 :          0 :       menuprint("Gladiator Trainee of the Arena");
     158                 :          0 :       break;
     159                 :            :     }
     160         [ #  # ]:          0 :     if (Player.rank[ARENA] > 0) {
     161                 :          0 :       menuprint(" (Opponent ");
     162                 :          0 :       menunumprint(Arena_Opponent);
     163                 :          0 :       menuprint(")\n");
     164                 :            :     }
     165   [ #  #  #  #  :          0 :     switch(Player.rank[COLLEGE]) {
                   #  # ]
     166                 :            :     case ARCHMAGE:
     167                 :          0 :       menuprint("Archmage of the Collegium Magii");
     168                 :          0 :       break;
     169                 :            :     case MAGE:
     170                 :          0 :       menuprint("Collegium Magii: Mage");
     171                 :          0 :       break;
     172                 :            :     case PRECEPTOR:
     173                 :          0 :       menuprint("Collegium Magii: Preceptor");
     174                 :          0 :       break;
     175                 :            :     case STUDENT:
     176                 :          0 :       menuprint("Collegium Magii: Student");
     177                 :          0 :       break;
     178                 :            :     case NOVICE:
     179                 :          0 :       menuprint("Collegium Magii: Novice");
     180                 :          0 :       break;
     181                 :            :     }
     182         [ #  # ]:          0 :     if (Player.rank[COLLEGE] > 0) {
     183                 :          0 :       menuprint(" (");
     184                 :          0 :       menunumprint(Player.guildxp[COLLEGE]);
     185                 :          0 :       menuprint(" XP).\n");
     186                 :            :     }
     187   [ #  #  #  #  :          0 :     switch(Player.rank[NOBILITY]) {
                   #  # ]
     188                 :            :     case DUKE:
     189                 :          0 :       menuprint("Duke of Rampart");
     190                 :          0 :       break;
     191                 :            :     case LORD:
     192                 :          0 :       menuprint("Peer of the Realm");
     193                 :          0 :       break;
     194                 :            :     case KNIGHT:
     195                 :          0 :       menuprint("Order of the Knights of Rampart");
     196                 :          0 :       break;
     197                 :            :     case ESQUIRE:
     198                 :          0 :       menuprint("Squire of Rampart");
     199                 :          0 :       break;
     200                 :            :     case COMMONER:
     201                 :          0 :       menuprint("Commoner");
     202                 :          0 :       break;
     203                 :            :     default:
     204                 :          0 :       menuprint("Lowly Commoner\n");
     205                 :          0 :       break;
     206                 :            :     }
     207         [ #  # ]:          0 :     if (Player.rank[NOBILITY] > 1) {
     208                 :          0 :       menuprint(" (");
     209                 :          0 :       menunumprint(Player.rank[NOBILITY] - 1);
     210                 :          0 :       menuprint(ordinal(Player.rank[NOBILITY] - 1));
     211                 :          0 :       menuprint(" Quest Completed)\n");
     212                 :            :     }
     213         [ #  # ]:          0 :     else if (Player.rank[NOBILITY] == 1) {
     214                 :          0 :       menuprint(" (1st Quest Undertaken)\n");
     215                 :            :     }
     216   [ #  #  #  #  :          0 :     switch(Player.rank[CIRCLE]) {
                #  #  # ]
     217                 :            :     case -1:
     218                 :          0 :       menuprint("Former member of the Circle.\n");
     219                 :          0 :       break;
     220                 :            :     case PRIME:
     221                 :          0 :       menuprint("Prime Sorceror of the Inner Circle");
     222                 :          0 :       break;
     223                 :            :     case HIGHSORCEROR:
     224                 :          0 :       menuprint("High Sorceror of the Inner Circle");
     225                 :          0 :       break;
     226                 :            :     case SORCEROR:
     227                 :          0 :       menuprint("Member of the Circle of Sorcerors");
     228                 :          0 :       break;
     229                 :            :     case ENCHANTER:
     230                 :          0 :       menuprint("Member of the Circle of Enchanters");
     231                 :          0 :       break;
     232                 :            :     case INITIATE:
     233                 :          0 :       menuprint("Member of the Circle of Initiates");
     234                 :          0 :       break;
     235                 :            :     }
     236         [ #  # ]:          0 :     if (Player.rank[CIRCLE] > 0) {
     237                 :          0 :       menuprint(" (");
     238                 :          0 :       menunumprint(Player.guildxp[CIRCLE]);
     239                 :          0 :       menuprint(" XP).\n");
     240                 :            :     }
     241   [ #  #  #  #  :          0 :     switch(Player.rank[ORDER]) {
                #  #  # ]
     242                 :            :     case -1:
     243                 :          0 :       menuprint("Washout from the Order of Paladins\n");
     244                 :          0 :       break;
     245                 :            :     case JUSTICIAR:
     246                 :          0 :       menuprint("Justiciar of the Order of Paladins");
     247                 :          0 :       break;
     248                 :            :     case PALADIN:
     249                 :          0 :       menuprint("Paladin of the Order");
     250                 :          0 :       break;
     251                 :            :     case CHEVALIER:
     252                 :          0 :       menuprint("Chevalier of the Order");
     253                 :          0 :       break;
     254                 :            :     case GUARDIAN:
     255                 :          0 :       menuprint("Guardian of the Order");
     256                 :          0 :       break;
     257                 :            :     case GALLANT:
     258                 :          0 :       menuprint("Gallant of the Order");
     259                 :          0 :       break;
     260                 :            :     }
     261         [ #  # ]:          0 :     if (Player.rank[ORDER] > 0) {
     262                 :          0 :       menuprint(" (");
     263                 :          0 :       menunumprint(Player.guildxp[ORDER]);
     264                 :          0 :       menuprint(" XP).\n");
     265                 :            :     }
     266   [ #  #  #  #  :          0 :     switch(Player.rank[THIEVES]) {
                   #  # ]
     267                 :            :     case SHADOWLORD:
     268                 :          0 :       menuprint("Guild of Thieves: Shadowlord");
     269                 :          0 :       break;
     270                 :            :     case TMASTER:
     271                 :          0 :       menuprint("Guild of Thieves: Master Thief");
     272                 :          0 :       break;
     273                 :            :     case THIEF:
     274                 :          0 :       menuprint("Guild of Thieves: Thief");
     275                 :          0 :       break;
     276                 :            :     case ATHIEF:
     277                 :          0 :       menuprint("Guild of Thieves: Apprentice Thief");
     278                 :          0 :       break;
     279                 :            :     case TMEMBER:
     280                 :          0 :       menuprint("Guild of Thieves: Candidate Member");
     281                 :          0 :       break;
     282                 :            :     }
     283         [ #  # ]:          0 :     if (Player.rank[THIEVES] > 0) {
     284                 :          0 :       menuprint(" (");
     285                 :          0 :       menunumprint(Player.guildxp[THIEVES]);
     286                 :          0 :       menuprint(" XP).\n");
     287                 :            :     }
     288   [ #  #  #  #  :          0 :     switch(Player.rank[PRIESTHOOD]) {
                   #  # ]
     289                 :            :       case LAY:
     290                 :          0 :         menuprint("A lay devotee of ");
     291                 :          0 :         break;
     292                 :            :       case ACOLYTE:
     293                 :          0 :         menuprint("An Acolyte of ");
     294                 :          0 :         break;
     295                 :            :       case PRIEST:
     296                 :          0 :         menuprint("A Priest of ");
     297                 :          0 :         break;
     298                 :            :       case SPRIEST:
     299                 :          0 :         menuprint("A Senior Priest of ");
     300                 :          0 :         break;
     301                 :            :       case HIGHPRIEST:
     302                 :          0 :         menuprint("The High Priest of ");
     303                 :          0 :         break;
     304                 :            :       }
     305   [ #  #  #  #  :          0 :     switch(Player.patron) {
                #  #  # ]
     306                 :            :       case ODIN:
     307                 :          0 :         menuprint("Odin");
     308                 :          0 :         break;
     309                 :            :       case SET:
     310                 :          0 :         menuprint("Set");
     311                 :          0 :         break;
     312                 :            :       case ATHENA:
     313                 :          0 :         menuprint("Athena");
     314                 :          0 :         break;
     315                 :            :       case HECATE:
     316                 :          0 :         menuprint("Hecate");
     317                 :          0 :         break;
     318                 :            :       case DRUID:
     319                 :          0 :         menuprint("Druidism");
     320                 :          0 :         break;
     321                 :            :       case DESTINY:
     322                 :          0 :         menuprint("the Lords of Destiny");
     323                 :          0 :         break;
     324                 :            :     }
     325         [ #  # ]:          0 :     if (Player.rank[PRIESTHOOD] > 0) {
     326                 :          0 :       menuprint(" (");
     327                 :          0 :       menunumprint(Player.guildxp[PRIESTHOOD]);
     328                 :          0 :       menuprint(" XP).\n");
     329                 :            :     }
     330                 :            : #ifdef INCLUDE_MONKS
     331   [ #  #  #  #  :          0 :     switch(Player.rank[MONKS]) {
             #  #  #  # ]
     332                 :            :     case MONK_GRANDMASTER:
     333                 :          0 :       menuprint("Tholian Monks: Grandmaster");
     334                 :          0 :       break;
     335                 :            :     case MONK_MASTER_TEARS:
     336                 :          0 :       menuprint("Tholian Monks: Master of Tears");
     337                 :          0 :       break;
     338                 :            :     case MONK_MASTER_PAINS:
     339                 :          0 :       menuprint("Tholian Monks: Master of Pain");
     340                 :          0 :       break;
     341                 :            :     case MONK_MASTER_SIGHS:
     342                 :          0 :       menuprint("Tholian Monks: Master of Sighs");
     343                 :          0 :       break;
     344                 :            :     case MONK_MASTER:
     345                 :          0 :       menuprint("Tholian Monks: Master");
     346                 :          0 :       break;
     347                 :            :     case MONK_MONK:
     348                 :          0 :       menuprint("Tholian Monks: Monk");
     349                 :          0 :       break;
     350                 :            :     case MONK_TRAINEE:
     351                 :          0 :       menuprint("Tholian Monks: Trainee");
     352                 :          0 :       break;
     353                 :            :     }
     354         [ #  # ]:          0 :     if (Player.rank[MONKS] > 0) {
     355                 :          0 :       menuprint(" (");
     356                 :          0 :       menunumprint(Player.guildxp[MONKS]);
     357                 :          0 :       menuprint(" XP).\n");
     358                 :            :     }
     359                 :            : #endif
     360         [ #  # ]:          0 :     if (Player.rank[ADEPT] > 0) 
     361                 :          0 :       menuprint("**************\n*Omegan Adept*\n**************\n");
     362                 :          0 :     showmenu();
     363                 :          0 :     morewait();
     364                 :          0 :     xredraw();
     365                 :            :   }
     366                 :          0 : }
     367                 :            : 
     368                 :            : 
     369                 :            : /* Recreates the current level */
     370                 :          0 : void flux(int blessing)
     371                 :            : {
     372                 :          0 :   mprint("The universe warps around you!");
     373         [ #  # ]:          0 :   if (Current_Environment == E_CITY) {
     374                 :          0 :     mprint("Sensing dangerous high order magic, the Collegium Magii");
     375                 :          0 :     mprint("and the Circle of Sorcerors join forces to negate the spell.");
     376                 :          0 :     mprint("You are zapped by an antimagic ray!!!");
     377                 :          0 :     dispel(-1);
     378                 :          0 :     mprint("The universe unwarps itself....");
     379                 :            :   }
     380         [ #  # ]:          0 :   else if (Current_Environment != Current_Dungeon)
     381                 :          0 :     mprint("Odd.... No effect!");
     382                 :            :   else {
     383                 :          0 :     mprint("You stagger as the very nature of reality warps!");
     384                 :          0 :     erase_level();
     385                 :          0 :     Level->generated = FALSE;
     386                 :          0 :     mprint("The fabric of spacetime reknits....");
     387                 :          0 :     change_level(Level->depth-1,Level->depth,TRUE);
     388                 :            :   }
     389                 :          0 : }
     390                 :            : 
     391                 :            : /*Turns on displacement status for the player */
     392                 :          0 : void displace(int blessing)
     393                 :            : {
     394         [ #  # ]:          0 :   if (blessing > -1) {
     395                 :          0 :       mprint("You feel a sense of dislocation.");
     396                 :          0 :       Player.status[DISPLACED] = blessing + random_range(6);
     397                 :            :     }
     398                 :            :   else {
     399                 :          0 :     mprint("You feel vulnerable");
     400                 :          0 :     Player.status[VULNERABLE] += random_range(6) - blessing;
     401                 :            :   }
     402                 :          0 : }
     403                 :            :   
     404                 :            :         
     405                 :          0 : void invisible(int blessing)
     406                 :            : {  
     407         [ #  # ]:          0 :   if (blessing > -1) {
     408                 :          0 :     mprint("You feel transparent!");
     409                 :          0 :     Player.status[INVISIBLE]+= 2+5*blessing;
     410                 :            :   }
     411                 :            :   else {
     412                 :            : #ifdef NEW_QUOTES
     413                 :          0 :     mprint("You feel endangered!");
     414                 :            : #else
     415                 :            :     mprint("You feel dangerous!");
     416                 :            : #endif
     417                 :          0 :     Player.status[VULNERABLE] +=
     418                 :          0 :       random_range(10)+1;
     419                 :            :   }
     420                 :          0 : }
     421                 :            : 
     422                 :            : 
     423                 :          0 : void warp(int blessing)
     424                 :            : {
     425                 :            :   int newlevel;
     426         [ #  # ]:          0 :   if (Current_Environment != Current_Dungeon) 
     427                 :          0 :     mprint("How strange! No effect....");
     428                 :            :   else {
     429                 :          0 :     newlevel = (int) parsenum("Warp to which level? ");
     430 [ #  # ][ #  # ]:          0 :     if (newlevel >= MaxDungeonLevels || blessing < 0 || newlevel < 1) {
                 [ #  # ]
     431                 :          0 :       mprint("You have been deflected!");
     432                 :          0 :       newlevel=random_range(MaxDungeonLevels - 1) + 1;
     433                 :            :     }
     434                 :          0 :     mprint("You dematerialize...");
     435                 :          0 :     change_level(Level->depth,newlevel,FALSE);
     436                 :            :   }
     437                 :          0 :   roomcheck();
     438                 :          0 : }
     439                 :            : 
     440                 :          0 : void alert(int blessing)
     441                 :            : {
     442         [ #  # ]:          0 :   if (blessing > -1) {
     443                 :          0 :     mprint("You feel on-the-ball.");
     444                 :          0 :     Player.status[ALERT]+= 4+(5*blessing);
     445                 :            :   }
     446                 :          0 :   else sleep_player(abs(blessing)+3);
     447                 :          0 : }
     448                 :            : 
     449                 :          0 : void regenerate(int blessing)
     450                 :            : {
     451         [ #  # ]:          0 :   if (blessing < 0)
     452                 :          0 :     heal(blessing * 10);
     453                 :            :   else {
     454                 :          0 :     mprint("You feel abnormally healthy.");
     455                 :          0 :     Player.status[REGENERATING] += (blessing+1)*50;
     456                 :            :   }
     457                 :          0 : }
     458                 :            : 
     459                 :          0 : void haste(int blessing)
     460                 :            : {
     461         [ #  # ]:          0 :   if (blessing > -1) {
     462         [ #  # ]:          0 :     if (! Player.status[HASTED]) 
     463                 :          0 :       mprint("The world slows down!"); 
     464                 :          0 :     else mprint("Nothing much happens.");
     465         [ #  # ]:          0 :     if (Player.status[SLOWED]) 
     466                 :          0 :       Player.status[SLOWED] = 0;
     467                 :            :     /* DAG -- this seems too long */
     468                 :            :     /* WDT -- I agree.  Next version we'll fiddle it a bit.  I suspect
     469                 :            :      * that the author of haste/slow didn't really understand the time
     470                 :            :      * system (or perhaps the time system's been changed since). */
     471                 :          0 :     Player.status[HASTED] += (blessing*100)+random_range(250);
     472                 :            :   }
     473                 :            :   else {
     474                 :          0 :     mprint("You feel slower.");
     475         [ #  # ]:          0 :     if (Player.status[HASTED] > 0) mprint("...but the feeling quickly fades.");
     476                 :            :     /* DAG don't add, so it can't be come permanent.  Also, reduce duration. */
     477         [ #  # ]:          0 :     else Player.status[SLOWED] = max( random_range(100)+50, Player.status[SLOWED] );
     478                 :            :     /* was: else Player.status[SLOWED] += random_range(250)+250; */
     479                 :            :   }
     480                 :          0 : }
     481                 :            : 
     482                 :          0 : void recover_stat(int blessing)
     483                 :            : {
     484         [ #  # ]:          0 :   if (blessing < 0) {
     485                 :          0 :     mprint("You feel a cold surge!");
     486   [ #  #  #  #  :          0 :     switch(random_range(6)) {
                #  #  # ]
     487                 :          0 :       case 0: Player.str = min(Player.str-1,Player.maxstr-1); break;
     488                 :          0 :       case 1: Player.con = min(Player.con-1,Player.maxcon-1); break;
     489                 :          0 :       case 2: Player.dex = min(Player.dex-1,Player.maxdex-1); break;
     490                 :          0 :       case 3: Player.agi = min(Player.agi-1,Player.maxagi-1); break;
     491                 :          0 :       case 4: Player.iq = min(Player.iq-1,Player.maxiq-1); break;
     492                 :          0 :       case 5: Player.pow = min(Player.pow-1,Player.maxpow-1); break;
     493                 :            :     }
     494                 :            :   }
     495                 :            :   else {
     496                 :          0 :     mprint("You feel a warm tingle!");
     497                 :          0 :     Player.str = max(Player.str,Player.maxstr);
     498                 :          0 :     Player.con = max(Player.con,Player.maxcon);
     499                 :          0 :     Player.dex = max(Player.dex,Player.maxdex);
     500                 :          0 :     Player.agi = max(Player.agi,Player.maxagi);
     501                 :          0 :     Player.iq = max(Player.iq,Player.maxiq);
     502                 :          0 :     Player.pow = max(Player.pow,Player.maxpow);
     503                 :            :     }
     504                 :          0 :   calc_melee();
     505                 :          0 : }
     506                 :            : 
     507                 :          0 : void augment(int blessing)
     508                 :            : {
     509         [ #  # ]:          0 :   if (blessing < 0) {
     510                 :          0 :     mprint("You feel a cold surge!");
     511   [ #  #  #  #  :          0 :     switch(random_range(6)) {
                #  #  # ]
     512                 :          0 :       case 0: Player.str = min(Player.str-1,Player.maxstr-1); break;
     513                 :          0 :       case 1: Player.con = min(Player.con-1,Player.maxcon-1); break;
     514                 :          0 :       case 2: Player.dex = min(Player.dex-1,Player.maxdex-1); break;
     515                 :          0 :       case 3: Player.agi = min(Player.agi-1,Player.maxagi-1); break;
     516                 :          0 :       case 4: Player.iq = min(Player.iq-1,Player.maxiq-1); break;
     517                 :          0 :       case 5: Player.pow = min(Player.pow-1,Player.maxpow-1); break;
     518                 :            :     }
     519                 :            :   }
     520         [ #  # ]:          0 :   else if (blessing == 0) {
     521                 :          0 :     mprint("You feel a warm tingle!");
     522   [ #  #  #  #  :          0 :     switch(random_range(6)) {
                #  #  # ]
     523                 :          0 :       case 0: Player.str = max(Player.str+1,Player.maxstr+1); break;
     524                 :          0 :       case 1: Player.con = max(Player.con+1,Player.maxcon+1); break;
     525                 :          0 :       case 2: Player.dex = max(Player.dex+1,Player.maxdex+1); break;
     526                 :          0 :       case 3: Player.agi = max(Player.agi+1,Player.maxagi+1); break;
     527                 :          0 :       case 4: Player.iq = max(Player.iq+1,Player.maxiq+1); break;
     528                 :          0 :       case 5: Player.pow = max(Player.pow+1,Player.maxpow+1); break;
     529                 :            :     }
     530                 :            :   }
     531                 :            :   else {
     532                 :          0 :     mprint("You feel a hot flash!");
     533                 :          0 :     Player.str = max(Player.str+1,Player.maxstr+1);
     534                 :          0 :     Player.con = max(Player.con+1,Player.maxcon+1);
     535                 :          0 :     Player.dex = max(Player.dex+1,Player.maxdex+1);
     536                 :          0 :     Player.agi = max(Player.agi+1,Player.maxagi+1);
     537                 :          0 :     Player.iq = max(Player.iq+1,Player.maxiq+1);
     538                 :          0 :     Player.pow = max(Player.pow+1,Player.maxpow+1);
     539                 :            :   }
     540                 :          0 :   calc_melee();
     541                 :          0 : }
     542                 :            : 
     543                 :          0 : void breathe(int blessing)
     544                 :            : {
     545         [ #  # ]:          0 :   if (blessing > -1) {
     546                 :          0 :       mprint("Your breath is energized!");
     547                 :          0 :       Player.status[BREATHING] += 6+blessing;
     548                 :            :     }
     549                 :            :   else {
     550                 :          0 :     mprint("You choke as your lungs fill with water!");
     551                 :          0 :     p_damage(50,UNSTOPPABLE,"drowning");
     552                 :            :   }
     553                 :          0 : }
     554                 :            : 
     555                 :            : 
     556                 :          0 : void i_chaos(pob o)
     557                 :            : {
     558         [ #  # ]:          0 :   if (Player.alignment < 0) {
     559                 :          0 :     Player.alignment -= random_range(20);
     560                 :          0 :     mprint("You feel deliciously chaotic!");
     561                 :          0 :     gain_experience(abs(Player.alignment)*10);
     562                 :            :   }
     563                 :            :   else {
     564                 :          0 :     mprint("You feel a sense of inner turmoil!");
     565                 :            :   }
     566                 :            :   /* Potion of Chaos always makes player more chaotic. PGM */
     567                 :          0 :   Player.alignment -= random_range(20);
     568                 :          0 : }
     569                 :            : 
     570                 :          0 : void i_law(pob o)
     571                 :            : {
     572         [ #  # ]:          0 :   if (Player.alignment > 0) {
     573                 :          0 :     Player.alignment += random_range(20);
     574                 :          0 :     mprint("You feel wonderfully lawful!");
     575                 :          0 :     gain_experience(Player.alignment*10);
     576                 :            :   }
     577                 :            :   else {
     578                 :          0 :     mprint("You feel a sense of inner constraint!");
     579                 :            :   }
     580                 :            :   /* Potion of Law always makes player more lawful. PGM */
     581                 :          0 :   Player.alignment += random_range(20);
     582                 :          0 : }
     583                 :            : 
     584                 :          0 : void sanctify(int blessing)
     585                 :            : {
     586         [ #  # ]:          0 :   if (blessing > -1) {
     587         [ #  # ]:          0 :     if (Level->environment == E_TEMPLE) 
     588                 :          0 :       mprint("Odd, the spell has no effect. I wonder why.");
     589         [ #  # ]:          0 :     else if (Level->site[Player.x][Player.y].locchar == ALTAR) 
     590                 :          0 :       mprint("This site can't get any holier!");
     591         [ #  # ]:          0 :     else if (Player.patron == 0) {
     592                 :          0 :       mprint("The gods are angered!");
     593                 :          0 :       Level->site[Player.x][Player.y].locchar = LAVA;
     594                 :          0 :       Level->site[Player.x][Player.y].p_locf = L_LAVA;
     595                 :          0 :       lset(Player.x, Player.y, CHANGED);
     596                 :          0 :       p_movefunction(L_LAVA);
     597                 :            :     }
     598                 :            :     else {
     599                 :          0 :       Level->site[Player.x][Player.y].locchar = ALTAR;
     600                 :          0 :       Level->site[Player.x][Player.y].aux = Player.patron;
     601                 :          0 :       Level->site[Player.x][Player.y].p_locf = L_ALTAR;
     602                 :          0 :       lset(Player.x, Player.y, CHANGED);
     603                 :          0 :       mprint("You are standing on sacred ground!");
     604                 :            :     }
     605                 :            :   }
     606                 :            :   else {
     607         [ #  # ]:          0 :     if (Level->site[Player.x][Player.y].locchar == ALTAR) {
     608                 :          0 :       mprint("The altar crumbles before your unholy blast....");
     609                 :          0 :       Level->site[Player.x][Player.y].locchar = FLOOR;
     610                 :          0 :       Level->site[Player.x][Player.y].p_locf = L_NO_OP;
     611                 :          0 :       lset(Player.x, Player.y, CHANGED);
     612         [ #  # ]:          0 :       if (Level->site[Player.x][Player.y].aux == Player.patron) {
     613                 :          0 :         mprint("Your deity is not amused....");
     614                 :          0 :         p_damage(Player.hp-1,UNSTOPPABLE,"Divine Wrath");
     615                 :            :       }
     616 [ #  # ][ #  # ]:          0 :       else if ((Player.patron == ATHENA) || (Player.patron == ODIN)) {
     617 [ #  # ][ #  # ]:          0 :         if ((Level->site[Player.x][Player.y].aux == SET) ||
     618                 :          0 :             (Level->site[Player.x][Player.y].aux == HECATE)) {
     619                 :          0 :           mprint("Your deity applauds the eradication of Chaos' taint");
     620                 :          0 :           gain_experience(1000);
     621                 :            :         }
     622                 :            :         else {
     623                 :          0 :           mprint("Your deity approves of your action.");
     624                 :          0 :           gain_experience(100);
     625                 :            :         }
     626                 :            :       }
     627 [ #  # ][ #  # ]:          0 :       else if ((Player.patron == SET) || (Player.patron == HECATE)) {
     628 [ #  # ][ #  # ]:          0 :         if ((Level->site[Player.x][Player.y].aux == ODIN) ||
     629                 :          0 :             (Level->site[Player.x][Player.y].aux == ATHENA)) {
     630                 :          0 :           mprint("Your deity applauds the obliteration of Law");
     631                 :          0 :           gain_experience(1000);
     632                 :            :         }
     633                 :            :         else {
     634                 :          0 :           mprint("Your deity approves of your action.");
     635                 :          0 :           gain_experience(100);
     636                 :            :         }
     637                 :            :       }
     638         [ #  # ]:          0 :       else if (Player.patron == DRUID) {
     639                 :          0 :         mprint("Your attempt to maintain the Balance is applauded....");
     640                 :          0 :         gain_experience(250);
     641                 :            :       }
     642                 :          0 :       else mprint("Nothing much happens");
     643                 :            :     }
     644                 :          0 :     else mprint("You feel an aura of unholiness arising from this spot....");
     645                 :            :   }
     646                 :          0 : }
     647                 :            : 
     648                 :          0 : void accuracy(int blessing)
     649                 :            : {
     650         [ #  # ]:          0 :   if (blessing > -1) {
     651                 :          0 :       mprint("Everything seems covered in bullseyes!");
     652                 :          0 :       Player.status[ACCURACY] += random_range(5)+1+blessing*5;
     653                 :          0 :       calc_melee();
     654                 :            :     }
     655                 :            :   else {
     656                 :          0 :     Player.status[ACCURACY]=0;
     657                 :          0 :     calc_melee();
     658                 :          0 :     mprint("Your vision blurs...");
     659                 :            :   }
     660                 :          0 : }

Generated by: LCOV version 1.11