/**************************************************************************/ // whofmt.cpp - various formats for the who list /*************************************************************************** * The Dawn of Time v1.69r (c)1997-2004 Michael Garratt * * >> A number of people have contributed to the Dawn codebase, with the * * majority of code written by Michael Garratt - www.dawnoftime.org * * >> To use this source code, you must fully comply with the dawn license * * in licenses.txt... In particular, you may not remove this copyright * * notice. * **************************************************************************/ #include "include.h" #include "channels.h" /**************************************************************************/ // example whoformat function - about as simple as it gets char *whoformat_just_names( char_data *ch, char_data *wch, bool two_column) { return wch->name; } /**************************************************************************/ char *whoformat_dawn ( char_data *ch, char_data *wch, bool two_column) { static char return_buf[MSL*2]; char const *clss; char bracket_col[10]; // [ colour char left_bracket[20]; // L, ! or [ char right_bracket[20]; // ! or ] char buf[MSL]; char buf2[MSL]; char wizitext[40]; char incogtext[20]; char whoclass[20]; return_buf[0]='\0'; // clear the initial return string char name[MIL]; { strcpy(name, wch->name); // generate the name displayed // put the afk message or title depending on if they are afk if(IS_SET(wch->comm, COMM_AFK) && wch->pcdata && !IS_NULLSTR(wch->pcdata->afk_message)) { strcat(name, FORMATF(" (%s)", wch->pcdata->afk_message)); }else if(!GAMESETTING3(GAMESET3_WHO_TITLE_DISABLED)){ // concat the title strcat(name, FORMATF(" %s", wch->pcdata->title)); } } // Figure out what to print for clss. clss="***"; switch ( wch->level ) { default: clss="***";break; case MAX_LEVEL - 0 : clss = "IMP"; break; case MAX_LEVEL - 1 : clss = "CRE"; break; case MAX_LEVEL - 2 : clss = "SUP"; break; case MAX_LEVEL - 3 : clss = "DEI"; break; case MAX_LEVEL - 4 : clss = "GUA"; break; case MAX_LEVEL - 5 : clss = "IMM"; break; case MAX_LEVEL - 6 : clss = "DEM"; break; case MAX_LEVEL - 7 : clss = "ANG"; break; case MAX_LEVEL - 8 : clss = "AVA"; break; } if(wch->level==ABSOLUTE_MAX_LEVEL && ABSOLUTE_MAX_LEVEL!=MAX_LEVEL){ if(wch->pcdata && wch->pcdata->who_text && c_str_len(wch->pcdata->who_text)==3){ clss=wch->pcdata->who_text; }else{ clss="***"; } } // alternate 3 tier imm ranking system (IMP, ADM, IMM) if(GAMESETTING4(GAMESET4_3TIER_IMMRANKS_IN_WHO)){ switch ( wch->level ) { case MAX_LEVEL - 0 : clss = "IMP"; break; case MAX_LEVEL - 1 : clss = "ADM"; break; case MAX_LEVEL - 2 : clss = "ADM"; break; case MAX_LEVEL - 3 : clss = "IMM"; break; case MAX_LEVEL - 4 : clss = "IMM"; break; case MAX_LEVEL - 5 : clss = "IMM"; break; case MAX_LEVEL - 6 : clss = "IMM"; break; case MAX_LEVEL - 7 : clss = "IMM"; break; case MAX_LEVEL - 8 : clss = "IMM"; break; default: break; // leave as is } } // push onto morts new/***/clan prefix titles if( wch->level<LEVEL_IMMORTAL){ if ((IS_NEWBIE_SUPPORT(ch) || IS_IMMORTAL(ch)) && IS_NEWBIE(wch)) clss="new"; else if (two_column && (is_same_clan(ch,wch)||IS_IMMORTAL(ch))){ sprintf(whoclass,"%s%s", wch->clan->color_str(), wch->clan->who_cat()); clss=whoclass; }else{ clss = "***"; } } if ( wch->level>=LEVEL_IMMORTAL){ strcpy( bracket_col, "`=\x83"); }else if (IS_IRC(wch)){ strcpy( bracket_col, "`=\x97"); }else{ strcpy( bracket_col, "`=\x96"); } // incog level if (IS_IMMORTAL(ch) && get_trust(ch)>= wch->incog_level && wch->incog_level > 0){ if (two_column){ if (wch->incog_level == LEVEL_IMMORTAL){ sprintf(incogtext, "(Ic)"); }else{ sprintf(incogtext, "(Ic%d)",wch->incog_level ); } }else{ if (wch->incog_level == LEVEL_IMMORTAL){ sprintf(incogtext, " (Incog)"); }else{ sprintf(incogtext, " (Incog %d)",wch->incog_level ); } } }else{ incogtext[0]= '\0'; } // wizi level wizitext[0]='\0'; if ( IS_IMMORTAL(ch) ) { char iw[30], ow[30], w[30]; if(wch->iwizi){ if(wch->iwizi!=LEVEL_IMMORTAL){ sprintf(iw,"`#%sI%d`&", IS_OOC(wch)?"`=\x88":"`=\x89", wch->iwizi); }else{ sprintf(iw,"`#%sI`&", IS_OOC(wch)?"`=\x88":"`=\x89"); } }else{ iw[0]='\0'; } if(wch->owizi){ if(wch->owizi!=LEVEL_IMMORTAL){ sprintf(ow,"`#%sO%d`&", IS_OOC(wch)?"`=\x90":"`=\x88", wch->owizi); }else{ sprintf(ow,"`#%sO`&", IS_OOC(wch)?"`=\x90":"`=\x88"); } }else{ ow[0]='\0'; } if(wch->invis_level){ if (two_column){ if (wch->invis_level == LEVEL_IMMORTAL){ sprintf(w, "Wz"); }else{ sprintf(w, "Wz%d", wch->invis_level); } }else{ if (wch->invis_level == LEVEL_IMMORTAL){ sprintf(w, "Wizi"); }else{ sprintf(w, "Wizi %d", wch->invis_level); } } }else{ w[0]='\0'; } // generate the wizitext sprintf(wizitext,"%s%s%s",iw, ow, w); if(!IS_NULLSTR(wizitext)){ sprintf(wizitext,"(%s%s%s)",iw, ow, w); }else{ wizitext[0]='\0'; } } // %colour%[%colour sprintf(left_bracket,"%s%s%s", bracket_col, ( IS_SET(wch->act, PLR_LOG) && !IS_IMMORTAL(wch) && IS_ADMIN(ch) ) ? ("`#`=\x87L`^") // L instead of [ :( IS_SET(wch->comm,COMM_NOCHANNELS) && (IS_IMMORTAL(ch) || IS_SET(ch->comm, COMM_CANNOCHANNEL)) ) ?"`#`M!`^" : (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? "<":"[", (wch->level>=LEVEL_IMMORTAL)?"`=\x82":"`=\x81" ); sprintf(right_bracket,"%s%s`#%s", bracket_col, ( IS_SET(wch->comm,COMM_NOCHANNELS) // no channeled bracket && (IS_IMMORTAL(ch) || IS_SET(ch->comm, COMM_CANNOCHANNEL)) )?"`#`=\x86!`^": (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? ">":"]", (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? "`#`=\x91" : ""); if (two_column){ // Format it up //%[%*%]# %new%i%w%b%a%o%O%P%i%h%s%Q%C%l%o%q sprintf( buf, "%s%s%s%s%s`^%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", left_bracket, clss, right_bracket, ((IS_IMMORTAL(ch)||HAS_IMMTALK_NAME(ch))? (HAS_IMMTALK_NAME(wch)?"`#`=\x92#`&":" ") :" "), wch->name, (IS_IMMORTAL(ch) && (wch->level>=LEVEL_IMMORTAL) && IS_SET(wch->comm, COMM_NEWBIE_SUPPORT)) ? " (Newbie Support!)" : "", incogtext, wizitext, IS_SET(wch->comm, COMM_BUILDING) ? " [Build]" : "", IS_SET(wch->comm, COMM_CODING) ? " [Code]" : "", IS_SET(wch->comm, COMM_AFK) ? " `#`=\x84[AFK]`^": "", (!IS_IMMORTAL(wch) && IS_OOC(wch))? " `#`=^(in OOC)`^" : "", (!IS_IMMORTAL(wch) && IS_OLCAREA(wch->in_room->area))? " `#`=&(OLC AREA)`&" : "", (IS_IMMORTAL(ch) && HAS_CONFIG(wch, CONFIG_ACTIVE))? " `#`=\x93<A>`&" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_INVISIBLE))? " (I)" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_HIDE))? " (H)" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_SNEAK))? " (S)" : "", (IS_IMMORTAL(ch) && IS_SET(wch->act, PLR_QUESTER))? " `#`=\x95(" "`=\x94" "Q`=\x95)`&" : "", ((IS_IMMORTAL(ch) || HAS_CONFIG(ch, CONFIG_COURTMEMBER)) && HAS_CONFIG(wch, CONFIG_COURTMEMBER))? " `#`=\x95(" "`=\x94" "T`=\x95)`&" : "", ((IS_IMMORTAL(ch) || HAS_CONFIG(ch, CONFIG_BARD_COUNCIL))&& HAS_CONFIG(wch, CONFIG_BARD_COUNCIL))? " `#`=\x95(" "`=\x94" "B`=\x95)`&" : "", (IS_LINKDEAD(wch)?" `#`=\x85[LD]`^":""), !HAS_CHANNELOFF(wch, CHANNEL_QUIET) && HAS_CHANNELOFF(wch, CHANNEL_OOC)? " `#`=O(ooc off)`^" : HAS_CHANNELOFF(wch, CHANNEL_CHAT)? " `#`=O(chat off)`^" : "", HAS_CHANNELOFF(wch, CHANNEL_QUIET)? " `#`=\x84(q)`^" : "", (( IS_IMMORTAL(ch) || IS_NEWBIE_SUPPORT(ch)) && HAS_CONFIG(wch, CONFIG_NONEWBIE )) ? "`#`=E(no new)`^" : "" ); }else{ // Format it up //idl%[%*%]# %new%i%w%b%a%o%O%i%h%s%Q%C%B%l%o%q%newbie sprintf( buf, "%s%s%s%s%s`^%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", left_bracket, clss, right_bracket, ((IS_IMMORTAL(ch)||HAS_IMMTALK_NAME(ch))? (HAS_IMMTALK_NAME(wch)?"`#`=\x92#`&":" ") :" "), name, (IS_IMMORTAL(ch) && (wch->level>=LEVEL_IMMORTAL) && IS_SET(wch->comm, COMM_NEWBIE_SUPPORT)) ? " (Newbie Support!)" : "", incogtext, wizitext, IS_SET(wch->comm, COMM_BUILDING) ? " [Building]" : "", IS_SET(wch->comm, COMM_CODING) ? " [Coding]" : "", IS_SET(wch->comm, COMM_AFK) ? " `#`=\x84[AFK]`^" : "", (!IS_IMMORTAL(wch) && IS_OOC(wch))? " `#`=^(in OOC)`^" : "", (!IS_IMMORTAL(wch) && wch->in_room && IS_OLCAREA(wch->in_room->area))? " `#`=&(OLC AREA)`x" : "", (IS_IMMORTAL(ch) && HAS_CONFIG(wch, CONFIG_ACTIVE))? " `#`=\x93<A>`&" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_INVISIBLE))? " (I)" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_HIDE))? " (H)" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_SNEAK))? " (S)" : "", (IS_IMMORTAL(ch) && IS_SET(wch->act, PLR_QUESTER))? " `#`=\x95(" "`=\x94" "Q`=\x95)`&" : "", ((IS_IMMORTAL(ch) || HAS_CONFIG(ch, CONFIG_COURTMEMBER))&& HAS_CONFIG(wch, CONFIG_COURTMEMBER))? " `#`=\x95(" "`=\x94" "T`=\x95)`&" : "", ((IS_IMMORTAL(ch) || HAS_CONFIG(ch, CONFIG_BARD_COUNCIL))&& HAS_CONFIG(wch, CONFIG_BARD_COUNCIL))? " `#`=\x95(" "`=\x94" "B`=\x95)`&" : "", (IS_LINKDEAD(wch)?" `#`=\x85[LD]`^":""), !HAS_CHANNELOFF(wch, CHANNEL_QUIET) && HAS_CHANNELOFF(wch, CHANNEL_OOC)? " `#`=O(ooc off)`^" : HAS_CHANNELOFF(wch, CHANNEL_CHAT)? " `#`=O(chat off)`^" : "", HAS_CHANNELOFF(wch, CHANNEL_QUIET)? " `#`=\x84(quiet)`^" : "", (( IS_IMMORTAL(ch) || IS_NEWBIE_SUPPORT(ch)) && HAS_CONFIG(wch, CONFIG_NONEWBIE )) ? "`#`=E(no new)`^" : "" ); } if (IS_ADMIN(ch) && HAS_MSP(wch)){ strcat(buf," `#`=\x95(" "`=\x94" "M`=\x95)`^"); } if (IS_ADMIN(ch) && HAS_MXP(wch)){ strcat(buf," `#`=\x95(" "`=\x94" "X`=\x95)`^"); } #ifdef MCCP_ENABLED if (IS_ADMIN(ch) && wch->desc && wch->desc->out_compress){ strcat(buf," `#`=\x95(" "`=\x94" "C`=\x95)`^"); } #endif if(IS_ADMIN(ch) && HAS_CONFIG(wch,CONFIG_PRACSYS_TESTER)){ strcat(buf," `#`=\x095(`=\x094PT`=\x095)`^"); } // put on the clan details if required if ( !two_column && wch->clan>0 && ( is_same_clan(ch,wch) ||IS_IMMORTAL(ch) ) ) { if (IS_IMMORTAL(ch)) { if (c_str_len(buf)>40) { sprintf( buf2, "%s %s", buf, wch->clan->cwho_name()); } else { sprintf( buf2, "%s %s", str_width(buf,40), wch->clan->cwho_name()); } } else { if (c_str_len(buf)>25) { sprintf( buf2, "%s %s", buf, wch->clan->cwho_name()); } else { sprintf( buf2, "%s %s", str_width(buf,25), wch->clan->cwho_name()); } } strcat(return_buf,buf2); } else { strcat(return_buf,buf); } // on the dedicated pkill style muds, show which area each player is in if( GAMESETTING5(GAMESET5_DEDICATED_PKILL_STYLE_MUD) && wch->in_room && wch->level<LEVEL_IMMORTAL && wch->in_room->area && wch->in_room->area->name) { sprintf(buf,"`x(%s)", wch->in_room->area->name); strcat(return_buf,buf); } // reset colour back for next line strcat(return_buf,"`x"); return (return_buf); } /**************************************************************************/ // storm who format char *whoformat_storm( char_data *ch, char_data *wch, bool two_column) { static char return_buf[MSL*2]; char const *clss; char align_txt[MIL]; char immtitle[MIL]; char title[MIL]; char level[MIL]; // ----- char w0[MIL]; char w1[MIL]; char w2[MIL]; char w3[MIL]; char w4[MIL]; char w5[MIL]; // w0[0] = '\0'; w1[0] = '\0'; w2[0] = '\0'; w3[0] = '\0'; w4[0] = '\0'; w5[0] = '\0'; title[0] = '\0'; immtitle[0] = '\0'; level[0] = '\0'; // Ripped right out of whoformat_dawn: return_buf[0] = '\0'; align_txt[0] = '\0'; // Level, if you're the same clan, or immortal. if(IS_IMMORTAL(ch) || is_same_clan(wch,ch)){ sprintf(level,"`c%s`B%3d`c%s", (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? "<":"[", wch->level, (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? ">":"]"); }else{ if(ch == wch) sprintf(level,"`G<`B%3d`G>",wch->level); else if(IS_NEWBIE(wch) ) sprintf(level,"`c[`GNeW`c]`x"); else sprintf(level,"`c[ ]`X"); } { //Align stuff // get the inner text char *t=""; switch(wch->tendency){ case 3: case 2: t="`WLaW"; break; case 1: case 0: case -1: t="`BBaL"; break; case -2: case -3: t="`RChS"; break; default: t="error"; break; } // get the inner text char oc='x'; switch(wch->alliance){ case 3: case 2: oc='W'; break; case 1: case 0: case -1: oc='B'; break; case -2: case -3: oc='R'; break; default: t="terr"; break; } sprintf(align_txt,"`%c`#<%s`^>", oc, t); } //by graham for immtitle char it[MIL]; // if(HAS_CONFIG2(wch,CONFIG2_GUEST)){ if(false){ strcpy(it, "`CGUEST`x"); // the default GUEST immtitle }else{ if(IS_NULLSTR(wch->pcdata->immtitle)){ strcpy(it, " "); // the default immtitle for now }else{ strcpy(it, wch->pcdata->immtitle); } } if (wch->level >= LEVEL_IMMORTAL) { int half; int sechalf; if (c_str_len(it) == 6){ sprintf(immtitle, "`C%-6s", it); }else{ half = ((7 - c_str_len(it)) / 2); sechalf = (7 - (half + c_str_len(it))); sprintf(immtitle, "%*c%s%*c", half,' ',it,sechalf,' '); } }else if(wch->clan != NULL){ sprintf(immtitle," %-5s ",wch->clan->cwho_name()); }else if(wch->level < LEVEL_IMMORTAL){ sprintf(immtitle," %-5s ",capitalize(race_table[wch->race]->short_name)); } clss="***"; // Figure what to Print for Class switch(wch->level) { default: if(IS_NEWBIE_SUPPORT(wch) && IS_NEWBIE(ch)) clss = "`W+++"; else if(IS_NEWBIE_SUPPORT(ch) && IS_NEWBIE(wch)) clss = "`G+++"; else if(IS_IMMORTAL(ch) && IS_NEWBIE(wch)) clss = "`SNeW"; else clss = class_table[wch->clss].short_name; // temp test //clss = "***"; if(wch == ch) clss = class_table[wch->clss].short_name; if(IS_IMMORTAL(ch)) clss = class_table[wch->clss].short_name; { case MAX_LEVEL + 1: //clss = "***"; if(wch->pcdata && wch->pcdata->who_text && c_str_len(wch->pcdata->who_text) == 3){ clss = wch->pcdata->who_text; break; }else{ //clss = "***"; break; } case MAX_LEVEL - 0: clss = "`SIMP"; break; case MAX_LEVEL - 1: clss = "`BCRE"; break; case MAX_LEVEL - 2: clss = "`WSUP"; break; case MAX_LEVEL - 3: clss = "`WDEI"; break; case MAX_LEVEL - 4: clss = "`WGOD"; break; case MAX_LEVEL - 5: clss = "`WIMM"; break; case MAX_LEVEL - 6: clss = "`WDEM"; break; case MAX_LEVEL - 7: clss = "`WANG"; break; case MAX_LEVEL - 8: clss = "`WAVA"; break; case LEVEL_HERO: clss = "`CHrO"; break; } } if(HAS_CHANNELOFF(wch, CHANNEL_QUIET)) strcat(w0,"`GQ"); else if IS_SET(wch->comm, COMM_CODING) strcat(w0,"`GC"); else if IS_SET(wch->comm, COMM_BUILDING) strcat(w0,"`GB"); else strcat(w0,"`G-"); if IS_AFFECTED(wch, AFF_INVISIBLE) strcat(w1,"`SI"); else if IS_AFFECTED(wch, AFF_SNEAK) strcat(w1,"`SS"); else if IS_AFFECTED(wch, AFF_HIDE) strcat(w1,"`SH"); else strcat(w1, "`S-"); if( IS_KILLER(wch) ) strcat(w2,"`R`FK`x"); else if( IS_THIEF(wch) ) strcat(w2,"`S`FT`x"); else if (IS_NEWBIE_SUPPORT(wch) ) strcat(w2,"`SN"); else if (IS_JAILED(wch) ) strcat(w2,"`CJ"); else strcat(w2, "`Y-"); if IS_SET(wch->pcdata->council, COUNCIL_HEADBALANCE) strcat(w3,"`WB"); // B else if IS_SET(wch->pcdata->council, COUNCIL_HEADSUPPORT) strcat(w3,"`WS"); // S else if IS_SET(wch->pcdata->council, COUNCIL_HEADRP) strcat(w3,"`WP"); // P else if IS_SET(wch->pcdata->council, COUNCIL_HEADREALM) strcat(w3,"`WR"); // R else if IS_SET(wch->pcdata->council, COUNCIL_HEADSTORYLINE) strcat(w3,"`WT"); //T else if IS_SET(wch->pcdata->council, COUNCIL_HEADCLAN) strcat(w3,"`YC"); // N else if IS_SET(wch->pcdata->council, COUNCIL_HEADLAW) strcat(w3,"`WL"); // L else if IS_SET(wch->pcdata->council, COUNCIL_HEADMYTHOS) strcat(w3,"`WY"); // Y else if IS_SET(wch->pcdata->council, COUNCIL_HEADCODE) strcat(w3,"`WC"); // C else if IS_SET(wch->pcdata->council, COUNCIL_CODE) strcat(w3,"`RC"); // C else if IS_SET(wch->pcdata->council, COUNCIL_ADMIN) strcat(w3,"`RA"); // A else if IS_SET(wch->pcdata->council, COUNCIL_LAW) strcat(w3,"`RL"); // L else if IS_SET(wch->pcdata->council, COUNCIL_CLAN) strcat(w3,"`MC"); // N else if IS_SET(wch->pcdata->council, COUNCIL_MYTHOS) strcat(w3,"`RT"); // T else if IS_SET(wch->pcdata->council, COUNCIL_REALM) strcat(w3,"`RR"); // R else if IS_SET(wch->pcdata->council, COUNCIL_RP) strcat(w3,"`RP"); // P else if IS_SET(wch->pcdata->council, COUNCIL_SUPPORT) strcat(w3,"`RS"); // S else if IS_SET(wch->pcdata->council, COUNCIL_BALANCE) strcat(w3,"`RB"); // B else strcat(w3, "`R-"); if (wch->iwizi) strcat(w4,"`CI"); else if (wch->owizi) strcat(w4,"`CO"); else if (wch->invis_level) strcat(w4,"`CW"); else if (wch->incog_level) strcat(w4,"`RI"); else strcat(w4, "`C-"); if( false){//HAS_CONFIG2(wch,CONFIG2_MUDBALL) ){ // if(IS_SET(wch->dyn,DYN_MUDBALL_TEAM_RED) && mudball->game_in_progress){ strcat(w5,"`RM"); // }else if(IS_SET(wch->dyn,DYN_MUDBALL_TEAM_BLUE) && mudball->game_in_progress){ strcat(w5,"`BM"); // }else{ strcat(w5,"`WM"); // } }else if(IS_SET(wch->act, PLR_QUESTER)){ strcat(w5,"`BQ"); }else{ strcat(w5, "`B-"); } // Title & AFK text if IS_SET(wch->comm, COMM_AFK){ if(IS_NULLSTR(wch->pcdata->afk_message)){ strcat(title,"`xIs `BAFK`Y!`x"); }else{ sprintf(title,"`xIs `BAFK`Y!`x %s ",wch->pcdata->afk_message); } }else if(!IS_NULLSTR(wch->pcdata->title)){ strcat(title,wch->pcdata->title); }else{ strcat(title," "); } sprintf(return_buf,"%s`c[%s`X%s`X%s`c] `c[%s%s%s%s%s%s`c]%s %s `x%s`x", level, align_txt, immtitle, clss, w0, w1, w2, w3, w4, w5, (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS))?"`=\x91":"`x", wch->name, title); // Tada. return(return_buf); } /**************************************************************************/ //-Whoformat EndlessDreams -Balo- /**************************************************************************/ char *whoformat_endless( char_data *ch, char_data *wch, bool two_column) { static char return_buf[MSL*2]; char title[MIL]; // ----- char w0[MIL]; char w1[MIL]; char w2[MIL]; char w3[MIL]; char w4[MIL]; // w0[0] = '\0'; w1[0] = '\0'; w2[0] = '\0'; w3[0] = '\0'; w4[0] = '\0'; title[0] = '\0'; return_buf[0] = '\0'; if(HAS_CHANNELOFF(wch, CHANNEL_QUIET)) strcat(w0,"`GQ"); else if IS_SET(wch->comm, COMM_CODING) strcat(w0,"`GC"); else if IS_SET(wch->comm, COMM_BUILDING) strcat(w0,"`GB"); else strcat(w0,"`G-"); if IS_AFFECTED(wch, AFF_INVISIBLE) strcat(w1,"`SI"); else if IS_AFFECTED(wch, AFF_SNEAK) strcat(w1,"`SS"); else if IS_AFFECTED(wch, AFF_HIDE) strcat(w1,"`SH"); else strcat(w1, "`S-"); if IS_SET(wch->pcdata->council, COUNCIL_HEADBALANCE) strcat(w2,"`WB"); // B else if IS_SET(wch->pcdata->council, COUNCIL_HEADSUPPORT) strcat(w2,"`WS"); // S else if IS_SET(wch->pcdata->council, COUNCIL_HEADRP) strcat(w2,"`WP"); // P else if IS_SET(wch->pcdata->council, COUNCIL_HEADREALM) strcat(w2,"`WR"); // R else if IS_SET(wch->pcdata->council, COUNCIL_HEADSTORYLINE) strcat(w2,"`WT"); //T else if IS_SET(wch->pcdata->council, COUNCIL_HEADCLAN) strcat(w2,"`WN"); // N else if IS_SET(wch->pcdata->council, COUNCIL_HEADLAW) strcat(w2,"`WL"); // L else if IS_SET(wch->pcdata->council, COUNCIL_HEADMYTHOS) strcat(w2,"`WY"); // Y else if IS_SET(wch->pcdata->council, COUNCIL_HEADCODE) strcat(w2,"`WC"); // C else if IS_SET(wch->pcdata->council, COUNCIL_CODE) strcat(w2,"`RC"); // C else if IS_SET(wch->pcdata->council, COUNCIL_ADMIN) strcat(w2,"`RA"); // A else if IS_SET(wch->pcdata->council, COUNCIL_LAW) strcat(w2,"`RL"); // L else if IS_SET(wch->pcdata->council, COUNCIL_CLAN) strcat(w2,"`RC"); // N else if IS_SET(wch->pcdata->council, COUNCIL_MYTHOS) strcat(w2,"`RT"); // T else if IS_SET(wch->pcdata->council, COUNCIL_REALM) strcat(w2,"`RR"); // R else if IS_SET(wch->pcdata->council, COUNCIL_RP) strcat(w2,"`RP"); // P else if IS_SET(wch->pcdata->council, COUNCIL_SUPPORT) strcat(w2,"`RS"); // S else if IS_SET(wch->pcdata->council, COUNCIL_BALANCE) strcat(w2,"`RB"); // B else if IS_NEWBIE_SUPPORT(wch) strcat(w2, "`SN"); //N else strcat(w2, "`R-"); if (wch->iwizi) strcat(w3,"`CI"); else if (wch->owizi) strcat(w3,"`CO"); else if (wch->invis_level) strcat(w3,"`CW"); else if (wch->incog_level) strcat(w3,"`RI"); else strcat(w3, "`C-"); if(IS_SET(wch->act, PLR_QUESTER)){ strcat(w4,"`BQ"); }else{ strcat(w4, "`B-"); } // Title & AFK text if IS_SET(wch->comm, COMM_AFK){ if(IS_NULLSTR(wch->pcdata->afk_message)){ strcat(title,"`xIs `BAFK`Y!`x"); }else{ sprintf(title,"`xIs `BAFK`Y!`x %s ",wch->pcdata->afk_message); } }else if(!IS_NULLSTR(wch->pcdata->title)){ strcat(title,wch->pcdata->title); }else{ strcat(title," "); } sprintf(return_buf," `c[%s%s%s%s%s`c]%s %s `x%s`x", w0, w1, w2, w3, w4, (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS))?"`=\x91":"`x", wch->name, title); return(return_buf); } /**************************************************************************/ //-Whoformat Whispers of Times Lost -Ixliam- /**************************************************************************/ char *whoformat_wotl ( char_data *ch, char_data *wch, bool two_column) { static char return_buf[MSL*2]; char const *clss; char bracket_col[10]; // [ colour char left_bracket[20]; // L, ! or [ char right_bracket[20]; // ! or ] char buf[MSL]; char buf2[MSL]; char wizitext[40]; char incogtext[20]; char whoclass[20]; return_buf[0]='\0'; // clear the initial return string char name[MIL]; { // if(!IS_NULLSTR( wch->pcdata->pretitle)) { // strcpy(name, wch->pcdata->pretitle); // strcat(name, FORMATF(" %s", wch->name)); // } // else strcpy(name, wch->name); // generate the name displayed // put the afk message or title depending on if they are afk if(IS_SET(wch->comm, COMM_AFK) && wch->pcdata && !IS_NULLSTR(wch->pcdata->afk_message)) { strcat(name, FORMATF(" (%s)", wch->pcdata->afk_message)); }else if(!GAMESETTING3(GAMESET3_WHO_TITLE_DISABLED)){ // concat the title strcat(name, FORMATF(" %s", wch->pcdata->title)); } } // Figure out what to print for clss. clss="***"; switch ( wch->level ) { default: clss="***";break; case MAX_LEVEL - 0 : clss = "IMP"; break; case MAX_LEVEL - 1 : clss = "CRE"; break; case MAX_LEVEL - 2 : clss = "SUP"; break; case MAX_LEVEL - 3 : clss = "DEI"; break; case MAX_LEVEL - 4 : clss = "GUA"; break; case MAX_LEVEL - 5 : clss = "IMM"; break; case MAX_LEVEL - 6 : clss = "DEM"; break; case MAX_LEVEL - 7 : clss = "ANG"; break; case MAX_LEVEL - 8 : clss = "AVA"; break; } if(wch->level==ABSOLUTE_MAX_LEVEL && ABSOLUTE_MAX_LEVEL!=MAX_LEVEL){ if(wch->pcdata && wch->pcdata->who_text && c_str_len(wch->pcdata->who_text)==3){ clss=wch->pcdata->who_text; }else{ clss="***"; } } // alternate 3 tier imm ranking system (IMP, ADM, IMM) if(GAMESETTING4(GAMESET4_3TIER_IMMRANKS_IN_WHO)){ switch ( wch->level ) { case MAX_LEVEL - 0 : clss = "IMP"; break; case MAX_LEVEL - 1 : clss = "ADM"; break; case MAX_LEVEL - 2 : clss = "ADM"; break; case MAX_LEVEL - 3 : clss = "IMM"; break; case MAX_LEVEL - 4 : clss = "IMM"; break; case MAX_LEVEL - 5 : clss = "IMM"; break; case MAX_LEVEL - 6 : clss = "IMM"; break; case MAX_LEVEL - 7 : clss = "IMM"; break; case MAX_LEVEL - 8 : clss = "IMM"; break; default: break; // leave as is } } // push onto morts new/***/clan prefix titles if( wch->level<LEVEL_IMMORTAL) { // if (IS_VAMPIRE(wch) && // (IS_VAMPIRE (ch) || IS_IMMORTAL(ch) // || wch == ch)) // clss="`#`RVam`^"; // else // if (IS_WEREWOLF(wch) && (IS_WEREWOLF (ch) || IS_IMMORTAL(ch) || wch == ch)) // clss="`#`CWlf`^"; // else if ((IS_NEWBIE_SUPPORT(ch) || IS_IMMORTAL(ch)) && IS_NEWBIE(wch)) clss="`#`Gnew`^"; else if (IS_NEWBIE_SUPPORT(wch) && IS_NEWBIE(ch)) clss="`#`C+++`^"; else if (IS_NEWBIE_SUPPORT(wch) && IS_IMMORTAL(ch)) { clss = class_table[wch->clss].short_name; sprintf(whoclass,"`#`G%s`^", clss); clss=whoclass; } else if (IS_NEWBIE_SUPPORT(wch) && is_same_clan(ch,wch)) { clss = class_table[wch->clss].short_name; sprintf(whoclass,"`#`G%s`^", clss); clss=whoclass; } else if (IS_NEWBIE_SUPPORT(wch) && wch==ch) { clss = class_table[wch->clss].short_name; sprintf(whoclass,"`#`S%s`^", clss); clss=whoclass; } else if (is_same_clan(ch,wch) || IS_IMMORTAL(ch)) { clss = class_table[wch->clss].short_name; sprintf(whoclass,"`#`S%s`^", clss); clss=whoclass; } else if (wch==ch) { clss = class_table[wch->clss].short_name; sprintf(whoclass,"`#`S%s`^", clss); clss=whoclass; } else if (IS_NEWBIE_SUPPORT(wch) && IS_NEWBIE_SUPPORT(ch)) clss = "`#`G+++`^"; else clss = "***"; } if ( wch->level>=LEVEL_IMMORTAL) { strcpy( bracket_col, "`=\x83"); } else if (IS_IRC(wch)) { strcpy( bracket_col, "`=\x97"); } else { strcpy( bracket_col, "`=\x96"); } // incog level if (IS_IMMORTAL(ch) && get_trust(ch)>= wch->incog_level && wch->incog_level > 0) { if (wch->incog_level == LEVEL_IMMORTAL) { sprintf(incogtext, " (Incog)"); } else { sprintf(incogtext, " (Incog %d)",wch->incog_level ); } } else { incogtext[0]= '\0'; } // wizi level wizitext[0]='\0'; if ( IS_IMMORTAL(ch) ) { char iw[30], ow[30], w[30]; if(wch->iwizi){ if(wch->iwizi!=LEVEL_IMMORTAL){ sprintf(iw,"`#%sI%d`&", IS_OOC(wch)?"`=\x88":"`=\x89", wch->iwizi); }else{ sprintf(iw,"`#%sI`&", IS_OOC(wch)?"`=\x88":"`=\x89"); } }else{ iw[0]='\0'; } if(wch->owizi){ if(wch->owizi!=LEVEL_IMMORTAL){ sprintf(ow,"`#%sO%d`&", IS_OOC(wch)?"`=\x90":"`=\x88", wch->owizi); }else{ sprintf(ow,"`#%sO`&", IS_OOC(wch)?"`=\x90":"`=\x88"); } }else{ ow[0]='\0'; } if(wch->invis_level) { if (wch->invis_level == LEVEL_IMMORTAL) { sprintf(w, "Wizi"); } else { sprintf(w, "Wizi %d", wch->invis_level); } } else { w[0]='\0'; } // generate the wizitext sprintf(wizitext,"%s%s%s",iw, ow, w); if(!IS_NULLSTR(wizitext)){ sprintf(wizitext,"(%s%s%s)",iw, ow, w); }else{ wizitext[0]='\0'; } } // %colour%[%colour sprintf(left_bracket,"%s%s%s", bracket_col, ( IS_SET(wch->act, PLR_LOG) && !IS_IMMORTAL(wch) && IS_ADMIN(ch) ) ? ("`#`=\x87L`^") // L instead of [ :( IS_SET(wch->comm,COMM_NOCHANNELS) && (IS_IMMORTAL(ch) || IS_SET(ch->comm, COMM_CANNOCHANNEL)) ) ?"`#`M!`^" : (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? "<":"[", (wch->level>=LEVEL_IMMORTAL)?"`=\x82":"`=\x81" ); sprintf(right_bracket,"%s%s`#%s", bracket_col, ( IS_SET(wch->comm,COMM_NOCHANNELS) // no channeled bracket && (IS_IMMORTAL(ch) || IS_SET(ch->comm, COMM_CANNOCHANNEL)) )?"`#`=\x86!`^": (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? ">":"]", (IS_IMMORTAL(ch) && IS_IMMORTAL(wch) && !IS_SET(wch->comm, COMM_WHOVIS)) ? "`#`=\x91" : ""); // Format it up //idl%[%*%]# %new%i%w%b%a%o%O%i%h%s%Q%C%B%l%o%q%newbie sprintf( buf, "%s%s%s%s%s`^%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", left_bracket, clss, right_bracket, ((IS_IMMORTAL(ch)||HAS_IMMTALK_NAME(ch))? (HAS_IMMTALK_NAME(wch)?"`#`=\x92#`&":" ") :" "), name, (IS_IMMORTAL(ch) && (wch->level>=LEVEL_IMMORTAL) && IS_SET(wch->comm, COMM_NEWBIE_SUPPORT)) ? " (Newbie Support!)" : "", incogtext, wizitext, IS_SET(wch->comm, COMM_BUILDING) ? " [Building]" : "", IS_SET(wch->comm, COMM_CODING) ? " [Coding]" : "", IS_SET(wch->comm, COMM_AFK) ? " `#`=\x84[AFK]`^" : "", (!IS_IMMORTAL(wch) && IS_OOC(wch))? " `#`=^(in OOC)`^" : "", (!IS_IMMORTAL(wch) && wch->in_room && IS_OLCAREA(wch->in_room->area))? " `#`=&(OLC AREA)`x" : "", (IS_IMMORTAL(ch) && HAS_CONFIG(wch, CONFIG_ACTIVE))? " `#`=\x93<A>`&" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_INVISIBLE))? " (I)" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_HIDE))? " (H)" : "", (IS_IMMORTAL(ch) && IS_AFFECTED(wch, AFF_SNEAK))? " (S)" : "", (IS_IMMORTAL(ch) && IS_SET(wch->act, PLR_QUESTER))? " `#`=\x95(" "`=\x94" "Q`=\x95)`&" : "", ((IS_IMMORTAL(ch) || HAS_CONFIG(ch, CONFIG_COURTMEMBER))&& HAS_CONFIG(wch, CONFIG_COURTMEMBER))? " `#`=\x95(" "`=\x94" "T`=\x95)`&" : "", ((IS_IMMORTAL(ch) || HAS_CONFIG(ch, CONFIG_BARD_COUNCIL))&& HAS_CONFIG(wch, CONFIG_BARD_COUNCIL))? " `#`=\x95(" "`=\x94" "B`=\x95)`&" : "", (IS_LINKDEAD(wch)?" `#`=\x85[LD]`^":""), !HAS_CHANNELOFF(wch, CHANNEL_QUIET) && HAS_CHANNELOFF(wch, CHANNEL_OOC)? " `#`=O(ooc off)`^" : HAS_CHANNELOFF(wch, CHANNEL_CHAT)? " `#`=O(chat off)`^" : "", HAS_CHANNELOFF(wch, CHANNEL_QUIET)? " `#`=\x84(quiet)`^" : "", (( IS_IMMORTAL(ch) || IS_NEWBIE_SUPPORT(ch)) && HAS_CONFIG(wch, CONFIG_NONEWBIE )) ? "`#`=E(no new)`^" : "" ); // put on the clan details if required if (wch->clan>0) { if( (is_name( "Coven", wch->clan->notename()) && ( is_same_clan(wch, ch) || IS_IMMORTAL(ch))) || (is_name( "Coven", ch->clan->notename()) && wch == ch ) ) { if (c_str_len(buf)>40) { sprintf( buf2, "%s `#`W[`RT`rhe `RC`roven`W]`^", buf ); } else { sprintf( buf2, "%s `#`W[`RT`rhe `RC`roven`W]`^", str_width(buf,40)); } }else if( (is_name( "MoonShadow", wch->clan->notename()) && ( is_same_clan(wch, ch) || IS_IMMORTAL(ch))) || (is_name( "MoonShadow", ch->clan->notename()) && wch == ch ) ) { if (c_str_len(buf)>40) { sprintf( buf2, "%s `#`W[`CM`Soon`CS`Shadow`W]`^", buf ); } else { sprintf( buf2, "%s `#`W[`CM`Soon`CS`Shadow`W]`^", str_width(buf,40)); } }else if (c_str_len(buf)>40) { sprintf( buf2, "%s %s", buf, wch->clan->cwho_name()); } else { sprintf( buf2, "%s %s", str_width(buf,40), wch->clan->cwho_name()); } strcat(return_buf,buf2); } else { strcat(return_buf,buf); } // reset colour back for next line strcat(return_buf,"`x"); return (return_buf); } /**************************************************************************/ /**************************************************************************/ /**************************************************************************/