--- deliantra/server/common/living.C 2008/12/04 01:07:34 1.91 +++ deliantra/server/common/living.C 2008/12/23 00:39:48 1.94 @@ -860,10 +860,7 @@ if (QUERY_FLAG (tmp, FLAG_APPLIED) && tmp->type == POTION) continue; - /* See note in map.c:update_position about making this additive - * since light sources are never applied, need to put check here. - */ - glow_radius = max (glow_radius, tmp->glow_radius); + glow_radius += tmp->glow_radius; /* For some things, we don't care what is equipped */ if (tmp->type == SKILL) @@ -1151,7 +1148,8 @@ } /* switch tmp->type */ } /* item is equipped */ } /* for loop of items */ - fprintf (stderr, "gr %s %d\n", &name, glow_radius);//D + + glow_radius = min (glow_radius, MAX_LIGHT_RADIUS); /* We've gone through all the objects the player has equipped. For many things, we * have generated intermediate values which we now need to assign. @@ -1772,7 +1770,7 @@ } /* This function checks to make sure that object 'op' can - * lost 'exp' experience. It returns the amount of exp + * lose 'exp' experience. It returns the amount of exp * object 'op' can in fact lose - it basically makes * adjustments based on permanent exp and the like. * This function should always be used for losing experience - @@ -1786,14 +1784,18 @@ if (exp > op->stats.exp) exp = op->stats.exp; + if (settings.permanent_exp_ratio) { del_exp = (sint64) ((op->stats.exp - op->perm_exp) * PERM_EXP_MAX_LOSS_RATIO); + if (del_exp < 0) del_exp = 0; + if (exp > del_exp) exp = del_exp; } + return exp; } @@ -1803,7 +1805,7 @@ if (exp < 0) return check_exp_loss (op, exp); else - return MIN (exp, (sint64) MAX_EXPERIENCE - op->stats.exp); + return min (exp, (sint64)MAX_EXPERIENCE - op->stats.exp); } /* Subtracts experience from player. @@ -1926,15 +1928,13 @@ void apply_death_exp_penalty (object *op) { - object *tmp; sint64 loss; sint64 percentage_loss; /* defined by the setting 'death_penalty_percent' */ sint64 level_loss; /* defined by the setting 'death_penalty_levels */ - for (tmp = op->inv; tmp; tmp = tmp->below) + for (object *tmp = op->inv; tmp; tmp = tmp->below) 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)]; @@ -1946,18 +1946,19 @@ if (level_loss < 0) level_loss = 0; - loss = check_exp_loss (tmp, MIN (level_loss, percentage_loss)); + loss = check_exp_loss (tmp, min (level_loss, percentage_loss)); tmp->stats.exp -= loss; player_lvl_adj (op, tmp); } percentage_loss = op->stats.exp * settings.death_penalty_ratio / 100; - level_loss = op->stats.exp - levels[MAX (0, op->level - settings.death_penalty_level)]; + level_loss = op->stats.exp - levels[max (0, op->level - settings.death_penalty_level)]; if (level_loss < 0) level_loss = 0; - loss = check_exp_loss (op, MIN (level_loss, percentage_loss)); + + loss = check_exp_loss (op, min (level_loss, percentage_loss)); op->stats.exp -= loss; player_lvl_adj (op, NULL);