rm6/
rm6/clans/
rm6/councils/
rm6/deity/
rm6/doc/mudprogs/
rm6/exchange/
rm6/gods/
rm6/homes/
rm6/nations/
rm6/player/
rm6/player/a/
rm6/src/RCS/
rm6/src/dmalloc/
rm6/src/dmalloc/bin/
rm6/src/dmalloc/include/
rm6/src/dmalloc/lib/
rm6/src/scripts/
rm6/src/utils/
/****************************************************************************
 * ResortMUD Version 5.0 was mainly programmed by Ntanel, Garinan, Josh,    *
 * Badastaz, Digifuzz, Senir, Kratas, Scion, Shogar and Tagith.             *
 * ------------------------------------------------------------------------ *
 * Copyright (C) 1996 - 2001 Haslage Net Electronics: MudWorld of Lorain,   *
 * Ohio.    ALL RIGHTS RESERVED    See /doc/RMLicense.txt for more details. *
 ****************************************************************************/

/*Include the next file as starmap.c into your /src directory and add starmap.o
and starmap.c in the right sections of your Makefile. Then recompile the
code.
*/
#include <string.h>
#include "mud.h"
#define NUM_DAYS 35
/* Match this to the number of days per month; this is the moon cycle */
#define NUM_MONTHS 17
/* Match this to the number of months defined in month_name[].  */  
#define MAP_WIDTH 72
#define MAP_HEIGHT 8
/* Should be the string length and number of the constants below.*/ 
const char *star_map[] =
   
{ 
"                                               C. C.                  g*",
   "    O:       R*        G*    G.  W* W. W.          C. C.    Y* Y. Y.    ",
   "  O*.                c.          W.W.     W.            C.       Y..Y.  ",
   "O.O. O.              c.  G..G.           W:      B*                   Y.",
   "     O.    c.     c.                     W. W.                  r*    Y.",
   "     O.c.     c.      G.             P..     W.        p.      Y.   Y:  ",
   "        c.                    G*    P.  P.           p.  p:     Y.   Y. ",
   "                 b*             P.: P*                 p.p:             " 
};

/****************** CONSTELLATIONS and STARS *****************************
  Cygnus     Mars        Orion      Dragon       Cassiopeia          Venus
           Ursa Ninor                           Mercurius     Pluto    
               Uranus              Leo                Crown       Raptor
*************************************************************************/
const char *sun_map[] = 
{ 
"\\`|'/", 
"- O -", 
"/.|.\\"
};

const char *moon_map[] = 
{ 
" @@@ ", 
"@@@@@", 
" @@@ "
};

