bool IsGroupHealOverTimeSpell(uint16 spell_id) { if(IsGroupSpell(spell_id) && IsHealOverTimeSpell(spell_id) && spells[spell_id].buffduration < 10) return true; else return false; }
bool IsRegularGroupHealSpell(uint16 spell_id) { if(IsGroupSpell(spell_id) && !IsCompleteHealSpell(spell_id) && !IsHealOverTimeSpell(spell_id)) return true; else return false; }
bool IsGroupCompleteHealSpell(uint16 spell_id) { if(IsGroupSpell(spell_id) && IsCompleteHealSpell(spell_id)) return true; else return false; }
bool IsHealOverTimeSpell(uint16 spell_id) { if (IsEffectInSpell(spell_id, SE_HealOverTime) && !IsGroupSpell(spell_id)) return true; return false; }
bool IsBeneficialSpell(uint16 spell_id) { if(!IsValidSpell(spell_id)) return false; if(spells[spell_id].goodEffect == 1){ SpellTargetType tt = spells[spell_id].targettype; if(tt != ST_Self && tt != ST_Pet){ if(IsEffectInSpell(spell_id, SE_CancelMagic)) return false; } if(tt == ST_Target || tt == ST_AETarget || tt == ST_Animal || tt == ST_Undead || tt == ST_Pet) { uint16 sai = spells[spell_id].SpellAffectIndex; if(spells[spell_id].resisttype == RESIST_MAGIC){ if(sai == SAI_Calm || sai == SAI_Dispell_Sight || sai == SAI_Memory_Blur || sai == SAI_Calm_Song) return false; }else{ // Bind Sight and Cast Sight if(sai == SAI_Dispell_Sight && spells[spell_id].skill == 18 && !IsEffectInSpell(spell_id, SE_VoiceGraft)) return false; } } } return spells[spell_id].goodEffect != 0 || IsGroupSpell(spell_id); }
bool IsCompleteHealSpell(uint16 spell_id) { if (spell_id == 13 || IsEffectInSpell(spell_id, SE_CompleteHeal) || IsPercentalHealSpell(spell_id) && !IsGroupSpell(spell_id)) return true; return false; }
bool IsRegularSingleTargetHealSpell(uint16 spell_id) { if(spells[spell_id].effectid[0] == 0 && spells[spell_id].base[0] > 0 && spells[spell_id].targettype == ST_Target && spells[spell_id].buffduration == 0 && !IsFastHealSpell(spell_id) && !IsCompleteHealSpell(spell_id) && !IsHealOverTimeSpell(spell_id) && !IsGroupSpell(spell_id)) return true; return false; }
bool IsVeryFastHealSpell(uint16 spell_id) { const int MaxFastHealCastingTime = 1000; if (spells[spell_id].cast_time <= MaxFastHealCastingTime && spells[spell_id].effectid[0] == 0 && spells[spell_id].base[0] > 0 && !IsGroupSpell(spell_id)) return true; return false; }
bool IsBeneficialSpell(uint16 spell_id) { if (!IsValidSpell(spell_id)) return false; // You'd think just checking goodEffect flag would be enough? if (spells[spell_id].goodEffect == 1) { // If the target type is ST_Self or ST_Pet and is a SE_CancleMagic spell // it is not Beneficial SpellTargetType tt = spells[spell_id].targettype; if (tt != ST_Self && tt != ST_Pet && IsEffectInSpell(spell_id, SE_CancelMagic)) return false; // When our targettype is ST_Target, ST_AETarget, ST_Aniaml, ST_Undead, or ST_Pet // We need to check more things! if (tt == ST_Target || tt == ST_AETarget || tt == ST_Animal || tt == ST_Undead || tt == ST_Pet) { uint16 sai = spells[spell_id].SpellAffectIndex; // If the resisttype is magic and SpellAffectIndex is Calm/memblur/dispell sight // it's not beneficial if (spells[spell_id].resisttype == RESIST_MAGIC) { if (sai == SAI_Calm || sai == SAI_Dispell_Sight || sai == SAI_Memory_Blur || sai == SAI_Calm_Song) return false; } else { // If the resisttype is not magic and spell is Bind Sight or Cast Sight // It's not beneficial if (sai == SAI_Dispell_Sight && spells[spell_id].skill == 18 && !IsEffectInSpell(spell_id, SE_VoiceGraft)) return false; } } } // And finally, if goodEffect is not 0 or if it's a group spell it's beneficial return spells[spell_id].goodEffect != 0 || IsGroupSpell(spell_id); }
bool IsBeneficialSpell(int16 spell_id) { // EverHood - These spells are actually detrimental if(spells[spell_id].goodEffect == 1){ SpellTargetType tt = spells[spell_id].targettype; if(tt != ST_Self || tt != ST_Pet){ if(IsEffectInSpell(spell_id, SE_CancelMagic)) return false; } if(tt == ST_Target || tt == ST_AETarget || tt == ST_Animal || tt == ST_Undead || tt == ST_Pet) { int16 sai = spells[spell_id].SpellAffectIndex; if(spells[spell_id].resisttype == RESIST_MAGIC){ if(sai == SAI_Calm || sai == SAI_Dispell_Sight || sai == SAI_Memory_Blur || sai == SAI_Calm_Song) return false; }else{ // Bind Sight and Cast Sight if(sai == SAI_Dispell_Sight && spells[spell_id].skill == 18) return false; } } } return spells[spell_id].goodEffect != 0 || IsGroupSpell(spell_id); }