Core: Updated to 10.0.2

This commit is contained in:
Shauren
2022-12-04 15:13:20 +01:00
parent de7c03c838
commit e98e1283ea
132 changed files with 9328 additions and 4629 deletions

View File

@@ -5582,6 +5582,11 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32
if (m_spellInfo->ExcludeCasterAuraSpell && unitCaster->HasAura(m_spellInfo->ExcludeCasterAuraSpell))
return SPELL_FAILED_CASTER_AURASTATE;
if (m_spellInfo->CasterAuraType && !unitCaster->HasAuraType(m_spellInfo->CasterAuraType))
return SPELL_FAILED_CASTER_AURASTATE;
if (m_spellInfo->ExcludeCasterAuraType && unitCaster->HasAuraType(m_spellInfo->ExcludeCasterAuraType))
return SPELL_FAILED_CASTER_AURASTATE;
if (reqCombat && unitCaster->IsInCombat() && !m_spellInfo->CanBeUsedInCombat())
return SPELL_FAILED_AFFECTING_COMBAT;
}
@@ -6390,19 +6395,15 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32
if (spellEffectInfo.Effect == SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY)
{
BattlePets::BattlePetBreedQuality quality = BattlePets::BattlePetBreedQuality::Poor;
switch (spellEffectInfo.BasePoints)
auto qualityItr = std::lower_bound(sBattlePetBreedQualityStore.begin(), sBattlePetBreedQualityStore.end(), spellEffectInfo.BasePoints, [](BattlePetBreedQualityEntry const* a1, int32 selector)
{
case 85:
quality = BattlePets::BattlePetBreedQuality::Rare;
break;
case 75:
quality = BattlePets::BattlePetBreedQuality::Uncommon;
break;
default:
// Ignore Epic Battle-Stones
break;
}
return a1->MaxQualityRoll < selector;
});
BattlePets::BattlePetBreedQuality quality = BattlePets::BattlePetBreedQuality::Poor;
if (qualityItr != sBattlePetBreedQualityStore.end())
quality = BattlePets::BattlePetBreedQuality(qualityItr->QualityEnum);
if (battlePet->PacketInfo.Quality >= AsUnderlyingType(quality))
return SPELL_FAILED_CANT_UPGRADE_BATTLE_PET;
}
@@ -6668,7 +6669,7 @@ SpellCastResult Spell::CheckCasterAuras(int32* param1) const
Unit::AuraEffectList const& auras = unitCaster->GetAuraEffectsByType(type);
for (AuraEffect const* aurEff : auras)
{
uint32 const mechanicMask = aurEff->GetSpellInfo()->GetAllEffectsMechanicMask();
uint64 const mechanicMask = aurEff->GetSpellInfo()->GetAllEffectsMechanicMask();
if (mechanicMask && !(mechanicMask & GetSpellInfo()->GetAllowedMechanicMask()))
{
foundNotMechanic = true;
@@ -7467,21 +7468,21 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*=
{
Item const* item = m_targets.GetItemTarget();
if (!item)
return SPELL_FAILED_CANT_BE_DISENCHANTED;
return SPELL_FAILED_CANT_BE_SALVAGED;
// prevent disenchanting in trade slot
if (item->GetOwnerGUID() != player->GetGUID())
return SPELL_FAILED_CANT_BE_DISENCHANTED;
return SPELL_FAILED_CANT_BE_SALVAGED;
ItemTemplate const* itemProto = item->GetTemplate();
if (!itemProto)
return SPELL_FAILED_CANT_BE_DISENCHANTED;
return SPELL_FAILED_CANT_BE_SALVAGED;
ItemDisenchantLootEntry const* itemDisenchantLoot = item->GetDisenchantLoot(m_caster->ToPlayer());
if (!itemDisenchantLoot)
return SPELL_FAILED_CANT_BE_DISENCHANTED;
return SPELL_FAILED_CANT_BE_SALVAGED;
if (itemDisenchantLoot->SkillRequired > player->GetSkillValue(SKILL_ENCHANTING))
return SPELL_FAILED_LOW_CASTLEVEL;
return SPELL_FAILED_CANT_BE_SALVAGED_SKILL;
break;
}
case SPELL_EFFECT_PROSPECTING: