Hi Working on a circle bpl17 modified. I've run into a problem with a manual spell I created. It's intended as an area spell and it's working wonderfully until one mob dies then the spell breaks out of it's loop and exits after that death I can't see where this should since all it does is call the damage function and then continues on which is exactly the same as mag_damage does in the end therefor I can't see why it should stop Executing the spell. I hope someone has a thought on the matter. PS: Other simple area spells are working just fine. // Mailer Code funky line breaks included // ASPELL(spell_prismatic_spray) { struct char_data *vict, *temp_ch; int ray_color = 0, doubleup = 0, dam = 0, rounds = 0, dead_yesno = 0; act("$n hand issues a spray of prismatic colors.", FALSE, ch, 0, 0, TO_ROOM); act("Your hand issues a spray of prismatic colors.", FALSE, ch, 0, 0, TO_CHAR); for (vict = world[IN_ROOM(ch)].people; vict; vict = temp_ch) { temp_ch = vict->next_in_room; if (vict == ch) continue; if (!IS_NPC(vict) && AFF_FLAGGED(vict, AFF_GROUP) && (vict->master == ch->master || vict->master == ch)) continue; if (AFF_FLAGGED(vict, AFF_CHARM) && vict->master == ch->master) continue; ray_color = number(1, 8); if (ray_color == 8) { doubleup = 2; ray_color = number(1, 7); } else { doubleup = 1; } for(rounds = 0; rounds < doubleup; rounds++) { if (dead_yesno < 0) continue; switch(ray_color) { case 1: act("You hit $N with a spray of gleaming red.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of gleaming red.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of gleaming red.", FALSE, ch, 0, vict, TO_VICT); mag_affects(GET_LEVEL(ch), ch, vict, SPELL_WEAKEN, 0); dam = ((GET_LEVEL(ch)/5) * 4) + 10; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; case 2: act("You hit $N with a spray of bright orange.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of bright orange.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of bright orange.", FALSE, ch, 0, vict, TO_VICT); mag_affects(GET_LEVEL(ch), ch, vict, SPELL_BLINDNESS, 0); dam = ((GET_LEVEL(ch)/5) * 6) + 20; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; case 3: act("You hit $N with a spray of sparkling yellow.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of sparkling yellow.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of sparkling yellow.", FALSE, ch, 0, vict, TO_VICT); dam = ((GET_LEVEL(ch)/4) * 8) + 30; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; case 4: act("You hit $N with a spray of dark green.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of dark green.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of dark green.", FALSE, ch, 0, vict, TO_VICT); mag_affects(GET_LEVEL(ch), ch, vict, SPELL_POISON, 0); dam = ((GET_LEVEL(ch)/5) * 4) + 10; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; case 5: act("You hit $N with a spray of amazing blue.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of amazing blue.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of amazing blue.", FALSE, ch, 0, vict, TO_VICT); mag_affects(GET_LEVEL(ch), ch, vict, SPELL_HOLD_MONSTER, 0); dam = ((GET_LEVEL(ch)/5) * 4) + 10; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; case 6: act("You hit $N with a spray of gleaming indigo.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of gleaming indigo.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of gleaming indigo.", FALSE, ch, 0, vict, TO_VICT); mag_affects(GET_LEVEL(ch), ch, vict, SPELL_SILENCE, 0); dam = ((GET_LEVEL(ch)/5) * 4) + 10; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; case 7: act("You hit $N with a spray of murky violet.", FALSE, ch, 0, vict, TO_CHAR); act("$N is hit by $n's spray of murky violet.", FALSE, ch, 0, vict, TO_ROOM); act("You are hit by a ray of murky violet.", FALSE, ch, 0, vict, TO_VICT); dam = ((GET_LEVEL(ch)/5) * 4) + 10; dead_yesno = damage(ch, vict, dam, SPELL_PRISMATIC_SPRAY); break; default: act("Contact an immortal.", FALSE, ch, 0, vict, TO_CHAR); act("Contact an immortal.", FALSE, ch, 0, vict, TO_ROOM); act("Contact an immortal.", FALSE, ch, 0, vict, TO_VICT); break; } ray_color = number(1, 7); } } } -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT