/*************************************************************************** * 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 <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" //BASTETADDITION #include "bastet.h" void do_lord_update (CHAR_DATA * ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; char arg4[MAX_INPUT_LENGTH]; char arg5[MAX_INPUT_LENGTH]; char arg6[MAX_INPUT_LENGTH]; char new_lord[MAX_STRING_LENGTH]; int vampgen = ch->pcdata->stats[UNI_GEN]; argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); argument = one_argument (argument, arg3); argument = one_argument (argument, arg4); argument = one_argument (argument, arg5); argument = one_argument (argument, arg6); if (IS_NPC (ch)) return; if (arg1 != '\0') arg1[0] = UPPER (arg1[0]); if (arg2 != '\0') arg2[0] = UPPER (arg2[0]); if (arg3 != '\0') arg3[0] = UPPER (arg3[0]); if (arg4 != '\0') arg4[0] = UPPER (arg4[0]); if (arg5 != '\0') arg5[0] = UPPER (arg5[0]); if (arg6 != '\0') arg6[0] = UPPER (arg6[0]); if (vampgen == 3) { sprintf (new_lord, "%s %s", arg1, arg2); } if (vampgen == 4) { sprintf (new_lord, "%s %s %s", arg1, arg2, arg3); } if (vampgen == 5) { sprintf (new_lord, "%s %s %s %s", arg1, arg2, arg3, arg4); } if (vampgen == 6) { sprintf (new_lord, "%s %s %s %s %s", arg1, arg2, arg3, arg4, arg5); } free_string (ch->lord); ch->lord = str_dup (new_lord); return; } /* New Train Based Upon rig Train by Kavir*/ /* --- See new train in serenity_act.c void do_train (CHAR_DATA * ch, char *argument) { char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH]; sh_int *pAbility; char *pOutput; //int i = 0; int cost; int cost2; int immcost; int silver; int focus; int magic; int legendexp; int legendquest; int gnosis; int hpcap, manacap, movecap; int primal; int max_stat = 18; int earntqp = 0; bool last = TRUE; bool is_ok = FALSE; char legbuf[MSL]; switch (ch->lstatus) { case 0: sprintf (legbuf, "Citizen"); break; case 1: sprintf (legbuf, "Savior"); break; case 2: sprintf (legbuf, "Myth"); break; case 3: sprintf (legbuf, "Legend"); break; case 4: sprintf (legbuf, "Titan"); break; case 5: sprintf (legbuf, "Immortal"); break; case 6: sprintf (legbuf, "Oracle"); break; case 7: sprintf (legbuf, "Demi God"); break; case 8: sprintf (legbuf, "Deity"); break; case 9: sprintf (legbuf, "Almighty"); break; } argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); if (IS_NPC (ch)) return; if (ch->lstatus < 10) { hpcap = 15000 + (1000 * ch->lstatus) + (200 * ch->race); manacap = hpcap; movecap = hpcap; } else { hpcap = 150000 + (500 * ch->race); manacap = hpcap; movecap = hpcap; } if ((!str_cmp (arg1, "hp") && ch->max_hit >= hpcap)) { stc ("You have reached your legend hp cap.\n\r", ch); return; } if ((!str_cmp (arg1, "mana") && ch->max_mana >= manacap)) { stc ("You have reached your legend mana cap.\n\r", ch); return; } if ((!str_cmp (arg1, "move") && ch->max_move >= movecap)) { stc ("You have reached your legend move cap.\n\r", ch); return; } if (!str_cmp (arg1, "magic") && ch->pcdata->stats[DROW_MAGIC] == 100) { stc ("You already have 100 magic resistance\n\r", ch); return; } if (!str_cmp (arg1, "hp") && (IS_SET (ch->garou1, GAROU_WHELP2) || IS_SET (ch->garou1, GAROU_WHELP1))) { stc ("You are unable to train hps with whelps curse affecting you.\n\r", ch); return; } if (arg1[0] == '\0') { strcpy (arg1, "foo"); } if (!str_cmp (arg1, "str")) is_ok = TRUE; else if (!str_cmp (arg1, "int")) is_ok = TRUE; else if (!str_cmp (arg1, "wis")) is_ok = TRUE; else if (!str_cmp (arg1, "dex")) is_ok = TRUE; else if (!str_cmp (arg1, "con")) is_ok = TRUE; else if (!str_cmp (arg1, "hp") && ch->max_hit < hpcap) is_ok = TRUE; else if (!str_cmp (arg1, "mana") && ch->max_mana < manacap) is_ok = TRUE; else if (!str_cmp (arg1, "move") && ch->max_move < movecap) is_ok = TRUE; else if (!str_cmp (arg1, "primal")) is_ok = TRUE; else if (!str_cmp (arg1, "legend")) is_ok = TRUE; else if (!str_cmp (arg1, "silver") && IS_CLASS (ch, CLASS_WEREWOLF)) is_ok = TRUE; else if (!str_cmp (arg1, "focus") && IS_CLASS (ch, CLASS_MONK)) is_ok = TRUE; else if (!str_cmp (arg1, "gnosis") && IS_CLASS (ch, CLASS_WEREWOLF)) is_ok = TRUE; else if (!str_cmp (arg1, "ancilla") && IS_CLASS (ch, CLASS_VAMPIRE)) is_ok = TRUE; else if (!str_cmp (arg1, "elder") && IS_CLASS (ch, CLASS_VAMPIRE)) is_ok = TRUE; else if (!str_cmp (arg1, "methuselah") && IS_CLASS (ch, CLASS_VAMPIRE)) is_ok = TRUE; else if (!str_cmp (arg1, "magic") && IS_CLASS (ch, CLASS_DROW)) is_ok = TRUE; else if (!str_cmp (arg1, "quickening") && IS_CLASS (ch, CLASS_HIGHLANDER)) is_ok = TRUE; else if (!str_cmp (arg1, "dragonage") && IS_CLASS (ch, CLASS_DRAGON) && (ch->pcdata->dragonage < SUPREME) && ch->pcdata->dragonage == GET_AGE(ch)) is_ok = TRUE; if (arg2[0] != '\0' && is_ok) { int amount = 0; if (!is_number (arg2)) { send_to_char ("Please enter a numeric value.\n\r", ch); return; } amount = atoi (arg2); if ( str_cmp( arg1, "hp" ) && str_cmp( arg1, "mana" ) && str_cmp( arg1, "move" ) ) { if (amount < 1 || amount > 200) { send_to_char ("Please enter a value between 1 and 200.\n\r", ch); return; } } else { if (amount < 1 || amount > 200) { send_to_char ("Please enter a value between 1 and 100.\n\r", ch); return; } } if ( (amount > 1) && ( str_cmp( arg1, "quickening" ) ) ) { sprintf (buf, "%s %d", arg1, amount - 1); do_train (ch, buf); last = FALSE; } } cost = 200; cost2 = 0; immcost = count_imms (ch); primal = (1 + ch->practice) * 500; magic = (1 + ch->pcdata->stats[DROW_MAGIC]) * 100; silver = (1 + ch->pcdata->powers[WPOWER_SILVER]) * 2500; focus = 50000; gnosis = (1 + ch->gnosis[GMAXIMUM]) * 25000; legendexp = (2000000 + (3000000 * ch->lstatus)); legendquest = (1000 * ch->lstatus); if (ch->lstatus == 0) earntqp = 0; if (ch->lstatus == 1) earntqp = 1000; if (ch->lstatus == 2) earntqp = 3000; if (ch->lstatus == 3) earntqp = 6000; if (ch->lstatus == 4) earntqp = 10000; if (ch->lstatus == 5) earntqp = 15000; if (ch->lstatus == 6) earntqp = 21000; if (ch->lstatus == 7) earntqp = 28000; if (ch->lstatus == 8) earntqp = 36000; if (ch->lstatus == 9) earntqp = 45000; if (IS_CLASS (ch, CLASS_HIGHLANDER)) max_stat = 25; if (IS_CLASS (ch, CLASS_DRAGON)) max_stat = 35; if (!str_cmp (arg1, "str")) { pAbility = &ch->pcdata->perm_str; pOutput = "strength"; } else if (!str_cmp (arg1, "int")) { pAbility = &ch->pcdata->perm_int; pOutput = "intelligence"; } else if (!str_cmp (arg1, "wis")) { pAbility = &ch->pcdata->perm_wis; pOutput = "wisdom"; } else if (!str_cmp (arg1, "dex")) { pAbility = &ch->pcdata->perm_dex; pOutput = "dexterity"; } else if (!str_cmp (arg1, "con")) { pAbility = &ch->pcdata->perm_con; pOutput = "constitution"; } else if (!str_cmp (arg1, "avatar") && ch->level == 2) { if (ch->lstatus < 10) cost = 1000; else cost = 0; pAbility = &ch->level; pOutput = "level"; } else if (!str_cmp (arg1, "mortal") && ch->level > 2 && ch->race < 1 && ch->class == CLASS_NONE && !IS_IMMORTAL (ch)) { cost = 0; pAbility = &ch->level; pOutput = "level"; } else if ( !str_cmp( arg1, "quickening" ) ) { int temp_cost_xp; int temp_cost_qp; bool improved_quick = FALSE; if ( !IS_DEMPOWER( ch, HPOWER_EMPOWER ) ) { stc( "You don't know how to improve your quickening without killing.\n\r", ch ); return; } if ( ch->quickening[1] > 25 ) { stc( "Go kill an avatar or something it'll be cheaper.\n\r", ch ); return; } cost = ch->quickening[1] + 1; temp_cost_xp = ( ( cost * ( cost - 1 ) ) / 2 ); if ( temp_cost_xp == 0 ) temp_cost_xp = 1; temp_cost_qp = temp_cost_xp; temp_cost_xp *= 500000; temp_cost_qp *= 250; if ( ch->exp < temp_cost_xp ) { stcf( ch, "You need another %d experience (%d needed) to improve your quickening.\n\r", ( temp_cost_xp - ch->exp ), temp_cost_xp ); } if ( ch->pcdata->quest < temp_cost_qp ) { stcf( ch, "You need another %d quest points (%d needed) to improve your quickening.\n\r", ( temp_cost_qp - ch->pcdata->quest ), temp_cost_qp ); } if ( ( ch->exp >= temp_cost_xp ) &&( ch->pcdata->quest >= temp_cost_qp ) ) improved_quick = TRUE; if ( improved_quick ) { ch->exp -= temp_cost_xp; ch->pcdata->quest -= temp_cost_qp; ch->quickening[1] += 1; save_char_obj( ch ); stc( "You improve your maximum level of quickening.\n\r", ch ); } return; } else if (!str_cmp (arg1, "hp") && ch->max_hit < hpcap) { if (ch->max_hit < 1) ch->max_hit = 1; cost = (ch->max_hit - ch->pcdata->perm_con); if ( IS_CLASS( ch, CLASS_HIGHLANDER ) ) { if ( IS_DEMPOWER( ch, HPOWER_BLADESPIN ) ) cost *= 0.45; } (int *) pAbility = &ch->max_hit; pOutput = "hp"; if (cost > ch->exp || ch->exp < 1) { if (last) send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp -= (cost < 1 ? 1 : cost); ch->max_hit++; if (last) act ("Your hp increases!", ch, NULL, pOutput, TO_CHAR); return; } else if (!str_cmp (arg1, "mana") && ch->max_mana < manacap) { if (ch->max_mana < 1) ch->max_mana = 1; // Bug fix cost = (ch->max_mana - ch->pcdata->perm_wis); if ( IS_CLASS( ch, CLASS_HIGHLANDER ) ) { if ( IS_DEMPOWER( ch, HPOWER_ANCESTRAL ) ) cost *= 0.45; } (int *) pAbility = &ch->max_mana; pOutput = "mana"; if (cost > ch->exp || ch->exp < 1) { if (last) send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp -= (cost < 1 ? 1 : cost); ch->max_mana++; if (last) act ("Your mana increases!", ch, NULL, pOutput, TO_CHAR); return; } else if (!str_cmp (arg1, "move") && ch->max_move < movecap) { if (ch->max_move < 1) ch->max_move = 1; // Bug fix cost = (ch->max_move - ch->pcdata->perm_dex); if ( IS_CLASS( ch, CLASS_HIGHLANDER ) ) { if ( IS_DEMPOWER( ch, HPOWER_SWORDCRAFT ) ) cost *= 0.45; } (int *) pAbility = &ch->max_move; pOutput = "move"; if (cost > ch->exp || ch->exp < 1) { if (last) send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp -= (cost < 1 ? 1 : cost); ch->max_move++; if (last) act ("Your move increases!", ch, NULL, pOutput, TO_CHAR); return; } else if (!str_cmp (arg1, "primal") && ch->practice < 9999) { cost = primal; pAbility = &ch->practice; pOutput = "primal"; } else if (!str_cmp (arg1, "magic") && IS_CLASS (ch, CLASS_DROW) && ch->pcdata->stats[DROW_MAGIC] < 100) { sh_int quiet_pointer = ch->pcdata->stats[DROW_MAGIC]; cost = magic; pAbility = &quiet_pointer; pOutput = "drow magic resistance"; } else if (!str_cmp (arg1, "silver") && IS_CLASS (ch, CLASS_WEREWOLF) && ch->pcdata->powers[WPOWER_SILVER] < 100) { sh_int quiet_pointer = ch->pcdata->powers[WPOWER_SILVER]; // different type of int cost = silver; pAbility = &quiet_pointer; pOutput = "tolerance to silver"; } else if (!str_cmp (arg1, "gnosis") && IS_CLASS (ch, CLASS_WEREWOLF)) { sh_int quiet_pointer = ch->gnosis[GMAXIMUM]; cost = gnosis; pAbility = &quiet_pointer; pOutput = "gnosis points"; } else if (!str_cmp (arg1, "legend")) { sh_int quiet_pointer = ch->lstatus; cost = legendexp; cost2 = legendquest; pAbility = &quiet_pointer; pOutput = "legend status"; } else if (!str_cmp (arg1, "focus") && IS_CLASS (ch, CLASS_MONK)) { sh_int quiet_pointer = ch->focus[MAXIMUM]; cost = focus; pAbility = &quiet_pointer; pOutput = "monk focus"; } else if (!str_cmp (arg1, "ancilla") && IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->rank != AGE_ANCILLA && ch->pcdata->rank != AGE_ELDER && ch->pcdata->rank != AGE_METHUSELAH) { if (ch->exp < 2000000) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - 2000000; ch->pcdata->rank = AGE_ANCILLA; send_to_char ("You are now an Ancilla.\n\r", ch); return; } else if (!str_cmp (arg1, "elder") && IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->rank != AGE_ELDER && ch->pcdata->rank == AGE_ANCILLA && ch->pcdata->rank != AGE_METHUSELAH) { if (ch->exp < 6000000) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - 6000000; ch->pcdata->rank = AGE_ELDER; send_to_char ("You are now an Elder.\n\r", ch); return; } else if (!str_cmp (arg1, "methuselah") && IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->rank != AGE_METHUSELAH && ch->pcdata->rank != AGE_ANCILLA && ch->pcdata->rank == AGE_ELDER) { if (ch->exp < 10000000) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - 10000000; ch->pcdata->rank = AGE_METHUSELAH; send_to_char ("You are now a Methuselah.\n\r", ch); return; } else if (!str_cmp (arg1, "dragonage") && IS_CLASS (ch, CLASS_DRAGON)) { if (ch->pcdata->dragonage == SUPREME) return; if (ch->pcdata->dragonage == HATCHLING) { if (ch->exp < 3000000) { send_to_char ("You need 3000000 exp to become a young dragon.\n\r", ch); return; } ch->exp -= 3000000; ch->pcdata->dragonage = YOUNG; send_to_char ("You are now a very young dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == YOUNG) { if (ch->exp < 6000000) { send_to_char ("You need 6000000 exp to become a juvenile dragon.\n\r", ch); return; } ch->exp -= 6000000; ch->pcdata->dragonage = JUVENILE; send_to_char ("You are now a juvenile dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == JUVENILE) { if (ch->exp < 9000000) { send_to_char ("You need 9000000 exp to become a young adult dragon.\n\r", ch); return; } ch->exp -= 9000000; ch->pcdata->dragonage = YOUNG_ADULT; send_to_char ("You are now a young adult dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == YOUNG_ADULT) { if (ch->exp < 12000000) { send_to_char ("You need 12000000 exp to become a dragon adult.\n\r", ch); return; } ch->exp -= 12000000; ch->pcdata->dragonage = ADULT; send_to_char ("You are now an adult dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == ADULT) { if (ch->exp < 15000000) { send_to_char ("You need 15000000 exp to become a mature dragon.\n\r", ch); return; } ch->exp -= 15000000; ch->pcdata->dragonage = MATURE; send_to_char ("You are now an mature dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == MATURE) { if (ch->exp < 18000000) { send_to_char ("You need 18000000 exp to become an elder dragon.\n\r", ch); return; } ch->exp -= 18000000; ch->pcdata->dragonage = ELDER; send_to_char ("You are now an elder dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == ELDER) { if (ch->exp < 21000000) { send_to_char ("You need 21000000 exp to become a venerable dragon.\n\r", ch); return; } ch->exp -= 21000000; ch->pcdata->dragonage = VENERABLE; send_to_char ("You are now venerable dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == VENERABLE) { if (ch->exp < 24000000) { send_to_char ("You need 24000000 exp to become an ancient dragon.\n\r", ch); return; } ch->exp -= 24000000; ch->pcdata->dragonage = ANCIENT; send_to_char ("You are now an ancient dragon.\n\r", ch); return; } else if (ch->pcdata->dragonage == ANCIENT) { if (ch->exp < 27000000) { send_to_char ("You need 27000000 exp to become a lesser wyrm.\n\r", ch); return; } ch->exp -= 27000000; ch->pcdata->dragonage = LESSER_WYRM; send_to_char ("You are now a lesser wyrm.\n\r", ch); return; } else if (ch->pcdata->dragonage == LESSER_WYRM) { if (ch->exp < 30000000) { send_to_char ("You need 30000000 exp to become a wyrm.\n\r", ch); return; } ch->exp -= 30000000; ch->pcdata->dragonage = WYRM; send_to_char ("You are now a wyrm.\n\r", ch); return; } else if (ch->pcdata->dragonage == WYRM) { if (ch->exp < 33000000) { send_to_char ("You need 33000000 exp to become a supreme dragon.\n\r", ch); return; } ch->exp -= 33000000; ch->pcdata->dragonage = SUPREME; send_to_char ("You are now a supreme dragon.\n\r", ch); return; } else { send_to_char ("You are already a great wyrm.\n\r", ch); return; } } else if (!str_cmp (arg1, "slash") && !IS_IMMUNE (ch, IMM_SLASH)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_SLASH); send_to_char ("You are now more resistant to slashing and slicing weapons.\n\r", ch); return; } else if (!str_cmp (arg1, "stab") && !IS_IMMUNE (ch, IMM_STAB)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_STAB); send_to_char ("You are now more resistant to stabbing and piercing weapons.\n\r", ch); return; } else if (!str_cmp (arg1, "smash") && !IS_IMMUNE (ch, IMM_SMASH)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_SMASH); send_to_char ("You are now more resistant to blasting, pounding and crushing weapons.\n\r", ch); return; } else if (!str_cmp (arg1, "beast") && !IS_IMMUNE (ch, IMM_ANIMAL)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_ANIMAL); send_to_char ("You are now more resistant to claw and bite attacks.\n\r", ch); return; } else if (!str_cmp (arg1, "grab") && !IS_IMMUNE (ch, IMM_MISC)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_MISC); send_to_char ("You are now more resistant to grepping, sucking and whipping weapons.\n\r", ch); return; } else if (!str_cmp (arg1, "charm") && !IS_IMMUNE (ch, IMM_CHARM)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_CHARM); send_to_char ("You are now immune to charm spells.\n\r", ch); return; } else if (!str_cmp (arg1, "heat") && !IS_IMMUNE (ch, IMM_HEAT)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_HEAT); send_to_char ("You are now immune to heat and fire spells.\n\r", ch); return; } else if (!str_cmp (arg1, "cold") && !IS_IMMUNE (ch, IMM_COLD)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_COLD); send_to_char ("You are now immune to cold spells.\n\r", ch); return; } else if (!str_cmp (arg1, "lightning") && !IS_IMMUNE (ch, IMM_LIGHTNING)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_LIGHTNING); send_to_char ("You are now immune to lightning and electrical spells.\n\r", ch); return; } else if (!str_cmp (arg1, "acid") && !IS_IMMUNE (ch, IMM_ACID)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_ACID); send_to_char ("You are now immune to acid spells.\n\r", ch); return; } else if (!str_cmp (arg1, "sleep") && !IS_IMMUNE (ch, IMM_SLEEP)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_SLEEP); send_to_char ("You are now immune to the sleep spell.\n\r", ch); return; } else if (!str_cmp (arg1, "drain") && !IS_IMMUNE (ch, IMM_DRAIN)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_DRAIN); send_to_char ("You are now immune to the energy drain spell.\n\r", ch); return; } else if (!str_cmp (arg1, "voodoo") && !IS_IMMUNE (ch, IMM_VOODOO)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_VOODOO); send_to_char ("You are now immune to voodoo magic.\n\r", ch); return; } else if (!str_cmp (arg1, "hurl") && !IS_IMMUNE (ch, IMM_HURL)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_HURL); send_to_char ("You are now immune to being hurled.\n\r", ch); return; } else if (!str_cmp (arg1, "backstab") && !IS_IMMUNE (ch, IMM_BACKSTAB)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_BACKSTAB); send_to_char ("You are now immune to being backstabbed.\n\r", ch); return; } else if (!str_cmp (arg1, "kick") && !IS_IMMUNE (ch, IMM_KICK)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_KICK); send_to_char ("You are now immune to being kicked.\n\r", ch); return; } else if (!str_cmp (arg1, "disarm") && !IS_IMMUNE (ch, IMM_DISARM)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_DISARM); send_to_char ("You are now immune to being disarmed.\n\r", ch); return; } else if (!str_cmp (arg1, "steal") && !IS_IMMUNE (ch, IMM_STEAL)) { if (ch->exp < immcost) { send_to_char ("You don't have enough exp.\n\r", ch); return; } ch->exp = ch->exp - immcost; SET_BIT (ch->immune, IMM_STEAL); send_to_char ("You are now immune to being stolen from.\n\r", ch); return; } else { sprintf (buf, "#wYou can train the following:#n\n\r\n\r"); send_to_char (buf, ch); send_to_char ("#ySTATS :", ch); if (ch->pcdata->perm_str < max_stat) send_to_char (" #yStr", ch); if (ch->pcdata->perm_int < max_stat) send_to_char (" #bInt", ch); if (ch->pcdata->perm_wis < max_stat) send_to_char (" #gWis", ch); if (ch->pcdata->perm_dex < max_stat) send_to_char (" #rDex", ch); if (ch->pcdata->perm_con < max_stat) send_to_char (" #cCon", ch); if ((ch->pcdata->perm_str >= max_stat) && (ch->pcdata->perm_wis >= max_stat) && (ch->pcdata->perm_int >= max_stat) && (ch->pcdata->perm_dex >= max_stat) && (ch->pcdata->perm_con >= max_stat)) send_to_char (" #wYour stats are maxxed\n\r", ch); else send_to_char (".\n\r", ch); if (ch->level == 2) { if (ch->lstatus < 10) sprintf (buf, "#yAVATAR : #r1000#w exp.\n\r"); else sprintf (buf, "#yAVATAR : #rno cost#n.\n\r"); send_to_char (buf, ch); } if (ch->level > 2 && ch->race < 1 && ch->class == CLASS_NONE && !IS_IMMORTAL (ch)) { sprintf (buf, "#yMORTAL : #rno cost#n.\n\r"); send_to_char (buf, ch); } if (ch->max_hit < hpcap) { if ( IS_CLASS( ch, CLASS_HIGHLANDER ) && IS_DEMPOWER( ch, HPOWER_BLADESPIN) ) { sprintf (buf, "#yHP : #r%d #wexp per Hit point.\n\r", ( ( (ch->max_hit - ch->pcdata->perm_con) * 45 ) / 100) ) ; } else sprintf (buf, "#yHP : #r%d #wexp per Hit point.\n\r", (ch->max_hit - ch->pcdata->perm_con)); send_to_char (buf, ch); } if (ch->max_hit >= hpcap) { sprintf (buf, "#yHP : #wYou have reached your HP Cap.\n\r"); send_to_char (buf, ch); } if (ch->max_mana < manacap) { if ( IS_CLASS( ch, CLASS_HIGHLANDER ) && IS_DEMPOWER( ch, HPOWER_ANCESTRAL) ) { sprintf (buf, "#yMANA : #r%d #wexp per Mana point.\n\r", ( ( (ch->max_mana - ch->pcdata->perm_wis) * 45 ) / 100 ) ); } else sprintf (buf, "#yMANA : #r%d #wexp per Mana point.\n\r", (ch->max_mana - ch->pcdata->perm_wis)); send_to_char (buf, ch); } if (ch->max_mana >= manacap) { sprintf (buf, "#yMANA : #wYou have reached your MANA Cap.\n\r"); send_to_char (buf, ch); } if (ch->max_move < movecap) { if ( IS_CLASS( ch, CLASS_HIGHLANDER ) && IS_DEMPOWER( ch, HPOWER_SWORDCRAFT) ) { sprintf (buf, "#yMOVE : #r%d #wexp per Move point.\n\r", ( ( (ch->max_move - ch->pcdata->perm_con) * 45 ) / 100 ) ); } else sprintf (buf, "#yMOVE : #r%d #wexp per Move point.\n\r", (ch->max_move - ch->pcdata->perm_con)); send_to_char (buf, ch); } if (ch->max_move >= movecap) { sprintf (buf, "#yMOVE : #wYou have reached your MOVE Cap.\n\r"); send_to_char (buf, ch); } // if (ch->pcdata->stats[UNI_GEN] > 3 && (IS_CLASS(ch, CLASS_VAMPIRE) || IS_CLASS(ch, CLASS_WEREWOLF) ) ) // { // sprintf( buf, "#yGENERATION : #r%d #wprimal per Generation.\n\r", (reversegen * 10) ); // stc(buf, ch); // } if (ch->practice < 9999) { sprintf (buf, "#yPRIMAL : #r%d #wexp per Primal point.\n\r", primal); send_to_char (buf, ch); } if (ch->pcdata->powers[WPOWER_SILVER] < 100 && IS_CLASS (ch, CLASS_WEREWOLF)) { sprintf (buf, "#ySILVER TOLERANCE : #r%d #wexp per Tolerance point.\n\r", silver); send_to_char (buf, ch); } if ( IS_CLASS( ch, CLASS_HIGHLANDER ) ) { if ( IS_DEMPOWER( ch, HPOWER_EMPOWER ) ) { int temp_cost = 0; int temp_cost_xp = 0; int temp_cost_qp = 0; temp_cost = ch->quickening[1] + 1; temp_cost_xp = ( ( temp_cost * ( temp_cost - 1 ) ) / 2 ); if ( temp_cost_xp == 0 ) temp_cost_xp = 1; temp_cost_qp = temp_cost_xp; if ( ch->quickening[1] > 25 ) stc( "#yQUICKENING : #wYou can't train your quickening any higher.\n\r", ch ); else { temp_cost_xp *= 500000; temp_cost_qp *= 100; stcf( ch, "#yQUICKENING : #r%d #wexp and #r%d#w qp per point.\n\r", temp_cost_xp, temp_cost_qp ); } } } if (ch->focus[MAXIMUM] < 100 && IS_CLASS (ch, CLASS_MONK)) { sprintf (buf, "#yFOCUS POINTS : #r%d#w exp per Focus point.\n\r", focus); stc (buf, ch); } if (IS_CLASS (ch, CLASS_DRAGON) && ch->pcdata->dragonage < SUPREME && ch->pcdata->dragonage == GET_AGE(ch)) { sprintf (buf, "#yDRAGONAGE : #r%d,000,000 #wexp per age\n\r", ch->pcdata->dragonage * 3); send_to_char (buf, ch); } if (ch->gnosis[GMAXIMUM] < 20 && IS_CLASS (ch, CLASS_WEREWOLF)) { sprintf (buf, "#yGNOSIS POINTS : #r%d #wexp per Gnosis point.\n\r", gnosis); stc (buf, ch); } if (ch->lstatus < 10) { sprintf (buf, "#yLEGEND STATUS : #r%d #wexp and %d qp (#r%d #wearned) per Legend.\n\r", legendexp, legendquest, earntqp); stc (buf, ch); } if (IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->rank != AGE_ANCILLA && ch->pcdata->rank != AGE_ELDER && ch->pcdata->rank != AGE_METHUSELAH) { sprintf (buf, "#yANCILLA : #r2000000#w exp.\n\r"); send_to_char (buf, ch); } if (IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->rank != AGE_ELDER && ch->pcdata->rank == AGE_ANCILLA && ch->pcdata->rank != AGE_METHUSELAH) { sprintf (buf, "#yELDER : #r6000000#w exp.\n\r"); send_to_char (buf, ch); } if (IS_CLASS (ch, CLASS_VAMPIRE) && ch->pcdata->rank != AGE_METHUSELAH && ch->pcdata->rank == AGE_ELDER && ch->pcdata->rank != AGE_ANCILLA) { sprintf (buf, "#yMETHUSELAH : #r10000000#w exp.\n\r"); send_to_char (buf, ch); } if (ch->pcdata->stats[DROW_MAGIC] < 100 && IS_CLASS (ch, CLASS_DROW)) { sprintf (buf, "#yMAGIC RESISTANCE : #r%d#w drow points per Magic point.\n\r", magic); send_to_char (buf, ch); } if (!IS_IMMUNE (ch, IMM_SLASH) || !IS_IMMUNE (ch, IMM_STAB) || !IS_IMMUNE (ch, IMM_SMASH) || !IS_IMMUNE (ch, IMM_ANIMAL) || !IS_IMMUNE (ch, IMM_MISC) || !IS_IMMUNE (ch, IMM_CHARM) || !IS_IMMUNE (ch, IMM_HEAT) || !IS_IMMUNE (ch, IMM_COLD) || !IS_IMMUNE (ch, IMM_LIGHTNING) || !IS_IMMUNE (ch, IMM_ACID) || !IS_IMMUNE (ch, IMM_SLEEP) || !IS_IMMUNE (ch, IMM_DRAIN) || !IS_IMMUNE (ch, IMM_VOODOO) || !IS_IMMUNE (ch, IMM_HURL) || !IS_IMMUNE (ch, IMM_BACKSTAB) || !IS_IMMUNE (ch, IMM_KICK) || !IS_IMMUNE (ch, IMM_DISARM) || !IS_IMMUNE (ch, IMM_STEAL)) { sprintf (buf, "#yIMMUNITIES : #r%d #wexp each.\n\r", immcost); send_to_char (buf, ch); } // Weapon resistance affects send_to_char ("#yWEAPON RESISTANCES :", ch); if (!IS_IMMUNE (ch, IMM_SLASH)) send_to_char (" #wSlash", ch); if (!IS_IMMUNE (ch, IMM_STAB)) send_to_char (" #wStab", ch); if (!IS_IMMUNE (ch, IMM_SMASH)) send_to_char (" #wSmash", ch); if (!IS_IMMUNE (ch, IMM_ANIMAL)) send_to_char (" #wBeast", ch); if (!IS_IMMUNE (ch, IMM_MISC)) send_to_char (" #wGrab", ch); if (IS_IMMUNE (ch, IMM_SLASH) && IS_IMMUNE (ch, IMM_STAB) && IS_IMMUNE (ch, IMM_SMASH) && IS_IMMUNE (ch, IMM_ANIMAL) && IS_IMMUNE (ch, IMM_MISC)) send_to_char (" #wYou have all the weapon resistances.\n\r", ch); else send_to_char (".\n\r", ch); // Spell immunity affects send_to_char ("#yMAGICAL IMMUNITIES :", ch); if (!IS_IMMUNE (ch, IMM_CHARM)) send_to_char (" #rCharm", ch); if (!IS_IMMUNE (ch, IMM_HEAT)) send_to_char (" #rHeat", ch); if (!IS_IMMUNE (ch, IMM_COLD)) send_to_char (" #rCold", ch); if (!IS_IMMUNE (ch, IMM_LIGHTNING)) send_to_char (" #rLightning", ch); if (!IS_IMMUNE (ch, IMM_ACID)) send_to_char (" #rAcid", ch); if (!IS_IMMUNE (ch, IMM_SLEEP)) send_to_char (" #rSleep", ch); if (!IS_IMMUNE (ch, IMM_DRAIN)) send_to_char (" #rDrain", ch); if (!IS_IMMUNE (ch, IMM_VOODOO)) send_to_char (" #rVoodoo", ch); if (IS_IMMUNE (ch, IMM_CHARM) && IS_IMMUNE (ch, IMM_HEAT) && IS_IMMUNE (ch, IMM_COLD) && IS_IMMUNE (ch, IMM_LIGHTNING) && IS_IMMUNE (ch, IMM_ACID) && IS_IMMUNE (ch, IMM_SLEEP) && IS_IMMUNE (ch, IMM_DRAIN) && IS_IMMUNE (ch, IMM_VOODOO)) send_to_char (" #rYou have all the spell immunities.\n\r", ch); else send_to_char (".\n\r", ch); // Skill immunity affects send_to_char ("#ySKILL IMMUNITIES :", ch); if (!IS_IMMUNE (ch, IMM_HURL)) send_to_char (" #cHurl", ch); if (!IS_IMMUNE (ch, IMM_BACKSTAB)) send_to_char (" #cBackstab", ch); if (!IS_IMMUNE (ch, IMM_KICK)) send_to_char (" #cKick", ch); if (!IS_IMMUNE (ch, IMM_DISARM)) send_to_char (" #cDisarm", ch); if (!IS_IMMUNE (ch, IMM_STEAL)) send_to_char (" #cSteal", ch); if (IS_IMMUNE (ch, IMM_HURL) && IS_IMMUNE (ch, IMM_BACKSTAB) && IS_IMMUNE (ch, IMM_KICK) && IS_IMMUNE (ch, IMM_DISARM) && IS_IMMUNE (ch, IMM_STEAL)) send_to_char (" #cYou have all the skill immunities.\n\r", ch); else send_to_char (".\n\r", ch); return; } if ((*pAbility >= max_stat) && (!str_cmp (arg1, "str"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= max_stat) && (!str_cmp (arg1, "int"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= max_stat) && (!str_cmp (arg1, "wis"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= max_stat) && (!str_cmp (arg1, "dex"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= max_stat) && (!str_cmp (arg1, "con"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= 9999) && (!str_cmp (arg1, "primal"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= hpcap) && (!str_cmp (arg1, "hp"))) { if (last) act ("Your $T is already at your stat cap.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= manacap) && (!str_cmp (arg1, "mana"))) { if (last) act ("Your $T is already at your stat cap.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= movecap) && (!str_cmp (arg1, "move"))) { if (last) act ("Your $T is already atyour stat cap.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= 100) && (!str_cmp (arg1, "magic"))) { if (last) act ("Your $T is already at a maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= 100) && (!str_cmp (arg1, "focus"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= 20) && (!str_cmp (arg1, "gnosis"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if ((*pAbility >= 10) && (!str_cmp (arg1, "legend"))) { if (last) act ("You have already obtained the highest Legend Status!", ch, NULL, NULL, TO_CHAR); return; } if ((*pAbility >= 100) && (!str_cmp (arg1, "silver"))) { if (last) act ("Your $T is already at maximum.", ch, NULL, pOutput, TO_CHAR); return; } if (cost > ch->pcdata->stats[DROW_POWER] && !str_cmp (arg1, "magic")) { if (last) send_to_char ("You don't have enough drow power points.\n\r", ch); return; } if (cost > ch->exp || ch->exp < 1) { if (last) send_to_char ("You don't have enough exp.\n\r", ch); return; } //Tij if ((cost2 > ch->pcdata->quest) && !str_cmp (arg1, "legend")) { if (last) stc ("You don't have enough quest points!\n\r", ch); return; } if ((earntqp > ch->pcdata->score[SCORE_QUEST]) && !str_cmp (arg1, "legend")) { stc ("You havent earned enough qps\n\r", ch); stcprintf (ch, "You have %d earned qps and need to earn %d qps!\n\r", ch->pcdata->score[SCORE_QUEST], earntqp); return; } if (!str_cmp (arg1, "silver")) ch->pcdata->powers[WPOWER_SILVER] += 1; else if (!str_cmp (arg1, "magic")) ch->pcdata->stats[DROW_MAGIC] += 1; else if (!str_cmp (arg1, "focus")) { ch->focus[CURRENT]++; ch->focus[MAXIMUM]++; } else if (!str_cmp (arg1, "gnosis")) { ch->gnosis[GCURRENT]++; ch->gnosis[GMAXIMUM]++; } else if (!str_cmp (arg1, "legend")) { ch->lstatus++; ch->pcdata->quest -= cost2; sprintf (buf, "#y%s #ch#Cas #ca#Cdvanced #ci#Cn #ch#Cistory #ct#Co '#w%s#C' #cL#Cegend #cS#Ctatus", ch->name, legbuf); do_info (ch, buf); } if (!str_cmp (arg1, "magic")) ch->pcdata->stats[DROW_POWER] -= cost; else ch->exp -= (cost < 1 ? 1 : cost); *pAbility += 1; if (!str_cmp (arg1, "mortal")) { if (ch->fight_timer > 0) { send_to_char ("Not until your fight timer expires.\n\r", ch); return; } if (IS_SET (ch->war, WARRING)) { stc ("Not while in a war!\n\r", ch); return; } if (IS_SET (ch->flag2, AFF2_INARENA)) { stc ("Not while you're in the arena.\n\r", ch); return; } act ("You become mortal again!", ch, NULL, NULL, TO_CHAR); ch->level = 2; ch->trust = 0; return; } if (!str_cmp (arg1, "avatar")) { act ("You become an avatar!", ch, NULL, NULL, TO_CHAR); sprintf (buf, "#w%s #Rhas become an avatar!", ch->name); if (IS_CLASS (ch, CLASS_DEMON)) ch->alignment = -1000; ch->captimer = 0; if (ch->level < ch->trust) ch->level = ch->trust; if (!IS_NPC (ch) && IS_VAMPAFF (ch, VAM_MORTAL)) do_mortalvamp (ch, ""); do_info (ch, buf); } else if (last) act ("Your $T increases!", ch, NULL, pOutput, TO_CHAR); return; } */ /*offer(sacrifice)*/ void do_offer (CHAR_DATA * ch, char *argument) { char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; char buf[MAX_STRING_LENGTH]; one_argument (argument, arg); if (IS_NPC (ch)) return; if (arg[0] == '\0') { send_to_char ("Who do you wish to sacrifice?\n\r", ch); return; } if ((victim = get_char_room (ch, arg)) == NULL) { send_to_char ("They arent here.\n\r", ch); return; } if (IS_NPC (victim)) { send_to_char ("You cant sacrifice them!\n\r", ch); return; } if (!str_cmp (victim->name, "SirMog")) return; if (ch->level < 3 || victim->level < 3) { send_to_char ("Only avatars may sacrifice each other.\n\r", ch); return; } if (victim->position > POS_INCAP) { send_to_char ("You can only sacrifice mortally woundedplayers.\n\r", ch); return; } if (is_safe (ch, victim) == TRUE) return; WAIT_STATE (ch, 8); sprintf (buf, "%s places his hand on %s's head.", ch->name, victim->name); act (buf, ch, NULL, NULL, TO_ROOM); sprintf (buf, "You place your hand on %s's head.", victim->name); send_to_char (buf, ch); sprintf (buf, "A divine spirit snatches %s from the planet.", victim->name); act (buf, ch, NULL, NULL, TO_ROOM); send_to_char (buf, ch); sprintf (buf, "%s has been sacrificed to God by %s.", victim->name, ch->name); if (IS_CLASS (ch, CLASS_VAMPIRE)) { sprintf (buf, "%s has been sacrificed to Caine by %s.", victim->name, ch->name); send_to_char ("You have been gifted power by Caine.\n\r", ch); } if (IS_CLASS (ch, CLASS_WEREWOLF)) { sprintf (buf, "%s has been sacrificed to Gaia by %s.", victim->name, ch->name); send_to_char ("You have been gifted power by Gaia.\n\r", ch); } if (IS_CLASS (ch, CLASS_DEMON)) { sprintf (buf, "%s has been sacrificed to Satan by %s.", victim->name, ch->name); send_to_char ("You have been gifted power by Satan\n\r", ch); } if (IS_CLASS (ch, CLASS_DROW)) { sprintf (buf, "%s has been sacirificed to Lloth by %s.", victim->name, ch->name); send_to_char ("You have been gifted power by Lloth.\n\r", ch); } do_info (ch, buf); if ((ch->race - victim->race > 10 && ch->race > 0) || (victim->race == 0 && ch->race > 0)) { ch->paradox[0] += ch->race; ch->paradox[1] += ch->race; ch->paradox[2] += PARADOX_TICK; do_paradox (ch, "self"); if (IS_CLASS (victim, CLASS_VAMPIRE)) do_mortalvamp (victim, ""); else if (IS_SET (victim->special, SPC_WOLFMAN)) do_unwerewolf (victim, ""); if (IS_CLASS (victim, CLASS_MAGE) && IS_AFFECTED (victim, AFF_POLYMORPH)) do_unpolymorph (victim, ""); if (IS_CLASS (victim, CLASS_DROW) && IS_POLYAFF (victim, POLY_SPIDERFORM)) do_spiderform (victim, ""); do_beastlike (ch, ""); victim->level = 2; victim->trust = 0; raw_kill (victim, ch), ch; WAIT_STATE (victim, 10); return; } ch->hit = ch->max_hit; ch->mana = ch->max_mana; ch->move = ch->max_move; if (victim->race > 0) { /* if (IS_CLASS(ch, CLASS_DEMON)) ch->pcdata->souls ++;*/ ch->practice += 10; victim->race -= 1; } raw_kill (victim, ch); WAIT_STATE (victim, 20); return; } /* void do_outcast( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; one_argument( argument, arg ); if ( ch->pcdata->stats[UNI_GEN] != 2 && !IS_SET(ch->special, SPC_DEMON_LORD) && ch->level != 6 ) { send_to_char("You are not a clan leader!\n\r", ch); return; } if ( arg[0] == '\0' ) { send_to_char( "Outcast who?\n\r", ch ); return; } if ( ( victim = get_char_world( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if ( victim == ch ) { send_to_char("You cannot outcast youself!\n\r", ch); return; } if ( IS_NPC(victim) ) { send_to_char( "Not on NPC's.\n\r", ch ); return; } if ( IS_CLASS(ch,CLASS_DEMON) && IS_SET(ch->special, SPC_DEMON_LORD) && IS_CLASS(victim, CLASS_DEMON) && !str_cmp(victim->clan,ch->clan) ) { sprintf(buf,"%s has been outcasted from %s", victim->name, ch->clan); do_info(victim,buf); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your fangs slide back into your gums.\n\r",victim); act("$N's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("Your claws slide back under your nails.\n\r",victim); act("$N's claws slide back under $s nails.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } if (IS_DEMAFF(victim,DEM_HORNS) ) { send_to_char("Your horns slide back into your head.\n\r",victim); act("$N's horns slide back into $s head.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_HORNS); } if (IS_DEMAFF(victim,DEM_HOOVES) ) { send_to_char("Your hooves transform into feet.\n\r",victim); act("$N's hooves transform back into $s feet.", ch, NULL,victim,TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_HOOVES); } if (IS_DEMAFF(victim,DEM_WINGS) ) { if (IS_DEMAFF(victim,DEM_UNFOLDED) ) { send_to_char("Your wings fold up behind your back.\n\r",victim); act("$N's wings fold up behind $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_UNFOLDED); } send_to_char("Your wings slide into your back.\n\r",victim); act("$N's wings slide into $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->powers[DPOWER_CURRENT], DEM_WINGS); } if ( IS_EXTRA(victim, EXTRA_OSWITCH) ) { do_humanform(victim,""); } victim->pcdata->powers[DPOWER_FLAGS] = 0; victim->pcdata->stats[DEMON_TOTAL] = 0; victim->pcdata->stats[DEMON_CURRENT] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); REMOVE_BIT(victim->special, SPC_CHAMPION ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->special, SPC_DEMON_LORD); victim->pcdata->stats[UNI_RAGE] = 0; victim->class = 0; send_to_char("You have been outcasted from Hell!\n\r", victim); } else if ( ( IS_CLASS(ch, CLASS_MAGE) && ch->level == LEVEL_ARCHMAGE ) && ch->pcdata->powers[MPOWER_RUNE0] == victim->pcdata->powers[MPOWER_RUNE0] && victim->level < LEVEL_ARCHMAGE ) { sprintf(buf,"%s has been outcasted from the Mages Guild.", victim->name); do_info(victim,buf); reset_spell(victim,0); reset_spell(victim,1); reset_spell(victim,2); reset_spell(victim,3); reset_spell(victim,4); victim->trust = 0; victim->class = 0; victim->level = 3; send_to_char("You have been outcasted from the Mages Guild!\n\r", victim); } else if ( IS_CLASS(ch,CLASS_VAMPIRE) && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_VAMPIRE) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); victim->pcdata->condition[COND_THIRST] = 10000; if ( IS_CLASS(victim, CLASS_VAMPIRE) ) do_unwerewolf(victim,""); if ( IS_VAMPAFF(victim,VAM_DISGUISED) ) do_mask(victim,"self"); if ( IS_POLYAFF(victim,POLY_SERPENT) ) do_serpent(victim,""); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your fangs slide back into your gums.\n\r",victim); act("$N's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_CLASS(victim, CLASS_VAMPIRE) && IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("Your claws slide back under your nails.\n\r",victim); act("$N's claws slide back under $s nails.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_AFFECTED(victim,AFF_SHADOWSIGHT) ) { send_to_char("You can no longer see between planes.\n\r",victim); REMOVE_BIT(victim->affected_by, AFF_SHADOWSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_VAMPAFF(victim,VAM_DISGUISED) ) { free_string( victim->morph ); victim->morph = str_dup( victim->name ); send_to_char("You transform into yourself.\n\r", victim); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_DISGUISED); } if (IS_AFFECTED(victim,AFF_SHADOWPLANE) ) { send_to_char("You fade back into the real world.\n\r",victim); act("The shadows flicker and $N fades into existance.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->affected_by,AFF_SHADOWPLANE); do_look(victim,"auto"); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } REMOVE_BIT(victim->special, SPC_INCONNU ); REMOVE_BIT(victim->special, SPC_ANARCH ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; victim->beast = 15; victim->pcdata->condition[COND_THIRST] = 0; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_WEREWOLF) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_WEREWOLF) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); victim->pcdata->powers[WPOWER_BEAR] = 4; victim->pcdata->powers[WPOWER_LYNX] = 4; victim->pcdata->powers[WPOWER_BOAR] = 4; victim->pcdata->powers[WPOWER_OWL] = 4; victim->pcdata->powers[WPOWER_SPIDER] = 4; victim->pcdata->powers[WPOWER_WOLF] = 4; victim->pcdata->powers[WPOWER_HAWK] = 4; victim->pcdata->powers[WPOWER_MANTIS] = 4; victim->pcdata->powers[WPOWER_TIGER] = 4; victim->pcdata->powers[WPOWER_GAIA] = 4; do_unwerewolf(victim,""); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your talons slide back into your fingers.\n\r",victim); act("$N's talons slide back into $s fingers.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF(victim,VAM_NIGHTSIGHT) ) { send_to_char("The red glow in your eyes fades.\n\r",victim); act("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_AFFECTED(victim,AFF_SHADOWSIGHT) ) { send_to_char("You can no longer see between planes.\n\r",victim); REMOVE_BIT(victim->affected_by, AFF_SHADOWSIGHT); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_AFFECTED(victim,AFF_SHADOWPLANE) ) { send_to_char("You fade back into the real world.\n\r",victim); act("The shadows flicker and $N fades into existance.",ch,NULL,victim,TO_ROOM); REMOVE_BIT(victim->affected_by,AFF_SHADOWPLANE); do_look(victim,"auto"); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_WIZINVIS) ) { REMOVE_BIT(victim->act, PLR_WIZINVIS); send_to_char( "You slowly fade into existence.\n\r", victim ); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } REMOVE_BIT(victim->special, SPC_INCONNU ); REMOVE_BIT(victim->special, SPC_ANARCH ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->powers[WPOWER_BEAR] = 0; victim->pcdata->powers[WPOWER_LYNX] = 0; victim->pcdata->powers[WPOWER_BOAR] = 0; victim->pcdata->powers[WPOWER_OWL] = 0; victim->pcdata->powers[WPOWER_SPIDER] = 0; victim->pcdata->powers[WPOWER_WOLF] = 0; victim->pcdata->powers[WPOWER_HAWK] = 0; victim->pcdata->powers[WPOWER_MANTIS] = 0; victim->pcdata->powers[WPOWER_TIGER] = 0; victim->pcdata->powers[WPOWER_GAIA] = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_NINJA) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_NINJA) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); if ( IS_VAMPAFF(victim,VAM_CLAWS) ) { send_to_char("You shove your iron claws up your sleeves\n\r",victim); act("$N shoves $S iron claws up $e sleeves.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_WIZINVIS) ) { REMOVE_BIT(victim->act, PLR_WIZINVIS); send_to_char( "You appear from the shadows.\n\r", victim ); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->powers[NPOWER_SORA] = 0; victim->pcdata->powers[NPOWER_CHIKYU] = 0; victim->pcdata->powers[NPOWER_NINGENNO] = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; victim->trust = 0; victim->level = 3; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_DROW) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_DROW) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); reset_weapon(victim,0); reset_weapon(victim,1); reset_weapon(victim,2); reset_weapon(victim,3); reset_weapon(victim,4); reset_weapon(victim,5); reset_weapon(victim,6); reset_weapon(victim,7); reset_weapon(victim,8); reset_weapon(victim,9); reset_weapon(victim,10); reset_weapon(victim,11); reset_weapon(victim,12); if (IS_VAMPAFF(victim,VAM_FANGS) ) { send_to_char("Your fangs slide back into your gums.\n\r",victim); act("$N's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } if (IS_SET(victim->act, PLR_HOLYLIGHT) || IS_SET(victim->act, PLR_DROWSIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); REMOVE_BIT(victim->act, PLR_DROWSIGHT); send_to_char( "Your senses return to normal.\n\r", victim ); } if (IS_AFFECTED(victim, AFF_DARKNESS)) { REMOVE_BIT(victim->affected_by, AFF_DARKNESS); send_to_char("The darkness around you fades away.\n\r",ch); return; } victim->pcdata->powers[1] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->special, SPC_ANARCH); REMOVE_BIT(victim->special, SPC_DROW_WAR ); REMOVE_BIT(victim->special, SPC_DROW_MAG ); REMOVE_BIT(victim->special, SPC_DROW_CLE ); victim->pcdata->stats[UNI_RAGE] = 0; victim->class = 0; send_to_char("You have been outcasted!\n\r", victim); } else if ( IS_CLASS(ch, CLASS_MONK) && ch->pcdata->stats[UNI_GEN] == 2 && !str_cmp(victim->clan,ch->clan) && IS_CLASS(victim, CLASS_MONK) ) { sprintf(buf,"%s has been outcasted from %s.", victim->name, victim->clan); do_info(victim,buf); reset_weapon(victim,0); reset_weapon(victim,1); reset_weapon(victim,2); reset_weapon(victim,3); reset_weapon(victim,4); reset_weapon(victim,5); reset_weapon(victim,6); reset_weapon(victim,7); reset_weapon(victim,8); reset_weapon(victim,9); reset_weapon(victim,10); reset_weapon(victim,11); reset_weapon(victim,12); if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_WIZINVIS) ) { REMOVE_BIT(victim->act, PLR_WIZINVIS); send_to_char( "You appear from a shroud of light.\n\r", victim ); } if (!IS_IMMORTAL(victim) && IS_SET(victim->act, PLR_HOLYLIGHT) ) { REMOVE_BIT(victim->act, PLR_HOLYLIGHT); send_to_char( "Your view shimmers into mortal vision.\n\r", victim ); } if (IS_IMMUNE(victim,IMM_SHIELDED) ) { send_to_char("You stop shielding your aura.\n\r",victim); REMOVE_BIT(victim->immune, IMM_SHIELDED); } REMOVE_BIT(victim->special, SPC_SIRE); REMOVE_BIT(victim->special, SPC_PRINCE); REMOVE_BIT(victim->affected_by, AFF_POLYMORPH); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT(victim->affected_by, AFF_ETHEREAL); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT(victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT(victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); victim->pcdata->powers[PMONK] = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string(victim->lord); victim->lord = str_dup( "" ); free_string(victim->clan); victim->clan = str_dup( "" ); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->pcdata->rank = 0; victim->class = 0; victim->trust = 0; victim->level = 3; send_to_char("You have been outcasted!\n\r", victim); } else send_to_char("They are not of your clan!\n\r", ch); return; } */ void do_affects (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; char combo_buf_1[MAX_STRING_LENGTH]; char combo_buf_2[MAX_STRING_LENGTH]; char combo_buf_3[MAX_STRING_LENGTH]; int combo_list[MAX_SKILL + 2]; int combo_affs[28]; // Highest apply +1. int combo_bv = 0; int loopvar = 0; int totalaffs = 0; int workingaffs = 0; int loopvar2 = 0; int combo_saves = 0; int combo_duration = 0; AFFECT_DATA *paf; int iWear; OBJ_DATA *obj; int spellnum; if (IS_NPC (ch)) return; send_to_char ("#wYou are affected by the following spells:\n\r", ch); if (ch->affected != NULL) { for (loopvar = 0; loopvar < MAX_SKILL + 1; loopvar++) combo_list[loopvar] = 0; for (paf = ch->affected; paf != NULL; paf = paf->next) { combo_list[paf->type]++; totalaffs++; } stcf (ch, "#wFor a total of %d affects:\n\r", totalaffs); for (loopvar2 = 0; loopvar2 < MAX_SKILL; loopvar2++) { bool SENT_50 = FALSE; bool any_locs = FALSE; for (loopvar = 0; loopvar < 28; loopvar++) combo_affs[loopvar] = 0; combo_bv = 0; combo_saves = 0; combo_duration = 0; if (combo_list[loopvar2] == 0) continue; if (workingaffs > totalaffs) continue; workingaffs++; for (paf = ch->affected; paf != NULL; paf = paf->next) { if (paf->type != loopvar2) continue; combo_affs[paf->location] += paf->modifier; combo_bv += paf->bitvector; if (paf->duration > combo_duration) combo_duration = paf->duration; if (paf->location != APPLY_NONE) any_locs = TRUE; } sprintf (combo_buf_1, " "); sprintf (combo_buf_2, " "); sprintf (combo_buf_3, "#wSpell: #y%-20s#w x%2d :", skill_table[loopvar2].name, combo_list[loopvar2]); send_to_char (combo_buf_3, ch); combo_saves = combo_affs[APPLY_SAVING_PARA] + combo_affs[APPLY_SAVING_ROD] + combo_affs[APPLY_SAVING_PETRI] + combo_affs[APPLY_SAVING_BREATH] + combo_affs[APPLY_SAVING_SPELL]; #define SEND_MORE_THEN_50 \ if ( col_str_len(combo_buf_1) > 65 ) \ { \ send_to_char (combo_buf_1, ch); \ stc( "\n\r :", ch ); \ sprintf( combo_buf_1, " " ); \ SENT_50 = TRUE; \ } \ else \ { \ SENT_50 = FALSE; \ } if (combo_affs[APPLY_STR] > 0) { sprintf (combo_buf_2, "#g+%d #wStr, ", abs (combo_affs[APPLY_STR])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_STR] < 0) { sprintf (combo_buf_2, "#r-%d #wStr, ", abs (combo_affs[APPLY_STR])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_DEX] > 0) { sprintf (combo_buf_2, "#g+%d #wDex, ", abs (combo_affs[APPLY_DEX])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_DEX] < 0) { sprintf (combo_buf_2, "#r-%d #wDex, ", abs (combo_affs[APPLY_DEX])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_INT] > 0) { sprintf (combo_buf_2, "#g+%d #wInt, ", abs (combo_affs[APPLY_INT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_INT] < 0) { sprintf (combo_buf_2, "#r-%d #wInt, ", abs (combo_affs[APPLY_INT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_WIS] > 0) { sprintf (combo_buf_2, "#g+%d #wWis, ", abs (combo_affs[APPLY_WIS])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_WIS] < 0) { sprintf (combo_buf_2, "#r-%d #wWis, ", abs (combo_affs[APPLY_WIS])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_CON] > 0) { sprintf (combo_buf_2, "#g+%d #wCon, ", abs (combo_affs[APPLY_CON])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_CON] < 0) { sprintf (combo_buf_2, "#r-%d #wCon, ", abs (combo_affs[APPLY_CON])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_SEX] > 0) { sprintf (combo_buf_2, "#g+%d #wSex, ", abs (combo_affs[APPLY_SEX])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_SEX] < 0) { sprintf (combo_buf_2, "#r-%d #wSex, ", abs (combo_affs[APPLY_SEX])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_CLASS] > 0) { sprintf (combo_buf_2, "#g+%d #wClass, ", abs (combo_affs[APPLY_CLASS])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_CLASS] < 0) { sprintf (combo_buf_2, "#r-%d #wClass, ", abs (combo_affs[APPLY_CLASS])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_LEVEL] > 0) { sprintf (combo_buf_2, "#g+%d #wLevels, ", abs (combo_affs[APPLY_LEVEL])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_LEVEL] < 0) { sprintf (combo_buf_2, "#r-%d #wLevels, ", abs (combo_affs[APPLY_LEVEL])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_AGE] > 0) { sprintf (combo_buf_2, "#g%d Years Older, ", abs (combo_affs[APPLY_AGE])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_AGE] < 0) { sprintf (combo_buf_2, "#g%d Years Younger, ", abs (combo_affs[APPLY_AGE])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_HEIGHT] > 0) { sprintf (combo_buf_2, "#g%d Cms Taller, ", abs (combo_affs[APPLY_HEIGHT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_HEIGHT] < 0) { sprintf (combo_buf_2, "#g%d Cms Shorter, ", abs (combo_affs[APPLY_HEIGHT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_WEIGHT] > 0) { sprintf (combo_buf_2, "#g%d Lbs Heavier", abs (combo_affs[APPLY_WEIGHT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_WEIGHT] < 0) { sprintf (combo_buf_2, "#g%d Lbs Lighter", abs (combo_affs[APPLY_WEIGHT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_HIT] > 0) { sprintf (combo_buf_2, "#g+%d #wHP, ", abs (combo_affs[APPLY_HIT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_HIT] < 0) { sprintf (combo_buf_2, "#r-%d #wHP, ", abs (combo_affs[APPLY_HIT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_MANA] > 0) { sprintf (combo_buf_2, "#g+%d #wMana, ", abs (combo_affs[APPLY_MANA])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_MANA] < 0) { sprintf (combo_buf_2, "#r-%d #wMana, ", abs (combo_affs[APPLY_MANA])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_MOVE] > 0) { sprintf (combo_buf_2, "#g+%d #wMove, ", abs (combo_affs[APPLY_MOVE])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_MOVE] < 0) { sprintf (combo_buf_2, "#r-%d #wMove, ", abs (combo_affs[APPLY_MOVE])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_GOLD] > 0) { sprintf (combo_buf_2, "#g%d GP Richer", abs (combo_affs[APPLY_GOLD])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_GOLD] < 0) { sprintf (combo_buf_2, "#r%d GP Poorer", abs (combo_affs[APPLY_GOLD])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_EXP] > 0) { sprintf (combo_buf_2, "#g%d Exp Higher", abs (combo_affs[APPLY_EXP])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_EXP] < 0) { sprintf (combo_buf_2, "#r%d Exp Lower", abs (combo_affs[APPLY_EXP])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_AC] > 0) { sprintf (combo_buf_2, "#r+%d #wAC, ", abs (combo_affs[APPLY_AC])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_AC] < 0) { sprintf (combo_buf_2, "#g-%d #wAC, ", abs (combo_affs[APPLY_AC])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_HITROLL] > 0) { sprintf (combo_buf_2, "#g+%d #wHR, ", abs (combo_affs[APPLY_HITROLL])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_HITROLL] < 0) { sprintf (combo_buf_2, "#r-%d #wHR, ", abs (combo_affs[APPLY_HITROLL])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_DAMROLL] > 0) { sprintf (combo_buf_2, "#g+%d #wDR, ", abs (combo_affs[APPLY_DAMROLL])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_DAMROLL] < 0) { sprintf (combo_buf_2, "#r-%d #wDR, ", abs (combo_affs[APPLY_DAMROLL])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_POLY] > 0) { sprintf (combo_buf_2, "#g+%d #wPolymorph, ", abs (combo_affs[APPLY_POLY])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_POLY] < 0) { sprintf (combo_buf_2, "#r-%d #wPolymorph, ", abs (combo_affs[APPLY_POLY])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_BLOOD_MAX] > 0) { sprintf (combo_buf_2, "#g+%d #wBlood Pool, ", abs (combo_affs[APPLY_BLOOD_MAX])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_BLOOD_MAX] < 0) { sprintf (combo_buf_2, "#r-%d #wBlood Pool, ", abs (combo_affs[APPLY_BLOOD_MAX])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_BLOOD_POT] > 0) { sprintf (combo_buf_2, "#g+%d #wBlood Gen, ", abs (combo_affs[APPLY_BLOOD_POT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_affs[APPLY_BLOOD_POT] < 0) { sprintf (combo_buf_2, "#r-%d #wBlood Gen, ", abs (combo_affs[APPLY_BLOOD_POT])); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} if (combo_saves > 0) { sprintf (combo_buf_2, "#r+%d #wSave-vs-Magic, ", abs (combo_saves)); strcat (combo_buf_1, combo_buf_2); } if (combo_saves < 0) { sprintf (combo_buf_2, "#g-%d #wSave-vs-Magic, ", abs (combo_saves)); strcat (combo_buf_1, combo_buf_2); } if (!any_locs) { sprintf (combo_buf_2, "#yAffects Nothing."); strcat (combo_buf_1, combo_buf_2); SEND_MORE_THEN_50} #undef SEND_MORE_THEN_50 if (str_cmp (combo_buf_1, " ")) send_to_char (combo_buf_1, ch); send_to_char ("\n\r", ch); sprintf (combo_buf_1, "#w #y%-20s#w : Bits #y%s#w\n\r", " ", affect_bit_name (combo_bv)); sprintf (combo_buf_2, "#w #y%-20s#w : #y%d #whours\n\r", " ", combo_duration); if (ch->level >= 0) { if (combo_bv > 0) send_to_char (combo_buf_1, ch); send_to_char (combo_buf_2, ch); } } } else stc ("Nothing\n\r", ch); stc ("\n\r#wYou have the following affects on your items:\n\r", ch); for (iWear = 0; iWear < MAX_WEAR; iWear++) { if (!(obj = get_eq_char (ch, iWear))) continue; if ((obj->item_type == ITEM_ARMOR && obj->value[3] > 0) || (obj->item_type == ITEM_WEAPON && obj->value[0] >= 1000) || IS_SET (obj->spectype, SITEM_SILVER) || IS_SET (obj->spectype, SITEM_DEMONIC) || IS_SET (obj->quest, QUEST_ARTIFACT)) { if (obj->item_type == ITEM_ARMOR) spellnum = obj->value[3]; else spellnum = obj->value[0] / 1000; switch (spellnum) { default: continue; case 1: case 45: if (IS_AFFECTED (ch, AFF_INFRARED)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #yinfravision#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; //case 2: case 27: if (IS_AFFECTED (ch, AFF_DETECT_INVIS)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #ydetect_invis#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 60: if (IS_AFFECTED (ch, AFF_DETECT_HIDDEN)) { sprintf (buf, "#wItem: #w'#y%s#w' affecting you with #ydetect_hidden#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 3: case 39: if (IS_AFFECTED (ch, AFF_FLYING)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #yfly#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 4: if (IS_AFFECTED (ch, AFF_BLIND)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #yblindness#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 5: case 46: if (IS_AFFECTED (ch, AFF_INVISIBLE)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #yinvisible#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 6: case 52: if (IS_AFFECTED (ch, AFF_PASS_DOOR)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #ypass_door#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 7: case 54: if (IS_AFFECTED (ch, AFF_PROTECT)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #yprotection#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 8: case 57: if (IS_AFFECTED (ch, AFF_SANCTUARY)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #ysanctuary#w#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 9: if (IS_AFFECTED (ch, AFF_SNEAK)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #ysneak#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 10: if (IS_ITEMAFF (ch, ITEMA_SHOCKSHIELD)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #ycrackling shield of lightning#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 11: if (IS_ITEMAFF (ch, ITEMA_FIRESHIELD)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #yburning shield of fire#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 12: if (IS_ITEMAFF (ch, ITEMA_ICESHIELD)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #yshimmering shield of ice#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 13: if (IS_ITEMAFF (ch, ITEMA_ACIDSHIELD)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #ybubbling shield of acid#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 15: if (IS_ITEMAFF (ch, ITEMA_CHAOSSHIELD)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #yswirling shield of chaos.#n\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 16: if (IS_ITEMAFF (ch, ITEMA_REGENERATE)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wgranting you #ysupernatural regeneration#n.\n\r", obj->short_descr); send_to_char (buf, ch); } if (IS_ITEMAFF (ch, ITEMA_RAREREGEN)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wgranting you #yimproved regeneration#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 17: if (IS_ITEMAFF (ch, ITEMA_SPEED)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wgranting you with #ysupernatural speed#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 18: if (IS_ITEMAFF (ch, ITEMA_VORPAL)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wgranting you #yvorpal slices#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 19: if (IS_ITEMAFF (ch, ITEMA_PEACE)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #yshield of peace#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 20: if (IS_ITEMAFF (ch, ITEMA_REFLECT)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #yflickering shield of darkness#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 21: if (IS_ITEMAFF (ch, ITEMA_RESISTANCE)) { sprintf (buf, "#wItem: '#y%s#w' granting you #ysuperior resistance#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 22: if (IS_ITEMAFF (ch, ITEMA_VISION)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wgranting you #ysupernatural vision#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 23: if (IS_ITEMAFF (ch, ITEMA_STALKER)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wmaking you #yfleet-footed#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 24: if (IS_ITEMAFF (ch, ITEMA_VANISH)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #waffecting you with #ysuperior hiding#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 25: if (IS_ITEMAFF (ch, ITEMA_RAGER)) { sprintf (buf, "#wItem: '#y%s#w' invoking the power of #ythe beast#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; case 26: if (IS_ITEMAFF (ch, ITEMA_RAGER)) { sprintf (buf, "#wItem: '#y%s#w' invoking the raw power of #ythe sun#n.\n\r", obj->short_descr); send_to_char (buf, ch); } if (IS_ITEMAFF (ch, ITEMA_SOLARSHIELD)) { sprintf (buf, "#wItem:#n #w'#y%s#w' #wsurrounding you with a #yblinding shield of solar energy#n.\n\r", obj->short_descr); send_to_char (buf, ch); } break; } } } } /* void do_level( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; char skill [20]; char stance [20]; one_argument( argument, arg ); if (IS_NPC(ch)) return; sprintf(buf,"********************************************\n\r"); send_to_char(buf,ch); sprintf(buf,"* Weapon Skills| Stances | Magic *\n\r"); send_to_char(buf,ch); sprintf(buf,"********************************************\n\r"); send_to_char(buf,ch); sprintf(buf,"Unarmed : %3d | Bull : %3d | Purple: %3d\n\r", ch->wpn[0],ch->stance[STANCE_BULL],ch->spl[0]); send_to_char(buf,ch); sprintf(buf,"Slash : %3d | Viper : %3d | Red : %3d\n\r", ch->wpn[3],ch->stance[STANCE_VIPER],ch->spl[1]); send_to_char(buf,ch); sprintf(buf,"Slice : %3d | Crane : %3d | Blue : %3d\n\r", ch->wpn[1],ch->stance[STANCE_CRANE],ch->spl[2]); send_to_char(buf,ch); sprintf(buf,"Stab : %3d | Crab : %3d | Green : %3d\n\r", ch->wpn[2],ch->stance[STANCE_CRAB],ch->spl[3]); send_to_char(buf,ch); sprintf(buf,"Whip : %3d | Mongoose: %3d | Yellow: %3d\n\r", ch->wpn[4],ch->stance[STANCE_MONGOOSE],ch->spl[4]); send_to_char(buf,ch); sprintf(buf,"Claw : %3d | Tiger : %3d |\n\r", ch->wpn[5],ch->stance[STANCE_TIGER]); send_to_char(buf,ch); sprintf(buf,"Blast : %3d | Mantis : %3d |\n\r", ch->wpn[6],ch->stance[STANCE_MANTIS]); send_to_char(buf,ch); sprintf(buf,"Pound : %3d | Dragon : %3d |\n\r", ch->wpn[7],ch->stance[STANCE_DRAGON]); send_to_char(buf,ch); sprintf(buf,"Crush : %3d | Swallow : %3d |\n\r", ch->wpn[8],ch->stance[STANCE_SWALLOW]); send_to_char(buf,ch); sprintf(buf,"Grep : %3d | Monkey : %3d |\n\r", ch->wpn[9],ch->stance[STANCE_MONKEY]); send_to_char(buf,ch); sprintf(buf,"Bite : %3d | |\n\r",ch->wpn[10]); send_to_char(buf,ch); sprintf(buf,"Pierce : %3d | |\n\r",ch->wpn[11]); send_to_char(buf,ch); sprintf(buf,"Suck : %3d | |\n\r",ch->wpn[12]); send_to_char(buf,ch); send_to_char("*************-= Misc. Things =-*************\n\r", ch); sprintf(skill, "Recall Room : %d \n\r",ch->home); send_to_char( skill, ch ); if ( ch->stance[11] == 1 ) sprintf(stance, " Viper" ); else if ( ch->stance[11] == 2 ) sprintf(stance, " Crane" ); else if ( ch->stance[11] == 3 ) sprintf(stance, " Crab" ); else if ( ch->stance[11] == 4 ) sprintf(stance, " Mongoose" ); else if ( ch->stance[11] == 5 ) sprintf(stance, " Bull" ); else if ( ch->stance[11] == 6 ) sprintf(stance, " Mantis" ); else if ( ch->stance[11] == 7 ) sprintf(stance, " Dragon" ); else if ( ch->stance[11] == 8 ) sprintf(stance, " Tiger" ); else if ( ch->stance[11] == 9 ) sprintf(stance, " Monkey" ); else if ( ch->stance[11] == 10 ) sprintf(stance, " Swallow" ); else if ( ch->stance[11] == -1 || ch->stance[11] == 15 ) sprintf(stance, " None" ); else sprintf(stance, " None" ); sprintf(skill, "Autostance: %s \n\r",stance); send_to_char( skill, ch ); send_to_char("*************-= Class Things =-*************\n\r", ch); if ( IS_CLASS(ch, CLASS_DEMON) ) send_to_char("You are a demon! \n\r", ch); if ( IS_CLASS(ch, CLASS_MAGE) ) send_to_char("You are a mage! \n\r", ch); if ( IS_CLASS(ch, CLASS_WEREWOLF) ) send_to_char("You are a werewolf! \n\r", ch); if ( IS_CLASS(ch, CLASS_NINJA) ) send_to_char("You are a ninja! \n\r", ch); if ( IS_CLASS(ch, CLASS_VAMPIRE) ) send_to_char("You are a vampire! \n\r", ch); if ( IS_CLASS(ch, CLASS_HIGHLANDER) ) send_to_char("You are a highlander! \n\r", ch); if ( IS_CLASS(ch, CLASS_DROW) ) send_to_char("You are a drow! \n\r", ch); if (IS_CLASS(ch, CLASS_VAMPIRE) ) { sprintf(skill, "Generation : %d \n\r", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); if (ch->pcdata->rank == AGE_METHUSELAH) send_to_char("You are a Methuselah! \n\r", ch); else if (ch->pcdata->rank == AGE_ELDER) send_to_char("You are an Elder! \n\r", ch); else if (ch->pcdata->rank == AGE_ANCILLA) send_to_char("You are an Ancilla! \n\r", ch); else if (ch->pcdata->rank == AGE_NEONATE) send_to_char("You are a Neonate! \n\r", ch); else send_to_char(" You are a Childe! \n\r", ch); if ( IS_SET(ch->special, SPC_PRINCE) ) send_to_char("You are a prince! \n\r", ch); } if (IS_CLASS(ch, CLASS_NINJA) ) { sprintf(skill, "Generation : %d\n\r", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); if ( IS_SET(ch->special, SPC_PRINCE) ) send_to_char("You can discipline people!\n\r", ch); } if (IS_CLASS(ch, CLASS_WEREWOLF) ) { sprintf(skill, "Generation : %d \n\r", ch->pcdata->stats[UNI_GEN]); send_to_char( skill, ch ); if ( IS_SET(ch->special, SPC_SIRE) && ch->pcdata->stats[UNI_GEN] > 2 ) send_to_char("You are able to spread the gift! \n\r", ch); if ( IS_SET(ch->special, SPC_PRINCE) && ch->pcdata->stats[UNI_GEN] > 2 ) send_to_char("You are a shaman! \n\r", ch); } sprintf(buf,"********************************************\n\r"); send_to_char(buf,ch); return; } */ void do_class (CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); if (IS_NPC (ch)) return; if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("Syntax: class <char> <class>.\n\r", ch); send_to_char ("Class being one of:\n\r", ch); send_to_char (" Vampire, Werewolf, Demon, Mage, Highlander,\n\r", ch); send_to_char (" Drow, Monk, Ninja, Wraith, Fae, Dragon, Phoenix", ch); return; } if ((victim = get_char_world_no_npc (ch, arg1)) == NULL) { send_to_char ("That player is not here.\n\r", ch); return; } if ((victim->class != 0) && str_cmp (arg2, "none")) { stc ("You must clear their class first.\n\r", ch); stc ("Class <victim> none.\n\r", ch); return; } if (!str_cmp (arg2, "none")) { /* Used to make sure the person has enough "stuff" to change */ victim->pcdata->condition[COND_THIRST] = 10000; victim->move = 10000; victim->mana = 10000; victim->pcdata->powers[WPOWER_BEAR] = 4; victim->pcdata->powers[WPOWER_LYNX] = 4; victim->pcdata->powers[WPOWER_BOAR] = 4; victim->pcdata->powers[WPOWER_OWL] = 4; victim->pcdata->powers[WPOWER_SPIDER] = 4; victim->pcdata->powers[WPOWER_WOLF] = 4; victim->pcdata->powers[WPOWER_HAWK] = 4; victim->pcdata->powers[WPOWER_MANTIS] = 4; victim->pcdata->powers[WPOWER_TIGER] = 4; victim->pcdata->powers[WPOWER_GAIA] = 4; if (IS_CLASS (victim, CLASS_WEREWOLF) || IS_CLASS (victim, CLASS_VAMPIRE)) do_unwerewolf (victim, ""); if (IS_VAMPAFF (victim, VAM_DISGUISED)) do_mask (victim, "self"); victim->pcdata->stats[UNI_FORM0] = 0; /* All classes in general */ if (IS_VAMPAFF (victim, VAM_FANGS)) { send_to_char ("Your fangs slide back into your gums.\n\r", victim); act ("$n's fangs slide back into $s gums.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_FANGS); } if (IS_CLASS (victim, CLASS_VAMPIRE) && IS_VAMPAFF (victim, VAM_CLAWS)) { send_to_char ("Your claws slide back under your nails.\n\r", victim); act ("$N's claws slide back under $s nails.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } else if (IS_CLASS (victim, CLASS_NINJA) && IS_VAMPAFF (victim, VAM_CLAWS)) { send_to_char ("You shove your iron claws up your sleeves\n\r", victim); act ("$N shoves $S iron claws up $e sleeves.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } else if (IS_CLASS (victim, CLASS_WEREWOLF) && IS_VAMPAFF (victim, VAM_CLAWS)) { send_to_char ("Your talons slide back into your fingers.\n\r", victim); act ("$N's talons slide back into $s fingers.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CLAWS); } if (IS_VAMPAFF (victim, VAM_NIGHTSIGHT)) { send_to_char ("The red glow in your eyes fades.\n\r", victim); act ("The red glow in $N's eyes fades.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); } if (IS_AFFECTED (victim, AFF_SHADOWSIGHT)) { send_to_char ("You can no longer see between planes.\n\r", victim); REMOVE_BIT (victim->affected_by, AFF_SHADOWSIGHT); } if (IS_IMMUNE (victim, IMM_SHIELDED)) { send_to_char ("You stop shielding your aura.\n\r", victim); REMOVE_BIT (victim->immune, IMM_SHIELDED); } if (IS_VAMPAFF (victim, VAM_DISGUISED)) { free_string (victim->morph); victim->morph = str_dup (victim->name); send_to_char ("You transform into yourself.\n\r", victim); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_DISGUISED); } if (IS_AFFECTED (victim, AFF_SHADOWPLANE)) { send_to_char ("You fade back into the real world.\n\r", victim); act ("The shadows flicker and $N fades into existance.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->affected_by, AFF_SHADOWPLANE); do_look (ch, "auto"); } if (!IS_IMMORTAL (victim) && IS_SET (victim->act, PLR_WIZINVIS)) { REMOVE_BIT (victim->act, PLR_WIZINVIS); send_to_char ("You slowly fade into existence.\n\r", victim); } if (!IS_IMMORTAL (victim) && IS_SET (victim->act, PLR_HOLYLIGHT)) { REMOVE_BIT (victim->act, PLR_HOLYLIGHT); REMOVE_BIT (victim->act, PLR_DROWSIGHT); send_to_char ("Your senses return to normal.\n\r", victim); } /* Demon Stuff */ if (IS_DEMAFF (victim, DEM_HORNS) && IS_CLASS (victim, CLASS_DEMON)) { send_to_char ("Your horns slide back into your head.\n\r", victim); act ("$N's horns slide back into $s head.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_HORNS); } if (IS_DEMAFF (victim, DEM_HOOVES) && IS_CLASS (victim, CLASS_DEMON)) { send_to_char ("Your hooves transform into feet.\n\r", victim); act ("$N's hooves transform back into $s feet.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_HOOVES); } if (IS_DEMAFF (victim, DEM_WINGS) && IS_CLASS (victim, CLASS_DEMON)) { if (IS_DEMAFF (victim, DEM_UNFOLDED) && IS_CLASS (victim, CLASS_DEMON)) { send_to_char ("Your wings fold up behind your back.\n\r", victim); act ("$N's wings fold up behind $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_UNFOLDED); } send_to_char ("Your wings slide into your back.\n\r", victim); act ("$N's wings slide into $s back.", ch, NULL, victim, TO_ROOM); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_WINGS); } if (IS_EXTRA (victim, EXTRA_OSWITCH)) { do_humanform (victim, ""); } REMOVE_BIT (victim->affected_by, AFF_SHADOWPLANE); REMOVE_BIT (victim->affected_by, AFF_POLYMORPH); if (!IS_IMMORTAL (victim)) { REMOVE_BIT (victim->act, PLR_HOLYLIGHT); } REMOVE_BIT (victim->immune, IMM_SHIELDED); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_FANGS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CLAWS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); REMOVE_BIT (victim->affected_by, AFF_SHADOWSIGHT); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_PROTEAN); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_VICISSITUDE); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CELERITY); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_FORTITUDE); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_POTENCE); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_OBTENEBRATION); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_SERPENTIS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_AUSPEX); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_DOMINATE); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_PRESENCE); REMOVE_BIT (victim->polyaff, POLY_ZULO); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_DISGUISED); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT (victim->polyaff, POLY_BAT); REMOVE_BIT (victim->polyaff, POLY_MIST); REMOVE_BIT (victim->affected_by, AFF_ETHEREAL); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT (victim->extra, EXTRA_FAKE_CON); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_MORTAL); REMOVE_BIT (victim->immune, IMM_SHIELDED); REMOVE_BIT (victim->polyaff, POLY_SERPENT); REMOVE_BIT (victim->special, SPC_WOLFMAN); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CLAWS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_FANGS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_NIGHTSIGHT); REMOVE_BIT (victim->special, SPC_DEMON_LORD); REMOVE_BIT (victim->warp, WARP_CBODY); REMOVE_BIT (victim->warp, WARP_SBODY); REMOVE_BIT (victim->warp, WARP_STRONGARMS); REMOVE_BIT (victim->warp, WARP_STRONGLEGS); REMOVE_BIT (victim->warp, WARP_VENOMTONG); REMOVE_BIT (victim->warp, WARP_SPIKETAIL); REMOVE_BIT (victim->warp, WARP_BADBREATH); REMOVE_BIT (victim->warp, WARP_QUICKNESS); REMOVE_BIT (victim->warp, WARP_STAMINA); REMOVE_BIT (victim->warp, WARP_HUNT); REMOVE_BIT (victim->warp, WARP_DAMCAP); REMOVE_BIT (victim->warp, WARP_TERROR); REMOVE_BIT (victim->warp, WARP_REGEN); REMOVE_BIT (victim->warp, WARP_STEED); REMOVE_BIT (victim->warp, WARP_WEAPON); REMOVE_BIT (victim->warp, WARP_INFIRMITY); REMOVE_BIT (victim->warp, WARP_GBODY); REMOVE_BIT (victim->warp, WARP_SCARED); REMOVE_BIT (victim->warp, WARP_MAGMA); REMOVE_BIT (victim->warp, WARP_WEAK); REMOVE_BIT (victim->warp, WARP_SLOW); REMOVE_BIT (victim->warp, WARP_VULNER); REMOVE_BIT (victim->warp, WARP_SHARDS); REMOVE_BIT (victim->warp, WARP_WINGS); REMOVE_BIT (victim->warp, WARP_CLUMSY); REMOVE_BIT (victim->warp, WARP_STUPID); REMOVE_BIT (victim->warp, WARP_SPOON); REMOVE_BIT (victim->warp, WARP_FORK); REMOVE_BIT (victim->warp, WARP_KNIFE); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_HORNS); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_TAIL); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_HOOVES); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_UNFOLDED); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_UNFOLDED); REMOVE_BIT (victim->pcdata->powers[DPOWER_CURRENT], DEM_WINGS); REMOVE_BIT (victim->extra, EXTRA_OSWITCH); REMOVE_BIT (victim->newbits, NEW_DROWHATE); REMOVE_BIT (victim->polyaff, POLY_SPIDERFORM); REMOVE_BIT (victim->newbits, NEW_DARKNESS); REMOVE_BIT (victim->monkstuff, MONK_DEATH); REMOVE_BIT (victim->monkstuff, MONK_HEAL); REMOVE_BIT (victim->garou1, WOLF_COCOON); REMOVE_BIT (victim->newbits, NEW_QUILLS); REMOVE_BIT (victim->garou1, WOLF_RAZORCLAWS); REMOVE_BIT (victim->garou1, WW_GRANITE); REMOVE_BIT (victim->garou1, GAROU_CLENCHED); REMOVE_BIT (victim->garou1, GAROU_AVENGER); REMOVE_BIT (victim->affected_by, AFF_STEELSHIELD); REMOVE_BIT (victim->newbits, NEW_MONKFLAME); REMOVE_BIT (victim->newbits, NEW_MONKADAM); REMOVE_BIT (victim->newbits, NEW_POWER); if (!IS_IMMORTAL (victim)) { REMOVE_BIT (victim->act, PLR_WIZINVIS); } REMOVE_BIT (victim->extra, EXTRA_STANCE); REMOVE_BIT (victim->act, OLD_PLR_DEMON); REMOVE_BIT (victim->act, OLD_PLR_CHAMPION); REMOVE_BIT (victim->extra, OLD_EXTRA_SIRE); REMOVE_BIT (victim->extra, OLD_EXTRA_PRINCE); REMOVE_BIT (victim->extra, OLD_EXTRA_PRINCE); REMOVE_BIT (victim->act, OLD_PLR_WEREWOLF); REMOVE_BIT (victim->act, OLD_PLR_WOLFMAN); REMOVE_BIT (victim->extra, OLD_EXTRA_SIRE); REMOVE_BIT (victim->extra, OLD_EXTRA_PRINCE); REMOVE_BIT (victim->extra, OLD_EXTRA_ANARCH); REMOVE_BIT (victim->extra, OLD_EXTRA_INCONNU); REMOVE_BIT (victim->act, OLD_PLR_VAMPIRE); REMOVE_BIT (victim->extra, OLD_EXTRA_HIGHLANDER); REMOVE_BIT (victim->extra, OLD_EXTRA_PRINCE); REMOVE_BIT (victim->extra, OLD_EXTRA_ANARCH); REMOVE_BIT (victim->extra, OLD_EXTRA_INCONNU); REMOVE_BIT (victim->act, OLD_PLR_VAMPIRE); REMOVE_BIT (victim->extra, EXTRA_POTENCY); REMOVE_BIT (victim->newbits, NEW_TIDE); REMOVE_BIT (victim->flag2, AFF2_SPIRITGUARD); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_HORNS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_WINGS); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_EXOSKELETON); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_TAIL); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_HEAD); REMOVE_BIT (victim->flag2, VAMP_OBJMASK); REMOVE_BIT (victim->extra, EXTRA_AWE); REMOVE_BIT (victim->extra, EXTRA_DRAGON); REMOVE_BIT (victim->extra, EXTRA_PLASMA); REMOVE_BIT (victim->newbits, NEW_COIL); REMOVE_BIT (victim->flag2, AFF2_SHIFT); REMOVE_BIT (victim->extra, EXTRA_EARTHMELD); REMOVE_BIT (victim->extra, EXTRA_ASH); REMOVE_BIT (victim->affected_by, AFF_SHADOWSIGHT); REMOVE_BIT (victim->mflags, MAGE_POLYAPPEAR); REMOVE_BIT (victim->mflags, MAGE_TELEKINETICS); REMOVE_BIT (victim->mflags, MFLAGS_DIMMAK); REMOVE_BIT (victim->mflags, MAGE_BETTERBODY); REMOVE_BIT (victim->mflags, MAGE_SHAPED); REMOVE_BIT (victim->special, SPC_CHAMPION); REMOVE_BIT (victim->special, SPC_INCONNU); REMOVE_BIT (victim->special, SPC_ANARCH); REMOVE_BIT (victim->special, SPC_SIRE); REMOVE_BIT (victim->special, SPC_PRINCE); REMOVE_BIT (victim->special, SPC_DEMON_LORD); REMOVE_BIT (victim->special, SPC_DROW_WAR); REMOVE_BIT (victim->special, SPC_DROW_MAG); REMOVE_BIT (victim->special, SPC_DROW_CLE); REMOVE_BIT (victim->affected_by, AFF_POLYMORPH); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_CHANGED); REMOVE_BIT (victim->pcdata->powers[WOLF_POLYAFF], POLY_MIST); REMOVE_BIT (victim->affected_by, AFF_ETHEREAL); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_FLYING); REMOVE_BIT (victim->pcdata->stats[UNI_AFF], VAM_SONIC); REMOVE_BIT (victim->pcdata->powers[WOLF_POLYAFF], POLY_BAT); REMOVE_BIT (victim->pcdata->powers[WOLF_POLYAFF], POLY_WOLF); REMOVE_BIT (ch->newbits, NEW_POWER); victim->warpcount = 0; victim->monkstuff = 0; victim->monkcrap = 0; victim->spheres[MCOR] = 0; victim->monkab[SPIRIT] = 0; victim->monkab[BODY] = 0; victim->monkab[COMBAT] = 0; victim->monkab[AWARE] = 0; victim->spheres[MLIF] = 0; victim->spheres[MPRI] = 0; victim->spheres[MENT] = 0; victim->spheres[MMIN] = 0; victim->spheres[MSPI] = 0; victim->spheres[MFOR] = 0; victim->spheres[MMAT] = 0; victim->spheres[MTIM] = 0; victim->pcdata->powers[DPOWER_FLAGS] = 0; victim->pcdata->stats[DEMON_TOTAL] = 0; victim->pcdata->stats[DEMON_CURRENT] = 0; victim->pcdata->powers[WPOWER_BEAR] = 0; victim->pcdata->powers[WPOWER_LYNX] = 0; victim->pcdata->powers[WPOWER_BOAR] = 0; victim->pcdata->powers[WPOWER_OWL] = 0; victim->pcdata->powers[WPOWER_SPIDER] = 0; victim->pcdata->powers[WPOWER_WOLF] = 0; victim->pcdata->powers[WPOWER_HAWK] = 0; victim->pcdata->powers[WPOWER_MANTIS] = 0; victim->pcdata->powers[WPOWER_TIGER] = 0; victim->pcdata->powers[WPOWER_GAIA] = 0; victim->pcdata->powers[VAM_ANIM] = 0; victim->gifts[STARGAZERS] = 0; victim->gifts[HOMID] = 0; victim->gifts[METIS] = 0; victim->gifts[LUPUS] = 0; victim->gifts[RAGABASH] = 0; victim->gifts[THEURGE] = 0; victim->gifts[PHILODOX] = 0; victim->gifts[GALLIARD] = 0; victim->gifts[AHROUN] = 0; victim->gifts[BLACKFURIES] = 0; victim->gifts[BONEGNAWERS] = 0; victim->gifts[CHILDREN] = 0; victim->gifts[CHILDRENOFGAIA] = 0; victim->gifts[FIANNA] = 0; victim->gifts[GETOFFENRIS] = 0; victim->gifts[GLASSWALKERS] = 0; victim->gifts[REDTALONS] = 0; victim->gifts[SHADOWLORDS] = 0; victim->gifts[SILENTSTRIDERS] = 0; victim->gifts[SILVERFANGS] = 0; victim->gifts[UKTENA] = 0; victim->gifts[WENDIGO] = 0; victim->arcanoi[WARGO] = 0; victim->arcanoi[WCAST] = 0; victim->arcanoi[WBODY] = 0; victim->arcanoi[WFATL] = 0; victim->arcanoi[WINHB] = 0; victim->arcanoi[WKEEN] = 0; victim->arcanoi[WLIFE] = 0; victim->arcanoi[WMATE] = 0; victim->arcanoi[WRAGE] = 0; victim->arcanoi[WPAND] = 0; victim->arcanoi[WPTRY] = 0; //BASTETADDITION victim->bgifts[BHOMID] = 0; victim->bgifts[BMETIS] = 0; victim->bgifts[BFELINE] = 0; victim->bgifts[BBAGHEERA] = 0; victim->bgifts[BBALAM] = 0; victim->bgifts[BBUBASTI] = 0; victim->bgifts[BCEILICAN] = 0; victim->bgifts[BKHAN] = 0; victim->bgifts[BPUMONCA] = 0; victim->bgifts[BQUALMI] = 0; victim->bgifts[BSIMBA] = 0; victim->bgifts[BSWARA] = 0; //END victim->pcdata->powers[VAM_OBTE] = 0; victim->pcdata->powers[VAM_THAU] = 0; victim->pcdata->powers[VAM_OBFU] = 0; victim->pcdata->powers[VAM_SERP] = 0; victim->pcdata->powers[VAM_CHIM] = 0; victim->pcdata->powers[VAM_NECR] = 0; victim->pcdata->powers[VAM_CELE] = 0; victim->pcdata->powers[VAM_PRES] = 0; victim->pcdata->powers[VAM_AUSP] = 0; victim->pcdata->powers[VAM_POTE] = 0; victim->pcdata->powers[VAM_VICI] = 0; victim->pcdata->powers[VAM_OBEA] = 0; victim->pcdata->powers[VAM_FORT] = 0; victim->pcdata->powers[VAM_QUIE] = 0; victim->pcdata->powers[VAM_DOMI] = 0; victim->pcdata->powers[VAM_PROT] = 0; victim->pcdata->powers[VAM_DAIM] = 0; victim->pcdata->powers[VAM_MELP] = 0; victim->pcdata->powers[VAM_THAN] = 0; victim->pcdata->powers[NPOWER_SORA] = 0; victim->pcdata->powers[NPOWER_CHIKYU] = 0; victim->pcdata->powers[NPOWER_NINGENNO] = 0; victim->pcdata->powers[1] = 0; victim->pcdata->condition[COND_THIRST] = 0; victim->move = victim->max_move; victim->mana = victim->max_mana; victim->hit = victim->max_hit; victim->pcdata->rank = 0; victim->pcdata->stats[UNI_RAGE] = 0; free_string (victim->lord); victim->lord = str_dup (""); free_string (victim->clan); victim->clan = str_dup (""); victim->pcdata->stats[UNI_GEN] = 0; victim->pcdata->stats[UNI_AFF] = 0; victim->pcdata->stats[UNI_CURRENT] = -1; victim->beast = 15; victim->class = 0; if (!IS_IMMORTAL (victim)) { victim->trust = 0; victim->level = 2; } clear_stats (victim); send_to_char ("You are classless now!\n\r", victim); } else if (!str_cmp (arg2, "demon")) { victim->class = 1; if (!IS_IMMORTAL (victim)) victim->level = 3; SET_BIT (victim->special, SPC_CHAMPION); victim->lord = str_dup (ch->name); send_to_char ("You are now a demon!\n\r", victim); } else if (!str_cmp (arg2, "gargoyle")) { victim->class = CLASS_GARGOYLE; if (!IS_IMMORTAL (victim)) victim->level = 3; stc ("You are now a Gargoyle.\n\r", victim); } else if (!str_cmp (arg2, "phoenix")) { victim->class = CLASS_PHOENIX; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char("You are now a phoenix!\n\r",victim); } else if (!str_cmp (arg2, "dragon")) { victim->class = CLASS_DRAGON; victim->pcdata->dragonage = 1; victim->pcdata->dragonaff = 0; victim->pcdata->disc_a[DRAGON_COLOR] = number_range (1, 9); stc ("You are now a dragon.\n\r", victim); } else if (!str_cmp (arg2, "demon lord")) { victim->class = 1; if (!IS_IMMORTAL (victim)) victim->level = 3; SET_BIT (victim->special, SPC_DEMON_LORD); victim->lord = str_dup (victim->name); send_to_char ("You are now a Demon Lord!\n\r", victim); } else if (!str_cmp (arg2, "mage")) { victim->class = 2; if (victim->trust > 6) { victim->trust = victim->trust; victim->level = victim->level; } else { victim->trust = 6; victim->level = 6; } victim->pcdata->powers[MPOWER_RUNE0] = 0; victim->pcdata->powers[MPOWER_RUNE1] = 2047; victim->pcdata->powers[MPOWER_RUNE2] = 1023; victim->pcdata->powers[MPOWER_RUNE3] = 15; send_to_char ("You are now a Mage Oracle!\n\r", victim); } else if (!str_cmp (arg2, "werewolf")) { victim->class = 4; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a werewolf!\n\r", victim); } else if (!str_cmp (arg2, "fae")) { victim->pcdata->stats[UNI_GEN] = 13; victim->class = CLASS_CHOOSE; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a Fae.\n\rUse the CHOOSE command to choose a Kith.\n\r", victim); } else if (!str_cmp (arg2, "wraith")) { victim->pcdata->stats[UNI_GEN] = 13; victim->class = CLASS_WRAITH; REMOVE_BIT( victim->affected_by, AFF_SHADOWPLANE); SET_BIT( victim->wbits, WRAT_DEATHPLANE); if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a wraith!\n\r", victim); } //BASTETADDITION else if (!str_cmp (arg2, "bastet")) { victim->class = CLASS_BASTET; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a Bastet!\n\r", victim); } else if (!str_cmp (arg2, "vampire")) { victim->pcdata->stats[UNI_GEN] = 13; victim->class = 8; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a vampire!\n\r", victim); } else if (!str_cmp (arg2, "highlander")) { victim->class = 16; victim->pcdata->stats[UNI_GEN] = 13; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a highlander!\n\r", victim); } else if (!str_cmp (arg2, "ninja")) { victim->class = 128; victim->pcdata->stats[UNI_GEN] = 13; if (victim->trust > 6) { victim->trust = victim->trust; victim->level = victim->level; } else { victim->trust = 6; victim->level = 6; } send_to_char ("You are now a ninja!\n\r", victim); } else if (!str_cmp (arg2, "monk")) { victim->class = 512; victim->pcdata->stats[UNI_GEN] = 13; if (victim->trust > 6) { victim->trust = victim->trust; victim->level = victim->level; } else { victim->trust = 6; victim->level = 6; } send_to_char ("You are now a monk!\n\r", victim); } else if (!str_cmp (arg2, "drow")) { victim->pcdata->stats[UNI_GEN] = 13; victim->class = 32; if (!IS_IMMORTAL (victim)) victim->level = 3; send_to_char ("You are now a drow!\n\r", victim); } else do_class (ch, ""); send_to_char ("Class Set.\n\r", ch); return; } void do_generation (CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; int gen; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); if (IS_NPC (ch)) return; if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("Syntax: generation <char> <generation>.\n\r", ch); return; } if ((victim = get_char_world (ch, arg1)) == NULL) { send_to_char ("That player is not here.\n\r", ch); return; } gen = is_number (arg2) ? atoi (arg2) : -1; if (gen < 0 || gen > 13) { stc ("That is an invalid generation!\n\r", ch); return; } send_to_char ("Generation Set.\n\r", ch); victim->pcdata->stats[UNI_GEN] = gen; return; } /* void do_autostance( CHAR_DATA *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; int selection; one_argument( argument, arg ); if (IS_NPC(ch)) return; if (!str_cmp(arg,"none") ) { selection = STANCE_NONE; send_to_char("You're autostance has been removed.\n\r",ch); REMOVE_BIT(ch->extra, EXTRA_STANCE); } else if (!str_cmp(arg,"viper") ) { selection = STANCE_VIPER; send_to_char("Viper stance set.\n\r",ch); } else if (!str_cmp(arg,"crane") ) { selection = STANCE_CRANE; send_to_char("Crane stance set.\n\r",ch); } else if (!str_cmp(arg,"crab") ) { selection = STANCE_CRAB; send_to_char("Crab stance set.\n\r",ch); } else if (!str_cmp(arg,"mongoose")) { selection = STANCE_MONGOOSE; send_to_char("Mongoose stance set.\n\r",ch); } else if (!str_cmp(arg,"bull") ) { selection = STANCE_BULL; send_to_char("Bull stance set.\n\r",ch); } else { if (!str_cmp(arg,"mantis") && ch->stance[STANCE_CRANE] >= 200 && ch->stance[STANCE_VIPER] >= 200) { selection = STANCE_MANTIS; send_to_char("Mantis stance set.\n\r",ch); } else if (!str_cmp(arg,"dragon") && ch->stance[STANCE_BULL] >= 200 && ch->stance[STANCE_CRAB] >= 200) { selection = STANCE_DRAGON; send_to_char("Dragon stance set.\n\r",ch); } else if (!str_cmp(arg,"tiger") && ch->stance[STANCE_BULL] >= 200 && ch->stance[STANCE_VIPER] >= 200) { selection = STANCE_TIGER; send_to_char("Tiger stance set.\n\r",ch); } else if (!str_cmp(arg,"monkey") && ch->stance[STANCE_CRANE] >= 200 && ch->stance[STANCE_MONGOOSE] >= 200) { selection = STANCE_MONKEY; send_to_char("Monkey stance set.\n\r",ch); } else if (!str_cmp(arg,"swallow") && ch->stance[STANCE_CRAB] >= 200 && ch->stance[STANCE_MONGOOSE] >= 200) { selection = STANCE_SWALLOW; send_to_char("Swallow stance set.\n\r",ch); } else { send_to_char("Syntax is: autostance <style>.\n\r",ch); send_to_char("Autotance being one of: None, Viper, Crane, Crab, Mongoose, Bull.\n\r",ch); send_to_char(" If you know them: Mantis, Dragon, Tiger, Monkey, Swallow.\n\r",ch); return; } } ch->stance[11] = selection; SET_BIT(ch->extra, EXTRA_STANCE); return; } */ void reset_weapon (CHAR_DATA * ch, int dtype) { if (ch->wpn[dtype] > 200) ch->wpn[dtype] = 200; return; } void reset_spell (CHAR_DATA * ch, int dtype) { if (ch->spl[dtype] > 200) ch->spl[dtype] = 200; return; } void do_reimburse (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; char strsave[MAX_STRING_LENGTH]; char *word; FILE *fp; bool fMatch; if (IS_SET (ch->flag2, AFF2_REIMB)) { stc ("You already have a pfile.\n\r", ch); return; } sprintf (strsave, "%s%s", BACKUP_DIR, ch->name); if ((fp = fopen (strsave, "r")) == NULL) { send_to_char ("You dont have a reimbursement file.\n\r", ch); return; } if ((fp = fopen (strsave, "r")) != NULL) { for (;;) { word = feof (fp) ? "End" : fread_word (fp); fMatch = FALSE; switch (UPPER (word[0])) { case '*': fMatch = TRUE; fread_to_eol (fp); break; case 'H': if (!str_cmp (word, "HpManaMove")) { ch->hit = fread_number (fp); ch->max_hit = fread_number (fp); ch->mana = fread_number (fp); ch->max_mana = fread_number (fp); ch->move = fread_number (fp); ch->max_move = fread_number (fp); send_to_char ("***Hp/Mana/Move Reimbursed.\n\r", ch); fMatch = TRUE; break; } break; case 'P': if (!str_cmp (word, "Primal")) { ch->practice = fread_number (fp); fMatch = TRUE; send_to_char ("***Primal reimbursed.\n\r", ch); break; } if (!str_cmp (word, "PkPdMkMd")) { ch->pkill = fread_number (fp); ch->pdeath = fread_number (fp); ch->mkill = fread_number (fp); ch->mdeath = fread_number (fp); send_to_char ("***Player/Mob Deaths/Kills restored.\n\r", ch); fMatch = TRUE; break; } break; case 'S': if (!str_cmp (word, "Spells")) { ch->spl[0] = fread_number (fp); ch->spl[1] = fread_number (fp); ch->spl[2] = fread_number (fp); ch->spl[3] = fread_number (fp); ch->spl[4] = fread_number (fp); send_to_char ("***Spell level reimbursed.\n\r", ch); fMatch = TRUE; break; } if (!str_cmp (word, "Stance")) { ch->stance[0] = fread_number (fp); ch->stance[1] = fread_number (fp); ch->stance[2] = fread_number (fp); ch->stance[3] = fread_number (fp); ch->stance[4] = fread_number (fp); ch->stance[5] = fread_number (fp); ch->stance[6] = fread_number (fp); ch->stance[7] = fread_number (fp); ch->stance[8] = fread_number (fp); ch->stance[9] = fread_number (fp); ch->stance[10] = fread_number (fp); fMatch = TRUE; send_to_char ("***Stances reimbursed.\n\r", ch); break; } break; case 'E': if (!str_cmp (word, "End")) { send_to_char ("***Reimbursed.. Player saved.\n\r", ch); send_to_char ("***If you havnt noticed, There was a pwipe.\n\r", ch); send_to_char ("***We have reimbursed what we could but you will have to earn the rest.\n\r", ch); send_to_char ("***Classes will be passed out again. -Sage\n\r", ch); ch->level = 3; ch->trust = 3; ch->exp += 250000; do_autosave (ch, ""); SET_BIT (ch->flag2, AFF2_REIMB); return; fMatch = TRUE; break; } break; case 'W': if (!str_cmp (word, "Weapons")) { ch->wpn[0] = fread_number (fp); ch->wpn[1] = fread_number (fp); ch->wpn[2] = fread_number (fp); ch->wpn[3] = fread_number (fp); ch->wpn[4] = fread_number (fp); ch->wpn[5] = fread_number (fp); ch->wpn[6] = fread_number (fp); ch->wpn[7] = fread_number (fp); ch->wpn[8] = fread_number (fp); ch->wpn[9] = fread_number (fp); ch->wpn[10] = fread_number (fp); ch->wpn[11] = fread_number (fp); ch->wpn[12] = fread_number (fp); send_to_char ("Weapons reimbursed.\n\r", ch); fMatch = TRUE; break; } break; } if (!fMatch) { sprintf (buf, "Fread_char: no match. WORD: %s", word); fread_to_eol (fp); } } } return; } void do_bounty (CHAR_DATA * ch, char *argument) { CHAR_DATA *victim; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; argument = one_argument (argument, arg1); argument = one_argument (argument, arg2); if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("Place what bounty on who's head?\n\rSyntax: Bounty <victim> <amount>\n\r", ch); return; } if ((victim = get_char_world (ch, arg1)) == NULL) { send_to_char ("They are currently not logged in!", ch); return; } /* if (IS_IMMORTAL(ch) && !str_cmp(arg1, "all")) { send_to_char( "You cannot place bountys on players!\n\r",ch); return; } */ if (ch == victim) { send_to_char ("You cannot place bounties on yourself!\n\r", ch); return; } if (IS_NPC (victim)) { send_to_char ("You cannot put a bounty on NPCs!\n\r", ch); return; } if (get_hours (victim) < 10) { send_to_char ("They need 10 hours first!.", ch); return; } if (IS_NEWBIE (victim)) { stc ("You cant put bounties on newbies!\n\r", ch); return; } if (!IS_HERO (victim)) { send_to_char ("You cannot place bounties on mortals!\n\r", ch); return; } if (IS_IMMORTAL (victim)) { send_to_char ("You cannot place bounties on gods!\n\r", ch); return; } if IS_SET (victim->extra2, NHELPER) { stc ("You cannot place bounties on Newbie Helpers!\n\r", ch); return; } if (is_number (arg2)) { int amount; amount = atoi (arg2); if (amount == 0) amount = 1; if (amount < 50) { send_to_char ("You have to put at least 50 questpoints as the bounty.\n\r", ch); return; } if (ch->pcdata->quest < amount) { send_to_char ("You don't have that many questpoints!\n\r", ch); return; } /* if ((victim->pcdata->bounty + amount) > 10000); { send_to_char( "Sorry, unable to raise the bounty.\n\r", ch); return; } */ ch->pcdata->quest -= amount; victim->pcdata->bounty += amount; sprintf (buf, "You have placed a %d questpoint bounty on %s.\n\r", amount, victim->name); send_to_char (buf, ch); sprintf (buf, "You are now worth %d questpoints.\n\r", victim->pcdata->bounty); stc (buf, victim); sprintf (buf, "%s is now worth %d questpoints.", victim->name, victim->pcdata->bounty); do_info (ch, buf); return; } send_to_char ("The amount has to be a number\n\rSyntax: Bounty <victim> <value>.\n\r", ch); return; } /*********************************************************** * * * This was coded for Legend of Chrystancia by Tijer aka * * Matt Little on 26/12/2000, and was based upon code from * * Jobo, coder of Dystopia. * * * ***********************************************************/ void load_leaderboard () { FILE *fp; if ((fp = fopen ("../db/leader.db", "r")) == NULL) { bug ("Creating leaders.dat", 0); save_leaderboard (); return; } leader_board.bestpk_name = fread_string (fp); leader_board.bestpk_number = fread_long (fp); leader_board.pk_name = fread_string (fp); leader_board.pk_number = fread_number (fp); leader_board.pd_name = fread_string (fp); leader_board.pd_number = fread_number (fp); leader_board.mk_name = fread_string (fp); leader_board.mk_number = fread_number (fp); leader_board.md_name = fread_string (fp); leader_board.md_number = fread_number (fp); leader_board.tt_name = fread_string (fp); leader_board.tt_number = fread_number (fp); leader_board.qc_name = fread_string (fp); leader_board.qc_number = fread_number (fp); leader_board.xp_name = fread_string (fp); leader_board.xp_number = fread_long (fp); //Unique addition 4 lines leader_board.qp_name = fread_string (fp); leader_board.qp_number = fread_number (fp); leader_board.tl_name = fread_string (fp); leader_board.tl_number = fread_number (fp); leader_board.aw_name = fread_string (fp); leader_board.aw_number = fread_number (fp); leader_board.al_name = fread_string (fp); leader_board.al_number = fread_number (fp); leader_board.st_name = fread_string (fp); leader_board.st_number = fread_number (fp); fclose (fp); } void save_leaderboard () { FILE *fp; if ((fp = fopen ("../db/leader.db", "w")) == NULL) { bug ("Error writing to leader.txt", 0); return; } fprintf (fp, "%s~\n", leader_board.bestpk_name); fprintf (fp, "%lli\n", leader_board.bestpk_number); fprintf (fp, "%s~\n", leader_board.pk_name); fprintf (fp, "%d\n", leader_board.pk_number); fprintf (fp, "%s~\n", leader_board.pd_name); fprintf (fp, "%d\n", leader_board.pd_number); fprintf (fp, "%s~\n", leader_board.mk_name); fprintf (fp, "%d\n", leader_board.mk_number); fprintf (fp, "%s~\n", leader_board.md_name); fprintf (fp, "%d\n", leader_board.md_number); fprintf (fp, "%s~\n", leader_board.tt_name); fprintf (fp, "%d\n", leader_board.tt_number); fprintf (fp, "%s~\n", leader_board.qc_name); fprintf (fp, "%d\n", leader_board.qc_number); fprintf (fp, "%s~\n", leader_board.xp_name); fprintf (fp, "%lli\n", leader_board.xp_number); //Unique addition two lines fprintf (fp, "%s~\n", leader_board.qp_name); fprintf (fp, "%d\n", leader_board.qp_number); fprintf (fp, "%s~\n", leader_board.tl_name); fprintf (fp, "%d\n", leader_board.tl_number); fprintf (fp, "%s~\n", leader_board.aw_name); fprintf (fp, "%d\n", leader_board.aw_number); fprintf (fp, "%s~\n", leader_board.al_name); fprintf (fp, "%d\n", leader_board.al_number); fprintf (fp, "%s~\n", leader_board.st_name); fprintf (fp, "%d\n", leader_board.st_number); fclose (fp); } void do_leader (CHAR_DATA * ch, char *argument) { char buf[MAX_STRING_LENGTH]; if (IS_NPC (ch)) return; stc ("\n\r#R-------------------------------#w[ #GL#geader #GB#goard#w ]#R-------------------------------#n#n\n\r\n\r", ch); send_to_char (" #yBest Pkiller : ", ch); sprintf (buf, "#g%-13s", leader_board.bestpk_name); send_to_char (buf, ch); sprintf (buf, " #ywith a #g%lli #yPK score#n\n\r", leader_board.bestpk_number); send_to_char (buf, ch); send_to_char (" #yMost Status : ", ch); sprintf (buf, "#g%-13s", leader_board.st_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yStatus (#gleader 'status'#y)#n\n\r", leader_board.st_number); send_to_char (buf, ch); send_to_char (" #yMost Pkills : ", ch); sprintf (buf, "#g%-13s", leader_board.pk_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yPkills (#gleader 'pkill'#y)#n\n\r", leader_board.pk_number); send_to_char (buf, ch); send_to_char (" #yMost Pdeaths : ", ch); sprintf (buf, "#g%-13s", leader_board.pd_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yPdeaths (#gleader 'pdeath'#y)#n\n\r", leader_board.pd_number); send_to_char (buf, ch); send_to_char (" #yMost Arena Wins : ", ch); sprintf (buf, "#g%-13s", leader_board.aw_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #ywins (#gleader 'awins'#y)#n\n\r", leader_board.aw_number); send_to_char (buf, ch); send_to_char (" #yMost Arena Deaths : ", ch); sprintf (buf, "#g%-13s", leader_board.al_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #ylosses (#gleader 'alosses'#y)#n\n\r", leader_board.al_number); send_to_char (buf, ch); send_to_char (" #yMost Mkills : ", ch); sprintf (buf, "#g%-13s", leader_board.mk_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yMkills (#gleader 'mkill'#y)#n\n\r", leader_board.mk_number); send_to_char (buf, ch); send_to_char (" #yMost Mdeaths : ", ch); sprintf (buf, "#g%-13s", leader_board.md_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yMdeaths (#gleader 'mdeath'#y)#n\n\r", leader_board.md_number); send_to_char (buf, ch); send_to_char (" #yMost Hours : ", ch); sprintf (buf, "#g%-13s", leader_board.tt_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yHours (#gleader 'hours'#y)#n\n\r", leader_board.tt_number); send_to_char (buf, ch); send_to_char (" #yMost Experience earned : ", ch); sprintf (buf, "#g%-13s", leader_board.xp_name); stc (buf, ch); sprintf (buf, " #ywith #g%lli #yExp (#gleader 'exp'#y)#n\n\r", leader_board.xp_number); stc (buf, ch); send_to_char (" #yMost Quest Points earned : ", ch); sprintf (buf, "#g%-13s", leader_board.qp_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yQP (#gleader 'quest'#y)#n\n\r", leader_board.qp_number); send_to_char (buf, ch); send_to_char (" #yMost Quests Completed : ", ch); sprintf (buf, "#g%-13s", leader_board.qc_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yQuests#n\n\r", leader_board.qc_number); send_to_char (buf, ch); //Unique additions five lines send_to_char (" #yHighest Tier Level : ", ch); sprintf (buf, "#g%-13s", leader_board.tl_name); send_to_char (buf, ch); sprintf (buf, " #ywith #g%d #yLevels (#gleader 'tier'#y)#n\n\r", leader_board.tl_number); send_to_char (buf, ch); stc ("\n\r#R------------------------------------------------------------------------------#n\n\r", ch); return; } void check_leaderboard (CHAR_DATA * ch) { bool changed = FALSE; int imm; if (IS_NPC (ch)) return; if (ch->level > 6) return; if IS_CREATOR (ch) return; if IS_SET (ch->extra2, NHELPER) return; for (imm = 0; *immlist[imm].name; imm++) if (!str_cmp (ch->name, immlist[imm].name)) return; if (get_ratio (ch) > leader_board.bestpk_number || !str_cmp (leader_board.bestpk_name, ch->name)) { leader_board.bestpk_number = get_ratio (ch); free_string (leader_board.bestpk_name); leader_board.bestpk_name = str_dup (ch->name); changed = TRUE; } if (ch->mdeath > leader_board.md_number) { leader_board.md_number = ch->mdeath; free_string (leader_board.md_name); leader_board.md_name = str_dup (ch->name); changed = TRUE; } if (ch->race > leader_board.st_number) { leader_board.st_number = ch->race; free_string (leader_board.st_name); leader_board.st_name = str_dup (ch->name); changed = TRUE; } if (ch->mkill > leader_board.mk_number) { leader_board.mk_number = ch->mkill; free_string (leader_board.mk_name); leader_board.mk_name = str_dup (ch->name); changed = TRUE; } if (ch->pkill > leader_board.pk_number) { leader_board.pk_number = ch->pkill; free_string (leader_board.pk_name); leader_board.pk_name = str_dup (ch->name); changed = TRUE; } if (ch->pdeath > leader_board.pd_number) { leader_board.pd_number = ch->pdeath; free_string (leader_board.pd_name); leader_board.pd_name = str_dup (ch->name); changed = TRUE; } if (ch->awins > leader_board.aw_number) { leader_board.aw_number = ch->awins; free_string (leader_board.aw_name); leader_board.aw_name = str_dup (ch->name); changed = TRUE; } if (ch->alosses > leader_board.al_number) { leader_board.al_number = ch->alosses; free_string (leader_board.al_name); leader_board.al_name = str_dup (ch->name); changed = TRUE; } if (ch->pcdata->score[SCORE_NUM_QUEST] > leader_board.qc_number) { leader_board.qc_number = ch->pcdata->score[SCORE_NUM_QUEST]; free_string (leader_board.qc_name); leader_board.qc_name = str_dup (ch->name); changed = TRUE; } /* Here */ if ((long long) ch->pcdata->score[SCORE_TOTAL_XP] > (long long) leader_board.xp_number) { leader_board.xp_number = ch->pcdata->score[SCORE_TOTAL_XP]; free_string (leader_board.xp_name); leader_board.xp_name = str_dup (ch->name); changed = TRUE; } if (ch->pcdata->score[SCORE_QUEST] > leader_board.qp_number) { leader_board.qp_number = ch->pcdata->score[SCORE_QUEST]; free_string (leader_board.qp_name); leader_board.qp_name = str_dup (ch->name); changed = TRUE; } if (get_hours (ch) > leader_board.tt_number) { leader_board.tt_number = get_hours (ch); free_string (leader_board.tt_name); leader_board.tt_name = str_dup (ch->name); changed = TRUE; } //Unique additions seven lines if (ch->tier > leader_board.tl_number) { leader_board.tl_number = ch->tier; free_string (leader_board.tl_name); leader_board.tl_name = str_dup (ch->name); changed = TRUE; } if (changed) save_leaderboard (); return; } long get_ratio (CHAR_DATA * ch) { long long ratio; if (IS_NPC (ch)) return 0; if (ch->pkill == 0) ratio = 0; else ratio = ch->pkill * 100 * ((ch->pkill * ch->pkill) - (ch->pdeath * ch->pdeath)) / ((ch->pkill + ch->pdeath) * (ch->pkill + ch->pdeath)); return ratio; } void do_leaderclear (CHAR_DATA * ch, char *argument) { if (IS_NPC (ch)) return; if (ch->level < 7) return; free_string (leader_board.bestpk_name); leader_board.bestpk_name = str_dup ("Noone"); leader_board.bestpk_number = 0; free_string (leader_board.pk_name); leader_board.pk_name = str_dup ("Noone"); leader_board.pk_number = 0; free_string (leader_board.pd_name); leader_board.pd_name = str_dup ("Noone"); leader_board.pd_number = 0; free_string (leader_board.md_name); leader_board.md_name = str_dup ("Noone"); leader_board.md_number = 0; free_string (leader_board.mk_name); leader_board.mk_name = str_dup ("Noone"); leader_board.mk_number = 0; free_string (leader_board.xp_name); leader_board.xp_name = str_dup ("Noone"); leader_board.xp_number = 0; free_string (leader_board.qc_name); leader_board.qc_name = str_dup ("Noone"); leader_board.qc_number = 0; free_string (leader_board.qp_name); leader_board.qp_name = str_dup ("Noone"); leader_board.qp_number = 0; free_string (leader_board.tt_name); leader_board.tt_name = str_dup ("Noone"); leader_board.tt_number = 0; //Unique additions three lines free_string (leader_board.tl_name); leader_board.tl_name = str_dup ("Noone"); leader_board.tl_number = 0; free_string (leader_board.al_name); leader_board.al_name = str_dup ("Noone"); leader_board.al_number = 0; free_string (leader_board.aw_name); leader_board.aw_name = str_dup ("Noone"); leader_board.aw_number = 0; leader_board.st_name = str_dup ("Noone"); leader_board.st_number = 0; save_leaderboard (); send_to_char ("Leader board cleared.\n\r", ch); return; }