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.59 by root, Sat May 17 15:25:19 2008 UTC vs.
Revision 1.62 by root, Mon Jul 14 00:04:57 2008 UTC

148 new_bolt->duration++; 148 new_bolt->duration++;
149 new_bolt->stats.dam /= 2; /* reduce daughter bolt damage */ 149 new_bolt->stats.dam /= 2; /* reduce daughter bolt damage */
150 new_bolt->stats.dam++; 150 new_bolt->stats.dam++;
151 tmp->stats.dam /= 2; /* reduce father bolt damage */ 151 tmp->stats.dam /= 2; /* reduce father bolt damage */
152 tmp->stats.dam++; 152 tmp->stats.dam++;
153
153 if ((new_bolt = m->insert (new_bolt, sx, sy, op))) 154 if ((new_bolt = m->insert (new_bolt, sx, sy, op)))
154 update_turn_face (new_bolt); 155 update_turn_face (new_bolt);
155} 156}
156 157
157/* move_bolt: moves bolt 'op'. Basically, it just advances a space, 158/* move_bolt: moves bolt 'op'. Basically, it just advances a space,
742 check_spell_knockback (op); 743 check_spell_knockback (op);
743 744
744 if (op->destroyed ()) 745 if (op->destroyed ())
745 return; 746 return;
746 747
747 if ((op->duration--) < 0) 748 if (op->duration-- < 0)
748 { 749 {
749 op->destroy (); 750 op->destroy ();
750 return; 751 return;
751 } 752 }
752 /* Object has hit maximum range, so don't have it move 753 /* Object has hit maximum range, so don't have it move
1610 * about. was called move_ball_lightning, but since more than the ball 1611 * about. was called move_ball_lightning, but since more than the ball
1611 * lightning spell used it, that seemed misnamed. 1612 * lightning spell used it, that seemed misnamed.
1612 * op is the spell effect. 1613 * op is the spell effect.
1613 * note that duration is handled by process_object() in time.c 1614 * note that duration is handled by process_object() in time.c
1614 */ 1615 */
1615
1616void 1616void
1617move_ball_spell (object *op) 1617move_ball_spell (object *op)
1618{ 1618{
1619 int i, j, dam_save, dir, mflags; 1619 int i, j, dam_save, dir, mflags;
1620 sint16 nx, ny, hx, hy; 1620 sint16 nx, ny, hx, hy;
1747 1747
1748 op->duration--; 1748 op->duration--;
1749 1749
1750 int basedir = op->direction; 1750 int basedir = op->direction;
1751 if (!basedir) 1751 if (!basedir)
1752 {
1752 /* spray in all directions! 8) */ 1753 /* spray in all directions! 8) */
1753 basedir = (op->facing += op->state) % 8 + 1; 1754 op->facing = (op->facing + op->state) & 7;
1755 basedir = op->facing + 1;
1756 }
1754 1757
1755#if 0 1758#if 0
1756 // this is bogus: it causes wrong places to be checked below 1759 // this is bogus: it causes wrong places to be checked below
1757 // (a wall 2 cells away will block the effect...) and 1760 // (a wall 2 cells away will block the effect...) and
1758 // doesn't work for SP_BULLET anyhow, so again tests the wrong 1761 // doesn't work for SP_BULLET anyhow, so again tests the wrong
1840{ 1843{
1841 if (!spell->other_arch) 1844 if (!spell->other_arch)
1842 return 0; 1845 return 0;
1843 1846
1844 object *tmp = archetype::get (SWARM_SPELL); 1847 object *tmp = archetype::get (SWARM_SPELL);
1848
1845 set_spell_skill (op, caster, spell, tmp); 1849 set_spell_skill (op, caster, spell, tmp);
1846 tmp->level = caster_level (caster, spell); /* needed later, to get level dep. right. */ 1850 tmp->level = caster_level (caster, spell); /* needed later, to get level dep. right. */
1847 tmp->spell = spell->other_arch->instance (); 1851 tmp->spell = spell->other_arch->instance ();
1848 tmp->attacktype = tmp->spell->attacktype; 1852 tmp->attacktype = tmp->spell->attacktype;
1849 1853

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines