I suppose you never checked the spdat.h file(you know where all this is defined):
Code:
#define SE_AddInstrumentMod 260 // *not implemented
and from bonuses.cpp:
Code:
case SE_AllInstrumentMod:
{
if(effect_value > newbon->singingMod)
newbon->singingMod = effect_value;
if(effect_value > newbon->brassMod)
newbon->brassMod = effect_value;
if(effect_value > newbon->percussionMod)
newbon->percussionMod = effect_value;
if(effect_value > newbon->windMod)
newbon->windMod = effect_value;
if(effect_value > newbon->stringedMod)
newbon->stringedMod = effect_value;
break;
}
ie you don't need to use any other field but the effect_base_valueXX.
You say live uses spell effects to boost spells, yet you dont try to copy any live spells?
For example, if you had checked out
Amplification you would have noticed it uses an entirely seperate spell effect(118 ) to boost the singing skill.
Last but not least, your testing method is quite lazy. All you did was open mystats and then get disappointed. Lets look at the mystats code since that takes like 5 seconds:
Code:
std::string bard_info = "";
if(GetClass() == BARD) {
bard_info = indP + "Singing: " + itoa(GetSingMod()) + "<br>" +
indP + "Brass: " + itoa(GetBrassMod()) + "<br>" +
indP + "String: " + itoa(GetStringMod()) + "<br>" +
indP + "Percussion: " + itoa(GetPercMod()) + "<br>" +
indP + "Wind: " + itoa(GetWindMod()) + "<br>";
}
The important bits are GetXXXMod, lets go deeper:
Code:
inline virtual sint16 GetStringMod() const { return itembonuses.stringedMod; }
So to recap, you create a spellbonus to songs, you then check that with a function that only returns the itembonuses and thus you assume the effects are broken and post twice about it.
Searching... not just for the forums!