--- deliantra/server/common/living.C 2007/06/04 12:19:08 1.66
+++ deliantra/server/common/living.C 2007/07/01 05:00:17 1.68
@@ -1,23 +1,22 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
*
* Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
* Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
+ * Crossfire TRT is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along
- * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*
* The authors can be reached via e-mail to
*/
@@ -313,8 +312,8 @@
*/
if (nstat < 1 && i * flag < 0)
nstat = 1;
- else if (nstat > 20 + op->arch->clone.stats.stat (j))
- nstat = 20 + op->arch->clone.stats.stat (j);
+ else if (nstat > 20 + op->arch->stats.stat (j))
+ nstat = 20 + op->arch->stats.stat (j);
if (nstat != ostat)
{
@@ -424,7 +423,7 @@
/* becoming UNDEAD... a special treatment for this flag. Only those not
* originally undead may change their status
*/
- if (!QUERY_FLAG (&op->arch->clone, FLAG_UNDEAD))
+ if (!QUERY_FLAG (op->arch, FLAG_UNDEAD))
if (QUERY_FLAG (op, FLAG_UNDEAD) != QUERY_FLAG (&refop, FLAG_UNDEAD))
{
success = 1;
@@ -435,7 +434,7 @@
}
else
{
- op->race = op->arch->clone.race;
+ op->race = op->arch->race;
new_draw_info (NDI_UNIQUE, 0, op, "Your lifeforce returns!");
}
}
@@ -687,7 +686,7 @@
{
for (int i = 0; i < NUM_STATS; ++i)
{
- sint8 v = arch->clone.stats.stat (i);
+ sint8 v = arch->stats.stat (i);
stats.stat (i) -= v;
contr->orig_stats.stat (i) -= v;
}
@@ -701,7 +700,7 @@
{
for (int i = 0; i < NUM_STATS; ++i)
{
- sint8 v = arch->clone.stats.stat (i);
+ sint8 v = arch->stats.stat (i);
stats.stat (i) += v;
contr->orig_stats.stat (i) += v;
}
@@ -762,23 +761,23 @@
CLEAR_FLAG (this, FLAG_STEALTH);
CLEAR_FLAG (this, FLAG_BLIND);
- if (!QUERY_FLAG (&arch->clone, FLAG_REFL_SPELL )) CLEAR_FLAG (this, FLAG_REFL_SPELL);
- if (!QUERY_FLAG (&arch->clone, FLAG_REFL_MISSILE)) CLEAR_FLAG (this, FLAG_REFL_MISSILE);
- if (!QUERY_FLAG (&arch->clone, FLAG_UNDEAD )) CLEAR_FLAG (this, FLAG_UNDEAD);
- if (!QUERY_FLAG (&arch->clone, FLAG_SEE_IN_DARK )) CLEAR_FLAG (this, FLAG_SEE_IN_DARK);
-
- path_attuned = arch->clone.path_attuned;
- path_repelled = arch->clone.path_repelled;
- path_denied = arch->clone.path_denied;
- glow_radius = arch->clone.glow_radius;
- move_type = arch->clone.move_type;
+ if (!QUERY_FLAG (arch, FLAG_REFL_SPELL )) CLEAR_FLAG (this, FLAG_REFL_SPELL);
+ if (!QUERY_FLAG (arch, FLAG_REFL_MISSILE)) CLEAR_FLAG (this, FLAG_REFL_MISSILE);
+ if (!QUERY_FLAG (arch, FLAG_UNDEAD )) CLEAR_FLAG (this, FLAG_UNDEAD);
+ if (!QUERY_FLAG (arch, FLAG_SEE_IN_DARK )) CLEAR_FLAG (this, FLAG_SEE_IN_DARK);
+
+ path_attuned = arch->path_attuned;
+ path_repelled = arch->path_repelled;
+ path_denied = arch->path_denied;
+ glow_radius = arch->glow_radius;
+ move_type = arch->move_type;
chosen_skill = 0;
/* initializing resistances from the values in player/monster's
* archetype clone
*/
- memcpy (&resist, &arch->clone.resist, sizeof (resist));
+ memcpy (&resist, &arch->resist, sizeof (resist));
for (i = 0; i < NROFATTACKS; i++)
{
@@ -790,8 +789,8 @@
potion_resist[i] = 0;
}
- wc = arch->clone.stats.wc;
- stats.dam = arch->clone.stats.dam;
+ wc = arch->stats.wc;
+ stats.dam = arch->stats.dam;
/* for players which cannot use armour, they gain AC -1 per 3 levels,
* plus a small amount of physical resist, those poor suckers. ;)
@@ -802,14 +801,14 @@
*/
if (!QUERY_FLAG (this, FLAG_USE_ARMOUR) && type == PLAYER)
{
- ac = MAX (-10, arch->clone.stats.ac - level / 3);
+ ac = MAX (-10, arch->stats.ac - level / 3);
prot[ATNR_PHYSICAL] += ((100 - prot[AT_PHYSICAL]) * (80 * level / settings.max_level)) / 100;
}
else
- ac = arch->clone.stats.ac;
+ ac = arch->stats.ac;
- stats.luck = arch->clone.stats.luck;
- speed = arch->clone.speed;
+ stats.luck = arch->stats.luck;
+ speed = arch->speed;
/* OK - we've reset most all the objects attributes to sane values.
* now go through and make adjustments for what the player has equipped.
@@ -962,7 +961,7 @@
if (QUERY_FLAG (tmp, FLAG_BLIND )) SET_FLAG (this, FLAG_BLIND);
if (QUERY_FLAG (tmp, FLAG_SEE_IN_DARK )) SET_FLAG (this, FLAG_SEE_IN_DARK);
- if (QUERY_FLAG (tmp, FLAG_UNDEAD) && !QUERY_FLAG (&arch->clone, FLAG_UNDEAD))
+ if (QUERY_FLAG (tmp, FLAG_UNDEAD) && !QUERY_FLAG (arch, FLAG_UNDEAD))
SET_FLAG (this, FLAG_UNDEAD);
if (QUERY_FLAG (tmp, FLAG_MAKE_INVIS))
@@ -1323,7 +1322,7 @@
speed -= 1;
if (attacktype == 0)
- attacktype = arch->clone.attacktype;
+ attacktype = arch->attacktype;
} /* End if player */
if (added_speed >= 0)
@@ -1380,8 +1379,8 @@
}
/* I want to limit the power of small monsters with big weapons: */
- if (type != PLAYER && arch && stats.dam > arch->clone.stats.dam * 3)
- stats.dam = arch->clone.stats.dam * 3;
+ if (type != PLAYER && arch && stats.dam > arch->stats.dam * 3)
+ stats.dam = arch->stats.dam * 3;
stats.wc = clamp (wc, MIN_WC, MAX_WC);
stats.ac = clamp (ac, MIN_AC, MAX_AC);