From c1724b7b0d8daacd1488ee7bea2139f578bf1642 Mon Sep 17 00:00:00 2001 From: GickerLDS Date: Mon, 30 Oct 2023 19:48:36 +0000 Subject: [PATCH] Fixed bugs with fast healing and hp regen modifiers. If you are riding a mount who is flying or levitating, you benefit from the same for movement purposes. Fixed blocker flags all defaulting to block east. Added block evil, neutral and good flags. Added unstuck command. Fixed ital strike. Fixed a problem with spells command when recently gained a level in a non-spellcasting class. Improved supplyorder rewards and limited them to 10 per real 24 day. Resets at server midnight. Reduced mobile spell damage. Fixed a bug with virtual bag item duplicating. Made the @ symbol on its own line an additional way to save text in the text editor, in additon to /s Added dragonlance regions. Reduced duration on ability score paralysis (when an ability scorfe drop below 1) Reduced duration on all paralysis and stun spells and effects to be more manageable in combat. Many were essentially a death sentence because they lasted so long. Fixed a number of creature summoning type spells. Fixed issue with concealing amorpha not being able to target another creature when using sufficient augment psp. Fixed mountain dwarf (dragonlance) racial strength modifier from +1 to +2. Adjusted fast travel durations. Fixed channel energy for inquisitors and blackguards. --- act.h | 3 + act.informative.c | 18 +- act.movement.c | 125 ++++++++-- act.offensive.c | 22 ++ act.other.c | 99 ++++---- act.wizard.c | 44 ++++ constants.c | 7 +- craft.c | 109 ++++++++- craft.h | 3 + db.c | 1 - depend | 591 +++++++++++++++++++++++----------------------- feats.c | 2 +- fight.c | 5 + handler.c | 101 +++++++- handler.h | 2 +- improved-edit.c | 7 +- interpreter.c | 7 + limits.c | 8 +- magic.c | 81 +++++-- objsave.c | 13 +- players.c | 7 + psionics.c | 2 +- race.c | 20 +- spec_procs.c | 2 +- spell_parser.c | 6 +- spell_prep.c | 2 +- structs.h | 45 ++-- transport.c | 19 +- utils.c | 80 +++++++ utils.h | 5 +- 30 files changed, 977 insertions(+), 459 deletions(-) diff --git a/act.h b/act.h index fa54737c..215535c6 100755 --- a/act.h +++ b/act.h @@ -640,6 +640,7 @@ ACMD_DECL(do_planarsoul); ACMD_DECL(do_grand_destiny); ACMD_DECL(do_evoweb); ACMD_DECL(do_evobreath); +ACMD_DECL(do_vital_strike); /***************************************************************************** * Begin Functions and defines for act.other.c @@ -795,6 +796,7 @@ ACMDCHECK(can_tinker); ACMD_DECL(do_tinker); ACMD_DECL(do_eldritch); ACMD_DECL(do_borrow); +ACMD_DECL(do_unstuck); /***************************************************************************** * Begin Functions and defines for act.social.c @@ -969,6 +971,7 @@ ACMD_DECL(do_dragonmagic); ACMD_DECL(do_resetpassword); ACMD_DECL(do_holyweapon); ACMD_DECL(do_award); +ACMD_DECL(do_show_blockers); // encounters.c ACMD_DECL(do_encounterinfo); diff --git a/act.informative.c b/act.informative.c index d7232213..62657d59 100755 --- a/act.informative.c +++ b/act.informative.c @@ -1262,7 +1262,7 @@ void look_at_room(struct char_data *ch, int ignore_brief) snprintf(buf, sizeof(buf), "This large passenger ship has been built with reasonably good comforts given the limited space on board.\r\n" "The wind fills the sails as it pushes the vessel along to your destination. The sway of the sea is steady\r\n" - "and rythemic, and you find you sea legs quickly. Judging by how far you've gone so far you should arrive in\r\n" + "and rhythmic, and you find you sea legs quickly. Judging by how far you've gone so far you should arrive in\r\n" "about %d minutes and %d seconds to your destination: %s.\r\n", ch->player_specials->travel_timer / 60, ch->player_specials->travel_timer % 60, sailing_locales[ch->player_specials->travel_locale][0]); rm->description = strdup(buf); @@ -3122,6 +3122,11 @@ ACMD(do_defenses) send_to_char(ch, "\tC"); draw_line(ch, line_length, '-', '-'); send_to_char(ch, "\tn\r\nNote that AC caps at %d, but having over %d is beneficial due to position changes and debuffs.\r\n", CONFIG_PLAYER_AC_CAP, CONFIG_PLAYER_AC_CAP); + text_line(ch, "\tYFast Healing\tC", line_length, '-', '-'); + send_to_char(ch, "Fast Healing Amount: %d\r\n", get_fast_healing_amount(ch)); +send_to_char(ch, "\tC"); + draw_line(ch, line_length, '-', '-'); + send_to_char(ch, "\tn"); } /* @@ -3555,7 +3560,7 @@ void show_bags_summary(struct char_data *ch) ACMD(do_bags) { char arg[MEDIUM_STRING] = {'\0'}; - char bagname[MEDIUM_STRING] = {'\0'}; + // char bagname[MEDIUM_STRING] = {'\0'}; int bagnum = 0, i = 0; one_argument(argument, arg, sizeof(arg)); @@ -3588,10 +3593,13 @@ ACMD(do_bags) return; } - if (GET_BAG_NAME(ch, i) != NULL) - snprintf(bagname, sizeof(bagname), " '%s'", GET_BAG_NAME(ch, i)); + // if (GET_BAG_NAME(ch, i) != NULL) + // snprintf(bagname, sizeof(bagname), " '%s'", GET_BAG_NAME(ch, i)); + // else + // snprintf(bagname, sizeof(bagname), " 'bag%d'", bagnum); - send_to_char(ch, "Your bag #%d%s contains:\r\n", bagnum, GET_BAG_NAME(ch, i) != NULL ? bagname : ""); + // send_to_char(ch, "Your bag #%d%s contains:\r\n", bagnum, GET_BAG_NAME(ch, i) != NULL ? bagname : ""); + send_to_char(ch, "Your bag #%d contains:\r\n", bagnum); switch (bagnum) { diff --git a/act.movement.c b/act.movement.c index 66b04b17..cc037252 100755 --- a/act.movement.c +++ b/act.movement.c @@ -386,6 +386,14 @@ int has_boat(struct char_data *ch, room_rnum going_to) AFF_FLAGGED(ch, AFF_LEVITATE)) return (1); + if (RIDING(ch)) + { + if (AFF_FLAGGED(RIDING(ch), AFF_WATERWALK)) + return TRUE; + if (AFF_FLAGGED(RIDING(ch), AFF_LEVITATE)) + return TRUE; + } + /* non-wearable boats in inventory will do it */ for (obj = ch->carrying; obj; obj = obj->next_content) if (GET_OBJ_TYPE(obj) == ITEM_BOAT && (find_eq_pos(ch, obj, NULL) < 0)) @@ -1065,21 +1073,21 @@ int do_simple_move(struct char_data *ch, int dir, int need_specials_check) block = TRUE; else if (dir == EAST && MOB_FLAGGED(mob, MOB_BLOCK_E)) block = TRUE; - else if (dir == SOUTH && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == SOUTH && MOB_FLAGGED(mob, MOB_BLOCK_S)) block = TRUE; - else if (dir == WEST && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == WEST && MOB_FLAGGED(mob, MOB_BLOCK_W)) block = TRUE; - else if (dir == NORTHEAST && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == NORTHEAST && MOB_FLAGGED(mob, MOB_BLOCK_NE)) block = TRUE; - else if (dir == SOUTHEAST && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == SOUTHEAST && MOB_FLAGGED(mob, MOB_BLOCK_SE)) block = TRUE; - else if (dir == SOUTHWEST && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == SOUTHWEST && MOB_FLAGGED(mob, MOB_BLOCK_SW)) block = TRUE; - else if (dir == NORTHWEST && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == NORTHWEST && MOB_FLAGGED(mob, MOB_BLOCK_NW)) block = TRUE; - else if (dir == UP && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == UP && MOB_FLAGGED(mob, MOB_BLOCK_U)) block = TRUE; - else if (dir == DOWN && MOB_FLAGGED(mob, MOB_BLOCK_E)) + else if (dir == DOWN && MOB_FLAGGED(mob, MOB_BLOCK_D)) block = TRUE; if (block && MOB_FLAGGED(mob, MOB_BLOCK_RACE) && GET_RACE(ch) == GET_RACE(mob)) @@ -1096,18 +1104,23 @@ int do_simple_move(struct char_data *ch, int dir, int need_specials_check) block = FALSE; if (block && MOB_FLAGGED(mob, MOB_BLOCK_ALIGN) && IS_NEUTRAL(ch) > IS_NEUTRAL(mob)) block = FALSE; + if (block && MOB_FLAGGED(mob, MOB_BLOCK_EVIL) && (IS_NEUTRAL(ch) || IS_GOOD(ch))) + block = FALSE; + if (block && MOB_FLAGGED(mob, MOB_BLOCK_NEUTRAL) && (IS_EVIL(ch) || IS_GOOD(ch))) + block = FALSE; + if (block && MOB_FLAGGED(mob, MOB_BLOCK_GOOD) && (IS_NEUTRAL(ch) || IS_EVIL(ch))) + block = FALSE; if (block) break; } - // this is removed until we can fix blocker mobs - // if (block && !IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)) - // { - // act("$N blocks your from travelling in that direction.", FALSE, ch, 0, mob, TO_CHAR); - // act("$n tries to leave the room, but $N blocks $m from travelling in their direction.", FALSE, ch, 0, mob, TO_ROOM); - // return 0; - // } + if (block && !IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_NOHASSLE)) + { + act("$N blocks your from travelling in that direction.", FALSE, ch, 0, mob, TO_CHAR); + act("$n tries to leave the room, but $N blocks $m from travelling in their direction.", FALSE, ch, 0, mob, TO_ROOM); + return 0; + } // acrobatics check @@ -4025,6 +4038,88 @@ ACMD(do_transposition) USE_STANDARD_ACTION(ch); } +ACMD(do_unstuck) +{ + char arg1[200]; + char *confirm; + int exp = 0, gold = 0; + + exp = GET_LEVEL(ch) * GET_LEVEL(ch) * 500; + gold = GET_LEVEL(ch) * GET_LEVEL(ch) * 5; + + if (GET_LEVEL(ch) <= 5) + exp = gold = 0; + else if (GET_LEVEL(ch) <= 10) + { exp /= 4; gold /= 4; } + else if (GET_LEVEL(ch) <= 20) + { exp /= 2; gold /= 2; } + + if (ch->player_specials->unstuck == NULL) + { + ch->player_specials->unstuck = confirm = randstring(6); + } + else + { + confirm = ch->player_specials->unstuck; + } + + one_argument(argument, arg1, sizeof(arg1)); + + if (!*arg1) + { + send_to_char(ch, "Please enter 'unstuck %s' to confirm your desire to become unstuck.\r\n" + "You will be transported to the MUD start room", confirm); + if (exp > 0) + send_to_char(ch, ", and it will cost you %d experience points and %d coins", exp, gold); + send_to_char(ch, ".\r\n"); + return; + } + if (strcmp(arg1, ch->player_specials->unstuck)) + { + send_to_char(ch, "Please enter 'unstuck %s' to confirm your desire to become unstuck.\r\n" + "You will be transported to the MUD start room", confirm); + if (exp > 0) + send_to_char(ch, ", and it will cost you %d experience points and %d coins", exp, gold); + send_to_char(ch, ".\r\n"); + return; + } + else + { + GET_EXP(ch) -= exp; + send_to_char(ch, "You lose %d experience points.\r\n", exp); + if (GET_GOLD(ch) < gold) + { + gold -= GET_GOLD(ch); + send_to_char(ch, "You lose %d gold ", gold); + GET_GOLD(ch) = 0; + if (GET_BANK_GOLD(ch) < gold) + { + gold = GET_BANK_GOLD(ch); + send_to_char(ch, "and %d bank gold.\r\n", gold); + GET_BANK_GOLD(ch) = 0; + } + else + { + GET_BANK_GOLD(ch) -= gold; + send_to_char(ch, "and %d bank gold.\r\n", gold); + } + } + else + { + GET_GOLD(ch) -= gold; + send_to_char(ch, "You lose %d gold.\r\n", gold); + } + } + act("$n disappears.", TRUE, ch, 0, 0, TO_ROOM); + char_from_room(ch); + char_to_room(ch, real_room(16500)); + act("$n appears in the middle of the room.", TRUE, ch, 0, 0, TO_ROOM); + look_at_room(ch, 0); + entry_memory_mtrigger(ch); + greet_mtrigger(ch, -1); + greet_memory_mtrigger(ch); +} + /* undefines */ #undef PRISONER_KEY_1 #undef PRISONER_KEY_2 diff --git a/act.offensive.c b/act.offensive.c index a2931dbc..c250c624 100755 --- a/act.offensive.c +++ b/act.offensive.c @@ -9884,6 +9884,28 @@ ACMD(do_evobreath) USE_STANDARD_ACTION(ch); } +ACMD(do_vital_strike) +{ + if (!HAS_FEAT(ch, FEAT_VITAL_STRIKE)) + { + send_to_char(ch, "You do not know how to perform a vital strike.\r\n"); + return; + } + + if (VITAL_STRIKING(ch)) + { + VITAL_STRIKING(ch) = FALSE; + act("You cease concentrating your attacks into a single vital strike!", TRUE, ch, 0, 0, TO_CHAR); + } + else + { + USE_FULL_ROUND_ACTION(ch); + VITAL_STRIKING(ch) = TRUE; + act("You concentrate your attacks into a single vital strike!", TRUE, ch, 0, 0, TO_CHAR); + } + +} + /* cleanup! */ #undef RAGE_AFFECTS #undef D_STANCE_AFFECTS diff --git a/act.other.c b/act.other.c index 1051c247..2ddb3f1d 100755 --- a/act.other.c +++ b/act.other.c @@ -5386,7 +5386,7 @@ ACMD(do_spells) } else { - if (get_number_of_spellcasting_classes(ch) == 1 && GET_LEVEL(ch) < LVL_IMMORT) + if (get_number_of_spellcasting_classes(ch) == 1 && GET_LEVEL(ch) < LVL_IMMORT && IS_SPELLCASTER_CLASS(GET_CLASS(ch))) class = GET_CLASS(ch); else if (subcmd == SCMD_CONCOCT) class = CLASS_ALCHEMIST; @@ -8348,7 +8348,6 @@ ACMDU(do_fiendishboon) #define NOBUFF_MSG "buff add (spell/power name) - Add a spell or power to your buff list.\r\n" \ "buff remove (spell/power name) - Remove a spell or power from your buff list\r\n" \ - "buff (augment amount) (psionic power name) - Assign extra psp to augment a buff power\r\n" \ "buff list - Will show you the spells and powers in your list\r\n" \ "buff perform - Will begin buffing you with your buff list\r\n" \ "buff cancel - Will can any buffing action in process.\r\n" @@ -8356,7 +8355,7 @@ ACMDU(do_fiendishboon) ACMD(do_buff) { char arg1[200], arg2[200]; - int spellnum = 0, i = 0, aug = 0; + int spellnum = 0, i = 0; int is_spell = true; // true if it's a spell, false if it's a psionic power bool found = false; struct char_data *target; @@ -8429,51 +8428,52 @@ ACMD(do_buff) } } - if (isdigit(*arg1)) - { - - send_to_char(ch, "Buffing with psionics is not possible right now due to a serious, yet unresolved bug.\r\n"); - return; - - // Assign augment psp to specified psionic power. - - if (!*arg2) - { - send_to_char(ch, "Please specify the psionic power buff you wish to assign augment psp to.\r\n"); - return; - } - - if (is_spell) - { - send_to_char(ch, "You can only assign augment psp to a psionic power.\r\n"); - return; - } - - aug = atoi(arg1); - - if (aug < 0) - { - send_to_char(ch, "Please specify the amount of psp you wish to use to augment this psionnic buff.\r\n"); - return; - } - - for (i = 0; i < MAX_BUFFS; i++) - { - if (GET_BUFF(ch, i, 0) == spellnum) - { - found = true; - break; - } - } - if (!found) - { - send_to_char(ch, "You do not have any spells or powers in your buff list.\r\n"); - return; - } - GET_BUFF(ch, i, 1) = aug; - send_to_char(ch, "You assign %d augment psp to '%s'.\r\n", aug, spell_info[spellnum].name); - } - else if (is_abbrev(arg1, "add")) + // if (isdigit(*arg1)) + // { + + // send_to_char(ch, "Buffing with psionics is not possible right now due to a serious, yet unresolved bug.\r\n"); + // return; + + // // Assign augment psp to specified psionic power. + + // if (!*arg2) + // { + // send_to_char(ch, "Please specify the psionic power buff you wish to assign augment psp to.\r\n"); + // return; + // } + + // if (is_spell) + // { + // send_to_char(ch, "You can only assign augment psp to a psionic power.\r\n"); + // return; + // } + + // aug = atoi(arg1); + + // if (aug < 0) + // { + // send_to_char(ch, "Please specify the amount of psp you wish to use to augment this psionnic buff.\r\n"); + // return; + // } + + // for (i = 0; i < MAX_BUFFS; i++) + // { + // if (GET_BUFF(ch, i, 0) == spellnum) + // { + // found = true; + // break; + // } + // } + // if (!found) + // { + // send_to_char(ch, "You do not have any spells or powers in your buff list.\r\n"); + // return; + // } + // GET_BUFF(ch, i, 1) = aug; + // send_to_char(ch, "You assign %d augment psp to '%s'.\r\n", aug, spell_info[spellnum].name); + // } + // else + if (is_abbrev(arg1, "add")) { // Add a spell/power to buff list. for (i = 0; i < MAX_BUFFS; i++) @@ -8531,7 +8531,8 @@ ACMD(do_buff) } else { - send_to_char(ch, "-- %-25s %d augment psp\r\n", spell_info[GET_BUFF(ch, i, 0)].name, GET_BUFF(ch, i, 1)); + // send_to_char(ch, "-- %-25s %d augment psp\r\n", spell_info[GET_BUFF(ch, i, 0)].name, GET_BUFF(ch, i, 1)); + send_to_char(ch, "-- %-25s %s\r\n", spell_info[GET_BUFF(ch, i, 0)].name, PRF_FLAGGED(ch, PRF_AUGMENT_BUFFS) ? "*augmented*" : ""); } } } diff --git a/act.wizard.c b/act.wizard.c index b6cdeab3..24337c86 100755 --- a/act.wizard.c +++ b/act.wizard.c @@ -9512,4 +9512,48 @@ ACMDU(do_setroomsect) add_to_save_list(zone_table[world[IN_ROOM(ch)].zone].number, SL_WLD); } +ACMD(do_show_blockers) +{ + + struct char_data *tch; + int vnum = 0; + + for (tch = character_list; tch; tch = tch->next) + { + if (!IS_NPC(tch)) continue; + if (MOB_FLAGGED(tch, MOB_BLOCK_N) || MOB_FLAGGED(tch, MOB_BLOCK_E) || MOB_FLAGGED(tch, MOB_BLOCK_S) || MOB_FLAGGED(tch, MOB_BLOCK_W) || + MOB_FLAGGED(tch, MOB_BLOCK_NE) || MOB_FLAGGED(tch, MOB_BLOCK_NW) || MOB_FLAGGED(tch, MOB_BLOCK_SE) || MOB_FLAGGED(tch, MOB_BLOCK_SW) || + MOB_FLAGGED(tch, MOB_BLOCK_U) || MOB_FLAGGED(tch, MOB_BLOCK_D)) + { + if (IN_ROOM(tch) != NOWHERE) + vnum = GET_ROOM_VNUM(IN_ROOM(tch)); + else + vnum = 0; + send_to_char(ch, "-- %5d %-20s ", vnum, GET_NAME(tch)); + if (MOB_FLAGGED(tch, MOB_BLOCK_N)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_N]); + if (MOB_FLAGGED(tch, MOB_BLOCK_E)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_E]); + if (MOB_FLAGGED(tch, MOB_BLOCK_S)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_S]); + if (MOB_FLAGGED(tch, MOB_BLOCK_W)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_W]); + if (MOB_FLAGGED(tch, MOB_BLOCK_NE)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_NE]); + if (MOB_FLAGGED(tch, MOB_BLOCK_SE)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_SE]); + if (MOB_FLAGGED(tch, MOB_BLOCK_SW)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_SW]); + if (MOB_FLAGGED(tch, MOB_BLOCK_NW)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_NW]); + if (MOB_FLAGGED(tch, MOB_BLOCK_U)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_U]); + if (MOB_FLAGGED(tch, MOB_BLOCK_D)) + send_to_char(ch, "%s ", action_bits[MOB_BLOCK_D]); + send_to_char(ch, "\r\n"); + } + } + +} + /* EOF */ diff --git a/constants.c b/constants.c index 37acf7e9..5fe60a77 100755 --- a/constants.c +++ b/constants.c @@ -1520,6 +1520,9 @@ const char *action_bits[] = { "Dragon-Knight", "Mummy-Dust", "Eidolon", + "Mob-Block-Evil", + "Mob-Block-Neutral", + "Mob-Block-Good", "\n" }; CHECK_TABLE_SIZE(action_bits, NUM_MOB_FLAGS + 1); @@ -1596,6 +1599,7 @@ const char *preference_bits[] = { "Life-Bond", "Charmie-Combat-Roll", "Auto-Prep", + "Augmewnt-BUffs", "\n"}; CHECK_TABLE_SIZE(preference_bits, NUM_PRF_FLAGS + 1); @@ -5310,7 +5314,6 @@ const char *regions[] = { "Nordmaar", "Northern Ergoth", "Nostar", - "Principality of Kharolis", "Qualinesti", "Sancrist Isle", "Schallsea", @@ -5320,9 +5323,7 @@ const char *regions[] = { "Taman Busuk", "Tarsis", "Teyr", - "Thoradin", "Thorbardin", - "Throtl", "\n" }; CHECK_TABLE_SIZE(regions, NUM_REGIONS + 1); diff --git a/craft.c b/craft.c index 30638477..c2330377 100644 --- a/craft.c +++ b/craft.c @@ -19,6 +19,7 @@ #include "conf.h" #include "sysdep.h" #include "structs.h" +#include "mysql.h" #include "utils.h" #include "comm.h" #include "spells.h" @@ -36,6 +37,8 @@ #include "item.h" #include "quest.h" +extern MYSQL *conn; + /* global variables */ int mining_nodes = 0; int farming_nodes = 0; @@ -2066,12 +2069,19 @@ SPECIAL(crafting_quest) char desc[MAX_INPUT_LENGTH] = {'\0'}; char arg[MAX_INPUT_LENGTH] = {'\0'}, arg2[MAX_INPUT_LENGTH] = {'\0'}; int roll = 0; + int avail = 0; if (!CMD_IS("supplyorder")) { return 0; } + if (IS_NPC(ch)) + { + send_to_char(ch, "Mobiles can't craft.\r\n"); + return 1; + } + two_arguments(argument, arg, sizeof(arg), arg2, sizeof(arg2)); if (!*arg) @@ -2085,6 +2095,14 @@ SPECIAL(crafting_quest) return 1; } + avail = get_mysql_supply_orders_available(ch); + + if (avail <= 0) + { + send_to_char(ch, "You must wait until tomorrow to perform more supply orders.\r\n"); + return 1; + } + /* initialize values */ reset_acraft(ch); GET_AUTOCQUEST_VNUM(ch) = AUTOCQUEST_VNUM; @@ -2156,12 +2174,44 @@ SPECIAL(crafting_quest) GET_AUTOCQUEST_DESC(ch) = strdup(desc); GET_AUTOCQUEST_MAKENUM(ch) = AUTOCQUEST_MAKENUM; +#if defined(CAMPAIGN_DL) + GET_AUTOCQUEST_QP(ch) = MAX(5, GET_LEVEL(ch) / 2); +#else if (!rand_number(0, 20)) GET_AUTOCQUEST_QP(ch) = 1; else GET_AUTOCQUEST_QP(ch) = 0; - GET_AUTOCQUEST_EXP(ch) = GET_LEVEL(ch) * 10; - GET_AUTOCQUEST_GOLD(ch) = GET_LEVEL(ch) * 2; +#endif + if (GET_LEVEL(ch) <= 5) + { + GET_AUTOCQUEST_GOLD(ch) = 50; + GET_AUTOCQUEST_EXP(ch) = 100; + } + else if (GET_LEVEL(ch) <= 10) + { + GET_AUTOCQUEST_GOLD(ch) = 100; + GET_AUTOCQUEST_EXP(ch) = 200; + } + else if (GET_LEVEL(ch) <= 15) + { + GET_AUTOCQUEST_GOLD(ch) = 300; + GET_AUTOCQUEST_EXP(ch) = 400; + } + else if (GET_LEVEL(ch) <= 20) + { + GET_AUTOCQUEST_GOLD(ch) = 500; + GET_AUTOCQUEST_EXP(ch) = 800; + } + else if (GET_LEVEL(ch) <= 25) + { + GET_AUTOCQUEST_GOLD(ch) = 800; + GET_AUTOCQUEST_EXP(ch) = 1000; + } + else + { + GET_AUTOCQUEST_GOLD(ch) = 1000; + GET_AUTOCQUEST_EXP(ch) = 1500; + }; send_to_char(ch, "You have been commissioned for a supply order to " "make %s. We expect you to make %d before you can collect your " @@ -2171,6 +2221,9 @@ SPECIAL(crafting_quest) "experience points.\r\n", desc, GET_AUTOCQUEST_MAKENUM(ch), GET_AUTOCQUEST_QP(ch), GET_AUTOCQUEST_GOLD(ch), GET_AUTOCQUEST_EXP(ch)); + + put_mysql_supply_orders_available(ch, --avail); + } else if (!strcmp(arg, "complete")) { @@ -2970,3 +3023,55 @@ ACMD(do_harvest) return; } + +int get_mysql_supply_orders_available(struct char_data *ch) +{ + MYSQL_RES *result; + MYSQL_ROW row; + char buf[MAX_STRING_LENGTH]; + int avail = 0; + + mysql_ping(conn); + + snprintf(buf, sizeof(buf), "SELECT supply_orders_available FROM player_supply_orders WHERE player_name='%s'", GET_NAME(ch)); + + if (mysql_query(conn, buf)) + { + log("SYSERR: Unable to SELECT from player_supply_orders: %s", mysql_error(conn)); + return -1; + } + + if (!(result = mysql_store_result(conn))) + { + log("SYSERR: Unable to SELECT from player_supply_orders: %s", mysql_error(conn)); + return -1; + } + + if (!(row = mysql_fetch_row(result))) + return 10; + + avail = atoi(row[0]); + + mysql_free_result(result); + + return avail; +} + +void put_mysql_supply_orders_available(struct char_data *ch, int avail) +{ + char buf[MAX_STRING_LENGTH]; + + mysql_ping(conn); + + snprintf(buf, sizeof(buf), "DELETE FROM supply_orders_available WHERE player_name='%s'", GET_NAME(ch)); + + mysql_query(conn, buf); + + snprintf(buf, sizeof(buf), "INSERT INTO supply_orders_available (idnum, player_name, supply_orders_available) VALUES(NULL, '%s', '%d')", + GET_NAME(ch), avail); + + if (mysql_query(conn, buf)) + { + log("SYSERR: Unable to INSERT INTO player_supply_orders: %s", mysql_error(conn)); + } +} \ No newline at end of file diff --git a/craft.h b/craft.h index 992342d3..0f3196b8 100644 --- a/craft.h +++ b/craft.h @@ -213,4 +213,7 @@ ACMD_DECL(do_harvest); ACMD_DECL(do_disenchant); /* end command functions */ +int get_mysql_supply_orders_available(struct char_data *ch); +void put_mysql_supply_orders_available(struct char_data *ch, int avail); + #endif /* CRAFT_H */ diff --git a/db.c b/db.c index 8a8480ed..5f32275b 100755 --- a/db.c +++ b/db.c @@ -5220,7 +5220,6 @@ void reset_char(struct char_data *ch) ch->char_specials.carry_weight = 0; ch->char_specials.carry_items = 0; ch->char_specials.totalDefense = 0; - ch->char_specials.vital_strike = 0; ch->char_specials.mounted_blocks_left = 0; ch->char_specials.deflect_arrows_left = 0; ch->char_specials.riding = NULL; diff --git a/depend b/depend index 99e3b0eb..5f26c07d 100644 --- a/depend +++ b/depend @@ -1,16 +1,16 @@ -account.o: account.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h mysql.h utils.h db.h helpers.h perfmon.h handler.h \ - feats.h dg_scripts.h comm.h interpreter.h genmob.h constants.h spells.h \ - screen.h class.h act.h account.h -act.comm.o: act.comm.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +account.o: account.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h mysql.h utils.h db.h helpers.h perfmon.h handler.h feats.h \ + dg_scripts.h comm.h interpreter.h genmob.h constants.h spells.h screen.h \ + class.h act.h account.h +act.comm.o: act.comm.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h screen.h improved-edit.h dg_scripts.h act.h modify.h hlquest.h \ constants.h spells.h spec_procs.h act.comm.do_spec_comm.o: act.comm.do_spec_comm.c act.h utils.h db.h \ - conf.h bool.h structs.h campaign.h protocol.h sysdep.h lists.h helpers.h \ + conf.h bool.h structs.h protocol.h sysdep.h lists.h campaign.h helpers.h \ perfmon.h comm.h handler.h hlquest.h act.informative.o: act.informative.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h spells.h screen.h constants.h dg_scripts.h \ mud_event.h dg_event.h mail.h act.h class.h race.h fight.h modify.h \ asciimap.h clan.h craft.h wilderness.h quest.h feats.h \ @@ -18,122 +18,122 @@ act.informative.o: act.informative.c conf.h sysdep.h structs.h bool.h \ premadebuilds.h staff_events.h missions.h spec_procs.h transport.h \ encounters.h deities.h actionqueues.o: actionqueues.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h actionqueues.h mud_event.h dg_event.h actions.h -actions.o: actions.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +actions.o: actions.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ screen.h modify.h handler.h spells.h mud_event.h dg_event.h actions.h \ act.h domains_schools.h -act.item.o: act.item.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h screen.h \ +act.item.o: act.item.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h screen.h \ interpreter.h handler.h spells.h constants.h dg_scripts.h oasis.h help.h \ act.h quest.h spec_procs.h clan.h mud_event.h dg_event.h hlquest.h \ fight.h mudlim.h actions.h traps.h assign_wpn_armor.h spec_abilities.h \ item.h feats.h alchemy.h mysql.h treasure.h crafts.h hunts.h class.h \ spell_prep.h act.movement.o: act.movement.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h spells.h house.h constants.h dg_scripts.h act.h \ fight.h oasis.h help.h spec_procs.h mud_event.h dg_event.h hlquest.h \ mudlim.h wilderness.h actions.h traps.h spell_prep.h trails.h \ assign_wpn_armor.h encounters.h hunts.h class.h transport.h act.offensive.o: act.offensive.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h spells.h act.h fight.h mud_event.h dg_event.h \ constants.h spec_procs.h class.h mudlim.h actions.h actionqueues.h \ assign_wpn_armor.h feats.h missions.h domains_schools.h encounters.h \ evolutions.h -act.other.o: act.other.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +act.other.o: act.other.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h screen.h house.h constants.h dg_scripts.h act.h \ spec_procs.h class.h fight.h mail.h shop.h quest.h modify.h race.h \ clan.h mud_event.h dg_event.h craft.h treasure.h mudlim.h \ spec_abilities.h actions.h feats.h assign_wpn_armor.h item.h oasis.h \ help.h domains_schools.h spell_prep.h premadebuilds.h staff_events.h \ account.h deities.h evolutions.h -act.social.o: act.social.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +act.social.o: act.social.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h screen.h spells.h act.h -act.wizard.o: act.wizard.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +act.wizard.o: act.wizard.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h house.h screen.h constants.h oasis.h help.h \ dg_scripts.h shop.h act.h mysql.h genzon.h class.h genolc.h genobj.h \ race.h fight.h modify.h quest.h ban.h mud_event.h dg_event.h clan.h \ craft.h hlquest.h mudlim.h spec_abilities.h wilderness.h feats.h \ assign_wpn_armor.h item.h domains_schools.h crafts.h account.h alchemy.h \ premadebuilds.h missions.h deities.h kdtree.h -aedit.o: aedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h comm.h \ - oasis.h help.h screen.h constants.h genolc.h act.h -alchemy.o: alchemy.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h spells.h \ - handler.h constants.h interpreter.h dg_scripts.h modify.h feats.h \ - class.h mud_event.h dg_event.h assign_wpn_armor.h domains_schools.h \ - spell_prep.h alchemy.h actions.h act.h fight.h evolutions.h -asciimap.o: asciimap.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +aedit.o: aedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h \ + comm.h oasis.h help.h screen.h constants.h genolc.h act.h +alchemy.o: alchemy.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ + constants.h interpreter.h dg_scripts.h modify.h feats.h class.h \ + mud_event.h dg_event.h assign_wpn_armor.h domains_schools.h spell_prep.h \ + alchemy.h actions.h act.h fight.h evolutions.h +asciimap.o: asciimap.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h house.h constants.h dg_scripts.h asciimap.h \ wilderness.h modify.h assign_wpn_armor.o: assign_wpn_armor.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h comm.h utils.h db.h helpers.h perfmon.h \ + protocol.h lists.h campaign.h comm.h utils.h db.h helpers.h perfmon.h \ mud_event.h dg_event.h actions.h actionqueues.h assign_wpn_armor.h \ craft.h feats.h constants.h modify.h domains_schools.h spec_abilities.h \ handler.h spells.h -ban.o: ban.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - ban.h +ban.o: ban.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h ban.h bardic_performance.o: bardic_performance.c conf.h sysdep.h structs.h \ - bool.h campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h \ + bool.h protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h \ comm.h interpreter.h handler.h mud_event.h dg_event.h spells.h \ bardic_performance.h fight.h spec_procs.h actions.h feats.h -boards.o: boards.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h boards.h interpreter.h \ - handler.h improved-edit.h modify.h +boards.o: boards.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h boards.h \ + interpreter.h handler.h improved-edit.h modify.h bsd-snprintf.o: bsd-snprintf.c conf.h sysdep.h -cedit.o: cedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +cedit.o: cedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ constants.h genolc.h oasis.h help.h improved-edit.h modify.h -char_descs.o: char_descs.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h spells.h \ +char_descs.o: char_descs.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h spells.h \ interpreter.h constants.h act.h handler.h comm.h char_descs.h race.h -clan.o: clan.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - screen.h improved-edit.h spells.h clan.h mudlim.h -clan_edit.o: clan_edit.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h screen.h genolc.h \ +clan.o: clan.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h screen.h improved-edit.h spells.h clan.h mudlim.h +clan_edit.o: clan_edit.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h screen.h genolc.h \ oasis.h help.h improved-edit.h comm.h interpreter.h modify.h ibt.h \ clan.h -class.o: class.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h spells.h interpreter.h \ +class.o: class.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h spells.h interpreter.h \ constants.h act.h handler.h comm.h mud_event.h dg_event.h mudlim.h \ feats.h class.h assign_wpn_armor.h pfdefaults.h domains_schools.h \ modify.h spell_prep.h race.h alchemy.h premadebuilds.h evolutions.h combat_modes.o: combat_modes.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h feats.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h feats.h \ comm.h interpreter.h handler.h spells.h class.h mud_event.h dg_event.h \ combat_modes.h -comm.o: comm.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - house.h oasis.h help.h genolc.h dg_scripts.h dg_event.h screen.h \ - constants.h boards.h act.h ban.h msgedit.h fight.h spells.h modify.h \ - quest.h ibt.h mud_event.h clan.h class.h mail.h new_mail.h mudlim.h \ - actions.h actionqueues.h assign_wpn_armor.h wilderness.h spell_prep.h \ - transport.h hunts.h bardic_performance.h -config.o: config.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h config.h \ +comm.o: comm.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h house.h oasis.h help.h genolc.h dg_scripts.h dg_event.h \ + screen.h constants.h boards.h act.h ban.h msgedit.h fight.h spells.h \ + modify.h quest.h ibt.h mud_event.h clan.h class.h mail.h new_mail.h \ + mudlim.h actions.h actionqueues.h assign_wpn_armor.h wilderness.h \ + spell_prep.h transport.h hunts.h bardic_performance.h +config.o: config.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h config.h \ asciimap.h -constants.o: constants.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h interpreter.h \ +constants.o: constants.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h interpreter.h \ spells.h craft.h feats.h domains_schools.h handler.h deities.h -craft.o: craft.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h spells.h interpreter.h \ - constants.h handler.h craft.h mud_event.h dg_event.h modify.h treasure.h \ - mudlim.h spec_procs.h item.h quest.h -crafts.o: crafts.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h act.h handler.h \ +craft.o: craft.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h mysql.h utils.h db.h helpers.h perfmon.h comm.h spells.h \ + interpreter.h constants.h handler.h craft.h mud_event.h dg_event.h \ + modify.h treasure.h mudlim.h spec_procs.h item.h quest.h +crafts.o: crafts.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h act.h handler.h \ interpreter.h screen.h constants.h oasis.h help.h genolc.h spells.h \ mud_event.h dg_event.h crafts.h item.h -db.o: db.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h lists.h \ +db.o: db.c conf.h sysdep.h structs.h bool.h protocol.h lists.h campaign.h \ utils.h db.h helpers.h perfmon.h comm.h handler.h spells.h mail.h \ interpreter.h house.h constants.h oasis.h help.h dg_scripts.h dg_event.h \ act.h ban.h treasure.h spec_procs.h genzon.h genolc.h genobj.h config.h \ @@ -142,160 +142,164 @@ db.o: db.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h lists.h \ wilderness.h mysql.h feats.h actionqueues.h domains_schools.h grapple.h \ race.h spell_prep.h crafts.h trails.h premadebuilds.h encounters.h \ hunts.h evolutions.h -deities.o: deities.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h spells.h \ - interpreter.h deities.h -desc_engine.o: desc_engine.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h fight.h comm.h \ +deities.o: deities.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h spells.h interpreter.h \ + deities.h +desc_engine.o: desc_engine.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h fight.h comm.h \ dg_event.h constants.h mysql.h desc_engine.h wilderness.h -dg_comm.o: dg_comm.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h dg_scripts.h utils.h db.h helpers.h perfmon.h comm.h \ +dg_comm.o: dg_comm.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h dg_scripts.h utils.h db.h helpers.h perfmon.h comm.h \ handler.h constants.h dg_db_scripts.o: dg_db_scripts.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h dg_scripts.h utils.h db.h helpers.h \ + protocol.h lists.h campaign.h dg_scripts.h utils.h db.h helpers.h \ perfmon.h handler.h dg_event.h comm.h constants.h interpreter.h -dg_event.o: dg_event.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h dg_event.h \ +dg_event.o: dg_event.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h dg_event.h \ constants.h comm.h mud_event.h -dg_handler.o: dg_handler.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h dg_scripts.h comm.h \ +dg_handler.o: dg_handler.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h dg_scripts.h comm.h \ handler.h spells.h dg_event.h constants.h -dg_misc.o: dg_misc.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h dg_scripts.h comm.h \ +dg_misc.o: dg_misc.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h dg_scripts.h comm.h \ interpreter.h handler.h dg_event.h screen.h spells.h constants.h fight.h \ mudlim.h -dg_mobcmd.o: dg_mobcmd.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h screen.h \ +dg_mobcmd.o: dg_mobcmd.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h screen.h \ dg_scripts.h handler.h interpreter.h comm.h spells.h constants.h \ genzon.h act.h fight.h shop.h -dg_objcmd.o: dg_objcmd.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h screen.h dg_scripts.h utils.h db.h helpers.h \ +dg_objcmd.o: dg_objcmd.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h screen.h dg_scripts.h utils.h db.h helpers.h \ perfmon.h comm.h interpreter.h handler.h constants.h genzon.h fight.h -dg_olc.o: dg_olc.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h genolc.h interpreter.h \ - oasis.h help.h dg_olc.h dg_scripts.h dg_event.h genzon.h constants.h \ - modify.h -dg_scripts.o: dg_scripts.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h dg_scripts.h utils.h db.h helpers.h perfmon.h comm.h \ +dg_olc.o: dg_olc.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h genolc.h \ + interpreter.h oasis.h help.h dg_olc.h dg_scripts.h dg_event.h genzon.h \ + constants.h modify.h +dg_scripts.o: dg_scripts.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h dg_scripts.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h dg_event.h screen.h constants.h spells.h oasis.h \ help.h genzon.h act.h modify.h -dg_triggers.o: dg_triggers.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h dg_scripts.h utils.h db.h helpers.h perfmon.h comm.h \ +dg_triggers.o: dg_triggers.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h dg_scripts.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h oasis.h help.h constants.h spells.h act.h \ modify.h dg_variables.o: dg_variables.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h dg_scripts.h utils.h db.h helpers.h \ + protocol.h lists.h campaign.h dg_scripts.h utils.h db.h helpers.h \ perfmon.h comm.h interpreter.h handler.h dg_event.h fight.h screen.h \ constants.h spells.h oasis.h help.h class.h quest.h act.h genobj.h \ race.h clan.h mudlim.h feats.h -dg_wldcmd.o: dg_wldcmd.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h screen.h dg_scripts.h utils.h db.h helpers.h \ +dg_wldcmd.o: dg_wldcmd.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h screen.h dg_scripts.h utils.h db.h helpers.h \ perfmon.h comm.h interpreter.h handler.h constants.h genzon.h fight.h domain_powers.o: domain_powers.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h screen.h handler.h spells.h domains_schools.h \ assign_wpn_armor.h mud_event.h dg_event.h actions.h fight.h act.h domains_schools.o: domains_schools.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h spells.h feats.h domains_schools.h assign_wpn_armor.h \ screen.h modify.h class.h -encounters.o: encounters.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h oasis.h \ +encounters.o: encounters.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h oasis.h \ help.h screen.h interpreter.h modify.h spells.h feats.h class.h \ handler.h constants.h assign_wpn_armor.h domains_schools.h spell_prep.h \ alchemy.h race.h encounters.h dg_scripts.h prefedit.h mud_event.h \ dg_event.h act.h -evolutions.o: evolutions.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h spells.h \ +evolutions.o: evolutions.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h spells.h \ handler.h constants.h interpreter.h dg_scripts.h modify.h feats.h \ class.h mud_event.h dg_event.h assign_wpn_armor.h domains_schools.h \ spell_prep.h evolutions.h fight.h oasis.h help.h genolc.h -feats.o: feats.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ +feats.o: feats.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ constants.h interpreter.h dg_scripts.h modify.h feats.h class.h \ mud_event.h dg_event.h assign_wpn_armor.h domains_schools.h spell_prep.h -fight.o: fight.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h interpreter.h \ - spells.h screen.h constants.h dg_scripts.h act.h class.h fight.h shop.h \ - quest.h mud_event.h dg_event.h spec_procs.h clan.h treasure.h mudlim.h \ - spec_abilities.h feats.h actions.h actionqueues.h craft.h \ - assign_wpn_armor.h grapple.h alchemy.h missions.h hunts.h \ +fight.o: fight.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ + interpreter.h spells.h screen.h constants.h dg_scripts.h act.h class.h \ + fight.h shop.h quest.h mud_event.h dg_event.h spec_procs.h clan.h \ + treasure.h mudlim.h spec_abilities.h feats.h actions.h actionqueues.h \ + craft.h assign_wpn_armor.h grapple.h alchemy.h missions.h hunts.h \ domains_schools.h staff_events.h evolutions.h -gain.o: gain.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h screen.h \ - interpreter.h modify.h spells.h -genmob.o: genmob.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h shop.h handler.h genolc.h \ +gain.o: gain.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h \ + screen.h interpreter.h modify.h spells.h +genmob.o: genmob.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h shop.h handler.h genolc.h \ genmob.h genzon.h dg_olc.h dg_scripts.h spells.h -genobj.o: genobj.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h shop.h constants.h genolc.h \ +genobj.o: genobj.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h shop.h constants.h genolc.h \ genobj.h genzon.h dg_olc.h dg_scripts.h handler.h interpreter.h boards.h \ craft.h -genolc.o: genolc.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h handler.h comm.h shop.h oasis.h \ - help.h genolc.h genwld.h genmob.h genshp.h genzon.h genobj.h dg_olc.h \ - dg_scripts.h constants.h interpreter.h act.h modify.h quest.h craft.h -genqst.o: genqst.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h quest.h genolc.h oasis.h help.h \ - genzon.h -genshp.o: genshp.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h shop.h genolc.h genshp.h \ +genolc.o: genolc.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h handler.h comm.h shop.h \ + oasis.h help.h genolc.h genwld.h genmob.h genshp.h genzon.h genobj.h \ + dg_olc.h dg_scripts.h constants.h interpreter.h act.h modify.h quest.h \ + craft.h +genqst.o: genqst.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h quest.h genolc.h oasis.h \ + help.h genzon.h +genshp.o: genshp.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h shop.h genolc.h genshp.h \ genzon.h -genwld.o: genwld.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h handler.h comm.h genolc.h \ +genwld.o: genwld.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h handler.h comm.h genolc.h \ genwld.h genzon.h shop.h dg_olc.h dg_scripts.h mud_event.h dg_event.h \ wilderness.h -genzon.o: genzon.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h genolc.h genzon.h dg_scripts.h -graph.o: graph.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - spells.h act.h constants.h graph.h fight.h spec_procs.h mud_event.h \ - dg_event.h actions.h wilderness.h shop.h evolutions.h -grapple.o: grapple.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +genzon.o: genzon.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h genolc.h genzon.h \ + dg_scripts.h +graph.o: graph.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h spells.h act.h constants.h graph.h fight.h spec_procs.h \ + mud_event.h dg_event.h actions.h wilderness.h shop.h evolutions.h +grapple.o: grapple.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h act.h fight.h mud_event.h dg_event.h constants.h \ spec_procs.h class.h mudlim.h actions.h actionqueues.h \ assign_wpn_armor.h feats.h grapple.h evolutions.h -handler.o: handler.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ - screen.h interpreter.h spells.h dg_scripts.h act.h class.h fight.h \ - quest.h mud_event.h dg_event.h wilderness.h actionqueues.h constants.h \ +handler.o: handler.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h screen.h \ + interpreter.h spells.h dg_scripts.h act.h class.h fight.h quest.h \ + mud_event.h dg_event.h wilderness.h actionqueues.h constants.h \ spec_abilities.h -hedit.o: hedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h boards.h \ - oasis.h help.h genolc.h genzon.h handler.h improved-edit.h act.h hedit.h \ - modify.h mysql.h -help.o: help.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h modify.h comm.h interpreter.h \ - mysql.h help.h feats.h spells.h class.h race.h alchemy.h constants.h \ - deities.h act.h evolutions.h +hedit.o: hedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + boards.h oasis.h help.h genolc.h genzon.h handler.h improved-edit.h \ + act.h hedit.h modify.h mysql.h +help.o: help.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h modify.h comm.h \ + interpreter.h mysql.h help.h feats.h spells.h class.h race.h alchemy.h \ + constants.h deities.h act.h evolutions.h helpers.o: helpers.c helpers.h -hlqedit.o: hlqedit.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h comm.h utils.h db.h helpers.h perfmon.h boards.h \ - handler.h oasis.h help.h interpreter.h constants.h hlquest.h spells.h \ - class.h genzon.h genolc.h genmob.h improved-edit.h modify.h -hlquest.o: hlquest.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +hlqedit.o: hlqedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h comm.h utils.h db.h helpers.h perfmon.h boards.h handler.h \ + oasis.h help.h interpreter.h constants.h hlquest.h spells.h class.h \ + genzon.h genolc.h genmob.h improved-edit.h modify.h +hlquest.o: hlquest.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h hlquest.h spells.h race.h class.h fight.h act.h constants.h \ mud_event.h dg_event.h actions.h spell_prep.h -house.o: house.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h interpreter.h \ - house.h constants.h modify.h mysql.h clan.h act.h dg_scripts.h -hsedit.o: hsedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h comm.h utils.h db.h helpers.h perfmon.h handler.h interpreter.h \ - boards.h oasis.h help.h genolc.h genzon.h house.h screen.h -hunts.o: hunts.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h screen.h \ - handler.h constants.h interpreter.h race.h wilderness.h hunts.h act.h \ - spec_abilities.h assign_wpn_armor.h -ibt.o: ibt.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h interpreter.h \ - constants.h screen.h act.h ibt.h oasis.h help.h improved-edit.h modify.h +house.o: house.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ + interpreter.h house.h constants.h modify.h mysql.h clan.h act.h \ + dg_scripts.h +hsedit.o: hsedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h comm.h utils.h db.h helpers.h perfmon.h handler.h \ + interpreter.h boards.h oasis.h help.h genolc.h genzon.h house.h screen.h +hunts.o: hunts.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h \ + screen.h handler.h constants.h interpreter.h race.h wilderness.h hunts.h \ + act.h spec_abilities.h assign_wpn_armor.h +ibt.o: ibt.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ + interpreter.h constants.h screen.h act.h ibt.h oasis.h help.h \ + improved-edit.h modify.h improved-edit.o: improved-edit.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h improved-edit.h dg_scripts.h modify.h -interpreter.o: interpreter.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +interpreter.o: interpreter.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ spells.h handler.h mail.h screen.h genolc.h oasis.h help.h \ improved-edit.h dg_scripts.h constants.h act.h ban.h class.h graph.h \ hedit.h house.h config.h modify.h quest.h hlquest.h asciimap.h \ @@ -306,232 +310,233 @@ interpreter.o: interpreter.c conf.h sysdep.h structs.h bool.h campaign.h \ premadebuilds.h missions.h transport.h hunts.h fight.h char_descs.h \ evolutions.h deities.h kdtree.o: kdtree.c kdtree.h -limits.o: limits.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h spells.h comm.h handler.h \ +limits.o: limits.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h spells.h comm.h handler.h \ interpreter.h dg_scripts.h class.h fight.h screen.h mud_event.h \ dg_event.h mudlim.h act.h actions.h domains_schools.h grapple.h \ constants.h alchemy.h staff_events.h missions.h account.h psionics.h \ evolutions.h -lists.o: lists.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h dg_event.h -magic.o: magic.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ +lists.o: lists.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h dg_event.h +magic.o: magic.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ interpreter.h constants.h dg_scripts.h class.h fight.h mud_event.h \ dg_event.h act.h mudlim.h oasis.h help.h assign_wpn_armor.h \ domains_schools.h feats.h race.h alchemy.h missions.h psionics.h \ combat_modes.h spec_procs.h evolutions.h -mail.o: mail.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - mail.h modify.h mudlim.h -medit.o: medit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h spells.h \ - shop.h genolc.h genmob.h genzon.h genshp.h oasis.h help.h handler.h \ - constants.h improved-edit.h dg_olc.h dg_scripts.h screen.h fight.h \ - race.h class.h feats.h modify.h -missions.o: missions.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +mail.o: mail.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h mail.h modify.h mudlim.h +medit.o: medit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h \ + spells.h shop.h genolc.h genmob.h genzon.h genshp.h oasis.h help.h \ + handler.h constants.h improved-edit.h dg_olc.h dg_scripts.h screen.h \ + fight.h race.h class.h feats.h modify.h +missions.o: missions.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h screen.h constants.h dg_scripts.h mud_event.h \ dg_event.h mail.h act.h class.h race.h fight.h modify.h asciimap.h \ clan.h craft.h wilderness.h quest.h feats.h assign_wpn_armor.h \ domains_schools.h desc_engine.h crafts.h alchemy.h premadebuilds.h \ missions.h random_names.h spec_procs.h oasis.h help.h mudlim.h genmob.h \ treasure.h hunts.h -mobact.o: mobact.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - spells.h constants.h act.h graph.h fight.h spec_procs.h mud_event.h \ - dg_event.h modify.h mobact.h shop.h quest.h dg_scripts.h evolutions.h -modify.o: modify.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h comm.h \ - spells.h mail.h boards.h improved-edit.h oasis.h help.h class.h \ +mobact.o: mobact.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h spells.h constants.h act.h graph.h fight.h spec_procs.h \ + mud_event.h dg_event.h modify.h mobact.h shop.h quest.h dg_scripts.h \ + evolutions.h +modify.o: modify.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h \ + comm.h spells.h mail.h boards.h improved-edit.h oasis.h help.h class.h \ dg_scripts.h modify.h quest.h ibt.h constants.h mysql/mysql.h \ mysql/mysql_version.h mysql/mysql_com.h mysql/mysql_time.h \ mysql/typelib.h mysql/my_alloc.h mysql/my_list.h feats.h -msgedit.o: msgedit.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h screen.h \ - spells.h msgedit.h oasis.h help.h genolc.h interpreter.h modify.h -mud_event.o: mud_event.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h dg_event.h \ +msgedit.o: msgedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h screen.h spells.h \ + msgedit.h oasis.h help.h genolc.h interpreter.h modify.h +mud_event.o: mud_event.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h dg_event.h \ constants.h comm.h mud_event.h handler.h wilderness.h quest.h mysql.h \ act.h -mysql.o: mysql.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h modify.h mysql.h \ +mysql.o: mysql.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h modify.h mysql.h \ wilderness.h mud_event.h dg_event.h -new_mail.o: new_mail.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +new_mail.o: new_mail.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h constants.h spec_procs.h feats.h oasis.h help.h \ house.h dg_scripts.h clan.h mysql.h modify.h -oasis.o: oasis.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h shop.h \ +oasis.o: oasis.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h shop.h \ genolc.h genmob.h genshp.h genzon.h genwld.h genobj.h oasis.h help.h \ screen.h dg_olc.h dg_scripts.h act.h handler.h quest.h ibt.h msgedit.h \ crafts.h -oasis_copy.o: oasis_copy.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +oasis_copy.o: oasis_copy.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h shop.h genshp.h genolc.h genzon.h genwld.h oasis.h help.h \ improved-edit.h constants.h dg_scripts.h wilderness.h quest.h oasis_delete.o: oasis_delete.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h genolc.h oasis.h help.h improved-edit.h -oasis_list.o: oasis_list.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +oasis_list.o: oasis_list.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h genolc.h oasis.h help.h improved-edit.h shop.h screen.h \ constants.h dg_scripts.h quest.h modify.h spells.h race.h genzon.h \ class.h genshp.h wilderness.h assign_wpn_armor.h feats.h -objsave.o: objsave.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ +objsave.o: objsave.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ interpreter.h spells.h act.h class.h config.h modify.h genolc.h craft.h \ spec_abilities.h mysql.h -oedit.o: oedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h spells.h \ - boards.h constants.h shop.h genolc.h genobj.h genzon.h oasis.h help.h \ - improved-edit.h dg_olc.h dg_scripts.h fight.h modify.h clan.h craft.h \ - spec_abilities.h feats.h assign_wpn_armor.h domains_schools.h treasure.h \ - act.h handler.h +oedit.o: oedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + spells.h boards.h constants.h shop.h genolc.h genobj.h genzon.h oasis.h \ + help.h improved-edit.h dg_olc.h dg_scripts.h fight.h modify.h clan.h \ + craft.h spec_abilities.h feats.h assign_wpn_armor.h domains_schools.h \ + treasure.h act.h handler.h perlin.o: perlin.c perlin.h -players.o: players.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h handler.h \ - pfdefaults.h dg_scripts.h comm.h interpreter.h mysql.h genolc.h config.h \ - quest.h spells.h clan.h mud_event.h dg_event.h craft.h spell_prep.h \ - alchemy.h templates.h premadebuilds.h missions.h evolutions.h -prefedit.o: prefedit.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h comm.h utils.h db.h helpers.h perfmon.h handler.h \ +players.o: players.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h handler.h pfdefaults.h \ + dg_scripts.h comm.h interpreter.h mysql.h genolc.h config.h quest.h \ + spells.h clan.h mud_event.h dg_event.h craft.h spell_prep.h alchemy.h \ + templates.h premadebuilds.h missions.h evolutions.h +prefedit.o: prefedit.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h comm.h utils.h db.h helpers.h perfmon.h handler.h \ interpreter.h oasis.h help.h prefedit.h screen.h encounters.h premadebuilds.o: premadebuilds.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ modify.h screen.h spells.h handler.h interpreter.h class.h race.h \ spec_procs.h mud_event.h dg_event.h feats.h spec_abilities.h \ assign_wpn_armor.h wilderness.h domains_schools.h constants.h \ dg_scripts.h templates.h oasis.h help.h spell_prep.h premadebuilds.h \ alchemy.h evolutions.h protocol.o: protocol.c protocol.h conf.h sysdep.h structs.h bool.h \ - campaign.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h screen.h improved-edit.h dg_scripts.h act.h modify.h -psionics.o: psionics.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h interpreter.h \ +psionics.o: psionics.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h interpreter.h \ spells.h handler.h comm.h dg_scripts.h fight.h constants.h mud_event.h \ dg_event.h spec_procs.h class.h actions.h assign_wpn_armor.h \ domains_schools.h grapple.h spell_prep.h alchemy.h missions.h psionics.h \ act.h -qedit.o: qedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h \ +qedit.o: qedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h \ improved-edit.h screen.h genolc.h genzon.h interpreter.h modify.h \ quest.h missions.h -quest.o: quest.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h comm.h \ - screen.h quest.h act.h mudlim.h mud_event.h dg_event.h missions.h \ +quest.o: quest.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h \ + comm.h screen.h quest.h act.h mudlim.h mud_event.h dg_event.h missions.h \ house.h dg_scripts.h -race.o: race.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h spells.h interpreter.h \ +race.o: race.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h spells.h interpreter.h \ constants.h act.h handler.h comm.h race.h feats.h class.h -random.o: random.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h +random.o: random.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h random_names.o: random_names.c random_names.h -rank.o: rank.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h handler.h \ - spells.h screen.h act.h -redit.o: redit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h boards.h \ - genolc.h genwld.h genzon.h oasis.h help.h improved-edit.h dg_olc.h \ - dg_scripts.h constants.h modify.h wilderness.h trails.h -sedit.o: sedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h shop.h \ +rank.o: rank.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + handler.h spells.h screen.h act.h +redit.o: redit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ + boards.h genolc.h genwld.h genzon.h oasis.h help.h improved-edit.h \ + dg_olc.h dg_scripts.h constants.h modify.h wilderness.h trails.h +sedit.o: sedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h shop.h \ genolc.h genshp.h genzon.h oasis.h help.h constants.h -shop.o: shop.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h interpreter.h \ - shop.h genshp.h constants.h act.h modify.h spells.h screen.h race.h \ - spec_procs.h mudlim.h item.h +shop.o: shop.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h \ + interpreter.h shop.h genshp.h constants.h act.h modify.h spells.h \ + screen.h race.h spec_procs.h mudlim.h item.h spec_abilities.o: spec_abilities.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ dg_event.h spells.h handler.h interpreter.h constants.h dg_scripts.h \ class.h fight.h mud_event.h act.h mudlim.h oasis.h help.h \ assign_wpn_armor.h feats.h race.h spec_abilities.h domains_schools.h \ evolutions.h -spec_assign.o: spec_assign.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h interpreter.h \ +spec_assign.o: spec_assign.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h interpreter.h \ spec_procs.h spells.h ban.h boards.h mail.h treasure.h missions.h \ hunts.h -spec_procs.o: spec_procs.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +spec_procs.o: spec_procs.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h constants.h act.h spec_procs.h class.h fight.h \ modify.h house.h clan.h mudlim.h graph.h dg_scripts.h mud_event.h \ dg_event.h actions.h assign_wpn_armor.h domains_schools.h feats.h \ spell_prep.h item.h alchemy.h treasure.h mobact.h evolutions.h specs.artifacts.o: specs.artifacts.c spellbook_scroll.o: spellbook_scroll.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h \ interpreter.h spells.h comm.h mud_event.h dg_event.h constants.h act.h \ handler.h spec_procs.h spell_prep.h item.h spell_parser.o: spell_parser.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h \ interpreter.h spells.h handler.h comm.h dg_scripts.h fight.h constants.h \ mud_event.h dg_event.h spec_procs.h class.h actions.h assign_wpn_armor.h \ domains_schools.h grapple.h spell_prep.h alchemy.h missions.h psionics.h \ act.h evolutions.h mudlim.h -spell_prep.o: spell_prep.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h \ +spell_prep.o: spell_prep.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h \ handler.h constants.h spec_procs.h spells.h mud_event.h dg_event.h \ class.h spell_prep.h domains_schools.h -spells.o: spells.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ +spells.o: spells.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h spells.h handler.h \ constants.h interpreter.h dg_scripts.h act.h fight.h mud_event.h \ dg_event.h house.h screen.h craft.h mudlim.h item.h domains_schools.h \ oasis.h help.h genzon.h psionics.h assign_wpn_armor.h actions.h \ transport.h evolutions.h staff_events.o: staff_events.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ interpreter.h handler.h screen.h wilderness.h dg_scripts.h \ staff_events.h spec_procs.h spells.h -study.o: study.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h screen.h \ - interpreter.h modify.h spells.h feats.h class.h handler.h constants.h \ - assign_wpn_armor.h domains_schools.h spell_prep.h alchemy.h race.h \ - premadebuilds.h psionics.h evolutions.h -tedit.o: tedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h genolc.h \ - oasis.h help.h improved-edit.h modify.h -templates.o: templates.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h modify.h \ +study.o: study.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h oasis.h help.h \ + screen.h interpreter.h modify.h spells.h feats.h class.h handler.h \ + constants.h assign_wpn_armor.h domains_schools.h spell_prep.h alchemy.h \ + race.h premadebuilds.h psionics.h evolutions.h +tedit.o: tedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h comm.h \ + genolc.h oasis.h help.h improved-edit.h modify.h +templates.o: templates.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h modify.h \ screen.h spells.h handler.h interpreter.h class.h race.h spec_procs.h \ mud_event.h dg_event.h feats.h spec_abilities.h assign_wpn_armor.h \ wilderness.h domains_schools.h constants.h dg_scripts.h templates.h \ mysql.h oasis.h help.h -trade.o: trade.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h comm.h \ - race.h spells.h trade.h -transport.o: transport.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h oasis.h \ +trade.o: trade.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h interpreter.h handler.h \ + comm.h race.h spells.h trade.h +transport.o: transport.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h oasis.h \ help.h screen.h interpreter.h modify.h spells.h feats.h class.h \ handler.h constants.h assign_wpn_armor.h domains_schools.h spell_prep.h \ alchemy.h race.h transport.h dg_scripts.h wilderness.h -traps.o: traps.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h handler.h mud_event.h \ +traps.o: traps.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h handler.h mud_event.h \ dg_event.h actions.h mudlim.h fight.h spells.h traps.h -treasure.o: treasure.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +treasure.o: treasure.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h constants.h dg_scripts.h treasure.h craft.h \ assign_wpn_armor.h oasis.h help.h item.h staff_events.h feats.h treasure_const.o: treasure_const.c conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h \ interpreter.h treasure.h -utils.o: utils.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h modify.h screen.h \ +utils.o: utils.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h modify.h screen.h \ spells.h handler.h interpreter.h class.h race.h act.h spec_procs.h \ mud_event.h dg_event.h feats.h spec_abilities.h assign_wpn_armor.h \ wilderness.h domains_schools.h constants.h dg_scripts.h alchemy.h \ premadebuilds.h craft.h fight.h missions.h psionics.h evolutions.h -weather.o: weather.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h +weather.o: weather.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h wilderness.o: wilderness.c perlin.h conf.h sysdep.h structs.h bool.h \ - campaign.h protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h \ + protocol.h lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h \ constants.h mud_event.h dg_event.h wilderness.h kdtree.h mysql.h \ desc_engine.h -zedit.o: zedit.c conf.h sysdep.h structs.h bool.h campaign.h protocol.h \ - lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +zedit.o: zedit.c conf.h sysdep.h structs.h bool.h protocol.h lists.h \ + campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ constants.h genolc.h genzon.h genmob.h oasis.h help.h dg_scripts.h \ handler.h zmalloc.o: zmalloc.c -zone_procs.o: zone_procs.c conf.h sysdep.h structs.h bool.h campaign.h \ - protocol.h lists.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ +zone_procs.o: zone_procs.c conf.h sysdep.h structs.h bool.h protocol.h \ + lists.h campaign.h utils.h db.h helpers.h perfmon.h comm.h interpreter.h \ handler.h spells.h act.h spec_procs.h fight.h graph.h mud_event.h \ dg_event.h actions.h domains_schools.h spec_abilities.h treasure.h \ mobact.h dg_scripts.h staff_events.h evolutions.h diff --git a/feats.c b/feats.c index 118d6e1f..8c67e0b7 100644 --- a/feats.c +++ b/feats.c @@ -4500,7 +4500,7 @@ feato(FEAT_MOON_ELF_RACIAL_ADJUSTMENT, "moon elf racial adjustment", TRUE, FALSE /*5*/ feato(FEAT_RIPOSTE, "riposte", TRUE, FALSE, FALSE, FEAT_TYPE_CLASS_ABILITY, "+2 bonus to riposte attempts (totaldefense)", "+2 bonus to riposte attempts (totaldefense)"); - /*6*/ feato(FEAT_ACROBATIC_CHARGE, "dextrous charge", TRUE, FALSE, FALSE, FEAT_TYPE_CLASS_ABILITY, + /*6*/ feato(FEAT_ACROBATIC_CHARGE, "dexterous charge", TRUE, FALSE, FALSE, FEAT_TYPE_CLASS_ABILITY, "+4 damage when charging on foot", "+4 damage when charging on foot"); /*7*/ feato(FEAT_ELABORATE_PARRY, "elaborate parry", TRUE, FALSE, FALSE, FEAT_TYPE_CLASS_ABILITY, diff --git a/fight.c b/fight.c index 81d23db0..01822e8e 100755 --- a/fight.c +++ b/fight.c @@ -4258,6 +4258,11 @@ int damage_handling(struct char_data *ch, struct char_data *victim, GET_CASTING_CLASS(ch) = CLASS_UNDEFINED; } + else if (is_spell && IS_NPC(ch)) + { + dam *= 0.75; + } + else if (!is_spell && victim && IS_EVIL(victim) && group_member_affected_by_spell(ch, SPELL_LITANY_OF_RIGHTEOUSNESS) && has_aura_of_good(ch)) { dam *= 2; diff --git a/handler.c b/handler.c index 5f2a96f2..ff8c8ff9 100755 --- a/handler.c +++ b/handler.c @@ -1484,34 +1484,34 @@ void obj_to_char(struct obj_data *object, struct char_data *ch) { if (object && ch) { - log("T1: %s", object->short_description); + // log("T1: %s", object->short_description); object->next_content = ch->carrying; - log("T2: %s", object->short_description); + // log("T2: %s", object->short_description); ch->carrying = object; - log("T3: %s", object->short_description); + // log("T3: %s", object->short_description); object->carried_by = ch; - log("T4: %s", object->short_description); + // log("T4: %s", object->short_description); IN_ROOM(object) = NOWHERE; - log("T5: %s", object->short_description); + // log("T5: %s", object->short_description); IS_CARRYING_W(ch) += GET_OBJ_WEIGHT(object); IS_CARRYING_N(ch)++; - log("T6: %s", object->short_description); + // log("T6: %s", object->short_description); /* autoquest system check point -Zusuk */ autoquest_trigger_check(ch, NULL, object, 0, AQ_OBJ_FIND); - log("T7: %s", object->short_description); + // log("T7: %s", object->short_description); /* set flag for crash-save system, but not on mobs! */ if (!IS_NPC(ch)) SET_BIT_AR(PLR_FLAGS(ch), PLR_CRASH); - log("T8: %s", object->short_description); + // log("T8: %s", object->short_description); if (ch->desc) { - log("T9: %s", object->short_description); + // log("T9: %s", object->short_description); update_msdp_inventory(ch); - log("T10: %s", object->short_description); + // log("T10: %s", object->short_description); MSDPFlush(ch->desc, eMSDP_INVENTORY); } log("T11: %s", object->short_description); @@ -2376,6 +2376,8 @@ void extract_char_final(struct char_data *ch) GUARDING(tch) = NULL; } + empty_bags_to_inventory(ch); + /* transfer objects to room, if any */ while (ch->carrying) { @@ -3137,4 +3139,83 @@ void save_chars(void) continue; save_char(ch, 0); } +} + +void empty_bags_to_inventory(struct char_data *ch) +{ + // empty bags + if (!IS_NPC(ch)) + { + struct obj_data *tmp, *obj; + while (ch->bags->bag1) + { + tmp = ch->bags->bag1->next_content; + obj = ch->bags->bag1; + obj_from_bag(ch, obj, 1); + ch->bags->bag1 = tmp; + } + while (ch->bags->bag2) + { + tmp = ch->bags->bag2->next_content; + obj = ch->bags->bag2; + obj_from_bag(ch, obj, 1); + ch->bags->bag2 = tmp; + } + while (ch->bags->bag3) + { + tmp = ch->bags->bag3->next_content; + obj = ch->bags->bag3; + obj_from_bag(ch, obj, 1); + ch->bags->bag3 = tmp; + } + while (ch->bags->bag4) + { + tmp = ch->bags->bag4->next_content; + obj = ch->bags->bag4; + obj_from_bag(ch, obj, 1); + ch->bags->bag4 = tmp; + } + while (ch->bags->bag5) + { + tmp = ch->bags->bag5->next_content; + obj = ch->bags->bag5; + obj_from_bag(ch, obj, 1); + ch->bags->bag5 = tmp; + } + while (ch->bags->bag6) + { + tmp = ch->bags->bag6->next_content; + obj = ch->bags->bag6; + obj_from_bag(ch, obj, 1); + ch->bags->bag6 = tmp; + } + while (ch->bags->bag7) + { + tmp = ch->bags->bag7->next_content; + obj = ch->bags->bag7; + obj_from_bag(ch, obj, 1); + ch->bags->bag7 = tmp; + } + while (ch->bags->bag8) + { + tmp = ch->bags->bag8->next_content; + obj = ch->bags->bag8; + obj_from_bag(ch, obj, 1); + ch->bags->bag8 = tmp; + } + while (ch->bags->bag9) + { + tmp = ch->bags->bag9->next_content; + obj = ch->bags->bag9; + obj_from_bag(ch, obj, 1); + ch->bags->bag9 = tmp; + } + while (ch->bags->bag10) + { + tmp = ch->bags->bag10->next_content; + obj = ch->bags->bag10; + obj_from_bag(ch, obj, 1); + ch->bags->bag10 = tmp; + } + } } \ No newline at end of file diff --git a/handler.h b/handler.h index bb648cd7..5311156c 100755 --- a/handler.h +++ b/handler.h @@ -53,9 +53,9 @@ int isname_obj(char *search, char *list); /* this is from spells.c */ void obj_to_char(struct obj_data *object, struct char_data *ch); void obj_from_char(struct obj_data *object); void obj_from_inv_to_bag(struct char_data *ch, struct obj_data *object, int bagnum); -void obj_from_bag_to_inv(struct char_data *ch, struct obj_data *object, int bagnum); void obj_from_bag(struct char_data *ch, struct obj_data *object, int bagnum); void obj_to_bag(struct char_data *ch, struct obj_data *object, int bagnum); +void empty_bags_to_inventory(struct char_data *ch); void equip_char(struct char_data *ch, struct obj_data *obj, int pos); struct obj_data *unequip_char(struct char_data *ch, int pos); diff --git a/improved-edit.c b/improved-edit.c index 3cfbddf3..6d62aed4 100755 --- a/improved-edit.c +++ b/improved-edit.c @@ -28,6 +28,9 @@ int improved_editor_execute(struct descriptor_data *d, char *str) { char actions[MAX_INPUT_LENGTH] = {'\0'}; + if (*str && str[0]== '@') + return STRINGADD_SAVE; + if (*str != '/') return STRINGADD_OK; @@ -86,6 +89,7 @@ int improved_editor_execute(struct descriptor_data *d, char *str) parse_edit_action(PARSE_REPLACE, actions, d); break; case 's': + case '@': return STRINGADD_SAVE; case 't': parse_edit_action(PARSE_TOGGLE, actions, d); @@ -125,7 +129,8 @@ void parse_edit_action(int command, char *string, struct descriptor_data *d) "/ra 'a' 'b'- replace all occurances of text within buffer with text \r\n" " usage: /r[a] 'pattern' 'replacement'\r\n" "/t - toggles '@' and tabs\r\n" - "/s - saves text\r\n"); + "/s - saves text\r\n" + "@ - also saves text\r\n"); break; case PARSE_TOGGLE: if (!*d->str) diff --git a/interpreter.c b/interpreter.c index bdd158df..062f7413 100755 --- a/interpreter.c +++ b/interpreter.c @@ -720,6 +720,7 @@ cpp_extern const struct command_info cmd_info[] = { {"shadowform", "shf", POS_SITTING, do_gen_tog, 1, SCMD_SHADOWFORM, FALSE, ACTION_MOVE, {0, 6}, NULL}, {"shout", "sho", POS_RECLINING, do_gen_comm, 0, SCMD_SHOUT, TRUE, ACTION_NONE, {0, 0}, NULL}, {"show", "show", POS_DEAD, do_show, LVL_IMMORT, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, + {"showblockers", "showblockers", POS_DEAD, do_show_blockers, LVL_IMMORT, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, {"showwearoff", "showwearoff", POS_DEAD, do_showwearoff, LVL_IMMORT, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, {"shutdow", "shutdow", POS_DEAD, do_shutdown, LVL_IMPL, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, {"shutdown", "shutdown", POS_DEAD, do_shutdown, LVL_IMPL, SCMD_SHUTDOWN, TRUE, ACTION_NONE, {0, 0}, NULL}, @@ -818,6 +819,7 @@ cpp_extern const struct command_info cmd_info[] = { {"uncommune", "uncommune", POS_RECLINING, do_consign_to_oblivion, 0, SCMD_UNCOMMUNE, FALSE, ACTION_NONE, {0, 0}, NULL}, {"unconjure", "unconjure", POS_RECLINING, do_consign_to_oblivion, 0, SCMD_UNCONJURE, FALSE, ACTION_NONE, {0, 0}, NULL}, {"unstore", "unstore", POS_FIGHTING, do_unstore, 1, 0, FALSE, ACTION_MOVE, {0, 0}, NULL}, + {"unstuck", "unstuck", POS_DEAD, do_unstuck, 1, 0, FALSE, ACTION_NONE, {0, 0}, NULL}, {"uptime", "uptime", POS_DEAD, do_date, 1, SCMD_UPTIME, TRUE, ACTION_NONE, {0, 0}, NULL}, {"use", "use", POS_FIGHTING, do_use_consumable, 0, SCMD_USE, FALSE, ACTION_SWIFT, {0, 6}, NULL}, {"usestoredconsumables", "usestoredconsumables", POS_DEAD, do_gen_tog, 0, SCMD_USE_STORED_CONSUMABLES, TRUE, ACTION_NONE, {0, 0}, NULL}, @@ -834,6 +836,7 @@ cpp_extern const struct command_info cmd_info[] = { {"vampireform", "vampireform", POS_FIGHTING, do_vampiric_shape_change, 0, 0, FALSE, ACTION_STANDARD, {0, 0}, can_vampiric_shape_change}, {"version", "ver", POS_DEAD, do_gen_ps, 0, SCMD_VERSION, TRUE, ACTION_NONE, {0, 0}, NULL}, {"visible", "vis", POS_RECLINING, do_visible, 1, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, + {"vitalstrike", "vitalstrike", POS_FIGHTING, do_vital_strike, 0, 0, FALSE, ACTION_STANDARD | ACTION_MOVE, {6, 6}, NULL}, {"vnum", "vnum", POS_DEAD, do_vnum, LVL_IMMORT, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, {"vstat", "vstat", POS_DEAD, do_vstat, LVL_IMMORT, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, {"vdelete", "vdelete", POS_DEAD, do_vdelete, LVL_BUILDER, 0, TRUE, ACTION_NONE, {0, 0}, NULL}, @@ -2026,6 +2029,10 @@ int enter_player_game(struct descriptor_data *d) GET_DEITY(d->character) = 0; #endif + + if (GET_REGION(d->character) < REGION_NONE || GET_REGION(d->character) >= NUM_REGIONS) + GET_REGION(d->character) = REGION_NONE; + /* initialize the characters condensed combat data struct */ init_condensed_combat_data(d->character); diff --git a/limits.c b/limits.c index 553fa429..8aca396c 100755 --- a/limits.c +++ b/limits.c @@ -463,11 +463,9 @@ int regen_hps(struct char_data *ch) } if (!FIGHTING(ch)) - hp += GET_HP_REGEN(ch); + hp += get_hp_regen_amount(ch); - hp += GET_FAST_HEALING_MOD(ch); - - hp += HAS_EVOLUTION(ch, EVOLUTION_FAST_HEALING) * 2; + hp += get_fast_healing_amount(ch); /* these are last bonuses (outside of exceptions) because of multiplier */ if (ROOM_FLAGGED(ch->in_room, ROOM_REGEN)) @@ -2005,7 +2003,7 @@ void update_damage_and_effects_over_time(void) struct affected_type af; new_affect(&af); af.spell = ABILITY_SCORE_DAMAGE; - af.duration = 50; // approx 5 minutes + af.duration = 5; SET_BIT_AR(af.bitvector, AFF_PARALYZED); affect_to_char(ch, &af); diff --git a/magic.c b/magic.c index 400f82d7..c0a772ab 100755 --- a/magic.c +++ b/magic.c @@ -3001,7 +3001,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, { return; } - af[0].duration = dice(1, 4); + af[0].duration = dice(1, 3); if (KNOWS_DISCOVERY(ch, ALC_DISC_MALIGNANT_POISON)) af[0].duration *= 1.5; SET_BIT_AR(af[0].bitvector, AFF_STUN); @@ -3015,7 +3015,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, { return; } - af[0].duration = dice(1, 4) + 2; + af[0].duration = dice(1, 3) + 1; if (KNOWS_DISCOVERY(ch, ALC_DISC_MALIGNANT_POISON)) af[0].duration *= 1.5; SET_BIT_AR(af[0].bitvector, AFF_STUN); @@ -3029,7 +3029,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, { return; } - af[0].duration = dice(1, 4) + 4; + af[0].duration = dice(1, 3) + 2; if (KNOWS_DISCOVERY(ch, ALC_DISC_MALIGNANT_POISON)) af[0].duration *= 1.5; SET_BIT_AR(af[0].bitvector, AFF_STUN); @@ -3095,7 +3095,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, to_room = "$n gets violently ill!"; if (can_stun(victim)) { - af[2].duration = dice(1, 4); + af[2].duration = dice(1, 3); if (KNOWS_DISCOVERY(ch, ALC_DISC_MALIGNANT_POISON)) af[2].duration *= 1.5; SET_BIT_AR(af[2].bitvector, AFF_STUN); @@ -3449,7 +3449,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, case PSIONIC_CONCEALING_AMORPHA: - if (ch != victim && GET_AUGMENT_PSP(ch) < 3) + if (ch != victim && (GET_AUGMENT_PSP(ch) < 3 || max_augment_psp_allowed(ch, PSIONIC_CONCEALING_AMORPHA) < 3)) { send_to_char(ch, "You need to augment this power with 3 psp points to use it on another being.\r\n"); return; @@ -3689,7 +3689,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, misc_bonus += get_evolution_appearance_save_bonus(victim); if (mag_savingthrow(ch, victim, SAVING_WILL, misc_bonus, casttype, level, NOSCHOOL)) return; - af[0].duration = 1 + GET_AUGMENT_PSP(ch) / 2; + af[0].duration = 1 + (GET_AUGMENT_PSP(ch) / 2); SET_BIT_AR(af[0].bitvector, AFF_STUN); to_vict = "You have been stunned by $N's psionic blast!"; to_room = "$n has been stunned by $N's psionic blast!"; @@ -4185,7 +4185,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, case ABILITY_STUNNING_CRITICAL: if (HAS_EVOLUTION(victim, EVOLUTION_UNDEAD_APPEARANCE)) misc_bonus += get_evolution_appearance_save_bonus(victim); - af[0].duration = savingthrow(victim, SAVING_FORT, misc_bonus, 10 + BAB(ch)) ? 1 : dice(1, 4) + 1; + af[0].duration = savingthrow(victim, SAVING_FORT, misc_bonus, 10 + BAB(ch)) ? 1 : dice(1, 4); SET_BIT_AR(af[0].bitvector, AFF_STUN); to_vict = "You are stunned."; to_room = "$n looks stunned."; @@ -4334,7 +4334,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, return; SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = 12; + af[0].duration = 1; to_room = "$n is stunned by the blast!"; to_vict = "You are stunned by the blast!"; } @@ -4799,7 +4799,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, case SPELL_SHIELD_OF_FAITH: af[0].location = APPLY_AC_NEW; - af[0].modifier = 2; + af[0].modifier = MIN(5, 2 + (level / 6)); af[0].duration = 400; af[0].bonus_type = BONUS_TYPE_DEFLECTION; to_vict = "You feel someone protecting you."; @@ -5173,6 +5173,8 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, af[0].duration = level; SET_BIT_AR(af[0].bitvector, AFF_SILENCED); + to_room = "$n seems unable to speak."; + to_vict = "You become unable to speak!"; break; // These two are the same except for messages @@ -5987,8 +5989,8 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, af[0].duration = (level * 12) + 100; af[0].modifier = 2 + (level / 5); af[0].bonus_type = BONUS_TYPE_ENHANCEMENT; - to_vict = "You feel more dextrous!"; - to_room = "$n's appears to be more dextrous!"; + to_vict = "You feel more dexterous!"; + to_room = "$n's appears to be more dexterous!"; break; case SPELL_GRASPING_HAND: // evocation (also does damage) @@ -6157,7 +6159,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = dice(3, 3); + af[0].duration = dice(1, 3) + 1; to_room = "$n is overcome by a powerful hold spell!"; to_vict = "You are overcome by a powerful hold spell!"; break; @@ -6270,7 +6272,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = level; // one round per level + af[0].duration = dice(1, 3) + 1; to_room = "$n is overcome by a powerful hold spell!"; to_vict = "You are overcome by a powerful hold spell!"; break; @@ -6306,7 +6308,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = dice(3, 3); + af[0].duration = dice(1, 3) + 1; to_room = "$n is overcome by a powerful hold spell!"; to_vict = "You are overcome by a powerful hold spell!"; break; @@ -6337,7 +6339,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = dice(3, 3); + af[0].duration = dice(1, 3) + 2; to_room = "$n is overcome by a powerful hold spell!"; to_vict = "You are overcome by a powerful hold spell!"; break; @@ -6476,7 +6478,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = dice(1, 4) + 1; + af[0].duration = dice(1, 3) + 1; to_room = "$n begins to dance uncontrollably!"; to_vict = "You begin to dance uncontrollably!"; break; @@ -6586,8 +6588,8 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, af[0].location = APPLY_DEX; af[0].duration = (level * 12) + 100; af[0].modifier = 2 + (level / 5); - to_vict = "You feel more dextrous!"; - to_room = "$n's appears to be more dextrous!"; + to_vict = "You feel more dexterous!"; + to_room = "$n's appears to be more dexterous!"; break; case SPELL_MASS_STRENGTH: // transmutation @@ -6683,7 +6685,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = dice(3, 4); + af[0].duration = dice(1, 3) + 1; to_room = "$n is overcome by a powerful hold spell!"; to_vict = "You are overcome by a powerful hold spell!"; break; @@ -6968,7 +6970,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, return; } SET_BIT_AR(af[0].bitvector, AFF_STUN); - af[0].duration = dice(2, 4); + af[0].duration = dice(1, 6); to_room = "$n is stunned by the colors!"; to_vict = "You are stunned by the colors!"; break; @@ -6979,7 +6981,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, return; } SET_BIT_AR(af[0].bitvector, AFF_PARALYZED); - af[0].duration = dice(1, 6); + af[0].duration = dice(1, 4); to_room = "$n is paralyzed by the colors!"; to_vict = "You are paralyzed by the colors!"; break; @@ -7060,7 +7062,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, is_mind_affect = TRUE; SET_BIT_AR(af[0].bitvector, AFF_STUN); - af[0].duration = dice(3, 4); + af[0].duration = dice(1, 4) + 2; to_room = "$n is stunned by the pattern of bright colors!"; to_vict = "You are dazed by the pattern of bright colors!"; break; @@ -7075,7 +7077,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, } af[0].location = APPLY_STR; - af[0].duration = 25 + (level * 12); + af[0].duration = dice(2, 3) + level / 5; af[0].modifier = -dice(2, 4); accum_duration = TRUE; to_room = "$n is struck by enfeeblement!"; @@ -7735,7 +7737,7 @@ void mag_affects(int level, struct char_data *ch, struct char_data *victim, send_to_char(ch, "It seems your opponent cannot be stunned.\r\n"); return; } - af[1].duration = 4; + af[1].duration = dice(1, 4) + 1; SET_BIT_AR(af[1].bitvector, AFF_STUN); act("You have been stunned!", FALSE, victim, 0, ch, TO_CHAR); @@ -9036,11 +9038,19 @@ bool isSummonMob(int vnum) case MOB_BLADE_OF_DISASTER: case MOB_DIRE_RAT: case MOB_ECTOPLASMIC_SHAMBLER: +#if defined(CAMPAIGN_DL) + case 40112: // air elemental + case 40113: // earth elemental + case 40114: // fire elemental + case 40115: // water elemental + case 40199: // shambling mound +#else case 9412: // air elemental case 9413: // earth elemental case 9414: // fire elemental case 9415: // water elemental case 9499: // shambling mound +#endif case MOB_CHILDREN_OF_THE_NIGHT_WOLVES: case MOB_CHILDREN_OF_THE_NIGHT_RATS: case MOB_CHILDREN_OF_THE_NIGHT_BATS: @@ -9224,6 +9234,24 @@ void mag_summons(int level, struct char_data *ch, struct obj_data *obj, case SPELL_ELEMENTAL_SWARM: // conjuration handle_corpse = FALSE; fmsg = rand_number(2, 6); +#if defined(CAMPAIGN_DL) + mob_num = 40112 + rand_number(0, 3); // 9412-9415 + switch (mob_num) + { + case 40112: + msg = 7; + break; + case 40113: + msg = 9; + break; + case 40114: + msg = 8; + break; + case 40115: + msg = 10; + break; + } +#else mob_num = 9412 + rand_number(0, 3); // 9412-9415 switch (mob_num) { @@ -9240,6 +9268,7 @@ void mag_summons(int level, struct char_data *ch, struct obj_data *obj, msg = 10; break; } +#endif num = dice(2, 4); break; @@ -9307,7 +9336,11 @@ void mag_summons(int level, struct char_data *ch, struct obj_data *obj, handle_corpse = FALSE; msg = 25; fmsg = rand_number(2, 6); +#if defined(CAMPAIGN_DL) + mob_num = 40199; +#else mob_num = 9499; +#endif num = dice(1, 4) + 2; break; diff --git a/objsave.c b/objsave.c index b25ac23c..3aede9fb 100755 --- a/objsave.c +++ b/objsave.c @@ -643,6 +643,10 @@ int Crash_delete_crashfile(struct char_data *ch) int rentcode; char line[READ_SIZE]; + #ifdef OBJSAVE_DB + return FALSE; + #endif + if (!get_filename(filename, sizeof(filename), CRASH_FILE, GET_NAME(ch))) return FALSE; @@ -1161,17 +1165,14 @@ void Crash_rentsave(struct char_data *ch, int cost) char del_buf[2048]; if (mysql_query(conn, "start transaction;")) { - log("SYSERR: Unable to start transaction for saving of player object data: %s", - mysql_error(conn)); + log("SYSERR: Unable to start transaction for saving of player object data: %s", mysql_error(conn)); return; } /* Delete existing save data. In the future may just flag these for deletion. */ - snprintf(del_buf, sizeof(del_buf), "delete from player_save_objs where name = '%s';", - GET_NAME(ch)); + snprintf(del_buf, sizeof(del_buf), "delete from player_save_objs where name = '%s';", GET_NAME(ch)); if (mysql_query(conn, del_buf)) { - log("SYSERR: Unable to delete player object save data: %s", - mysql_error(conn)); + log("SYSERR: Unable to delete player object save data: %s", mysql_error(conn)); return; } #endif diff --git a/players.c b/players.c index 5d73f5ba..0de7d2c2 100755 --- a/players.c +++ b/players.c @@ -592,6 +592,8 @@ int load_char(const char *name, struct char_data *ch) GET_EIDOLON_LONG_DESCRIPTION(ch) = NULL; GET_EIDOLON_SHORT_DESCRIPTION(ch) = NULL; + VITAL_STRIKING(ch) = FALSE; + for (i = 0; i < MAX_BAGS; i++) { GET_BAG_NAME(ch, i) = NULL; @@ -1259,6 +1261,8 @@ int load_char(const char *name, struct char_data *ch) case 'V': if (!strcmp(tag, "Vars")) read_saved_vars_ascii(fl, ch, atoi(line)); + else if (!strcmp(tag, "VitS")) + VITAL_STRIKING(ch) = atoi(line); break; case 'W': @@ -1550,6 +1554,9 @@ void save_char(struct char_data *ch, int mode) fprintf(fl, "MiDf: %d\n", GET_MISSION_DIFFICULTY(ch)); fprintf(fl, "MiRN: %d\n", GET_MISSION_NPC_NAME_NUM(ch)); + if (VITAL_STRIKING(ch)) + fprintf(fl, "VitS: %d\n", VITAL_STRIKING(ch)); + sprintascii(bits, PLR_FLAGS(ch)[0]); sprintascii(bits2, PLR_FLAGS(ch)[1]); sprintascii(bits3, PLR_FLAGS(ch)[2]); diff --git a/psionics.c b/psionics.c index d4f55764..fb710651 100644 --- a/psionics.c +++ b/psionics.c @@ -94,7 +94,7 @@ void assign_psionic_powers(void) psiono(PSIONIC_BIOFEEDBACK, "biofeedback", 3, true, 3, 100, TELEPATHY, TAR_CHAR_ROOM, false, MAG_AFFECTS, "You feel your biofeedback protection expire.", 2); psiono(PSIONIC_BODY_EQUILIBRIUM, "body equilibrium", 3, true, 1, 100, PSYCHOMETABOLISM, TAR_CHAR_ROOM | TAR_SELF_ONLY, false, MAG_AFFECTS, "You feel your body equillibrium fade.", 2); psiono(PSIONIC_BREACH, "breach", 3, false, 1, 100, PSYCHOPORTATION, TAR_IGNORE, false, MAG_MANUAL, NULL, 2); - psiono(PSIONIC_CONCEALING_AMORPHA, "concealing amorpha", 3, true, 3, 100, METACREATIVITY, TAR_CHAR_ROOM | TAR_SELF_ONLY, false, MAG_AFFECTS, "The concealing amorpha surrounding you dissipates.", 2); + psiono(PSIONIC_CONCEALING_AMORPHA, "concealing amorpha", 3, true, 3, 100, METACREATIVITY, TAR_CHAR_ROOM, false, MAG_AFFECTS, "The concealing amorpha surrounding you dissipates.", 2); psiono(PSIONIC_CONCUSSION_BLAST, "concussion blast", 3, true, 2, 100, PSYCHOKINESIS, TAR_CHAR_ROOM | TAR_NOT_SELF, true, MAG_AREAS, NULL, 2); psiono(PSIONIC_DETECT_HOSTILE_INTENT, "detect hostile intent", 3, false, 0, 0, TELEPATHY, TAR_CHAR_ROOM | TAR_SELF_ONLY, false, MAG_AFFECTS, "Your psychic ability to detect nearby danger has passed.", 2); psiono(PSIONIC_ELFSIGHT, "elfsight", 3, false, 0, 0, PSYCHOMETABOLISM, TAR_CHAR_ROOM | TAR_SELF_ONLY, false, MAG_AFFECTS, "Your elfsight wears off.", 2); diff --git a/race.c b/race.c index b31c97be..5834c603 100755 --- a/race.c +++ b/race.c @@ -817,7 +817,7 @@ void assign_races(void) /*morph to-char*/ "Your body twists and contorts painfully until your form becomes a Mountain Dwarf.", /*morph to-room*/ "$n's body twists and contorts painfully until $s form becomes a Mountain Dwarf."); set_race_genders(DL_RACE_MOUNTAIN_DWARF, N, Y, Y); /* n m f */ - set_race_abilities(DL_RACE_MOUNTAIN_DWARF, 1, 2, 0, 0, 0, 0); /* str con int wis dex cha */ + set_race_abilities(DL_RACE_MOUNTAIN_DWARF, 2, 2, 0, 0, 0, 0); /* str con int wis dex cha */ set_race_alignments(DL_RACE_MOUNTAIN_DWARF, Y, Y, Y, Y, Y, Y, Y, Y, Y); /* law-good -> cha-evil */ set_race_attack_types(DL_RACE_MOUNTAIN_DWARF, /* hit sting whip slash bite bludgeon crush pound claw maul thrash pierce */ @@ -4544,16 +4544,14 @@ const char *get_region_info(int region) case REGION_NOSTAR: return "Nostar is a large island located west of Ansalon, 40 miles southeast of Enstar, and over 80 miles south of Southern Ergoth. Nostar is roughly 60 miles east to west and 40 miles north to south. It is an island of large grasslands, forests, and rolling hills, mostly inhabited by goblins, hobgoblins, and bugbears in the interior, with a few humans and elves living close to the coastline. The geographical features of this island are a rock formation known as the Three Brothers, located on the eastern part of the island, and an unnamed egg-shaped lake in the center of the island. Nostar was also known for a type of black wine that was produced on the island."; case REGION_QUALINESTI: return "Qualinesti, one of the prominent elven nations on Ansalon, was a realm of great beauty and grace. Nestled deep within the towering forests of the continent of Ansalon, Qualinesti was home to the Qualinesti Elves, a subrace of the elven people known for their wisdom, refinement, and dedication to preserving the natural world. The nation was ruled by the Speaker of the Suns, who was both a political leader and a spiritual guide for the elves. The capital city, Qualinost, was a breathtaking sight, featuring intricately designed treetop cities and bridges, emphasizing the elves' close connection to the forest. The elven architecture was a testament to their harmony with nature, as they sought to coexist with the land rather than dominate it. During the War of the Lance, Qualinesti found itself in a perilous situation as it faced the threat of the dragonarmies of Takhisis. Despite their commitment to neutrality and peace, the Qualinesti Elves were forced to defend their homeland against the advancing armies. The war had a profound impact on Qualinesti, testing the elves' strength, determination, and their relationship with their neighboring elven nation, Silvanesti. Qualinesti's resilience and the sacrifices made by its people during this tumultuous time became emblematic of the elven spirit and their enduring connection to the land they cherished."; case REGION_SANCRIST_ISLE: return "The Isle of Sancrist is the westernmost landmass of all of Ansalon. It is located west of Northern Ergoth and north and northwest of Cristyne in the Sirrion Sea. The isle is considered to have two sections: Gunthar and Sancrist. The Sancrist area has many mountain ranges, including the Gargath Mountains, the Majestic Mountains, the Numbered Mountains, the Skyfisher Range, the Sun Range, and the Caves of Pyrothraxus. The Gunthar section of Sancrist Isle has the Whitestone River which leads from the Whitestone Glade to Thalan Bay. It is where the Whitestone Council was held that united the forces of good against the evil Dragonarmies, and it also is home to Mount Nevermind, the peculiar mountain-city of most gnomes who call Krynn home."; - case REGION_SCHALLSEA: return ""; - case REGION_SILVANESTI: return ""; - case REGION_SOLAMNIA: return ""; - case REGION_SOUTHERN_ERGOTH: return ""; - case REGION_TAMAN_BUSUK: return ""; - case REGION_TARSIS: return ""; - case REGION_TEYR: return ""; - case REGION_THORADIN: return ""; - case REGION_THORBARDIN: return ""; - case REGION_THROTL: return ""; + case REGION_SCHALLSEA: return "Schallsea is an island east of Abanasinia. It is, for the most part, populated by humans. It is located in Newsea, separated from Abanasinia in by the Straits of Schallsea. Schallsea is about 200 miles long and 80 miles wide. Schallsea has a large croup of hills called the Barren Hills in the center, dividing it roughly in half. Schallsea also has a number of streams. Schallsea did not exist prior to the Cataclysm, it was formed when Newsea flooded the lands in the middle of Ansalon. The Blue Dragonarmies fought the Que-Nal, a group of people on the island, on Schallsea."; + case REGION_SILVANESTI: return "The original elven kingdom in Ansalon, from where the Kagonesti and Qualinesti elves probably came. Holding capital at Silvanost, this kingdom is famous for its marble buildings, garden-like forests and the towers of Eru at the mouths of the Thon-Thalas. The Cataclysm ended Istar's dominance over the world. After the disaster, Silvanesti sent out scouts to report the damage done to their nation. The effects of the Cataclysm had been catastrophic. Blaming the disaster upon the humans, the elves remained in their kingdom and continued to remain isolated from the world. In 349 AC, Silvanesti was drawn into the War of the Lance. First negotiating a peace with the great Dragonarmies, the elves were soon betrayed. The dark forces turned south and into the woodland border. Knowing his nation's destruction was imminent, the elven King Lorac used a dragon orb that he had rescued from Istar prior to the empire's destruction. While the population of Silvanesti fled south and west out of the nation, the king tried to drive the invading armies and dragons out of the land. Unable to control the power of the Dragonorb, the artifact instead took control of King Lorac and threw the nation of Silvanesti into a nightmare state. The forest and everyone in it became twisted into an evil mockery of what they once were. Seeing the elven nation warping before their very eyes, the Dragonarmies quickly retreated out of the nation desperately trying to reach safety. For thirty long years, the refugees of Silvanesti would remain without a homeland. While the majority of the population lived at Silvamori on Southern Ergoth, the rest worked hard to try and destroy the nightmare that plagued their lands."; + case REGION_SOLAMNIA: return "Solamnia is a human nation in northwestern Ansalon. Solamnia has just about every geographical feature: fertile plains, three mountain ranges (the Vingaard Mountains, Dargaard Mountains and the Garnet Mountains), the longest river, the Vingaard River, and the Northern Wastes. Not a perfectly flat land, has ridges, gullies, dry creek beds, small stands of trees, mostly a grassy steppe land. People from Solamnia are referred to as being Solamnic or Solamnian and they speak Solamnic or some of the Knights speak Old Solamnic. Slavery is outlawed in Solamnia, and if you are caught having slaves, the punishment is very severe. Solamnia's chief exports are grain and cattle. The provinces that make up Solamnia are Coastlund in the west, Palanthas east of that, Hinterlund on the border with Nightlund, Plains of Solamnia also on the border with Nightlund, Elkholm and Heartlund south of Plains of Solamnia, and Southlund southwest of Heartlund. In Southlund, in the area are Caergoth, the area is known for very violent thunderstorms. From Coastlund in the west, to Hinterlund in the east, live a variety of people—mostly humans, but small bands of ogres and draconians are far too common. Originally located in the center of the Ansalonian continent, Solamnia is now very much a sea-going state because the Cataclysm dumped three oceans around its borders. In the years following the Cataclysm, the commoners of Solamnia blame the Knights of Solamnia for the Cataclysm. Some Knights go into hiding while others throw down their sword and armor to leave the Knighthood forever. These are the dark ages for Solamnia and the Knighthood. In the year 334 AC, peasants led by Ragnell revolted against the nation, leading to the destruction of some major castles and death to a few prominent Solamnic families. In the year 351 AC, Dragonarmies invade eastern Solamnia, quickly overrunning the Knights of Solamnia there and pushing them all the way to the High Clerist's Tower by 352 AC. Solamnia is also betrayed and Dragonarmies are allowed to invade from the south, but thanks to Solamnia's allies of the Kayolin dwarves, the dwarves are able to hold the invaders until the Knights could regroup and hold the Dragonarmies in the south in a stalemate."; + case REGION_SOUTHERN_ERGOTH: return "Southern Ergoth is an island located west of Ansalon and south of Northern Ergoth that was created when the Cataclysm tore Ergoth in two. Southern Ergoth stretches about 250 miles from north to south. The major geographical features of Southern Ergoth are the Sirrion Sea that surrounds the island, the Straits of Algoni that separate it from Ansalon, Morgash Lake which is just north of the capital city of Daltigoth, the Last Gaard Mountains running down the center of Southern Ergoth with Foghaven Vale in the mountains, Harkun Bay on the southern coastline, Plains of Tothen located in the southwestern coastline, Plains of Kri on the southern coastline, and the River Ergot located in the northeast. In the years following the Cataclysm, Southern Ergoth has had a close working relationship with Northern Ergoth, trying to restore the Empire. Southern Ergoth has been ruled from Daltigoth by regents appointed by the Redic Dynasty. The forests of Southern Ergoth became the homeland for the Kagonesti Elves. During the War of the Lance, the elves of Qualinesti and Silvanesti moved their people to Southern Ergoth to escape from the invading Dragonarmies. They enslaved the Kagonesti to build them cities while in exile. "; + case REGION_TAMAN_BUSUK: return "Taman Busuk is the melting pot for all the 'evil' races of Ansalon. This region contains three of the most important dark cities: Sanction, Neraka, and Gargath. Taman Busuk borders the Estwilde and Kern in the north and Zhakar in the south. For the most part, Taman Busuk is a mountainous region, with the exception of the wastelands located in the south. The Khalkists are broken in few places, most notable Godshome and Gargath. As a state, Taman Busuk is very weak, but the cities within it are much more important."; + case REGION_TARSIS: return "The small nation of Tarsis is centred around the great trade city of the same name. In the Pre-Cataclius Ansalon, Tarsis was a respected Lordcity of the realm, which was located in the forested region to the east of Kharolis and the west of the Silvanesti nation. The minor town and settlements around Tarsis all benefited with the large trade that the lordcity did with the other nations. However the Cataclysm resulted in the Lordcity of Tarsis becoming landlocked in the newly risen Plains of Dust. The nation once known as Tarsis ceased to exist at this point, and the city of Tarsis became little more than a dusty husk of it's former self that was considered part of this arid realm."; + case REGION_TEYR: return "Teyr is a draconian nation located south of Nordmaar, north of Busuk Taman, and east of Estwilde. It is a mountainous region that has heavy forested lands, and some northern grasslands. The Astivar Mountains are in Teyr, while the Woods of Lahue are west of it. The Great Moors are to the east of it. Mount Brego is located west of the city of Teyr, in the Astivar Mountains, with the Peak of Destiny as the southernmost peak."; + case REGION_THORBARDIN: return "Thorbardin is a dwarven nation located in southwestern Ansalon and is bordered by the nations of Qualinesti to the north, Plains of Dust to the east, and Kharolis to the south. The major geographical features of Thorbardin is the Kharolis Mountains which is most of the nation, the Plains of Dergoth which is a barren wasteland, the Urkhan Sea which is located inside of Thorbardin, and the Valley of Thanes. The Dwarven realm of Thorbardin not only refers to the kingdom under Cloudseeker Mountain, but also much of the land surrounding the Kharolis Mountains. During the War of the Lance in 351 AC, Thorbardin is besieged by Highlord Verminaard and his Red Dragonarmy at the northern gate. They are never able to gain access to Thorbardin. But a small band called the Companions leading the Refugees of Pax Tharkas are allowed entry into the kingdom for a time. During that time, the Companions find the Hammer of Kharas that had been thought lost since the Dwarfgate War many years ago. After finding it, they give it to Glade Hornfel Kytil who becomes the first King of Thorbardin since the Dwarfgate War."; } return "Undefined"; } diff --git a/spec_procs.c b/spec_procs.c index aab32a46..17ed71a7 100755 --- a/spec_procs.c +++ b/spec_procs.c @@ -2305,7 +2305,7 @@ SPECIAL(quicksand) new_affect(&af); af.spell = SPELL_HOLD_PERSON; SET_BIT_AR(af.bitvector, AFF_PARALYZED); - af.duration = 5; + af.duration = 3; affect_join(ch, &af, TRUE, FALSE, FALSE, FALSE); return TRUE; diff --git a/spell_parser.c b/spell_parser.c index 824e6b18..f29dad35 100755 --- a/spell_parser.c +++ b/spell_parser.c @@ -2365,6 +2365,8 @@ return; } // First, see what is the maximum augment usage allowed + if (GET_AUGMENT_PSP(ch) > max_augment_psp_allowed(ch, spellnum)) + send_to_char(ch, "Your augment PSP has been capped at %d.\r\n", max_augment_psp_allowed(ch, spellnum)); GET_AUGMENT_PSP(ch) = MIN(GET_AUGMENT_PSP(ch), max_augment_psp_allowed(ch, spellnum)); // then adjust it to the specifications of the level and power used @@ -2978,7 +2980,7 @@ void mag_assign_spells(void) "You feel weaker.", 2, 7, TRANSMUTATION, FALSE); // wiz2, cle1 spello(SPELL_GRACE, "grace", 65, 50, 1, POS_FIGHTING, TAR_CHAR_ROOM, FALSE, MAG_AFFECTS, - "You feel less dextrous.", 2, 7, TRANSMUTATION, FALSE); // wiz2, cle1 + "You feel less dexterous.", 2, 7, TRANSMUTATION, FALSE); // wiz2, cle1 spello(SPELL_SCARE, "scare", 0, 0, 0, POS_FIGHTING, TAR_CHAR_ROOM | TAR_FIGHT_VICT, TRUE, MAG_AFFECTS, "You no longer feel scared.", 1, 7, ILLUSION, FALSE); // wiz1, cle2 @@ -3037,7 +3039,7 @@ void mag_assign_spells(void) spello(SPELL_MASS_STRENGTH, "mass strength", 0, 0, 0, POS_FIGHTING, TAR_IGNORE, FALSE, MAG_GROUPS, "You feel weaker.", 5, 19, TRANSMUTATION, FALSE); spello(SPELL_MASS_GRACE, "mass grace", 0, 0, 0, POS_FIGHTING, TAR_IGNORE, - FALSE, MAG_GROUPS, "You feel less dextrous.", 5, 19, TRANSMUTATION, FALSE); + FALSE, MAG_GROUPS, "You feel less dexterous.", 5, 19, TRANSMUTATION, FALSE); spello(SPELL_MASS_ENDURANCE, "mass endurance", 0, 0, 0, POS_FIGHTING, TAR_IGNORE, FALSE, MAG_GROUPS, "Your magical endurance has faded away.", 5, 19, TRANSMUTATION, FALSE); /** end shared list **/ diff --git a/spell_prep.c b/spell_prep.c index 36e9bad5..66c1dbfd 100644 --- a/spell_prep.c +++ b/spell_prep.c @@ -2541,7 +2541,7 @@ EVENTFUNC(event_preparation) if (!SPELL_PREP_QUEUE(ch, class)) { *buf = '\0'; - send_to_char(ch, "%s\r\n", spell_prep_dict[class][3]); + send_to_char(ch, "Your %s are complete.\r\n", spell_prep_dict[class][3]); snprintf(buf, sizeof(buf), "$n completes $s %s.", spell_prep_dict[class][3]); act(buf, FALSE, ch, 0, 0, TO_ROOM); set_preparing_state(ch, class, FALSE); diff --git a/structs.h b/structs.h index c1b4df9e..9c2deedf 100755 --- a/structs.h +++ b/structs.h @@ -14,6 +14,9 @@ #include "bool.h" /* for bool */ +#include "protocol.h" /* Kavir Plugin*/ +#include "lists.h" + // You will need to add a campaign.h file, which is not included in the git repo. // You can leave it blank, unless you want to add special campaign/theme-specific // code separate from the regular Luminari code. In this case add a #define @@ -21,9 +24,6 @@ // and add theme-specific code. This is mainly used for the Faerun codebase. #include "campaign.h" -#include "protocol.h" /* Kavir Plugin*/ -#include "lists.h" - /** Intended use of this macro is to allow external packages to work with a * variety of versions without modifications. For instance, an IS_CORPSE() * macro was introduced in pl13. Any future code add-ons could take into @@ -859,21 +859,18 @@ #define REGION_NORDMAAR 13 #define REGION_NORTHERN_ERGOTH 14 #define REGION_NOSTAR 15 -#define REGION_PRINCIPALITY_OF_KHAROLIS 16 -#define REGION_QUALINESTI 17 -#define REGION_SANCRIST_ISLE 18 -#define REGION_SCHALLSEA 19 -#define REGION_SILVANESTI 20 -#define REGION_SOLAMNIA 21 -#define REGION_SOUTHERN_ERGOTH 22 -#define REGION_TAMAN_BUSUK 23 -#define REGION_TARSIS 24 -#define REGION_TEYR 25 -#define REGION_THORADIN 26 -#define REGION_THORBARDIN 27 -#define REGION_THROTL 28 - -#define NUM_REGIONS 29 +#define REGION_QUALINESTI 16 +#define REGION_SANCRIST_ISLE 17 +#define REGION_SCHALLSEA 18 +#define REGION_SILVANESTI 19 +#define REGION_SOLAMNIA 20 +#define REGION_SOUTHERN_ERGOTH 21 +#define REGION_TAMAN_BUSUK 22 +#define REGION_TARSIS 23 +#define REGION_TEYR 24 +#define REGION_THORBARDIN 25 + +#define NUM_REGIONS 26 #else @@ -1049,8 +1046,11 @@ #define MOB_DRAGON_KNIGHT 87 #define MOB_MUMMY_DUST 88 #define MOB_EIDOLON 89 +#define MOB_BLOCK_EVIL 90 +#define MOB_BLOCK_NEUTRAL 91 +#define MOB_BLOCK_GOOD 92 /**********************/ -#define NUM_MOB_FLAGS 90 +#define NUM_MOB_FLAGS 93 /**********************/ /**********************/ @@ -1215,9 +1215,10 @@ #define PRF_LIFE_BOND 65 // Summoner's life bond ability/feat #define PRF_CHARMIE_COMBATROLL 66 // Will display combat roll info for any of your charmies in battle. #define PRF_AUTO_PREP 67 +#define PRF_AUGMENT_BUFFS 68 // Will attempt to use max psp to augment buffs /** Total number of available PRF flags */ -#define NUM_PRF_FLAGS 68 +#define NUM_PRF_FLAGS 69 /* Affect bits: used in char_data.char_specials.saved.affected_by */ /* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */ @@ -4303,7 +4304,6 @@ struct char_special_data int mounted_blocks_left; /* how many mounted combat blocks left in the round */ int deflect_arrows_left; /* deflect arrows left */ struct condensed_combat_data *condensed_combat; /* condensed combat struct */ - bool vital_strike; /* if we're using vital strike */ /* Mode Data */ @@ -4624,6 +4624,8 @@ struct player_special_data_saved int merge_forms_timer; // How long the merge forms process lasts char *bag_names[MAX_BAGS+1]; // nicknames for the characters' bags int fixed_bab; // This is the character's final bab which is set upon reaching lvl 20 and determines # of attacks per round + bool vital_strike; /* if we're using vital strike */ + }; /** Specials needed only by PCs, not NPCs. Space for this structure is @@ -4699,6 +4701,7 @@ struct player_special_data int buff_timer; bool is_buffing; struct char_data *buff_target; + char *unstuck; }; /** Special data used by NPCs, not PCs */ diff --git a/transport.c b/transport.c index 278d8b55..e3bfb34d 100644 --- a/transport.c +++ b/transport.c @@ -260,7 +260,7 @@ ACMDU(do_carriage) if (GET_ROOM_VNUM(IN_ROOM(ch)) != atoi(carriage_locales[i][1]) && ((here != 999) ? (carriage_locales[here][3] == carriage_locales[i][3]) : TRUE)) { found = true; - send_to_char(ch, "%-30s %4s %10d %10d (%s)\r\n", carriage_locales[i][0], carriage_locales[i][2], get_distance(ch, i, here, TRAVEL_CARRIAGE), get_travel_time(ch, 10, i, here, TRAVEL_CARRIAGE), carriage_locales[i][4]); + send_to_char(ch, "%-30s %4s %10d %10d (%s)\r\n", carriage_locales[i][0], carriage_locales[i][2], get_distance(ch, i, here, TRAVEL_CARRIAGE), get_travel_time(ch, 5, i, here, TRAVEL_CARRIAGE), carriage_locales[i][4]); } i++; } @@ -438,6 +438,15 @@ void enter_transport(struct char_data *ch, int locale, int type, int here) break; } + int speed = 0; + + switch (type) + { + case TRAVEL_CARRIAGE: speed = 3; break; + case TRAVEL_SAILING: speed = 5; break; + default: speed = 2; break; + } + room_rnum to_room = NOWHERE; if (type == TRAVEL_CARRIAGE) @@ -541,7 +550,7 @@ void enter_transport(struct char_data *ch, int locale, int type, int here) char_pets_to_char_loc(tch); tch->player_specials->destination = to_room; // need to take care of this part still for overland flight spell - tch->player_specials->travel_timer = get_travel_time(tch, 10, locale, here, type); + tch->player_specials->travel_timer = get_travel_time(tch, speed, locale, here, type); tch->player_specials->travel_type = type; tch->player_specials->travel_locale = locale; look_at_room(tch, 0); @@ -794,9 +803,8 @@ int get_travel_time(struct char_data *ch, int speed, int locale, int here, int t distance *= 10; - if (speed == 0) - speed = 10; + speed = 2; #ifdef CAMPAIGN_FR distance *= 5; @@ -807,7 +815,8 @@ int get_travel_time(struct char_data *ch, int speed, int locale, int here, int t distance /= 2; #if defined(CAMPAIGN_DL) - distance /= 3; + + distance /= speed; #endif return distance; diff --git a/utils.c b/utils.c index 12610e52..58f798ab 100755 --- a/utils.c +++ b/utils.c @@ -268,6 +268,8 @@ int compute_channel_energy_level(struct char_data *ch) int level = 0; level += CLASS_LEVEL(ch, CLASS_CLERIC); + level += CLASS_LEVEL(ch, CLASS_INQUISITOR); + level += CLASS_LEVEL(ch, CLASS_SACRED_FIST); level += MAX(0, CLASS_LEVEL(ch, CLASS_PALADIN) - 4); level += MAX(0, CLASS_LEVEL(ch, CLASS_BLACKGUARD) - 4); level += CLASS_LEVEL(ch, CLASS_MYSTIC_THEURGE) / 2; @@ -5685,6 +5687,12 @@ bool is_flying(struct char_data *ch) if (AFF_FLAGGED(ch, AFF_FLYING)) return TRUE; + if (RIDING(ch)) + { + if (AFF_FLAGGED(RIDING(ch), AFF_FLYING)) + return TRUE; + } + return FALSE; } @@ -8623,4 +8631,76 @@ bool is_crafting_kit(struct obj_data *kit) return true; } +int get_apply_type_gear_mod(struct char_data *ch, int apply) +{ + int i = 0, j = 0, full_bonus = 0; + int bonuses[NUM_BONUS_TYPES]; + struct obj_data *obj; + + for (i = 0; i < NUM_BONUS_TYPES; i++) + bonuses[i] = 0; + + for (i = 0; i < NUM_WEARS; i++) + { + if ((obj = GET_EQ(ch, i))) + { + for (j = 0; j < 6; j++) + { + if (obj->affected[j].location == apply) + { + if (BONUS_TYPE_STACKS(obj->affected[j].bonus_type)) + { + bonuses[obj->affected[j].bonus_type] += obj->affected[j].modifier; + } + else if (obj->affected[j].modifier > bonuses[obj->affected[j].bonus_type]) + { + bonuses[obj->affected[j].bonus_type] = obj->affected[j].modifier; + } + } + } + } + } + + for (i = 0; i < NUM_BONUS_TYPES; i++) + full_bonus += bonuses[i]; + + return full_bonus; +} + +int get_fast_healing_amount(struct char_data *ch) +{ + int hp = 0; + + if (affected_by_spell(ch, SPELL_GREATER_PLANAR_HEALING)) + hp += 4; + else if (affected_by_spell(ch, SPELL_PLANAR_HEALING)) + hp += 1; + + if (affected_by_spell(ch, AFFECT_PLANAR_SOUL_SURGE)) + hp += 2; + + if (affected_by_spell(ch, EIDOLON_MERGE_FORMS_EFFECT)) + hp += get_char_affect_modifier(ch, EIDOLON_MERGE_FORMS_EFFECT, APPLY_FAST_HEALING); + + hp += get_char_affect_modifier(ch, AFFECT_FOOD, APPLY_FAST_HEALING); + hp += get_char_affect_modifier(ch, AFFECT_DRINK, APPLY_FAST_HEALING); + + hp += HAS_EVOLUTION(ch, EVOLUTION_FAST_HEALING) * 2; + + hp += get_apply_type_gear_mod(ch, APPLY_FAST_HEALING); + + return hp; +} + +int get_hp_regen_amount(struct char_data *ch) +{ + int hp = 0; + + hp += get_char_affect_modifier(ch, AFFECT_FOOD, APPLY_HP_REGEN); + hp += get_char_affect_modifier(ch, AFFECT_DRINK, APPLY_HP_REGEN); + hp += get_apply_type_gear_mod(ch, APPLY_HP_REGEN); + + return hp; +} + /* EoF */ diff --git a/utils.h b/utils.h index 3e478cb8..176fe9b5 100755 --- a/utils.h +++ b/utils.h @@ -244,6 +244,9 @@ bool room_is_daylit(room_rnum room); bool can_naturally_stealthy(struct char_data *ch); bool can_one_with_shadows(struct char_data *ch); int get_party_size_same_room(struct char_data *ch); +int get_apply_type_gear_mod(struct char_data *ch, int apply); +int get_fast_healing_amount(struct char_data *ch); +int get_hp_regen_amount(struct char_data *ch); int get_avg_party_level_same_room(struct char_data *ch); int get_max_party_level_same_room(struct char_data *ch); int levenshtein_distance(const char *s1, const char *s2); @@ -1008,7 +1011,7 @@ void char_from_furniture(struct char_data *ch); // *** char_specials (there are others spread about utils.h file) *** // #define GET_ELDRITCH_SHAPE(ch) ((ch)->char_specials.eldritch_shape) #define GET_ELDRITCH_ESSENCE(ch) ((ch)->char_specials.eldritch_essence) -#define VITAL_STRIKING(ch) ((ch)->char_specials.vital_strike) +#define VITAL_STRIKING(ch) ((ch)->player_specials->saved.vital_strike) /** Current position (standing, sitting) of ch. */ #define GET_POS(ch) ((ch)->char_specials.position) /** Timer */