Night descriptions for rooms, double fun to area builders :)


BACKUP YOUR CODE AND AREA FILES!!!

So, here's a little code i decided to release, I hope you find it useful.
I belive in freeware solutions, so I ask no credit for it.

merc.h

to struct    room_index_data

    char *        name;
    char *        description;
    char *        nightdesc;   //add

olc_save.c

in function save_rooms

                fprintf (fp, "%s~\n", pRoomIndex->name);
                fprintf (fp, "%s~\n", fix_string (pRoomIndex->description));
                fprintf (fp, "%s~\n", fix_string (pRoomIndex->nightdesc)); //add


olc.c

to const struct olc_cmd_type redit_table[] = {

    {"create", redit_create},
    {"desc", redit_desc},
    {"nightdesc", redit_desc1}, //add

olc.h

to
 /*
 * Room Editor Prototypes
 */

DECLARE_OLC_FUN( redit_name		);
DECLARE_OLC_FUN( redit_desc		);
DECLARE_OLC_FUN( redit_desc1		); //add

olc_act.c

to function REDIT (redit_show)

    sprintf (buf, "Description:\n\r%s\n\r", pRoom->description);
    strcat (buf1, buf);

    sprintf (buf, "Night Description:\n\r%s\n\r", pRoom->nightdesc);  /*add*/
    strcat (buf1, buf);								  /*add*/



after function REDIT (redit_desc)

/*add this code...start*/
REDIT (redit_desc1)
{
    ROOM_INDEX_DATA *pRoom;

    EDIT_ROOM (ch, pRoom);

    if (argument[0] == '\0')
    {
        string_append (ch, &pRoom->nightdesc);
        return TRUE;
    }

    send_to_char ("Syntax:  nightdesc\n\r", ch);
    return FALSE;
}
/*end*/

in function REDIT (redit_format)

    pRoom->description = format_string (pRoom->description);
    pRoom->nightdesc = format_string (pRoom->nightdesc); //add


in function REDIT (redit_copy)

    free_string( pRoom->description );
    pRoom->description = str_dup( pRoom2->description );
    
    free_string( pRoom->nightdesc ); /*add*/
    pRoom->nightdesc = str_dup( pRoom2->nightdesc ); /*add*/


act_info.c

somewhere on the top add:

#define NIGHTMESS

in function do_look

        if (arg1[0] == '\0'
            || (!IS_NPC (ch) && !IS_SET (ch->comm, COMM_BRIEF)))
        {
//replace your code stuff with this code...start
#ifdef NIGHTMESS
            if (weather_info.sunlight == SUN_LIGHT)
            {
            send_to_char ("", ch);
            send_to_char (ch->in_room->description, ch);
            send_to_char ("", ch);
            }
            else if (weather_info.sunlight == SUN_RISE)
            {
            send_to_char ("", ch);
            send_to_char (ch->in_room->description, ch);
            send_to_char ("", ch);
            }
            else if (weather_info.sunlight == SUN_SET)
            {
            send_to_char ("", ch);
            send_to_char (ch->in_room->nightdesc, ch);
            send_to_char ("", ch);
            }
            else if (weather_info.sunlight == SUN_DARK)
            {
            send_to_char ("", ch);
            send_to_char (ch->in_room->nightdesc, ch);
            send_to_char ("", ch);
            }
            else
            {
            send_to_char ("BUG!!!\n\r", ch);
            }
#else
            send_to_char ("", ch);
            send_to_char (ch->in_room->description, ch);
            send_to_char ("", ch);
#endif
//end of this code bit
        }


After you are done with previous code, make clean, make, reboot and save your area files.
Then add this code, make, shutdown your mud, and then start it up again. Everything should work fine.

db.c

        pRoomIndex->description = fread_string (fp);
        pRoomIndex->nightdesc = fread_string (fp); //add

This should be all. I hope i did not forget anything.

If you have any bug fixes, updates, ideas for this code or just hate mail to me, let me know:
surma@hot.ee
BlackLand mud at: kellu.black.pri.ee 4000