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

Comparing deliantra/server/server/spell_attack.C (file contents):
Revision 1.41 by root, Sat Jun 9 21:16:12 2007 UTC vs.
Revision 1.43 by root, Thu Jul 5 08:10:30 2007 UTC

3 * 3 *
4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team 4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
5 * Copyright (©) 2002-2003,2007 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2002-2003,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992,2007 Frank Tore Johansen 6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 * 7 *
8 * Crossfire TRT is free software; you can redistribute it and/or modify it 8 * Crossfire TRT is free software: you can redistribute it and/or modify
9 * under the terms of the GNU General Public License as published by the Free 9 * it under the terms of the GNU General Public License as published by
10 * Software Foundation; either version 2 of the License, or (at your option) 10 * the Free Software Foundation, either version 3 of the License, or
11 * any later version. 11 * (at your option) any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, but 13 * This program is distributed in the hope that it will be useful,
14 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * for more details. 16 * GNU General Public License for more details.
17 * 17 *
18 * You should have received a copy of the GNU General Public License along 18 * You should have received a copy of the GNU General Public License
19 * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51 19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 * 20 *
22 * The authors can be reached via e-mail to <crossfire@schmorp.de> 21 * The authors can be reached via e-mail to <crossfire@schmorp.de>
23 */ 22 */
24 23
25/* This file contains all the spell attack code. Grouping this code 24/* This file contains all the spell attack code. Grouping this code
1254 * we do this by creating a force and inserting it in the 1253 * we do this by creating a force and inserting it in the
1255 * object. if time is 0, the object glows permanently. To truely 1254 * object. if time is 0, the object glows permanently. To truely
1256 * make this work for non-living objects, we would have to 1255 * make this work for non-living objects, we would have to
1257 * give them the capability to have an inventory. b.t. 1256 * give them the capability to have an inventory. b.t.
1258 */ 1257 */
1259
1260int 1258int
1261make_object_glow (object *op, int radius, int time) 1259make_object_glow (object *op, int radius, int time)
1262{ 1260{
1263 object *tmp;
1264
1265 /* some things are unaffected... */ 1261 /* some things are unaffected... */
1266 if (op->path_denied & PATH_LIGHT) 1262 if (op->path_denied & PATH_LIGHT)
1267 return 0; 1263 return 0;
1268 1264
1269 tmp = get_archetype (FORCE_NAME); 1265 object *tmp = get_archetype (FORCE_NAME);
1270 tmp->speed = 0.01; 1266 tmp->speed = 0.01;
1271 tmp->stats.food = time; 1267 tmp->stats.food = time;
1272 SET_FLAG (tmp, FLAG_IS_USED_UP); 1268 SET_FLAG (tmp, FLAG_IS_USED_UP);
1273 tmp->glow_radius = radius; 1269 tmp->glow_radius = radius;
1274 if (tmp->glow_radius > MAX_LIGHT_RADII) 1270 if (tmp->glow_radius > MAX_LIGHT_RADII)
1275 tmp->glow_radius = MAX_LIGHT_RADII; 1271 tmp->glow_radius = MAX_LIGHT_RADII;
1276 1272
1277 tmp->x = op->x;
1278 tmp->y = op->y;
1279 if (tmp->speed < MIN_ACTIVE_SPEED)
1280 tmp->speed = MIN_ACTIVE_SPEED; /* safety */
1281 tmp = insert_ob_in_ob (tmp, op); 1273 tmp = insert_ob_in_ob (tmp, op);
1274
1282 if (tmp->glow_radius > op->glow_radius) 1275 if (tmp->glow_radius > op->glow_radius)
1283 op->glow_radius = tmp->glow_radius; 1276 op->glow_radius = tmp->glow_radius;
1284 1277
1285 if (!tmp->env || op != tmp->env)
1286 {
1287 LOG (llevError, "make_object_glow() failed to insert glowing force in %s\n", &op->name);
1288 return 0;
1289 }
1290 return 1; 1278 return 1;
1291} 1279}
1292 1280
1293int 1281int
1294cast_destruction (object *op, object *caster, object *spell_ob) 1282cast_destruction (object *op, object *caster, object *spell_ob)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines