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.22 by root, Tue Dec 26 08:54:59 2006 UTC vs.
Revision 1.27 by root, Mon Jan 8 20:39:48 2007 UTC

1/* 1/*
2 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
3 3
4 Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
5 Copyright (C) 1992 Frank Tore Johansen 6 Copyright (C) 1992 Frank Tore Johansen
6 7
7 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
191static const char *const drain_msg[NUM_STATS] = { 192static const char *const drain_msg[NUM_STATS] = {
192 "Oh no! You are weakened!", 193 "Oh no! You are weakened!",
193 "You're feeling clumsy!", 194 "You're feeling clumsy!",
194 "You feel less healthy", 195 "You feel less healthy",
195 "You suddenly begin to lose your memory!", 196 "You suddenly begin to lose your memory!",
196 "Your face gets distorted!",
197 "Watch out, your mind is going!", 197 "Watch out, your mind is going!",
198 "Your spirit feels drained!" 198 "Your spirit feels drained!"
199 "Your face gets distorted!",
199}; 200};
200const char *const restore_msg[NUM_STATS] = { 201const char *const restore_msg[NUM_STATS] = {
201 "You feel your strength return.", 202 "You feel your strength return.",
202 "You feel your agility return.", 203 "You feel your agility return.",
203 "You feel your health return.", 204 "You feel your health return.",
205 "You feel your memory return.",
204 "You feel your wisdom return.", 206 "You feel your wisdom return.",
207 "You feel your spirits return."
205 "You feel your charisma return.", 208 "You feel your charisma return.",
206 "You feel your memory return.",
207 "You feel your spirits return."
208}; 209};
209const char *const gain_msg[NUM_STATS] = { 210const char *const gain_msg[NUM_STATS] = {
210 "You feel stronger.", 211 "You feel stronger.",
211 "You feel more agile.", 212 "You feel more agile.",
212 "You feel healthy.", 213 "You feel healthy.",
214 "You feel smarter.",
213 "You feel wiser.", 215 "You feel wiser.",
216 "You feel more potent."
214 "You seem to look better.", 217 "You seem to look better.",
215 "You feel smarter.",
216 "You feel more potent."
217}; 218};
218const char *const lose_msg[NUM_STATS] = { 219const char *const lose_msg[NUM_STATS] = {
219 "You feel weaker!", 220 "You feel weaker!",
220 "You feel clumsy!", 221 "You feel clumsy!",
221 "You feel less healthy!", 222 "You feel less healthy!",
223 "You feel stupid!",
222 "You lose some of your memory!", 224 "You lose some of your memory!",
225 "You feel less potent!"
223 "You look ugly!", 226 "You look ugly!",
224 "You feel stupid!",
225 "You feel less potent!"
226}; 227};
227 228
228const char *const statname[NUM_STATS] = { 229const char *const statname[NUM_STATS] = {
229 "strength", "dexterity", "constitution", "intelligence", "wisdom", "power", "charisma" 230 "strength", "dexterity", "constitution", "intelligence", "wisdom", "power", "charisma"
230}; 231};
832 float f, max = 9, added_speed = 0, bonus_speed = 0, sp_tmp, speed_reduce_from_disease = 1; 833 float f, max = 9, added_speed = 0, bonus_speed = 0, sp_tmp, speed_reduce_from_disease = 1;
833 int weapon_weight = 0, weapon_speed = 0; 834 int weapon_weight = 0, weapon_speed = 0;
834 int best_wc = 0, best_ac = 0, wc = 0, ac = 0; 835 int best_wc = 0, best_ac = 0, wc = 0, ac = 0;
835 int prot[NROFATTACKS], vuln[NROFATTACKS], potion_resist[NROFATTACKS]; 836 int prot[NROFATTACKS], vuln[NROFATTACKS], potion_resist[NROFATTACKS];
836 object *grace_obj = NULL, *mana_obj = NULL, *wc_obj = NULL, *tmp; 837 object *grace_obj = NULL, *mana_obj = NULL, *wc_obj = NULL, *tmp;
838 float old_speed = speed;
837 839
838 /* First task is to clear all the values back to their original values */ 840 /* First task is to clear all the values back to their original values */
839 if (type == PLAYER) 841 if (type == PLAYER)
840 { 842 {
841 for (i = 0; i < NUM_STATS; i++) 843 for (i = 0; i < NUM_STATS; i++)
1028 if (tmp->type != POTION) 1030 if (tmp->type != POTION)
1029 { 1031 {
1030 for (i = 0; i < NROFATTACKS; i++) 1032 for (i = 0; i < NROFATTACKS; i++)
1031 { 1033 {
1032 /* Potential for cursed potions, in which case we just can use 1034 /* Potential for cursed potions, in which case we just can use
1033 * a straight MAX, as potion_resist is initialized to zero. 1035 * a straight MAX, as potion_resist is initialised to zero.
1034 */ 1036 */
1035 if (tmp->type == POTION_EFFECT) 1037 if (tmp->type == POTION_EFFECT)
1036 { 1038 {
1037 if (potion_resist[i]) 1039 if (potion_resist[i])
1038 potion_resist[i] = MAX (potion_resist[i], tmp->resist[i]); 1040 potion_resist[i] = MAX (potion_resist[i], tmp->resist[i]);
1502 if (move_type == 0) 1504 if (move_type == 0)
1503 move_type = MOVE_WALK; 1505 move_type = MOVE_WALK;
1504 else if (move_type & (MOVE_FLY_LOW | MOVE_FLY_HIGH)) 1506 else if (move_type & (MOVE_FLY_LOW | MOVE_FLY_HIGH))
1505 move_type &= ~MOVE_WALK; 1507 move_type &= ~MOVE_WALK;
1506 1508
1509 if (speed != old_speed)
1507 set_speed (speed); 1510 set_speed (speed);
1508 1511
1509 /* It is quite possible that a player's spell costing might have changed, 1512 /* It is quite possible that a player's spell costing might have changed,
1510 * so we will check that now. 1513 * so we will check that now.
1511 */ 1514 */
1512 if (type == PLAYER) 1515 if (type == PLAYER)
1676 */ 1679 */
1677 CLEAR_FLAG (skill_obj, FLAG_CAN_USE_SKILL); 1680 CLEAR_FLAG (skill_obj, FLAG_CAN_USE_SKILL);
1678 skill_obj->stats.exp = 0; 1681 skill_obj->stats.exp = 0;
1679 skill_obj->level = 1; 1682 skill_obj->level = 1;
1680 insert_ob_in_ob (skill_obj, op); 1683 insert_ob_in_ob (skill_obj, op);
1684
1681 if (op->contr) 1685 if (op->contr)
1682 { 1686 {
1683 op->contr->last_skill_ob[skill_obj->subtype] = skill_obj; 1687 op->contr->last_skill_ob [skill_obj->subtype] = skill_obj;
1684 op->contr->last_skill_exp[skill_obj->subtype] = -1; 1688 if (op->contr->ns)
1689 op->contr->ns->last_skill_exp[skill_obj->subtype] = -1;//TODO: should be made superfluous
1685 } 1690 }
1691
1686 return skill_obj; 1692 return skill_obj;
1687} 1693}
1688 1694
1689 1695
1690/* player_lvl_adj() - for the new exp system. we are concerned with 1696/* player_lvl_adj() - for the new exp system. we are concerned with

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines