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

Comparing deliantra/server/server/spell_effect.C (file contents):
Revision 1.60 by root, Sun Jun 24 01:09:28 2007 UTC vs.
Revision 1.64 by root, Thu Jul 26 00:27:09 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,2007 Mark Wedel & Crossfire Development Team 5 * Copyright (©) 2002,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#include <global.h> 24#include <global.h>
70 return 0; 69 return 0;
71 } 70 }
72 if (!(random_roll (0, 3, op, PREFER_HIGH))) 71 if (!(random_roll (0, 3, op, PREFER_HIGH)))
73 { 72 {
74 new_draw_info_format (NDI_UNIQUE, 0, op, "The %s vibrates violently, then explodes!", query_name (wand)); 73 new_draw_info_format (NDI_UNIQUE, 0, op, "The %s vibrates violently, then explodes!", query_name (wand));
75 play_sound_map (op->map, op->x, op->y, SOUND_OB_EXPLODE); 74 op->play_sound (sound_find ("ob_explode"));
76 esrv_del_item (op->contr, wand->count); 75 esrv_del_item (op->contr, wand->count);
77 wand->destroy (); 76 wand->destroy ();
78 tmp = get_archetype ("fireball"); 77 tmp = get_archetype ("fireball");
79 tmp->stats.dam = (spell_ob->stats.dam + SP_level_dam_adjust (caster, spell_ob)) / 10; 78 tmp->stats.dam = (spell_ob->stats.dam + SP_level_dam_adjust (caster, spell_ob)) / 10;
80 79
611 buf << "Your metabolism is focused on " << change_resist_msg[tmp->stats.exp] << ".\n"; 610 buf << "Your metabolism is focused on " << change_resist_msg[tmp->stats.exp] << ".\n";
612 611
613 break; 612 break;
614 } 613 }
615 } 614 }
615
616 buf << '\0'; // zero-terminate
616 617
617 new_draw_info (NDI_UNIQUE, 0, op, buf.linearise ()); 618 new_draw_info (NDI_UNIQUE, 0, op, buf.linearise ());
618 619
619 return 1; 620 return 1;
620} 621}
1997 object *weapon, *tmp; 1998 object *weapon, *tmp;
1998 char buf[MAX_BUF]; 1999 char buf[MAX_BUF];
1999 int a, i; 2000 int a, i;
2000 sint16 x, y; 2001 sint16 x, y;
2001 maptile *m; 2002 maptile *m;
2002 materialtype_t *mt;
2003 2003
2004 if (!spell->other_arch) 2004 if (!spell->other_arch)
2005 { 2005 {
2006 new_draw_info (NDI_UNIQUE, 0, op, "Oops, program error!"); 2006 new_draw_info (NDI_UNIQUE, 0, op, "Oops, program error!");
2007 LOG (llevError, "animate_weapon failed: spell %s missing other_arch!\n", &spell->name); 2007 LOG (llevError, "animate_weapon failed: spell %s missing other_arch!\n", &spell->name);
2119 2119
2120 /* attacktype */ 2120 /* attacktype */
2121 if (!tmp->attacktype) 2121 if (!tmp->attacktype)
2122 tmp->attacktype = AT_PHYSICAL; 2122 tmp->attacktype = AT_PHYSICAL;
2123 2123
2124 mt = NULL;
2125 if (op->materialname != NULL)
2126 mt = name_to_material (op->materialname); 2124 if (materialtype_t *mt = name_to_material (op->materialname))
2127 if (mt != NULL)
2128 { 2125 {
2129 for (i = 0; i < NROFATTACKS; i++) 2126 for (i = 0; i < NROFATTACKS; i++)
2130 tmp->resist[i] = 50 - (mt->save[i] * 5); 2127 tmp->resist[i] = 50 - (mt->save[i] * 5);
2131 a = mt->save[0]; 2128 a = mt->save[0];
2132 } 2129 }
2134 { 2131 {
2135 for (i = 0; i < NROFATTACKS; i++) 2132 for (i = 0; i < NROFATTACKS; i++)
2136 tmp->resist[i] = 5; 2133 tmp->resist[i] = 5;
2137 a = 10; 2134 a = 10;
2138 } 2135 }
2136
2139 /* Set weapon's immunity */ 2137 /* Set weapon's immunity */
2140 tmp->resist[ATNR_CONFUSION] = 100; 2138 tmp->resist[ATNR_CONFUSION] = 100;
2141 tmp->resist[ATNR_POISON] = 100; 2139 tmp->resist[ATNR_POISON] = 100;
2142 tmp->resist[ATNR_SLOW] = 100; 2140 tmp->resist[ATNR_SLOW] = 100;
2143 tmp->resist[ATNR_PARALYZE] = 100; 2141 tmp->resist[ATNR_PARALYZE] = 100;
2149 2147
2150 /* Improve weapon's armour value according to best save vs. physical of its material */ 2148 /* Improve weapon's armour value according to best save vs. physical of its material */
2151 2149
2152 if (a > 14) 2150 if (a > 14)
2153 a = 14; 2151 a = 14;
2152
2154 tmp->resist[ATNR_PHYSICAL] = 100 - (int) ((100.0 - (float) tmp->resist[ATNR_PHYSICAL]) / (30.0 - 2.0 * a)); 2153 tmp->resist[ATNR_PHYSICAL] = 100 - (int) ((100.0 - (float) tmp->resist[ATNR_PHYSICAL]) / (30.0 - 2.0 * a));
2155 2154
2156 /* Determine golem's speed */ 2155 /* Determine golem's speed */
2157 tmp->set_speed (min (3.33, 0.4 + 0.1 * SP_level_range_adjust (caster, spell))); 2156 tmp->set_speed (min (3.33, 0.4 + 0.1 * SP_level_range_adjust (caster, spell)));
2158 2157

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines