/*New Note Board snippet by Kai of Nivean Gensis*/
/*Eloria.net Port 9000*/
/*add to merc.h*, with rest of note board delcarations*/
#define INOTE_FILE "inotes.not"
#define ANOTE_FILE "anotes.not"
#define PNOTE_FILE "pnotes.not"
#define CNOTE_FILE "cnotes.not"
/*add to merc.h, with rest of note data structures*/
#define NOTE_INOTE 6
#define NOTE_ANOTE 7
#define NOTE_PNOTE 8
#define NOTE_CNOTE 9
/*add to pc_data, under last_rnote*/
time_t last_inote;
time_t last_anote;
time_t last_pnote;
time_t last_cnote;
/*add to note.c*/
/*with the rest of the note data types*/
NOTE_DATA *inote_list;
NOTE_DATA *anote_list;
NOTE_DATA *pnote_list;
NOTE_DATA *cnote_list;
/*do_board, by Kai July 2002*/
void do_board(CHAR_DATA *ch,char *argument)
{
char buf[MAX_STRING_LENGTH];
int count;
if (IS_NPC(ch))
return;
sprintf(buf, "{c+----------------------------------------------+{x\n\r" );
send_to_char(buf, ch);
sprintf(buf, "{c| |{x\n\r" );
send_to_char(buf,ch);
sprintf(buf, "{c| {D>Note Board<{c |{x\n\r" );
send_to_char( buf, ch);
sprintf(buf, "{c| |{x\n\r" );
send_to_char(buf,ch);
sprintf(buf, "{c+----------------------------------------------+{x\n\r" );
send_to_char( buf, ch);
count = count_spool(ch, note_list);
sprintf(buf,"{c|{WNotes{x [{D%d{x]{W General OOC Notes {c |{x\n\r",count);
send_to_char(buf,ch);
count = count_spool(ch,rnote_list);
sprintf(buf,"{c|{WRoleplay{x [{D%d{x]{W Roleplay Notes {c |{x\n\r",count);
send_to_char(buf,ch);
count = count_spool(ch,cnote_list);
sprintf(buf,"{c|{WClan{x [{D%d{x]{W Notes to Clans {c |{x\n\r");
send_to_char(buf, ch);
count = count_spool(ch,news_list);
sprintf(buf,"{c|{WNews{x [{D%d{x]{W News for the MUD {c |{x\n\r",count);
send_to_char(buf,ch);
count = count_spool(ch,idea_list);
sprintf(buf,"{c|{WIdeas{x [{D%d{x]{W Ideas for Improvement {c |{x\n\r",count);
send_to_char(buf,ch);
count = count_spool(ch,changes_list);
sprintf(buf,"{c|{WChanges{x [{D%d{x]{W Changes that have been Made{c |{x\n\r",count);
send_to_char(buf,ch);
count = count_spool(ch,inote_list);
sprintf(buf,"{c|{WImmortal{x [{D%d{x]{W Notes for Immortals {c |{x\n\r");
send_to_char(buf, ch);
count = count_spool(ch,anote_list);
sprintf(buf,"{c|{WAdmin{x [{D%d{x]{W Notes for Admin {c |{x\n\r");
send_to_char(buf,ch);
if (IS_TRUSTED(ch,ANGEL))
{
count = count_spool(ch,penalty_list);
sprintf(buf,"{c|{WPenalties{x [{D%d{x]{W Penalties Added {c |{x\n\r",count);
send_to_char(buf,ch);
}
count = count_spool(ch,pnote_list);
sprintf(buf,"{c|{WPersonal{x [{D%d{x]{W Personal Notes {c |{x\n\r");
send_to_char(buf,ch);
sprintf( buf, "{c+----------------------------------------------+{x");
send_to_char(buf, ch);
}
/*do save_notes*/
case NOTE_INOTE:
name = INOTE_FILE;
pnote = inote_list;
break;
case NOTE_ANOTE:
name = ANOTE_FILE;
pnote = anote_list;
break;
case NOTE_PNOTE:
name = PNOTE_FILE;
pnote = pnote_list;
break;
case NOTE_CNOTE:
name = CNOTE_FILE;
pnote = cnote_list;
break;
/*void load_notes*/
load_thread(INOTE_FILE,&inote_list,NOTE_INOTE, 0);
load_thread(ANOTE_FILE,&anote_list,NOTE_ANOTE, 0);
load_thread(PNOTE_FILE,&pnote_list,NOTE_PNOTE, 0);
load_thread(CNOTE_FILE,&cnote_list,NOTE_CNOTE, 0);
/* void append_note*/
case NOTE_INOTE:
name = INOTE_FILE;
list = &inote_list;
break;
case NOTE_ANOTE:
name = ANOTE_FILE;
list = &anote_list;
break;
case NOTE_PNOTE:
name = PNOTE_FILE;
list = &pnote_list;
break;
case NOTE_CNOTE:
name = CNOTE_FILE;
list = &cnote_list;
break;
/* void note_remove */
case NOTE_INOTE:
list = &inote_list;
break;
case NOTE_ANOTE:
list = &anote_list;
break;
case NOTE_PNOTE:
list = &pnote_list;
break;
case NOTE_CNOTE:
list = &cnote_list;
break;
/* void hide_note */
case NOTE_INOTE:
last_read = ch->pcdata->last_inote;
break;
case NOTE_ANOTE:
last_read = ch->pcdata->last_anote;
break;
case NOTE_PNOTE:
last_read = ch->pcdata->last_pnote;
break;
case NOTE_CNOTE:
last_read = ch->pcdata->last_cnote;
break;
/* void update_read */
case NOTE_INOTE:
ch->pcdata->last_inote = UMAX(ch->pcdata->last_inote,stamp);
break;
case NOTE_ANOTE:
ch->pcdata->last_anote = UMAX(ch->pcdata->last_anote,stamp);
break;
case NOTE_PNOTE:
ch->pcdata->last_pnote = UMAX(ch->pcdata->last_pnote,stamp);
break;
case NOTE_CNOTE:
ch->pcdata->last_cnote = UMAX(ch->pcdata->last_cnote,stamp);
break;
/* void parse_note*/
case NOTE_INOTE:
list = &inote_list;
list_name = "immortal_notes";
break;
case NOTE_ANOTE:
list = &anote_list;
list_name = "admin_notes";
break;
case NOTE_PNOTE:
list = &pnote_list;
list_name = "personal_notes";
break;
case NOTE_CNOTE:
list = &cnote_list;
list_name = "clan_notes";
break;
/*down father*/
case NOTE_INOTE:
send_to_char("{YThere are no immortal notes for you.{x\n\r",ch);
break;
case NOTE_ANOTE:
send_to_char("{YThere are no admin notes for you.{x\n\r",ch);
break;
case NOTE_PNOTE:
send_to_char("{YThere are no personal notes for you.{x\n\r",ch);
break;
case NOTE_CNOTE:
send_to_char("{YThere are no clan notes for you.{x\n\r",ch);
break;
/*father down*/
case NOTE_INOTE:
ch->pcdata->last_inote = current_time;
break;
case NOTE_ANOTE:
ch->pcdata->last_anote = current_time;
break;
case NOTE_PNOTE:
ch->pcdata->last_pnote = current_time;
break;
case NOTE_CNOTE:
ch->pcdata->last_cnote = current_time;
break;
/*under do_changes*/
void do_personal(CHAR_DATA *ch, char *argument)
{
parse_note(ch,argument,NOTE_PNOTE);
}
void do_immortal(CHAR_DATA *ch, char *argument)
{
parse_note(ch,argument,NOTE_INOTE);
}
void do_admin(CHAR_DATA *ch, char *argument)
{
parse_note(ch,argument,NOTE_ANOTE);
}
void do_cnote(CHAR_DATA *ch, char *argument)
{
parse_note(ch,argument,NOTE_CNOTE);
}
/*after the stuff about you are writing a different kind of note in if(!str_prefix(arg, "to")*/
if (( ch->pnote->type == NOTE_NOTE ) && (str_cmp(argument, "all")))
{
send_to_char( "{CNotes are to all.{x\n\r", ch);
free_string( ch->pnote->to_list );
ch->pnote->to_list = "all";
return;
}
if (( ch->pnote->type == NOTE_INOTE ) && (str_cmp(argument, "Immortal")))
{
send_to_char( "{CImmortal notes are to Immortals.{x\n\r", ch);
free_string( ch->pnote->to_list );
ch->pnote->to_list = "Immortal";
return;
}
if (( ch->pnote->type == NOTE_ANOTE ) && (str_cmp(argument, "Admin")))
{
send_to_char( "{CAdmin notes are to Admin.{x\n\r", ch);
free_string( ch->pnote->to_list );
ch->pnote->to_list = "Admin";
return;
}
if (( ch->pnote->type == NOTE_RNOTE) && (str_cmp(argument, "all")))
{
send_to_char( "{CRoleplay notes are to all.{x\n\r",ch);
free_string( ch->pnote->to_list );
ch->pnote->to_list = "all";
return;
}
if ( ch->pnote->type == NOTE_CNOTE)
{
if (ch->cid->short_name == NULL)
{
send_to_char("You are not in a clan.{x\n\r", ch);
return;
}
else
{
send_to_char( "{CClan notes are written to your clan.{x\n\r", ch);
free_string( ch->pnote->to_list);
ch->pnote->to_list = ch->cid->short_name;
return;
}
}
if ((ch->pnote->type == NOTE_PNOTE) && (!str_cmp(argument, "all")))
{
send_to_char( "{CPersonal notes cannot be written to all.{x\n\r", ch);
return;
}
if ((ch->pnote->type == NOTE_IDEA) && (str_cmp(argument, "all")))
{
send_to_char( "{CIdeas are to be written to all.{x\n\r", ch);
free_string(ch->pnote->to_list);
ch->pnote->to_list = "all";
return;
}
if ((ch->pnote->type == NOTE_CHANGES) && (str_cmp(argument,"all")))
{
send_to_char( "{CChanges are to be written to all{x.\n\r", ch);
free_string( ch->pnote->to_list);
ch->pnote->to_list = "all";
return;
}
if ((ch->pnote->type == NOTE_NEWS) && (str_cmp(argument, "all")))
{
send_to_char( "{CNews is to be written to all{x.\n\r", ch);
free_string( ch->pnote->to_list);
ch->pnote->to_list = "all";
return;
}
/*interp.c*/
/*at the bottom of the section with the command note*/
{ "personal", do_personal, POS_SLEEPING, 0,LOG_NORMAL,1,CMV },
{ "immortal", do_immortal, POS_SLEEPING, 0,LOG_NORMAL,1,CMV },
{ "admin", do_admin, POS_SLEEPING, 0,LOG_NORMAL,1,CMV },
{ "cnote", do_cnote, POS_SLEEPING, 0,LOG_NORMAL,1,CMV },
/*interp.h*/
DECLARE_DO_FUN( do_personal );
DECLARE_DO_FUN( do_immortal );
DECLARE_DO_FUN( do_admin );
DECLARE_DO_FUN( do_cnote );