--- deliantra/server/common/living.C 2010/03/26 00:59:20 1.108 +++ deliantra/server/common/living.C 2010/03/28 16:17:27 1.110 @@ -812,7 +812,7 @@ glow_radius = arch->glow_radius; move_type = arch->move_type; - chosen_skill = 0; + object *chosen_skill = 0; /* initializing resistances from the values in player/monster's * archetype clone @@ -897,8 +897,7 @@ if ((tmp->flag [FLAG_APPLIED] && tmp->type != CONTAINER && tmp->type != CLOSE_CON) - || (tmp->type == SKILL - && tmp->subtype == SK_PRAYING)) + || (tmp->type == SKILL && tmp->subtype == SK_PRAYING)) { if (type == PLAYER) { @@ -936,8 +935,7 @@ slot[i].used += tmp->slot[i].info; if (tmp->type == SYMPTOM) - speed_reduce_from_disease = - min (speed_reduce_from_disease, tmp->last_sp ? tmp->last_sp / 100.f : 1.f); + min_it (speed_reduce_from_disease, tmp->last_sp ? tmp->last_sp / 100.f : 1.f); /* Pos. and neg. protections are counted separate (-> pro/vuln). * (Negative protections are calculated exactly like positive.) @@ -1000,15 +998,6 @@ switch (tmp->type) { -#if 0 - case WAND: - case ROD: - case HORN: - if (type != PLAYER || current_weapon == tmp) - chosen_skill = tmp; - break; -#endif - /* skills modifying the character -b.t. */ /* for all skills and skill granting objects */ case SKILL: @@ -1053,14 +1042,15 @@ ac -= tmp->stats.ac + tmp->magic; if (settings.spell_encumbrance == TRUE && type == PLAYER) - contr->encumbrance += (int) 3 *tmp->weight / 1000; + contr->encumbrance += 3 * tmp->weight / 1000; } break; case SHIELD: if (settings.spell_encumbrance == TRUE && type == PLAYER) - contr->encumbrance += (int) tmp->weight / 2000; + contr->encumbrance += tmp->weight / 2000; + //FALLTHROUGH case RING: case AMULET: case GIRDLE: @@ -1079,10 +1069,20 @@ break; + case WAND: + case ROD: + case HORN: + case SKILL_TOOL: + if (type != PLAYER) + chosen_skill = find_skill_by_name (this, tmp->skill); + break; + case BOW: case WEAPON: if (type != PLAYER || current_weapon == tmp) { + chosen_skill = find_skill_by_name (this, tmp->skill); + wc -= tmp->stats.wc + tmp->magic; if (tmp->stats.ac && tmp->stats.ac + tmp->magic > 0) @@ -1151,6 +1151,9 @@ } /* item is equipped */ } /* for loop of items */ + if (type != PLAYER) + this->chosen_skill = chosen_skill; + glow_radius = min (glow_radius, MAX_LIGHT_RADIUS); /* We've gone through all the objects the player has equipped. For many things, we