I am trying to write a cleric spec_pro so they cast in combat, I based it
on the magic_user spec_pro that I just rewrote. The magic_user spec_proc
works great, but clerics will not cast in combat.
<code to follow>
SPECIAL(cleric_ao)
{
int num_used, tmp = 0;
struct char_data *vict;
if (cmd || GET_POS(ch) != POS_FIGHTING)
return FALSE;
/* pseudo-randomly choose someone in the room who is fighting me */
for (vict = world[ch->in_room].people; vict; vict = vict->next_in_room)
--More--(52%)
if (FIGHTING(vict) == ch && !number(0, 4))
break;
/* if I didn't pick any of those, then just slam the guy I'm fighting */
if (vict == NULL)
vict = FIGHTING(ch);
num_used = 8;
tmp = number(1, 10);
if ((tmp == 4) || (tmp == 5)) {
tmp = number(1, num_used);
if ((tmp == 1) && (GET_LEVEL(ch) > 13)) {
cast_spell(ch, vict, NULL, SPELL_EARTHQUAKE);
return TRUE;
}
if ((tmp == 2) && ((GET_LEVEL(ch) > 8) && IS_EVIL(vict))) {
cast_spell(ch, vict, NULL, SPELL_DISPEL_EVIL);
return TRUE;
}
--More--(54%)
if ((tmp == 3) && ((GET_LEVEL(ch) > 8) && IS_GOOD(vict))) {
cast_spell(ch, vict, NULL, SPELL_DISPEL_GOOD);
return TRUE;
}
if ((tmp == 4) && (GET_LEVEL(ch) > 4 && affected_by_spell(ch,
SPELL_CURSE))) {
cast_spell(ch, ch, NULL, SPELL_REMOVE_CURSE);
return TRUE;
}
if ((tmp == 5) && (GET_LEVEL(ch) > 6 && affected_by_spell(ch,
SPELL_POISON))) {
cast_spell(ch, ch, NULL, SPELL_REMOVE_POISON);
return TRUE;
}
if (tmp == 6) {
cast_spell(ch, ch, NULL, SPELL_CURE_LIGHT);
return TRUE;
}
--More--(57%)
if (tmp == 7 && GET_LEVEL(ch) > 8) {
cast_spell(ch, ch, NULL, SPELL_CURE_CRITIC);
return TRUE;
}
if (tmp == 8 && GET_LEVEL(ch) > 10) {
cast_spell(ch, ch, NULL, SPELL_HEAL);
return TRUE;
}
}
return FALSE;
}
--Ziz, NetShamen
This archive was generated by hypermail 2b30 : 12/07/00 PST