--- deliantra/server/common/living.C 2010/04/30 11:25:48 1.121 +++ deliantra/server/common/living.C 2010/04/30 21:00:39 1.122 @@ -1651,7 +1651,7 @@ * flag is what to do if the player doesn't have the skill: */ static void -add_player_exp (object *op, sint64 exp, const char *skill_name, int flag) +add_player_exp (object *op, sint64 exp, shstr_tmp skill_name, int flag) { object *skill_obj; sint64 limit, exp_to_add; @@ -1775,7 +1775,7 @@ * a postive number. */ static void -subtract_player_exp (object *op, sint64 exp, const char *skill, int flag) +subtract_player_exp (object *op, sint64 exp, shstr_tmp skill, int flag) { float fraction = (float) exp / (float) op->stats.exp; object *tmp; @@ -1784,7 +1784,7 @@ for (tmp = op->inv; tmp; tmp = tmp->below) if (tmp->type == SKILL && tmp->stats.exp) { - if (flag == SK_SUBTRACT_SKILL_EXP && skill && !strcmp (&tmp->skill, skill)) + if (flag == SK_SUBTRACT_SKILL_EXP && skill && tmp->skill == skill) { del_exp = check_exp_loss (tmp, exp); tmp->stats.exp -= del_exp; @@ -1795,7 +1795,7 @@ /* only want to process other skills if we are not trying * to match a specific skill. */ - del_exp = check_exp_loss (tmp, (sint64) (tmp->stats.exp * fraction)); + del_exp = check_exp_loss (tmp, tmp->stats.exp * fraction); tmp->stats.exp -= del_exp; player_lvl_adj (op, tmp); } @@ -1819,7 +1819,7 @@ * these last two values are only used for players. */ void -change_exp (object *op, sint64 exp, const char *skill_name, int flag) +change_exp (object *op, sint64 exp, shstr_tmp skill_name, int flag) { #ifdef EXP_DEBUG LOG (llevDebug, "change_exp() called for %s, exp = %" PRId64 "\n", query_name (op), exp);