ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/living.C
(Generate patch)

Comparing deliantra/server/common/living.C (file contents):
Revision 1.109 by root, Sun Mar 28 02:53:45 2010 UTC vs.
Revision 1.112 by root, Sun Mar 28 16:41:45 2010 UTC

928 if (tmp->type == WEAPON) 928 if (tmp->type == WEAPON)
929 current_weapon = tmp; 929 current_weapon = tmp;
930 } 930 }
931 931
932 /* Update slots used for items */ 932 /* Update slots used for items */
933 if (QUERY_FLAG (tmp, FLAG_APPLIED)) 933 if (tmp->flag [FLAG_APPLIED])
934 for (int i = 0; i < NUM_BODY_LOCATIONS; i++) 934 for (int i = 0; i < NUM_BODY_LOCATIONS; i++)
935 slot[i].used += tmp->slot[i].info; 935 slot[i].used += tmp->slot[i].info;
936 936
937 if (tmp->type == SYMPTOM) 937 if (tmp->type == SYMPTOM)
938 speed_reduce_from_disease =
939 min (speed_reduce_from_disease, tmp->last_sp ? tmp->last_sp / 100.f : 1.f); 938 min_it (speed_reduce_from_disease, tmp->last_sp ? tmp->last_sp / 100.f : 1.f);
940 939
941 /* Pos. and neg. protections are counted separate (-> pro/vuln). 940 /* Pos. and neg. protections are counted separate (-> pro/vuln).
942 * (Negative protections are calculated exactly like positive.) 941 * (Negative protections are calculated exactly like positive.)
943 * Resistance from potions are treated special as well. If there's 942 * Resistance from potions are treated special as well. If there's
944 * more than one potion-effect, the bigger prot.-value is taken. 943 * more than one potion-effect, the bigger prot.-value is taken.
945 */ 944 */
946 if (tmp->type != POTION) 945 if (tmp->type == POTION_EFFECT)
947 {
948 for (int i = 0; i < NROFATTACKS; i++) 946 for (int i = 0; i < NROFATTACKS; i++)
949 { 947 {
950 /* Potential for cursed potions, in which case we just can use 948 /* Potential for cursed potions, in which case we just can use
951 * a straight MAX, as potion_resist is initialised to zero. 949 * a straight MAX, as potion_resist is initialised to zero.
950 // TODO: this is askign for a magic marker optimisation
952 */ 951 */
953 if (tmp->type == POTION_EFFECT)
954 {
955 if (potion_resist[i]) 952 if (potion_resist[i])
956 potion_resist[i] = max (potion_resist[i], tmp->resist[i]); 953 max_it (potion_resist[i], tmp->resist[i]);
957 else 954 else
958 potion_resist[i] = tmp->resist[i]; 955 potion_resist[i] = tmp->resist[i];
959 } 956 }
957 else if (tmp->type != POTION)
958 for (int i = 0; i < NROFATTACKS; i++)
960 else if (tmp->resist[i] > 0) 959 if (tmp->resist[i] > 0)
961 prot[i] += ((100 - prot[i]) * tmp->resist[i]) / 100; 960 prot[i] += ((100 - prot[i]) * tmp->resist[i]) / 100;
962 else if (tmp->resist[i] < 0) 961 else if (tmp->resist[i] < 0)
963 vuln[i] += ((100 - vuln[i]) * -tmp->resist[i]) / 100; 962 vuln[i] += ((100 - vuln[i]) * -tmp->resist[i]) / 100;
964 }
965 }
966 963
967 /* There may be other things that should not adjust the attacktype */ 964 /* There may be other things that should not adjust the attacktype */
968 if (tmp->type != SYMPTOM) 965 if (tmp->type != SYMPTOM)
969 { 966 {
970 attacktype |= tmp->attacktype; 967 attacktype |= tmp->attacktype;
1041 1038
1042 if (tmp->stats.ac) 1039 if (tmp->stats.ac)
1043 ac -= tmp->stats.ac + tmp->magic; 1040 ac -= tmp->stats.ac + tmp->magic;
1044 1041
1045 if (settings.spell_encumbrance == TRUE && type == PLAYER) 1042 if (settings.spell_encumbrance == TRUE && type == PLAYER)
1046 contr->encumbrance += (int) 3 *tmp->weight / 1000; 1043 contr->encumbrance += 3 * tmp->weight / 1000;
1047 } 1044 }
1048 1045
1049 break; 1046 break;
1050 1047
1051 case SHIELD: 1048 case SHIELD:
1052 if (settings.spell_encumbrance == TRUE && type == PLAYER) 1049 if (settings.spell_encumbrance == TRUE && type == PLAYER)
1053 contr->encumbrance += (int) tmp->weight / 2000; 1050 contr->encumbrance += tmp->weight / 2000;
1051 //FALLTHROUGH
1054 case RING: 1052 case RING:
1055 case AMULET: 1053 case AMULET:
1056 case GIRDLE: 1054 case GIRDLE:
1057 case HELMET: 1055 case HELMET:
1058 case BOOTS: 1056 case BOOTS:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines