GridMaker 1.0 by Muerte of MND                         |
                                                        |
 fixed to work for rom by Rashin of TGH2: Project X     |
 http://tgh2.solfice.com                  <- Website    |
 telnet://tgh.solfice.com:8500            <- Mud        |
 langton_designs@hotmail.com		 <- Email       |
========================================================'
Directions:

-->interp.c (I put it under the OLC functions)

    {"gridmake",  do_gridmake, POS_DEAD, ML, LOG_NORMAL, 1},

-->interp.h (bottom of file)

#DECLARE_DO_FUN ( do_gridmake );


-->act_wiz.c (bottom of file)


void do_gridmake(CHAR_DATA *ch, char *argument)
{
    /* GridMaker 1.0 by Muerte of MND */
    /* fixed for rom by Rashin of TGH2: Project X */

    FILE *fp;
    char arg1[10], arg2[10], arg3[10];
    int width, height, vstart, vend,vnum,n,e,s,w,line_pos;
       
    argument = one_argument(argument, arg1);
    argument = one_argument(argument, arg2);
    argument = one_argument(argument, arg3);
            
    if ( arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0')
    {
         send_to_char("SYNTAX: worldmake <start vnum> <width> <height>\n\r", ch);
         return;
    }
        
    width = atoi(arg2);
    height = atoi(arg3);
    vstart = atoi(arg1);
    vend = vstart + (width*height) - 1;
            
    if ((fp = fopen("new.are", "w")) == NULL)
    {
        send_to_char("WORLDMAKE: fopen", ch);
        return;
    }
                 
    printf_to_char(ch, "#*********************************#\n");
    printf_to_char(ch, "# GENERATING %3d BY %3d AREA FILE #\n",width,height);
    printf_to_char(ch, "#*********************************#\n");
     
    fprintf(fp,"#AREADATA\nName MND~\nBuilders None~\nVNUMs %d %d\nCredits MND~\nSecurity 1\nEnd\n", vstart, vend);
    fprintf(fp,"\n\n\n#MOBILES\n#0\n");
    fprintf(fp,"\n\n\n#OBJECTS\n#0\n");
    fprintf(fp,"\n\n\n#ROOMS\n");
            
   for ( vnum=vstart; vnum<=vend; vnum++)
   { /* for every room */
       n=vnum-width;
       s=vnum+width;
       e=vnum+1;
       w=vnum-1;

       /*where it is on the line 0 to (width-1)*/
       line_pos=(vnum-vstart+1)%(width);
       if (line_pos==0)
            line_pos=width;
        
   /*north border*/
       if ( (vnum >= vstart) && (vnum < vstart+width) )
        {
            n=0; 
        }
   /*south border*/
       if ( (vnum > vend-width) && (vnum <= vend) )
        {
            s=0;
        }
   /*east border*/
       if ( (vnum-vstart+1)%(width)==0 )
        {
            e=0; 
        }
   /*west border*/
        if ( (vnum-vstart+1)%(width)==1 )
        {
            w=0;
        }
         
       fprintf(fp,"#%d\nNAME~\n\n~\n0 0 0\n",vnum);
    if (n > 0)
       fprintf(fp,"D0\n\n~\n~\n0 0 %d\n",n);
    if (e > 0)  
       fprintf(fp,"D1\n\n~\n~\n0 0 %d\n",e);
    if (s > 0)   
       fprintf(fp,"D2\n\n~\n~\n0 0 %d\n",s);
    if (w > 0)
       fprintf(fp,"D3\n\n~\n~\n0 0 %d\n",w);

    fprintf(fp,"S\n");
   }
            
    fprintf(fp,"#0\n");
    fprintf(fp,"\n\n\n#SPECIALS\nS\n");
    fprintf(fp,"\n\n\n#RESETS\nS\n");
    fprintf(fp,"\n\n\n#SHOPS\n0\n");
    fprintf(fp,"\n\n\n#$\n");
    fclose(fp); 
    send_to_char("Area Completed\n\r", ch);
    return;      
}