diff --git a/.gitignore b/.gitignore index 68180f930..6b5394b19 100644 --- a/.gitignore +++ b/.gitignore @@ -68,6 +68,10 @@ patches-* # bin/* +# OS specific +# MacOS +.DS_Store + # # Special exceptions # diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 66f8aec00..f64977628 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -2053,7 +2053,7 @@ void Player::Regenerate(Powers power, uint32 diff) AuraList const& ModPowerRegenPCTAuras = GetAurasByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for(AuraList::const_iterator i = ModPowerRegenPCTAuras.begin(); i != ModPowerRegenPCTAuras.end(); ++i) if ((*i)->GetModifier()->m_miscvalue == power && (*i)->GetMiscBValue()==GetCurrentRune(rune)) - cd_diff = cd_diff * ((*i)->GetModifier()->m_amount + 100) / 100.0f; + cd_diff = cd_diff * ((*i)->GetModifier()->m_amount + 100) / 100; SetRuneCooldown(rune, (cd < cd_diff) ? 0 : cd - cd_diff); } @@ -3702,7 +3702,7 @@ bool Player::resetTalents(bool no_cost) TalentEntry const *talentInfo = (*iter).second.m_talentEntry; if (!talentInfo) { - iter = m_talents[m_activeSpec].erase(iter); + m_talents[m_activeSpec].erase(iter++); continue; } @@ -3710,7 +3710,7 @@ bool Player::resetTalents(bool no_cost) if (!talentTabInfo) { - iter = m_talents[m_activeSpec].erase(iter); + m_talents[m_activeSpec].erase(iter++); continue; } @@ -14870,7 +14870,11 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) SetArenaTeamInfoField(arena_slot, ArenaTeamInfoType(j), 0); } - SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, fields[40].GetUInt32()); + uint32 honor_currency = fields[40].GetUInt32(); + if (honor_currency > sWorld.getConfig(CONFIG_UINT32_MAX_HONOR_POINTS)) + honor_currency = sWorld.getConfig(CONFIG_UINT32_MAX_HONOR_POINTS); + SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, honor_currency); + SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, fields[41].GetUInt32()); SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, fields[42].GetUInt32()); SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORBALE_KILLS, fields[43].GetUInt32()); @@ -21884,4 +21888,4 @@ void Player::SetRestType( RestType n_r_type, uint32 areaTriggerId /*= 0*/) if(sWorld.IsFFAPvPRealm()) SetFFAPvP(false); } -} \ No newline at end of file +} diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index dd263221e..d1cefc5b3 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1282,6 +1282,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) case 51026: // Create Drakkari Medallion Cover case 51592: // Pickup Primordial Hatchling case 51961: // Captured Chicken Cover + case 55364: // Create Ghoul Drool Cover { if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT || m_caster->GetTypeId() != TYPEID_PLAYER) return; @@ -1295,6 +1296,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) case 51026: spellId = 50737; break; case 51592: spellId = 51593; break; case 51961: spellId = 51037; break; + case 55364: spellId = 55363; break; } if (const SpellEntry *pSpell = sSpellStore.LookupEntry(spellId)) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 3c778c059..add54d9f3 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1399,6 +1399,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons (spellInfo_2->Id == 8326 && spellInfo_1->Id == 20584) ) return false; + // Kindred Spirits + if( spellInfo_1->SpellIconID == 3559 && spellInfo_2->SpellIconID == 3559 ) + return false; + break; } case SPELLFAMILY_MAGE: diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 0a964590e..9695ec835 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9073,6 +9073,27 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3 } break; } + case SPELLFAMILY_DRUID: + { + // Improved Insect Swarm (Wrath part) + if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000001)) + { + // if Insect Swarm on target + if (pVictim->GetAura(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_DRUID, UI64LIT(0x000000000200000), 0, GetGUID())) + { + Unit::AuraList const& improvedSwarm = GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator iter = improvedSwarm.begin(); iter != improvedSwarm.end(); ++iter) + { + if ((*iter)->GetSpellProto()->SpellIconID == 1771) + { + DoneTotalMod *= ((*iter)->GetModifier()->m_amount+100.0f) / 100.0f; + break; + } + } + } + } + break; + } case SPELLFAMILY_DEATHKNIGHT: { // Icy Touch, Howling Blast and Frost Strike @@ -9374,6 +9395,25 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM } } break; + case SPELLFAMILY_DRUID: + // Improved Insect Swarm (Starfire part) + if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) + { + // search for Moonfire on target + if (pVictim->GetAura(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_DRUID, UI64LIT(0x000000000000002), 0, GetGUID())) + { + Unit::AuraList const& improvedSwarm = GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator iter = improvedSwarm.begin(); iter != improvedSwarm.end(); ++iter) + { + if ((*iter)->GetSpellProto()->SpellIconID == 1771) + { + crit_chance += (*iter)->GetModifier()->m_amount; + break; + } + } + } + } + break; case SPELLFAMILY_PALADIN: // Sacred Shield if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000040000000)) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 51ddabebc..44afd5d88 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9664" + #define REVISION_NR "9670" #endif // __REVISION_NR_H__