Working on my test server. unified diff sent to gaeorn.
Code:
int Mob::CalcSpellEffectValue(int16 spell_id, int effect_id, int caster_level, Mob *caster, int ticsremaining)
{
int formula, base, max, effect_value;
if
(
!IsValidSpell(spell_id) ||
effect_id < 0 ||
effect_id >= EFFECT_COUNT
)
return 0;
formula = spells[spell_id].formula[effect_id];
base = spells[spell_id].base[effect_id];
max = spells[spell_id].max[effect_id];
if(IsBlankSpellEffect(spell_id, effect_id))
return 0;
effect_value = CalcSpellEffectValue_formula(formula, base, max, caster_level, spell_id, ticsremaining);
if(caster && IsBardSong(spell_id) &&
(spells[spell_id].effectid[effect_id] != SE_AttackSpeed) &&
(spells[spell_id].effectid[effect_id] != SE_AttackSpeed2) &&
(spells[spell_id].effectid[effect_id] != SE_AttackSpeed3) &&
(spells[spell_id].effectid[effect_id] != SE_Lull) &&
(spells[spell_id].effectid[effect_id] != SE_ChangeFrenzyRad) &&
(spells[spell_id].effectid[effect_id] != SE_Harmony)) {
int oval = effect_value;
int mod = caster->GetInstrumentMod(spell_id);
effect_value = effect_value * mod / 10;
mlog(SPELLS__BARDS, "Effect value %d altered with bard modifier of %d to yeild %d", oval, mod, effect_value);
}
return(effect_value);
}