/* Since the code for the time command is screwed up out of the box, I dug up 
the code from Rom and merged it. Some IMHO useless info was dropped. Just replace
the entire do_time function and recompile*/
Do_Fun(do_time)
{
	getcurrenttime();
	
    char *suf;
    int day;
	
	if (!NullStr(argument))
	{
		CharData *victim;

		if ((victim = get_char_world(ch, argument)) == NULL || IsNPC(victim))
		{
			chprintln(ch, "There is no such player.");
			return;
		}
		if (GetTzone(victim) == -1)
		{
			act("$N doesn't have a time zone set.", ch, NULL, victim,
				TO_CHAR);
			return;
		}
		act("{W$N's local time is $t.{x", ch,
			str_time(-1, GetTzone(victim), NULL), victim, TO_CHAR);
		return;
	}
	
    day     = time_info.day + 1;

	if ( day > 4 && day <  20 ) suf = "th";
	else if ( day % 10 ==  1       ) suf = "st";
	else if ( day % 10 ==  2       ) suf = "nd";
	else if ( day % 10 ==  3       ) suf = "rd";
	else                             suf = "th";

    chprintlnf(ch,
	"It is %d o'clock %s, Day of %s, %d%s of the Month of %s, year %d.",
	(time_info.hour % 12 == 0) ? 12 : time_info.hour %12,
	time_info.hour >= 12 ? "pm" : "am",
	day_name[day % 7],
	day, suf,
	month_name[time_info.month], time_info.year);
    chprintlnf(ch,"%s started up at %s, which was %s ago. The system time is %s.",
	mud_info.name, str_time(boot_time, -1, NULL), timestr(current_time - boot_time, false), str_time(-1, -1, NULL));;
    return;
}