/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ /*************************************************************************** * God Wars Mud copyright (C) 1994, 1995, 1996 by Richard Woolcock * * * * Legend of Chrystancia copyright (C) 1999, 2000, 2001 by Matthew Little * * This mud is NOT to be copied in whole or in part, or to be run without * * the permission of Matthew Little. Nobody else has permission to * * authorise the use of this code. * ***************************************************************************/ #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <ctype.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <assert.h> #include <unistd.h> #include <stdarg.h> #include <limits.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include "merc.h" void obj_score args ((CHAR_DATA * ch, OBJ_DATA * obj)); /* Nothing in here yet */ void do_newbieify (CHAR_DATA * ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; CHAR_DATA *victim; int value; sprintf (buf, "%s: Newbieify %s", ch->name, argument); if (ch->level < NO_WATCH) do_watching (ch, buf); smash_tilde (argument); argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); argument = one_argument (argument, arg3); value = is_number (arg3) ? atoi (arg3) : 0; if (arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0') { send_to_char ("Syntax: newbieify <victim> <field> <value>\n\r", ch); send_to_char ("\n\r", ch); send_to_char ("Field being one of:\n\r", ch); send_to_char ("Legend (Legend Status)\n\r", ch); send_to_char ("Quickening (quickening level)\n\r",ch); send_to_char ("QP (Earned Quest Points)\n\r", ch); send_to_char ("EEXP (Earned Experience Points)\n\r", ch); send_to_char ("Exp (Experience points in hand)\n\r", ch); send_to_char ("Value being 0-9 (Legend only)\n\r", ch); send_to_char ("Or 0 - whatever (QP / Exp)\n\r", ch); return; } if ((victim = get_char_world (ch, arg1)) == NULL) { send_to_char ("They aren't here.\n\r", ch); return; } if (IS_SET (victim->act, PLR_GODLESS) && ch->level < NO_GODLESS) { send_to_char ("You failed.\n\r", ch); return; } if ( !str_cmp( arg2, "quickening" ) ) { if ( IS_NPC(victim) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( value < 0 || value > 1000 ) { send_to_char( "Range is 0 to 1000.\n\r", ch ); return; } if (IS_HIGHJUDGE(ch)) { victim->quickening[1] = value; send_to_char("Quickening set.\n\r",ch);} else send_to_char( "Sorry, no can do...\n\r", ch ); return; } if (!str_cmp (arg2, "legend")) { if (IS_NPC (victim)) { send_to_char ("Not on NPC's.\n\r", ch); return; } if (value < 0 || value > 10) { send_to_char ("Legend Status range is 0 to 10.\n\r", ch); return; } if (IS_HIGHJUDGE (ch)) { victim->lstatus = value; send_to_char ("Legend status set.\n\r", ch); } else send_to_char ("Sorry, no can do...\n\r", ch); return; } if (!str_cmp (arg2, "qp")) { if (IS_NPC (victim)) { send_to_char ("Not on NPC's.\n\r", ch); return; } if (value < 0 || value > 3000000) { send_to_char ("Quest range is 0 to 3000000.\n\r", ch); return; } if (IS_HIGHJUDGE (ch)) { victim->pcdata->score[SCORE_QUEST] = value; send_to_char ("Earned Quest Point value set.\n\r", ch); } else send_to_char ("Sorry, no can do...\n\r", ch); return; } if (!str_cmp (arg2, "exp")) { if (IS_NPC (victim)) { send_to_char ("Not on NPC's.\n\r", ch); return; } if (value < 0 || value > 1000000000) { send_to_char ("Exp range is 0 to 1000000000.\n\r", ch); return; } if (IS_HIGHJUDGE (ch)) { victim->exp = value; send_to_char ("Experience set.\n\r", ch); } else send_to_char ("Sorry, no can do...\n\r", ch); return; } if (!str_cmp (arg2, "eexp")) { if (IS_NPC (victim)) { send_to_char ("Not on NPC's.\n\r", ch); return; } if (value < 0) { send_to_char ("Exp range is 0 to 1000000000.\n\r", ch); return; } if (IS_HIGHJUDGE (ch)) { victim->pcdata->score[SCORE_TOTAL_XP] = value; send_to_char ("Earned Experience set.\n\r", ch); } else send_to_char ("Sorry, no can do...\n\r", ch); return; } } void do_uniscore (CHAR_DATA * ch, char *argument) { int outcast = 0; int online = 0; int total = 0; int a_c = char_ac (ch); float chtier; float chtierexp; int percent; int nexttier; char buf[MAX_STRING_LENGTH]; char hit_str[MAX_INPUT_LENGTH]; char mana_str[MAX_INPUT_LENGTH]; char move_str[MAX_INPUT_LENGTH]; char mhit_str[MAX_INPUT_LENGTH]; char mmana_str[MAX_INPUT_LENGTH]; char mmove_str[MAX_INPUT_LENGTH]; char exp_str[MAX_INPUT_LENGTH]; int days; int hours; int minutes; int seconds; online = (int) (current_time - ch->logon); total = ch->played + online; sprintf (hit_str, "%d", ch->hit); COL_SCALE (hit_str, ch, ch->hit, ch->max_hit); sprintf (mana_str, "%d", ch->mana); COL_SCALE (mana_str, ch, ch->mana, ch->max_mana); sprintf (move_str, "%d", ch->move); COL_SCALE (move_str, ch, ch->move, ch->max_move); sprintf (exp_str, "%lli", ch->exp); COL_SCALE (exp_str, ch, ch->exp, 1000); sprintf (mhit_str, "%d", ch->max_hit); ADD_COLOUR (ch, mhit_str, L_CYAN); sprintf (mmana_str, "%d", ch->max_mana); ADD_COLOUR (ch, mmana_str, L_CYAN); sprintf (mmove_str, "%d", ch->max_move); ADD_COLOUR (ch, mmove_str, L_CYAN); if (IS_NPC (ch)) return; if (!IS_NPC (ch) && (IS_EXTRA (ch, EXTRA_OSWITCH) || IS_HEAD (ch, LOST_HEAD))) { obj_score (ch, ch->pcdata->chobj); return; } loc_to_char (ch); sprintf (buf, " #wName:#n %s%-15s#n.\n\r", ch->name, IS_NPC (ch) ? "" : ch->pcdata->title); send_to_char (buf, ch); if (!IS_NPC (ch)) { sprintf (buf, " #wCreated:#n %s\n\r", ch->createtime); send_to_char (buf, ch); } if (!IS_NPC (ch)) birth_date (ch, TRUE); if (!IS_NPC (ch) && IS_EXTRA (ch, EXTRA_PREGNANT)) birth_date (ch, FALSE); days = (total / 86400); hours = ((total / 3600) % 24); minutes = ((total / 60) % 60); seconds = (total % 60); sprintf (buf, " #wPlayed:#n %d day%s, %d hour%s, %d minute%s, and %d second%s\n\r", days, days == 1 ? "" : "s", hours, hours == 1 ? "" : "s", minutes, minutes == 1 ? "" : "s", seconds, seconds == 1 ? "" : "s"); send_to_char (buf, ch); hours = ((online / 3600)); minutes = ((online / 60) % 60); seconds = (online % 60); sprintf (buf, " #wThis Session:#n %d hour%s, %d minute%s, and %d second%s\n\r", hours, hours == 1 ? "" : "s", minutes, minutes == 1 ? "" : "s", seconds, seconds == 1 ? "" : "s"); send_to_char (buf, ch); if (get_trust (ch) != ch->level) { divide7_to_char (ch); sprintf (buf, " #wTrust:#n %d.\n\r", get_trust (ch)); send_to_char (buf, ch); } divide7_to_char (ch); sprintf (buf, " #wHP:#n %s/%s. #wMANA:#n %s/%s. #wMOVE:#n %s/%s. #wPrimal:#n %d.\n\r", hit_str, mhit_str, mana_str, mmana_str, move_str, mmove_str, ch->practice); send_to_char (buf, ch); sprintf (buf, " #wCarrying:#n %d/%d items. #wCarried Weight:#n %d/%d kg.\n\r", ch->carry_number, can_carry_n (ch), ch->carry_weight, can_carry_w (ch)); send_to_char (buf, ch); sprintf (buf, " #wStr:#n %d (%d) #wInt: #n%d (%d) #wWis:#n %d (%d) #wDex:#n %d (%d) #wCon:#n %d (%d).\n\r", get_curr_str (ch), ch->pcdata->perm_str, get_curr_int (ch), ch->pcdata->perm_int, get_curr_wis (ch), ch->pcdata->perm_wis, get_curr_dex (ch), ch->pcdata->perm_dex, get_curr_con (ch), ch->pcdata->perm_con); send_to_char (buf, ch); divide7_to_char (ch); sprintf (buf, " #wEXP:#n %lli. #wGold:#n %d. #wQuest Points: #n%d\n\r", ch->exp, ch->gold, ch->pcdata->quest); send_to_char (buf, ch); sprintf (buf, " #wAutoexit:#n [%s] #wAutoloot:#n [%s] #wAutosac:#n [%s] #wAutogold#n [%s] #wShields#n [%s]\n\r", (!IS_NPC (ch) && IS_SET (ch->act, PLR_AUTOEXIT)) ? "X" : " ", (!IS_NPC (ch) && IS_SET (ch->act, PLR_AUTOLOOT)) ? "X" : " ", (!IS_NPC (ch) && IS_SET (ch->act, PLR_AUTOSAC)) ? "X" : " ", (!IS_NPC (ch) && IS_SET (ch->more, PLR_AUTOGOLD)) ? "X" : " ", (!IS_NPC (ch) && IS_SET (ch->more, MORE_SHIELDS)) ? "X" : " "); send_to_char (buf, ch); sprintf (buf, " #wNo Summon:#n[%s] #wNo Transport:#n[%s] #wNo Desc:#n [%s] #wAnsiColor:#n [%s] #wBackup#n [%s]\n\r", !IS_SET (ch->immune, IMM_SUMMON) ? "X" : " ", !IS_SET (ch->immune, IMM_TRANSPORT) ? "X" : " ", IS_SET (ch->more, MORE_NODESC) ? "X" : " ", IS_SET (ch->act, PLR_ANSI) ? "X" : " ", IS_SET (ch->act, PLR_AUTOBACKUP) ? "X" : " "); stc (buf, ch); divide7_to_char (ch); sprintf (buf, " #wMCCP:#n [%s] #wMXP:#n [%s] #wUsing MXP:#n [%s]\n\r", ch->desc->out_compress ? "X" : " ", ch->desc->mxp ? "X" : " ", USE_MXP (ch) ? "X" : " "); stc (buf, ch); if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_DRAGON)) { divide7_to_char (ch); sprintf (buf, "#w Dragon Points: #n %d.\n\r", ch->pcdata->stats[DEMON_CURRENT]); send_to_char (buf, ch); } if (!IS_NPC (ch) && (IS_CLASS (ch, CLASS_DEMON) || IS_SET (ch->special, SPC_CHAMPION))) { divide7_to_char (ch); sprintf (buf, " #wCurrent Demonic Power:#n %d. #wMax Demonic Power:#n %d.\n\r", ch->pcdata->stats[DEMON_CURRENT], ch->pcdata->stats[DEMON_TOTAL]); send_to_char (buf, ch); } if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_DROW)) { divide7_to_char (ch); sprintf (buf, " #wDrow Points:#n %d.\n\r", ch->pcdata->stats[DROW_POWER]); send_to_char (buf, ch); sprintf (buf, " #wMagic Resistance:#n %d.\n\r", ch->pcdata->stats[DROW_MAGIC]); send_to_char (buf, ch); } if (ch->level > 2) { divide7_to_char (ch); sprintf (buf, " #w[Arena Stats] Wins: #n%d. #wLosses:#n %d.\n\r", ch->awins, ch->alosses); send_to_char (buf, ch); if (ch->challenged != NULL) { if (IS_SET (ch->flag2, AFF2_CHALLENGED)) { sprintf (buf, " #w[Arena]#n You have been challenged by %s.\n\r", ch->challenged->name); send_to_char (buf, ch); } if (IS_SET (ch->flag2, AFF2_CHALLENGER)) { sprintf (buf, " #w[Arena]#n You have challenged %s.\n\r", ch->challenged->name); send_to_char (buf, ch); } } if (ch->gladiator != NULL) { sprintf (buf, " #w[Arena Bet]#n You have a %d QP bet on %s\n\r", ch->pcdata->plr_wager, ch->gladiator->name); send_to_char (buf, ch); } } if ((ch->pcdata->condition[COND_DRUNK] > 10 || ch->pcdata->condition[COND_THIRST] == 0 || ch->pcdata->condition[COND_FULL] == 0)) send_to_char (" #wCondition:#n", ch); if (!IS_NPC (ch) && ch->pcdata->condition[COND_DRUNK] > 10) send_to_char (" Drunk", ch); if (!IS_NPC (ch) && ch->pcdata->condition[COND_THIRST] == 0) send_to_char (" Thirsty", ch); if (!IS_NPC (ch) && ch->pcdata->condition[COND_FULL] == 0) send_to_char (" Hungry", ch); sprintf (buf, " #wWimpy:#n %d.", ch->wimpy); if (!IS_NPC (ch) && IS_EXTRA (ch, EXTRA_DONE)) strcat (buf, " Non-Virgin.\n\r"); else strcat (buf, "\n\r"); send_to_char (buf, ch); if (!IS_NPC (ch) && ch->pcdata->stage[0] >= 100) send_to_char (" You are feeling extremely horny.\n\r", ch); else if (!IS_NPC (ch) && ch->pcdata->stage[0] >= 50) send_to_char (" You are feeling pretty randy.\n\r", ch); else if (!IS_NPC (ch) && ch->pcdata->stage[0] >= 1) send_to_char (" You are feeling rather kinky.\n\r", ch); if (!IS_NPC (ch) && ch->pcdata->stage[1] > 0 && ch->position == POS_STANDING) { send_to_char (" You are having sexual intercourse.\n\r", ch); if (!IS_NPC (ch) && (ch->pcdata->stage[2] + 25) >= ch->pcdata->stage[1]) send_to_char (" You are on the verge of having an orgasm.\n\r", ch); } else switch (ch->position) { case POS_DEAD: send_to_char (" #wPosition:#n DEAD!!\n\r", ch); break; case POS_MORTAL: send_to_char (" #wPosition:#n MORTALLY WOUNDED.\n\r", ch); break; case POS_INCAP: send_to_char (" #wPosition:#n Incapacitated.\n\r", ch); break; case POS_STUNNED: send_to_char (" #wPosition:#n Stunned.\n\r", ch); break; case POS_SLEEPING: send_to_char (" #wPosition:#n Sleeping.\n\r", ch); break; case POS_RESTING: send_to_char (" #wPosition:#n Resting.\n\r", ch); break; case POS_MEDITATING: send_to_char (" #wPosition:#n Meditating.\n\r", ch); break; case POS_SITTING: send_to_char (" #wPosition:#n Sitting.\n\r", ch); break; case POS_STANDING: send_to_char (" #wPosition:#n Standing.\n\r", ch); break; case POS_FIGHTING: send_to_char (" #wPosition:#n Fighting.\n\r", ch); break; send_to_char ("\n\r", ch); } divide7_to_char (ch); if (ch->level >= 0) { sprintf (buf, " #wAC:#n %d ", a_c); send_to_char (buf, ch); } send_to_char ("#w:#n ", ch); if (a_c >= 101) send_to_char ("Naked!\n\r", ch); else if (a_c >= 80) send_to_char ("Barely clothed.\n\r", ch); else if (a_c >= 60) send_to_char ("Wearing clothes.\n\r", ch); else if (a_c >= 40) send_to_char ("Slightly armored.\n\r", ch); else if (a_c >= 20) send_to_char ("Somewhat armored.\n\r", ch); else if (a_c >= 0) send_to_char ("Armored.\n\r", ch); else if (a_c >= -50) send_to_char ("Well armored.\n\r", ch); else if (a_c >= -100) send_to_char ("Strongly armored.\n\r", ch); else if (a_c >= -250) send_to_char ("Heavily armored.\n\r", ch); else if (a_c >= -500) send_to_char ("Superbly armored.\n\r", ch); else if (a_c >= -749) send_to_char ("Divinely armored.\n\r", ch); else send_to_char ("Ultimately armored!\n\r", ch); divide7_to_char (ch); sprintf (buf, " #wHitroll:#n %d. #wDamroll:#n %d. #wDamcap:#n %d. #wSave vs Spell:#n %d.", char_hitroll (ch), char_damroll (ch), ch->damcap[0], ch->saving_throw); send_to_char (buf, ch); if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_VAMPIRE)) { sprintf (buf, " #wBlood:#n %d.", ch->pcdata->condition[COND_THIRST]); send_to_char (buf, ch); sprintf (buf, " #wBeast:#n %d.\n\r ", ch->beast); send_to_char (buf, ch); if (ch->beast < 0) send_to_char ("You are a cheat!\n\r", ch); else if (ch->beast == 0) send_to_char ("You have attained Golconda!\n\r", ch); else if (ch->beast <= 5) send_to_char ("You have almost reached Golconda!\n\r", ch); else if (ch->beast <= 10) send_to_char ("You are nearing Golconda!\n\r", ch); else if (ch->beast <= 15) send_to_char ("You have great control over your beast.\n\r", ch); else if (ch->beast <= 20) send_to_char ("Your beast has little influence over your actions.\n\r", ch); else if (ch->beast <= 30) send_to_char ("You are in control of your beast.\n\r", ch); else if (ch->beast <= 40) send_to_char ("You are able to hold back the beast.\n\r", ch); else if (ch->beast <= 60) send_to_char ("You are constantly struggling for control of your beast.\n\r", ch); else if (ch->beast <= 75) send_to_char ("Your beast has great control over your actions.\n\r", ch); else if (ch->beast <= 90) send_to_char ("The power of the beast overwhelms you.\n\r", ch); else if (ch->beast <= 99) send_to_char ("You have almost lost your battle with the beast!\n\r", ch); else send_to_char ("The beast has taken over!\n\r", ch); } else if (!IS_CLASS (ch, CLASS_VAMPIRE)) send_to_char ("\n\r", ch); if (ch->level >= 0) { divide7_to_char (ch); sprintf (buf, " #wAlignment:#n %d ", ch->alignment); send_to_char (buf, ch); } send_to_char ("#w:#n", ch); if (ch->alignment > 900) send_to_char ("Angelic.", ch); else if (ch->alignment > 700) send_to_char ("Saintly.", ch); else if (ch->alignment > 350) send_to_char ("Good.", ch); else if (ch->alignment > 100) send_to_char ("Kind.", ch); else if (ch->alignment > -100) send_to_char ("Neutral.", ch); else if (ch->alignment > -350) send_to_char ("Mean.", ch); else if (ch->alignment > -700) send_to_char ("Evil.", ch); else if (ch->alignment > -900) send_to_char ("Demonic.", ch); else send_to_char ("Satanic.", ch); if (!IS_NPC (ch) && ch->level >= 0) { sprintf (buf, " #wStatus:#n %d. ", ch->race); send_to_char (buf, ch); } if (!IS_NPC (ch)) send_to_char ("You are ", ch); if (!IS_NPC (ch) && ch->level == 1) send_to_char ("a Newbie.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 2) send_to_char ("a Mortal.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 7) send_to_char ("a Newbie Helper.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 8) send_to_char ("a Builder.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 9) send_to_char ("an Enforcer.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 10) send_to_char ("a Judge.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 11) send_to_char ("a High Judge.\n\r", ch); else if (!IS_NPC (ch) && ch->level == 12) send_to_char ("an Implementor.\n\r", ch); else if (!str_cmp (ch->name, "Matthew")) stc ("the Owner of the Mud.\n\r", ch); else if (!str_cmp (ch->name, "Unique")) stc ("the Player Relations immortal.\n\r", ch); else if (!IS_NPC (ch) && ch->race <= 0) send_to_char ("an Avatar.\n\r", ch); else if (ch->race <= 4) send_to_char ("a Peasant.\n\r", ch); else if (ch->race <= 9) send_to_char ("a Page.\n\r", ch); else if (ch->race <= 14) send_to_char ("a Apprentice.\n\r", ch); else if (ch->race <= 19) send_to_char ("a Scout.\n\r", ch); else if (ch->race <= 24) send_to_char ("a Soldier.\n\r", ch); else if (ch->race <= 29) send_to_char ("a Lieutenant.\n\r", ch); else if (ch->race <= 34) send_to_char ("a Captain.\n\r", ch); else if (ch->race <= 39) send_to_char ("a Major.\n\r", ch); else if (ch->race <= 44) send_to_char ("a General.\n\r", ch); else if (ch->race <= 49) send_to_char ("a Knight.\n\r", ch); else if ((ch->race <= 54) && (ch->sex == SEX_FEMALE)) send_to_char ("a Lady.\n\r", ch); else if ((ch->race <= 54) && (ch->sex == SEX_MALE)) send_to_char ("a Lord.\n\r", ch); else if ((ch->race <= 59) && (ch->sex == SEX_FEMALE)) send_to_char ("a Baroness.\n\r", ch); else if ((ch->race <= 59) && (ch->sex == SEX_MALE)) send_to_char ("a Baron.\n\r", ch); else if ((ch->race <= 64) && (ch->sex == SEX_FEMALE)) stc ("a Viscountess.\n\r", ch); else if ((ch->race <= 64) && (ch->sex == SEX_MALE)) stc ("a Viscount.\n\r", ch); else if ((ch->race <= 69) && (ch->sex == SEX_FEMALE)) send_to_char ("a Countess.\n\r", ch); else if ((ch->race <= 69) && (ch->sex == SEX_MALE)) send_to_char ("an Earl.\n\r", ch); else if ((ch->race <= 74) && (ch->sex == SEX_FEMALE)) send_to_char ("a Duchess.\n\r", ch); else if ((ch->race <= 74) && (ch->sex == SEX_MALE)) send_to_char ("a Duke.\n\r", ch); else if ((ch->race <= 79) && (ch->sex == SEX_FEMALE)) send_to_char ("a Princess.\n\r", ch); else if ((ch->race <= 79) && (ch->sex == SEX_MALE)) send_to_char ("a Prince.\n\r", ch); else if ((ch->race >= 80) && (ch->sex == SEX_FEMALE)) send_to_char ("a Queen.\n\r", ch); else if ((ch->race >= 80) && (ch->sex == SEX_MALE)) stc ("a King.\n\r", ch); if (!IS_NPC (ch) && (get_hours (ch) < 6)) { sprintf (buf, " #wYou receive Newbie Experience.\n\r"); stc (buf, ch); } else if (!IS_NPC (ch) && (get_hours (ch) < 10) && !IS_SET (ch->extra2, PKREADY)) { sprintf (buf, " #wYou are safe from Player Killing.\n\r"); stc (buf, ch); } if (!IS_NPC (ch)) { if (strlen (ch->pcdata->decapped) > 3) { sprintf (buf, " #wLast Decap: #n%s.\n\r", ch->pcdata->decapped); stc (buf, ch); } if (strlen (ch->pcdata->decappedby) > 3) { sprintf (buf, " #wLast Decapped by:#n %s.\n\r", ch->pcdata->decappedby); stc (buf, ch); } } if (!IS_NPC (ch) && ch->lstatus > 0) { sprintf (buf, " #wLegend Status:#n %d.\n\r", ch->lstatus); send_to_char (buf, ch); } if (!IS_NPC (ch)) { chtier = ch->tier; chtierexp = ch->tierxp; percent = (chtierexp / (chtier * 100000.00)) * 100.00; nexttier = (ch->tier + 1); sprintf (buf, " #wTier Level:#n %d.", ch->tier); stc (buf, ch); if (nexttier > 250) nexttier = 250; if (ch->tier < 250) { sprintf (buf, " %d%% of the way to be Tier %d. ", percent, nexttier); stc (buf, ch); } sprintf (buf, "#wTier Points:#n %d.\n\r", ch->tpoints); stc (buf, ch); } if (ch->fight_timer > 0) { sprintf (buf, " #wFight Timer:#n %d seconds remaining.\n\r", ch->fight_timer); send_to_char (buf, ch); } stcprintf (ch, " #wPage Length: #n%d.\n\r", ch->pcdata->pagelen); if (IS_SET (ch->more, MORE_NOKING)) { outcast = (15 - ch->pcdata->outcast); stcprintf (ch, " #wOutcast: #n%d more day(s).\n\r", outcast); } if (ch->class != 0 && ch->pcdata->gpoints > 0) { sprintf (buf, " #wGeneration Points: #n%d.\n\r", ch->pcdata->gpoints); stc (buf, ch); } if (ch->paradox[1] > 0) { sprintf (buf, " #wParadox Points:#n %d.\n\r", ch->paradox[1]); stc (buf, ch); } divide7_to_char (ch); if (!IS_NPC (ch)) { sprintf (buf, " #wMob Kills:#n %d. #wMob Deaths:#n %d.", ch->mkill, ch->mdeath); send_to_char (buf, ch); sprintf (buf, " #wPlayer Kills:#n %d. #wPlayer Deaths:#n %d.\n\r", ch->pkill, ch->pdeath); send_to_char (buf, ch); } if (IS_IMMORTAL (ch)) { divide7_to_char (ch); sprintf (buf, " #wWizinvis:#n [%s]. #wIncog:#n [%s]. #wWizinvis Level:#n [%d].\n\r", (!IS_NPC (ch) && IS_SET (ch->act, PLR_WIZINVIS)) ? "X" : " ", (!IS_NPC (ch) && IS_SET (ch->act, PLR_INCOG)) ? "X" : " ", ch->pcdata->wizinvis); send_to_char (buf, ch); } divide7_to_char (ch); if (!IS_NPC (ch)) { sprintf (buf, "#w Quests Completed:#n %lli. #wEarned Questpoints: #n%lli.\n\r", ch->pcdata->score[SCORE_NUM_QUEST], ch->pcdata->score[SCORE_QUEST]); stc (buf, ch); } { if (IS_CLASS (ch, CLASS_WEREWOLF) && ch->pcdata->powers[WPOWER_SILVER] > 0) { sprintf (buf, " #wSilver Tolerance:#n %d. ", ch->pcdata->powers[WPOWER_SILVER]); send_to_char (buf, ch); } if (IS_CLASS (ch, CLASS_WEREWOLF)) { sprintf (buf, " #wGnosis:#n %d/%d\n\r", ch->gnosis[GCURRENT], ch->gnosis[GMAXIMUM]); send_to_char (buf, ch); } if (!IS_NPC (ch) && IS_CLASS (ch, CLASS_MONK)) { divide7_to_char (ch); sprintf (buf, "#w Block counter:#n %d. #wCurrent Chi:#n %d. #wMaximum Chi:#n %d. \n\r", ch->monkblock, ch->chi[CURRENT], ch->chi[MAXIMUM]); stc (buf, ch); } if (IS_CLASS (ch, CLASS_DRAGON)) { sprintf (buf, " #wDragon Age: #nAffecting Hitroll and Damroll by +%d.\n\r", GET_AGE(ch) * 20); send_to_char (buf, ch); } if (IS_CLASS (ch, CLASS_NINJA)) { sprintf (buf, " #wKI:#n %d/150.\n\r", ch->pcdata->powers[NINJAKI]); stc (buf, ch); } if (IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->stats[UNI_RAGE] > 0) { sprintf (buf, " #wBeasting:#n Affecting Hitroll and Damroll by +%d.\n\r", ch->pcdata->stats[UNI_RAGE]); send_to_char (buf, ch); } else if (IS_SET (ch->special, SPC_WOLFMAN) && ch->pcdata->stats[UNI_RAGE] > 0) { sprintf (buf, " #wWolf Rage:#n Affecting Hitroll and Damroll by +%d.\n\r", ch->pcdata->stats[UNI_RAGE]); send_to_char (buf, ch); } else if (IS_CLASS (ch, CLASS_NINJA) && ch->pcdata->stats[UNI_RAGE] > 0) { sprintf (buf, " #wMichi:#n Affecting Hitroll and Damroll by +%d.\n\r", ch->pcdata->stats[UNI_RAGE]); send_to_char (buf, ch); } else if (IS_CLASS (ch, CLASS_DEMON) && ch->pcdata->stats[DEMON_POWER] > 0) { int bonus = (ch->pcdata->stats[DEMON_POWER] * ch->pcdata->stats[DEMON_POWER] << 1); sprintf (buf, " #wDemonic EQ:#n Affects Hitroll and Damroll by +%d.\n\r", bonus); send_to_char (buf, ch); } } divide7_to_char (ch); return; }