--- deliantra/server/common/living.C 2007/01/18 19:42:09 1.31 +++ deliantra/server/common/living.C 2007/04/24 12:32:14 1.36 @@ -679,7 +679,7 @@ void object::drain_stat () { - drain_specific_stat (RANDOM () % NUM_STATS); + drain_specific_stat (rndm (NUM_STATS)); } void @@ -757,7 +757,7 @@ /* Randomly change the players luck. Basically, we move it * back neutral (if greater>0, subtract, otherwise add) */ - if (RANDOM () % (FABS (tmp->stats.luck)) >= rndm (30)) + if (rndm (abs (tmp->stats.luck)) >= rndm (30)) { int diff = tmp->stats.luck > 0 ? -1 : 1; @@ -820,12 +820,10 @@ * and players; the "player" in the name is purely an archaic inheritance. * This functions starts from base values (archetype or player object) * and then adjusts them according to what the player has equipped. + * + * July 95 - inserted stuff to handle new skills/exp system - b.t. + * spell system split, grace points now added to system --peterm */ - -/* July 95 - inserted stuff to handle new skills/exp system - b.t. - spell system split, grace points now added to system --peterm - */ - void object::update_stats () { @@ -859,9 +857,9 @@ * range_magic (what spell is readied). These three below * well get filled in based on what the player has equipped. */ - contr->ranges[range_bow] = NULL; - contr->ranges[range_misc] = NULL; - contr->ranges[range_skill] = NULL; + contr->ranges[range_bow] = 0; + contr->ranges[range_misc] = 0; + contr->ranges[range_skill] = 0; } memcpy (body_used, body_info, sizeof (body_info)); @@ -928,7 +926,6 @@ /* OK - we've reset most all the objects attributes to sane values. * now go through and make adjustments for what the player has equipped. */ - for (tmp = inv; tmp; tmp = tmp->below) { /* See note in map.c:update_position about making this additive @@ -1023,7 +1020,7 @@ } /* Pos. and neg. protections are counted seperate (-> pro/vuln). - * (Negative protections are calculated extactly like positive.) + * (Negative protections are calculated exactly like positive.) * Resistance from potions are treated special as well. If there's * more than one potion-effect, the bigger prot.-value is taken. */ @@ -1042,9 +1039,9 @@ potion_resist[i] = tmp->resist[i]; } else if (tmp->resist[i] > 0) - prot[i] += ((100 - prot[i]) * tmp->resist[i]) / 100; + prot[i] += ((100 - prot[i]) * tmp->resist[i]) / 100; else if (tmp->resist[i] < 0) - vuln[i] += ((100 - vuln[i]) * (-tmp->resist[i])) / 100; + vuln[i] += ((100 - vuln[i]) * -tmp->resist[i]) / 100; } } @@ -1517,6 +1514,10 @@ esrv_update_stats (contr); esrv_update_spells (contr); } + + // update the mapspace, if we are on a map + if (!flag [FLAG_REMOVED] && map) + map->at (x, y).flags_ = 0; } /* @@ -1953,6 +1954,7 @@ player_lvl_adj (op, tmp); } } + if (flag != SK_SUBTRACT_SKILL_EXP) { del_exp = check_exp_loss (op, exp); @@ -1961,8 +1963,6 @@ } } - - /* change_exp() - changes experience to a player/monster. This * does bounds checking to make sure we don't overflow the max exp. * @@ -1972,7 +1972,6 @@ * flag is what to do if player doesn't have the skill. * these last two values are only used for players. */ - void change_exp (object *op, sint64 exp, const char *skill_name, int flag) { @@ -2027,8 +2026,7 @@ * a particular skill, so we don't need to pass that * along. */ - subtract_player_exp (op, FABS (exp), skill_name, flag); - + subtract_player_exp (op, abs (exp), skill_name, flag); } }