From 23ab896dfcbed710ab351a61cc66e5a5d7fe7972 Mon Sep 17 00:00:00 2001 From: Michael Cook Date: Wed, 13 Nov 2013 18:04:11 -0500 Subject: [PATCH] Fix last commit .... --- changelog.txt | 1 + common/spdat.h | 2 +- zone/bonuses.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ zone/client_mods.cpp | 17 +++++------------ zone/spell_effects.cpp | 1 + 5 files changed, 49 insertions(+), 13 deletions(-) diff --git a/changelog.txt b/changelog.txt index d1da71cac..1a551977a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -3,6 +3,7 @@ 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 +demonstar55: Implemented Singing/Instrument Mastery as an AA bonus. == 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/spdat.h b/common/spdat.h index 225dbf0f1..743e79759 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -404,7 +404,7 @@ typedef enum { #define SE_PetDiscipline 257 // not implemented as bonus - /pet hold #define SE_TripleBackstab 258 // implemented[AA] - chance to perform a triple backstab #define SE_CombatStability 259 // implemented[AA] - damage mitigation -#define SE_AddSingingMod 260 // *not implemented +#define SE_AddSingingMod 260 // implemented[AA] - Instrument/Singing Mastery, base1 is the mod, base2 is the ItemType //#define SE_Unknown261 261 // not used #define SE_RaiseStatCap 262 // implemented #define SE_TradeSkillMastery 263 // implemented - lets you raise more than one tradeskill above master. diff --git a/zone/bonuses.cpp b/zone/bonuses.cpp index 3c3788a74..a26517a35 100644 --- a/zone/bonuses.cpp +++ b/zone/bonuses.cpp @@ -874,6 +874,26 @@ void Client::ApplyAABonuses(uint32 aaid, uint32 slots, StatBonuses* newbon) case SE_CombatStability: newbon->CombatStability += base1; break; + case SE_AddSingingMod: + switch (base2) + { + case ItemTypeWindInstrument: + newbon->windMod += base1; + break; + case ItemTypeStringedInstrument: + newbon->stringedMod += base1; + break; + case ItemTypeBrassInstrument: + newbon->brassMod += base1; + break; + case ItemTypePercussionInstrument: + newbon->percussionMod += base1; + break; + case ItemTypeSinging: + newbon->singingMod += base1; + break; + } + break; case SE_PetCriticalHit: newbon->PetCriticalHit += base1; break; @@ -2231,6 +2251,27 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne newbon->CombatStability += effect_value; break; + case SE_AddSingingMod: + switch (spells[spell_id].base2[i]) + { + case ItemTypeWindInstrument: + newbon->windMod += effect_value; + break; + case ItemTypeStringedInstrument: + newbon->stringedMod += effect_value; + break; + case ItemTypeBrassInstrument: + newbon->brassMod += effect_value; + break; + case ItemTypePercussionInstrument: + newbon->percussionMod += effect_value; + break; + case ItemTypeSinging: + newbon->singingMod += effect_value; + break; + } + break; + case SE_PetAvoidance: newbon->PetAvoidance += effect_value; break; diff --git a/zone/client_mods.cpp b/zone/client_mods.cpp index 25724bd46..2cc26c3f7 100644 --- a/zone/client_mods.cpp +++ b/zone/client_mods.cpp @@ -1813,6 +1813,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { effectmod = itembonuses.percussionMod; else effectmod = spellbonuses.percussionMod; + effectmod += aabonuses.percussionMod; break; case SkillStringedInstruments: if(itembonuses.stringedMod == 0 && spellbonuses.stringedMod == 0) @@ -1823,6 +1824,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { effectmod = itembonuses.stringedMod; else effectmod = spellbonuses.stringedMod; + effectmod += aabonuses.stringedMod; break; case SkillWindInstruments: if(itembonuses.windMod == 0 && spellbonuses.windMod == 0) @@ -1833,6 +1835,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { effectmod = itembonuses.windMod; else effectmod = spellbonuses.windMod; + effectmod += aabonuses.windMod; break; case SkillBrassInstruments: if(itembonuses.brassMod == 0 && spellbonuses.brassMod == 0) @@ -1843,6 +1846,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { effectmod = itembonuses.brassMod; else effectmod = spellbonuses.brassMod; + effectmod += aabonuses.brassMod; break; case SkillSinging: if(itembonuses.singingMod == 0 && spellbonuses.singingMod == 0) @@ -1851,24 +1855,13 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const { effectmod = itembonuses.singingMod; else effectmod = spellbonuses.singingMod; + effectmod += aabonuses.singingMod; break; default: effectmod = 10; break; } - // TODO: These shouldn't be hardcoded. - if(spells[spell_id].skill == SkillSinging) - { - effectmod += 2*GetAA(aaSingingMastery); - effectmod += 2*GetAA(aaImprovedSingingMastery); - } - else - { - effectmod += 2*GetAA(aaInstrumentMastery); - effectmod += 2*GetAA(aaImprovedInstrumentMastery); - } - // TODO: These shouldn't be hardcoded. effectmodcap += GetAA(aaAyonaesTutelage); effectmodcap += GetAA(aaEchoofTaelosia); diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 2f0ffe1a0..ba4200119 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -2733,6 +2733,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial) case SE_ImprovedBindWound: case SE_MaxBindWound: case SE_CombatStability: + case SE_AddSingingMod: case SE_PetAvoidance: case SE_GiveDoubleRiposte: case SE_Ambidexterity: