--- deliantra/server/common/living.C 2009/08/28 22:19:38 1.97 +++ deliantra/server/common/living.C 2009/11/11 04:45:22 1.102 @@ -5,18 +5,19 @@ * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team * Copyright (©) 1992,2007 Frank Tore Johansen * - * Deliantra is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * Deliantra is free software: you can redistribute it and/or modify it under + * the terms of the Affero GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * You should have received a copy of the Affero GNU General Public License + * and the GNU General Public License along with this program. If not, see + * . * * The authors can be reached via e-mail to */ @@ -596,7 +597,7 @@ object *tmp; archetype *at; - at = archetype::find (ARCH_DEPLETION); + at = archetype::find (shstr_depletion); if (!at) { LOG (llevError, "Couldn't find archetype depletion.\n"); @@ -626,7 +627,7 @@ void object::change_luck (int value) { - archetype *at = archetype::find ("luck"); + archetype *at = archetype::find (shstr_luck); if (!at) LOG (llevError, "Couldn't find archetype luck.\n"); else @@ -768,6 +769,8 @@ /* First task is to clear all the values back to their original values */ if (type == PLAYER) { + contr->delayed_update = false; + for (int i = 0; i < NUM_STATS; i++) stat_sum [i] = contr->orig_stats.stat (i); @@ -1406,11 +1409,8 @@ /* It is quite possible that a player's spell costing might have changed, * so we will check that now. */ - if (type == PLAYER) - { - esrv_update_stats (contr); - esrv_update_spells (contr); - } + if (is_player ()) + contr->update_spells (); // update the mapspace, if we are on a map if (!flag [FLAG_REMOVED] && map) @@ -1504,7 +1504,7 @@ * an overall level. Here, the dragon might gain new abilities * or change the ability-focus. */ -void +static void dragon_level_gain (object *who) { object *abil = NULL; /* pointer to dragon ability force */ @@ -1653,12 +1653,7 @@ } if (changed) - { - who->update_stats (); - esrv_update_stats (who->contr); - /* check if the spell data has changed */ - esrv_update_spells (who->contr); - } + who->update_stats (); // should cause esrv_update_stats and esrv_update_spells } /* @@ -1790,7 +1785,7 @@ * the 'exp' value passed should be positive - this is the * amount that should get subtract from the player. */ -sint64 +static sint64 check_exp_loss (const object *op, sint64 exp) { sint64 del_exp; @@ -1949,7 +1944,7 @@ if (tmp->type == SKILL && tmp->stats.exp) { percentage_loss = tmp->stats.exp * settings.death_penalty_ratio / 100; - level_loss = tmp->stats.exp - levels[MAX (0, tmp->level - settings.death_penalty_level)]; + level_loss = tmp->stats.exp - levels [max (0, tmp->level - settings.death_penalty_level)]; /* With the revised exp system, you can get cases where * losing several levels would still require that you have more