mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-13 03:22:40 -04:00
Core/Spells: Removed more spell obsolete code
This commit is contained in:
@@ -2935,89 +2935,6 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
|
||||
}
|
||||
while (result->NextRow());
|
||||
|
||||
// post loading checks
|
||||
for (uint32 entryId = 0; entryId < sAchievementCriteriaStore.GetNumRows(); ++entryId)
|
||||
{
|
||||
AchievementCriteriaEntry const* criteria = sAchievementCriteriaStore.LookupEntry(entryId);
|
||||
if (!criteria)
|
||||
continue;
|
||||
|
||||
switch (criteria->requiredType)
|
||||
{
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_BG: // any cases
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST:
|
||||
{
|
||||
AchievementEntry const* achievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
|
||||
if (!achievement)
|
||||
continue;
|
||||
|
||||
// exist many achievements with this criteria, use at this moment hardcoded check to skil simple case
|
||||
if (achievement->ID == 1282)
|
||||
break;
|
||||
|
||||
continue;
|
||||
}
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: // any cases
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL: // any cases
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: // need skip generic cases
|
||||
if (criteria->additionalRequirements[0].additionalRequirement_type != ACHIEVEMENT_CRITERIA_CONDITION_NO_LOSE)
|
||||
continue;
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM: // any cases
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE: // need skip generic cases
|
||||
if (criteria->do_emote.count == 0)
|
||||
continue;
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL: // skip statistics
|
||||
if (criteria->win_duel.duelCount == 0)
|
||||
continue;
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: // any cases
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: // need skip generic cases
|
||||
if (criteria->loot_type.lootTypeCount != 1)
|
||||
continue;
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL:
|
||||
break; // any cases
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL: // any cases
|
||||
break;
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: // only Children's Week achievements
|
||||
{
|
||||
AchievementEntry const* achievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
|
||||
if (!achievement)
|
||||
continue;
|
||||
if (achievement->categoryId != CATEGORY_CHILDRENS_WEEK)
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS:
|
||||
break;
|
||||
default: // type not use DB data, ignore
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!GetCriteriaDataSet(criteria) && !DisableMgr::IsDisabledFor(DISABLE_TYPE_ACHIEVEMENT_CRITERIA, entryId, NULL))
|
||||
sLog->outError(LOG_FILTER_SQL, "Table `achievement_criteria_data` does not have expected data for criteria (Entry: %u Type: %u) for achievement %u.", criteria->ID, criteria->requiredType, criteria->referredAchievement);
|
||||
}
|
||||
|
||||
sLog->outInfo(LOG_FILTER_SERVER_LOADING, ">> Loaded %u additional achievement criteria data in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
|
||||
|
||||
@@ -523,7 +523,7 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
{
|
||||
if ((*itr)->IsAffectingSpell(m_spellInfo))
|
||||
{
|
||||
// Glyph of Fear, Glyph of Frost nova and similar auras
|
||||
// Glyph of Frost nova and similar auras
|
||||
if ((*itr)->GetMiscValue() == 7801)
|
||||
{
|
||||
AddPctN(amount, (*itr)->GetAmount());
|
||||
@@ -543,28 +543,19 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
// Ice Barrier
|
||||
if (GetSpellInfo()->SpellFamilyFlags[1] & 0x1 && GetSpellInfo()->SpellFamilyFlags[2] & 0x8)
|
||||
{
|
||||
// +80.68% from sp bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.8068f;
|
||||
// Glyph of Ice Barrier: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)
|
||||
// Glyph of Ice Barrier is only applied at the spell damage bonus because it was already applied to the base value in CalculateSpellDamage
|
||||
DoneActualBenefit = caster->ApplyEffectModifiers(GetSpellInfo(), m_effIndex, DoneActualBenefit);
|
||||
// +87% from sp bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.87f;
|
||||
}
|
||||
// Fire Ward
|
||||
// Mage Ward
|
||||
else if (GetSpellInfo()->SpellFamilyFlags[0] & 0x8 && GetSpellInfo()->SpellFamilyFlags[2] & 0x8)
|
||||
{
|
||||
// +80.68% from sp bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.8068f;
|
||||
}
|
||||
// Frost Ward
|
||||
else if (GetSpellInfo()->SpellFamilyFlags[0] & 0x100 && GetSpellInfo()->SpellFamilyFlags[2] & 0x8)
|
||||
{
|
||||
// +80.68% from sp bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.8068f;
|
||||
}
|
||||
break;
|
||||
case SPELLFAMILY_WARLOCK:
|
||||
// Shadow Ward
|
||||
if (m_spellInfo->SpellFamilyFlags[2] & 0x40)
|
||||
if (m_spellInfo->SpellFamilyFlags[2] & 0x80000000)
|
||||
{
|
||||
// +80.68% from sp bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.8068f;
|
||||
@@ -572,28 +563,18 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
break;
|
||||
case SPELLFAMILY_PRIEST:
|
||||
// Power Word: Shield
|
||||
if (GetSpellInfo()->SpellFamilyFlags[0] & 0x1 && GetSpellInfo()->SpellFamilyFlags[2] & 0x400)
|
||||
if (GetSpellInfo()->SpellFamilyFlags[0] & 0x1)
|
||||
{
|
||||
// +80.68% from sp bonus
|
||||
float bonus = 0.8068f;
|
||||
|
||||
// Borrowed Time
|
||||
if (AuraEffect const* pAurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, 2899, 1))
|
||||
bonus += CalculatePctN(1.0f, pAurEff->GetAmount());
|
||||
|
||||
DoneActualBenefit += caster->SpellBaseHealingBonusDone(m_spellInfo->GetSchoolMask()) * bonus;
|
||||
// Improved PW: Shield: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)
|
||||
// Improved PW: Shield is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage
|
||||
DoneActualBenefit = caster->ApplyEffectModifiers(GetSpellInfo(), m_effIndex, DoneActualBenefit);
|
||||
DoneActualBenefit += caster->SpellBaseHealingBonusDone(m_spellInfo->GetSchoolMask()) * 0.8068f;
|
||||
DoneActualBenefit *= caster->CalculateLevelPenalty(GetSpellInfo());
|
||||
|
||||
amount += int32(DoneActualBenefit);
|
||||
|
||||
// Twin Disciplines
|
||||
if (AuraEffect const* pAurEff = caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_PRIEST, 0x400000, 0, 0, caster->GetGUID()))
|
||||
if (AuraEffect const* pAurEff = caster->GetAuraEffect(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, SPELLFAMILY_PRIEST, 2292, 0))
|
||||
AddPctN(amount, pAurEff->GetAmount());
|
||||
|
||||
// Focused Power
|
||||
// Reuse variable, not sure if this code below can be moved before Twin Disciplines
|
||||
DoneActualBenefit = float(amount);
|
||||
DoneActualBenefit *= caster->GetTotalAuraMultiplier(SPELL_AURA_MOD_HEALING_DONE_PERCENT);
|
||||
@@ -602,30 +583,6 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
return amount;
|
||||
}
|
||||
break;
|
||||
case SPELLFAMILY_PALADIN:
|
||||
// Sacred Shield
|
||||
if (m_spellInfo->SpellFamilyFlags[1] & 0x80000)
|
||||
{
|
||||
//+75.00% from sp bonus
|
||||
float bonus = 0.75f;
|
||||
|
||||
DoneActualBenefit += caster->SpellBaseHealingBonusDone(m_spellInfo->GetSchoolMask()) * bonus;
|
||||
// Divine Guardian is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage
|
||||
DoneActualBenefit = caster->ApplyEffectModifiers(GetSpellInfo(), m_effIndex, DoneActualBenefit);
|
||||
DoneActualBenefit *= caster->CalculateLevelPenalty(GetSpellInfo());
|
||||
|
||||
amount += (int32)DoneActualBenefit;
|
||||
|
||||
// Arena - Dampening
|
||||
AuraEffect const* pAurEff = caster->GetAuraEffect(74410, 0);
|
||||
if (!pAurEff)
|
||||
pAurEff = caster->GetAuraEffect(74411, 0); // Battleground - Dampening
|
||||
if (pAurEff)
|
||||
AddPctN(amount, pAurEff->GetAmount());
|
||||
|
||||
return amount;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -637,8 +594,8 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
// Mana Shield
|
||||
if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_MAGE && GetSpellInfo()->SpellFamilyFlags[0] & 0x8000 && m_spellInfo->SpellFamilyFlags[2] & 0x8)
|
||||
{
|
||||
// +80.53% from +spd bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.8053f;
|
||||
// +80.7% from +spd bonus
|
||||
DoneActualBenefit += caster->SpellBaseDamageBonusDone(m_spellInfo->GetSchoolMask()) * 0.807f;
|
||||
}
|
||||
break;
|
||||
case SPELL_AURA_DUMMY:
|
||||
@@ -654,24 +611,8 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
case SPELL_AURA_PERIODIC_DAMAGE:
|
||||
if (!caster)
|
||||
break;
|
||||
// Rupture
|
||||
if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_ROGUE && m_spellInfo->SpellFamilyFlags[0] & 0x100000)
|
||||
{
|
||||
m_canBeRecalculated = false;
|
||||
if (caster->GetTypeId() != TYPEID_PLAYER)
|
||||
break;
|
||||
//1 point : ${($m1+$b1*1+0.015*$AP)*4} damage over 8 secs
|
||||
//2 points: ${($m1+$b1*2+0.024*$AP)*5} damage over 10 secs
|
||||
//3 points: ${($m1+$b1*3+0.03*$AP)*6} damage over 12 secs
|
||||
//4 points: ${($m1+$b1*4+0.03428571*$AP)*7} damage over 14 secs
|
||||
//5 points: ${($m1+$b1*5+0.0375*$AP)*8} damage over 16 secs
|
||||
float AP_per_combo[6] = {0.0f, 0.015f, 0.024f, 0.03f, 0.03428571f, 0.0375f};
|
||||
uint8 cp = caster->ToPlayer()->GetComboPoints();
|
||||
if (cp > 5) cp = 5;
|
||||
amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * AP_per_combo[cp]);
|
||||
}
|
||||
// Rip
|
||||
else if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_DRUID && m_spellInfo->SpellFamilyFlags[0] & 0x00800000 && GetAuraType() == SPELL_AURA_PERIODIC_DAMAGE)
|
||||
if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_DRUID && m_spellInfo->SpellFamilyFlags[0] & 0x00800000)
|
||||
{
|
||||
m_canBeRecalculated = false;
|
||||
// 0.01*$AP*cp
|
||||
@@ -693,20 +634,13 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
else if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_WARRIOR && GetSpellInfo()->SpellFamilyFlags[0] & 0x20)
|
||||
{
|
||||
m_canBeRecalculated = false;
|
||||
// $0.2 * (($MWB + $mwb) / 2 + $AP / 14 * $MWS) bonus per tick
|
||||
// ${0.25 * 6 * (($MWB + $mwb) / 2 + $AP / 14 * $MWS)} bonus per tick
|
||||
float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||
int32 mws = caster->GetAttackTime(BASE_ATTACK);
|
||||
float mwb_min = caster->GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE);
|
||||
float mwb_max = caster->GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE);
|
||||
float mwb = ((mwb_min + mwb_max) / 2 + ap * mws / 14000) * 0.2f;
|
||||
float mwb = ((mwb_min + mwb_max) / 2 + ap * mws / 14000) * 0.25f * 6.0f;
|
||||
amount += int32(caster->ApplyEffectModifiers(m_spellInfo, m_effIndex, mwb));
|
||||
// "If used while your target is above 75% health, Rend does 35% more damage."
|
||||
// as for 3.1.3 only ranks above 9 (wrong tooltip?)
|
||||
if (m_spellInfo->GetRank() >= 9)
|
||||
{
|
||||
if (GetBase()->GetUnitOwner()->HasAuraState(AURA_STATE_HEALTH_ABOVE_75_PERCENT, m_spellInfo, caster))
|
||||
AddPctN(amount, m_spellInfo->Effects[EFFECT_2].CalcValue(caster));
|
||||
}
|
||||
}
|
||||
// Unholy Blight damage over time effect
|
||||
else if (GetId() == 50536)
|
||||
@@ -720,7 +654,7 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
switch (m_spellInfo->Id)
|
||||
{
|
||||
case 57669: // Replenishment (0.2% from max)
|
||||
amount = GetBase()->GetUnitOwner()->GetMaxPower(POWER_MANA) * 0.002f;
|
||||
amount = CalculatePctN(GetBase()->GetUnitOwner()->GetMaxPower(POWER_MANA), amount);
|
||||
break;
|
||||
case 61782: // Infinite Replenishment
|
||||
amount = GetBase()->GetUnitOwner()->GetMaxPower(POWER_MANA) * 0.0025f;
|
||||
@@ -747,39 +681,6 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
AddPctN(amount, modHealing->GetAmount());
|
||||
}
|
||||
break;
|
||||
case SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN:
|
||||
if (!caster)
|
||||
break;
|
||||
// Icebound Fortitude
|
||||
if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && m_spellInfo->SpellFamilyFlags[0] & 0x00100000)
|
||||
{
|
||||
if (caster->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
int32 value = (-1 * amount) - 10;
|
||||
uint32 defva = uint32(caster->ToPlayer()->GetSkillValue(SKILL_DEFENSE) + caster->ToPlayer()->GetRatingBonusValue(CR_DEFENSE_SKILL));
|
||||
|
||||
if (defva > 400)
|
||||
value += int32((defva - 400) * 0.15);
|
||||
|
||||
// Glyph of Icebound Fortitude
|
||||
if (AuraEffect const* aurEff = caster->GetAuraEffect(58625, 0))
|
||||
{
|
||||
int32 valMax = aurEff->GetAmount();
|
||||
if (value < valMax)
|
||||
value = valMax;
|
||||
}
|
||||
amount = -value;
|
||||
}
|
||||
}
|
||||
// Hand of Salvation
|
||||
else if (GetSpellInfo()->SpellFamilyName == SPELLFAMILY_PALADIN && GetSpellInfo()->SpellFamilyFlags[0] & 0x00000100)
|
||||
{
|
||||
//Glyph of Salvation
|
||||
if (caster->GetGUID() == GetBase()->GetUnitOwner()->GetGUID())
|
||||
if (AuraEffect const* aurEff = caster->GetAuraEffect(63225, 0))
|
||||
amount = -aurEff->GetAmount();
|
||||
}
|
||||
break;
|
||||
case SPELL_AURA_MOD_THREAT:
|
||||
{
|
||||
uint8 level_diff = 0;
|
||||
|
||||
Reference in New Issue
Block a user