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.60 by root, Sun May 18 17:52:53 2008 UTC vs.
Revision 1.64 by root, Mon Sep 29 06:32:09 2008 UTC

393void 393void
394explode_bullet (object *op) 394explode_bullet (object *op)
395{ 395{
396 object *tmp, *owner; 396 object *tmp, *owner;
397 397
398 if (op->other_arch == NULL) 398 if (!op->other_arch)
399 { 399 {
400 LOG (llevError, "BUG: explode_bullet(): op without other_arch\n"); 400 LOG (llevError, "BUG: explode_bullet(): op without other_arch\n");
401 op->destroy (); 401 op->destroy ();
402 return; 402 return;
403 } 403 }
743 check_spell_knockback (op); 743 check_spell_knockback (op);
744 744
745 if (op->destroyed ()) 745 if (op->destroyed ())
746 return; 746 return;
747 747
748 if ((op->duration--) < 0) 748 if (op->duration-- < 0)
749 { 749 {
750 op->destroy (); 750 op->destroy ();
751 return; 751 return;
752 } 752 }
753 /* Object has hit maximum range, so don't have it move 753 /* Object has hit maximum range, so don't have it move
860 860
861 success = 1; 861 success = 1;
862 tmp = arch_to_object (spell->other_arch); 862 tmp = arch_to_object (spell->other_arch);
863 tmp->set_owner (op); 863 tmp->set_owner (op);
864 set_spell_skill (op, caster, spell, tmp); 864 set_spell_skill (op, caster, spell, tmp);
865 tmp->level = caster_level (caster, spell); 865 tmp->level = casting_level (caster, spell);
866 tmp->attacktype = spell->attacktype; 866 tmp->attacktype = spell->attacktype;
867 867
868 /* holy word stuff */ 868 /* holy word stuff */
869 if ((tmp->attacktype & AT_HOLYWORD) || (tmp->attacktype & AT_GODPOWER)) 869 if ((tmp->attacktype & AT_HOLYWORD) || (tmp->attacktype & AT_GODPOWER))
870 if (!tailor_god_spell (tmp, op)) 870 if (!tailor_god_spell (tmp, op))
1112 effect = arch_to_object (spell->other_arch); 1112 effect = arch_to_object (spell->other_arch);
1113 else 1113 else
1114 return 0; 1114 return 0;
1115 1115
1116 /* tailor the effect by priest level and worshipped God */ 1116 /* tailor the effect by priest level and worshipped God */
1117 effect->level = caster_level (caster, spell); 1117 effect->level = casting_level (caster, spell);
1118 effect->attacktype = spell->attacktype; 1118 effect->attacktype = spell->attacktype;
1119 if (effect->attacktype & (AT_HOLYWORD | AT_GODPOWER)) 1119 if (effect->attacktype & (AT_HOLYWORD | AT_GODPOWER))
1120 { 1120 {
1121 if (tailor_god_spell (effect, op)) 1121 if (tailor_god_spell (effect, op))
1122 new_draw_info_format (NDI_UNIQUE, 0, op, "%s answers your call!", determine_god (op)); 1122 new_draw_info_format (NDI_UNIQUE, 0, op, "%s answers your call!", determine_god (op));
1451 1451
1452 /* We precompute some values here so that we don't have to keep 1452 /* We precompute some values here so that we don't have to keep
1453 * doing it over and over again. 1453 * doing it over and over again.
1454 */ 1454 */
1455 god = find_god (determine_god (op)); 1455 god = find_god (determine_god (op));
1456 level = caster_level (caster, spell); 1456 level = casting_level (caster, spell);
1457 range = spell->range + SP_level_range_adjust (caster, spell); 1457 range = spell->range + SP_level_range_adjust (caster, spell);
1458 1458
1459 /* On the bright side, no monster should ever have a race of GOD_... 1459 /* On the bright side, no monster should ever have a race of GOD_...
1460 * so even if the player doesn't worship a god, if race=GOD_.., it 1460 * so even if the player doesn't worship a god, if race=GOD_.., it
1461 * won't ever match anything. 1461 * won't ever match anything.
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 = casting_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
1850 if (tmp->attacktype & AT_HOLYWORD || tmp->attacktype & AT_GODPOWER) 1854 if (tmp->attacktype & AT_HOLYWORD || tmp->attacktype & AT_GODPOWER)
1851 if (!tailor_god_spell (tmp, op)) 1855 if (!tailor_god_spell (tmp, op))
1994 object *disease = arch_to_object (spell->other_arch); 1998 object *disease = arch_to_object (spell->other_arch);
1995 1999
1996 disease->set_owner (op); 2000 disease->set_owner (op);
1997 set_spell_skill (op, caster, spell, disease); 2001 set_spell_skill (op, caster, spell, disease);
1998 disease->stats.exp = 0; 2002 disease->stats.exp = 0;
1999 disease->level = caster_level (caster, spell); 2003 disease->level = casting_level (caster, spell);
2000 2004
2001 /* do level adjustments */ 2005 /* do level adjustments */
2002 if (disease->stats.wc) 2006 if (disease->stats.wc)
2003 disease->stats.wc += dur_mod / 2; 2007 disease->stats.wc += dur_mod / 2;
2004 2008

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines