Implemented SE_SongModCap

Bard AAs Ayonaes Tutelage and Echo of Taelosia implemented as bonuses
Remember to run the SQL!
This commit is contained in:
Michael Cook (mackal)
2014-01-04 19:20:59 -05:00
parent d128ef1b97
commit e7032bc2c2
6 changed files with 27 additions and 11 deletions
+7
View File
@@ -904,6 +904,9 @@ void Client::ApplyAABonuses(uint32 aaid, uint32 slots, StatBonuses* newbon)
break;
}
break;
case SE_SongModCap:
newbon->songModCap += base1;
break;
case SE_PetCriticalHit:
newbon->PetCriticalHit += base1;
break;
@@ -2327,6 +2330,10 @@ void Mob::ApplySpellsBonuses(uint16 spell_id, uint8 casterlevel, StatBonuses* ne
}
break;
case SE_SongModCap:
newbon->songModCap += effect_value;
break;
case SE_PetAvoidance:
newbon->PetAvoidance += effect_value;
break;
+8 -10
View File
@@ -1792,9 +1792,10 @@ int16 Client::CalcATK() {
return(ATK);
}
uint16 Mob::GetInstrumentMod(uint16 spell_id) const {
if(GetClass() != BARD)
return(10);
uint16 Mob::GetInstrumentMod(uint16 spell_id) const
{
if (GetClass() != BARD)
return 10;
uint16 effectmod = 10;
int effectmodcap = RuleI(Character, BaseInstrumentSoftCap);
@@ -1804,7 +1805,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const {
//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) {
switch (spells[spell_id].skill) {
case SkillPercussionInstruments:
if(itembonuses.percussionMod == 0 && spellbonuses.percussionMod == 0)
effectmod = 10;
@@ -1863,12 +1864,9 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const {
break;
}
// TODO: These shouldn't be hardcoded.
effectmodcap += GetAA(aaAyonaesTutelage);
effectmodcap += GetAA(aaEchoofTaelosia);
effectmodcap += aabonuses.songModCap + spellbonuses.songModCap;
if(effectmod < 10)
if (effectmod < 10)
effectmod = 10;
if (effectmod > effectmodcap)
@@ -1877,7 +1875,7 @@ uint16 Mob::GetInstrumentMod(uint16 spell_id) const {
_log(SPELLS__BARDS, "%s::GetInstrumentMod() spell=%d mod=%d modcap=%d\n",
GetName(), spell_id, effectmod, effectmodcap);
return(effectmod);
return effectmod;
}
void Client::CalcMaxEndurance()
+1
View File
@@ -230,6 +230,7 @@ struct StatBonuses {
uint16 percussionMod;
uint16 windMod;
uint16 stringedMod;
uint16 songModCap;
int8 hatemod;
int32 EnduranceReduction;
+1
View File
@@ -2890,6 +2890,7 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial)
case SE_MaxBindWound:
case SE_CombatStability:
case SE_AddSingingMod:
case SE_SongModCap:
case SE_PetAvoidance:
case SE_GiveDoubleRiposte:
case SE_Ambidexterity: