I am doing this at work so I haven't really had a chance to test it out but I am 90% sure that replacing GetInstrumentMod with:
Code:
if(GetClass() != BARD)
return(10);
int16 effectmod = 100;
//this should never use spell modifiers...
//if a spell grants better modifers, they are copied into the item mods
//because the spells are supposed to act just like having the intrument.
//item mods are in 10ths of percent increases
switch(spells[spell_id].skill) {
case PERCUSSION_INSTRUMENTS:
if(itembonuses.percussionMod > spellbonuses.percussionMod)
effectmod += itembonuses.percussionMod;
else
effectmod += spellbonuses.percussionMod;
break;
case STRINGED_INSTRUMENTS:
if(itembonuses.stringedMod > spellbonuses.stringedMod)
effectmod += itembonuses.stringedMod;
else
effectmod += spellbonuses.stringedMod;
break;
case WIND_INSTRUMENTS:
if(itembonuses.windMod > spellbonuses.windMod)
effectmod += itembonuses.windMod;
else
effectmod += spellbonuses.windMod;
break;
case BRASS_INSTRUMENTS:
if(itembonuses.brassMod > spellbonuses.brassMod)
effectmod += itembonuses.brassMod;
else
effectmod += spellbonuses.brassMod;
break;
case SINGING:
if(itembonuses.singingMod > spellbonuses.singingMod)
effectmod += itembonuses.singingMod;
else
effectmod += spellbonuses.singingMod;
break;
default:
break;
}
if(spells[spell_id].skill == SINGING)
effectmod += 20*GetAA(aaSingingMastery);
else
effectmod += 20*GetAA(aaInstrumentMastery);
#if EQDEBUG >= 5
// LogFile->write(EQEMuLog::Debug, "%s::GetInstrumentMod() spell=%d mod=%d\n", GetName(), spell_id, effectmod);
#endif
return(effectmod/10);
this should get instrument modifiers working like live. The issue with the old one is if a weapon had a 21% modifier it actually increased it by 2.1 times instead of .21, this will only increase it 20% since it is an int and for some reason it is expecting 10 instead of a 100 as the mod. But it gets instruments working much closer to live then before. I will play around some more with it this week or next week, if anyone has any ideas they are always welcome.