diff --git a/changelog.txt b/changelog.txt index 2acafcd16..d1da71cac 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,9 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- +== 11/13/2013 == +demonstar55: Implemented bard song effect cap. You can set the base cap with the rule Character:BaseInstrumentSoftCap, defaults to 36 or "3.6" as it is sometimes referred to. +demonstar55: Fix Echo of Taelosia and Ayonae's Tutelage to increase the mod cap instead of further improving the instrument mod + == 11/11/2013 == demonstar55: Changed the way walk speed is calculated to allow mobs to have their walk speed equal a 100% movement reduction diff --git a/common/ruletypes.h b/common/ruletypes.h index 9fbddd3ca..4b5608ae8 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -97,6 +97,7 @@ RULE_BOOL ( Character, EnableDiscoveredItems, true ) // If enabled, it enables E RULE_BOOL ( Character, EnableXTargetting, true) // Enable Extended Targetting Window, for users with UF and later clients. RULE_BOOL ( Character, KeepLevelOverMax, false) // Don't delevel a character that has somehow gone over the level cap RULE_INT ( Character, FoodLossPerUpdate, 35) // How much food/water you lose per stamina update +RULE_INT ( Character, BaseInstrumentSoftCap, 36) // Softcap for instrument mods, 36 commonly referred to as "3.6" as well. RULE_CATEGORY_END() RULE_CATEGORY( Mercs ) diff --git a/zone/client_mods.cpp b/zone/client_mods.cpp index 61580bc21..25724bd46 100644 --- a/zone/client_mods.cpp +++ b/zone/client_mods.cpp @@ -1796,6 +1796,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { return(10); uint16 effectmod = 10; + int effectmodcap = RuleI(Character, BaseInstrumentSoftCap); //this should never use spell modifiers... //if a spell grants better modifers, they are copied into the item mods @@ -1856,6 +1857,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { break; } + // TODO: These shouldn't be hardcoded. if(spells[spell_id].skill == SkillSinging) { effectmod += 2*GetAA(aaSingingMastery); @@ -1866,14 +1868,20 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { effectmod += 2*GetAA(aaInstrumentMastery); effectmod += 2*GetAA(aaImprovedInstrumentMastery); } - effectmod += 2*GetAA(aaAyonaesTutelage); //singing & instruments - effectmod += 2*GetAA(aaEchoofTaelosia); //singing & instruments + + // TODO: These shouldn't be hardcoded. + effectmodcap += GetAA(aaAyonaesTutelage); + effectmodcap += GetAA(aaEchoofTaelosia); if(effectmod < 10) effectmod = 10; - _log(SPELLS__BARDS, "%s::GetInstrumentMod() spell=%d mod=%d\n", GetName(), spell_id, effectmod); + if (effectmod > effectmodcap) + effectmod = effectmodcap; + + _log(SPELLS__BARDS, "%s::GetInstrumentMod() spell=%d mod=%d modcap=%d\n", + GetName(), spell_id, effectmod, effectmodcap); return(effectmod); }