void look_sky( CHAR_DATA * ch ) 
{
   static char buf[MAX_STRING_LENGTH];
   static char buf2[4];
   int starpos, sunpos, moonpos, moonphase, i, linenum, precip;
   
pager_printf_color( ch, "You gaze up towards the heavens and see:\r\n" );
   precip = ( ch->in_room->area->weather->precip + 3 * weath_unit - 1 ) / weath_unit;
   
if( precip > 1 )
   {
      send_to_char( "There are some clouds in the sky so you cannot see anything else.\r\n", ch );
      return;
   }
   
sunpos = ( MAP_WIDTH * ( 24 - time_info.hour ) / 24 );
   moonpos = ( sunpos + time_info.day * MAP_WIDTH / NUM_DAYS ) % MAP_WIDTH;
   
if( ( moonphase = ( ( ( ( MAP_WIDTH + moonpos - sunpos ) % MAP_WIDTH ) + 
( MAP_WIDTH / 16 ) ) * 8 ) / MAP_WIDTH ) > 4 )
      moonphase -= 8;
   
starpos = ( sunpos + MAP_WIDTH * time_info.month / NUM_MONTHS ) % MAP_WIDTH;
   /*
    * The left end of the star_map will be straight overhead at midnight during 
       * month 0 
    */ 
for( linenum = 0; linenum < MAP_HEIGHT; linenum++ )
   {
      if( ( time_info.hour >= 6 && time_info.hour <= 18 ) && 
( linenum < 3 || linenum >= 6 ) )
         continue;
      
sprintf( buf, " " );
      /*
       * for ( i = MAP_WIDTH/4; i <= 3*MAP_WIDTH/4; i++)
       */ 
for( i = 1; i <= MAP_WIDTH; i++ )
      {
         /*
          * plot moon on top of anything else...unless new moon & no eclipse 
          */ 
if( ( time_info.hour >= 6 && time_info.hour <= 18 ) /* daytime? */  
 &&( moonpos >= MAP_WIDTH / 4 - 2 )
                  && ( moonpos <= 3 * MAP_WIDTH / 4 + 2 ) /* in sky? */  
 &&( i >= moonpos - 2 )
                  && ( i <= moonpos + 2 ) /* is this pixel near moon? */  
 &&( ( sunpos == moonpos && time_info.hour == 12 )
                                                                                || moonphase !=
                                                                                0 ) /*no eclipse */  
 &&( moon_map[linenum -
                                                                                                                    3][i +
                                                                                                                       2 -
                                                                                                                       moonpos]
                                                                                                           == '@' ) )
         {
            if( ( moonphase < 0 && i - 2 - moonpos >= moonphase ) || 
( moonphase > 0 && i + 2 - moonpos <= moonphase ) )
               
strcat( buf, "&W@" );
            else
               strcat( buf, " " );
         }
         else
            if( ( linenum >= 3 ) && ( linenum < 6 ) && /* nighttime */ 
( moonpos >= MAP_WIDTH / 4 - 2 )
                && ( moonpos <= 3 * MAP_WIDTH / 4 + 2 ) /* in sky? */  
 &&( i >= moonpos - 2 )
                && ( i <= moonpos + 2 ) /* is this pixel near moon? */  
 &&( moon_map[linenum - 3][i + 2 - moonpos] ==
                                                                              '@' ) )
         {
            if( ( moonphase < 0 && i - 2 - moonpos >= moonphase ) || 
( moonphase > 0 && i + 2 - moonpos <= moonphase ) )
               strcat( buf, "&W@" );
            else
               strcat( buf, " " );
         }
         else  /* plot sun or stars */
         {
            if( time_info.hour >= 6 && time_info.hour <= 18 )  /* daytime */
            {
               if( i >= sunpos - 2 && i <= sunpos + 2 )
               {
                  sprintf( buf2, "&Y%c", sun_map[linenum - 3][i + 2 - sunpos] );
                  strcat( buf, buf2 );
               }
               else
                  strcat( buf, " " );
            }
            else
            {
               switch ( star_map[linenum][( MAP_WIDTH + i - starpos ) % MAP_WIDTH] )
               {
                  default:
                     strcat( buf, " " );
                     break;
                  
case ':':
                     strcat( buf, ":" );
                     break;
                  
case '.':
                     strcat( buf, "." );
                     break;
                  
case '*':
                     strcat( buf, "*" );
                     break;
                  
case 'G':
                     strcat( buf, "&G " );
                     break;
                  
case 'g':
                     strcat( buf, "&g " );
                     break;
                  
case 'R':
                     strcat( buf, "&R " );
                     break;
                  
case 'r':
                     strcat( buf, "&r " );
                     break;
                  
case 'C':
                     strcat( buf, "&C " );
                     break;
                  
case 'O':
                     strcat( buf, "&O " );
                     break;
                  
case 'B':
                     strcat( buf, "&B " );
                     break;
                  
case 'P':
                     strcat( buf, "&P " );
                     break;
                  
case 'W':
                     strcat( buf, "&W " );
                     break;
                  
case 'b':
                     strcat( buf, "&b " );
                     break;
                  
case 'p':
                     strcat( buf, "&p " );
                     break;
                  
case 'Y':
                     strcat( buf, "&Y " );
                     break;
                  
case 'c':
                     strcat( buf, "&c " );
                     break;
               }
            }
         }
      }
      strcat( buf, "\r\n" );
      send_to_char_color( buf, ch );
   }
}