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.21 by root, Mon Dec 25 06:53:39 2006 UTC vs.
Revision 1.26 by root, Mon Jan 8 18:18:35 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
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
1507 update_ob_speed (this); 1509 if (speed != old_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