mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 02:25:38 +01:00
Core/Reputation: updated Championing to Cataclysm
This commit is contained in:
@@ -6655,33 +6655,61 @@ void Player::RewardOnKill(Unit* victim, float rate)
|
||||
// support for: Championing - http://www.wowwiki.com/Championing
|
||||
Map const* map = GetMap();
|
||||
if (map->IsNonRaidDungeon())
|
||||
{
|
||||
if (LFGDungeonEntry const* dungeon = GetLFGDungeon(map->GetId(), map->GetDifficulty()))
|
||||
if (dungeon->reclevel == GetMaxLevelForExpansion(dungeon->expansion))
|
||||
ChampioningFaction = GetChampioningFaction();
|
||||
{
|
||||
// WotLK and Cataclysm dungeons only grant championing reputation when in max level dungeons of their corresponding expansion
|
||||
if (dungeon->reclevel == GetMaxLevelForExpansion(dungeon->expansion) && GetExpansionForChampioningFaction())
|
||||
{
|
||||
if (GetExpansionForChampioningFaction() == dungeon->expansion)
|
||||
ChampioningFaction = GetChampioningFaction();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Classic Tabards (Alliance and Horde capital reputation) always convert the gained reputation
|
||||
if (!GetExpansionForChampioningFaction())
|
||||
ChampioningFaction = GetChampioningFaction();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32 team = GetTeam();
|
||||
|
||||
if (Rew->RepFaction1 && (!Rew->TeamDependent || team == ALLIANCE))
|
||||
{
|
||||
int32 donerep1 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), Rew->RepValue1, ChampioningFaction ? ChampioningFaction : Rew->RepFaction1);
|
||||
donerep1 = int32(donerep1 * rate);
|
||||
if (FactionEntry const* rewFactionEntry1 = sFactionStore.LookupEntry(Rew->RepFaction1))
|
||||
{
|
||||
uint32 factionId1 = ChampioningFaction ? ChampioningFaction : Rew->RepFaction1;
|
||||
if (rewFactionEntry1->GroupExpansion && !ChampioningFaction)
|
||||
factionId1 = 0;
|
||||
|
||||
FactionEntry const* factionEntry1 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rew->RepFaction1);
|
||||
uint32 current_reputation_rank1 = GetReputationMgr().GetRank(factionEntry1);
|
||||
if (factionEntry1)
|
||||
GetReputationMgr().ModifyReputation(factionEntry1, donerep1, current_reputation_rank1 > Rew->ReputationMaxCap1);
|
||||
int32 donerep1 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), Rew->RepValue1, factionId1);
|
||||
donerep1 = int32(donerep1 * rate);
|
||||
|
||||
FactionEntry const* factionEntry1 = sFactionStore.LookupEntry(factionId1);
|
||||
uint32 current_reputation_rank1 = GetReputationMgr().GetRank(factionEntry1);
|
||||
if (factionEntry1)
|
||||
GetReputationMgr().ModifyReputation(factionEntry1, donerep1, current_reputation_rank1 > Rew->ReputationMaxCap1);
|
||||
}
|
||||
}
|
||||
|
||||
if (Rew->RepFaction2 && (!Rew->TeamDependent || team == HORDE))
|
||||
{
|
||||
int32 donerep2 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), Rew->RepValue2, ChampioningFaction ? ChampioningFaction : Rew->RepFaction2);
|
||||
donerep2 = int32(donerep2 * rate);
|
||||
if (FactionEntry const* rewFactionEntry2 = sFactionStore.LookupEntry(Rew->RepFaction2))
|
||||
{
|
||||
uint32 factionId2 = ChampioningFaction ? ChampioningFaction : Rew->RepFaction2;
|
||||
if (rewFactionEntry2->GroupExpansion && !ChampioningFaction)
|
||||
factionId2 = 0;
|
||||
|
||||
FactionEntry const* factionEntry2 = sFactionStore.LookupEntry(ChampioningFaction ? ChampioningFaction : Rew->RepFaction2);
|
||||
uint32 current_reputation_rank2 = GetReputationMgr().GetRank(factionEntry2);
|
||||
if (factionEntry2)
|
||||
GetReputationMgr().ModifyReputation(factionEntry2, donerep2, current_reputation_rank2 > Rew->ReputationMaxCap2);
|
||||
int32 donerep2 = CalculateReputationGain(REPUTATION_SOURCE_KILL, victim->getLevel(), Rew->RepValue2, factionId2);
|
||||
donerep2 = int32(donerep2 * rate);
|
||||
|
||||
FactionEntry const* factionEntry2 = sFactionStore.LookupEntry(factionId2);
|
||||
uint32 current_reputation_rank2 = GetReputationMgr().GetRank(factionEntry2);
|
||||
if (factionEntry2)
|
||||
GetReputationMgr().ModifyReputation(factionEntry2, donerep2, current_reputation_rank2 > Rew->ReputationMaxCap2);
|
||||
}
|
||||
}
|
||||
|
||||
if (Rew->CurrencyId1 && Rew->CurrencyCount1)
|
||||
@@ -26539,6 +26567,22 @@ bool Player::CanSeeSpellClickOn(Creature const* c) const
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8 Player::GetExpansionForChampioningFaction() const
|
||||
{
|
||||
if (!m_ChampioningFaction)
|
||||
return 0;
|
||||
|
||||
FactionEntry const* faction = sFactionStore.LookupEntry(m_ChampioningFaction);
|
||||
if (!faction || !faction->team)
|
||||
return 0;
|
||||
|
||||
FactionEntry const* expansionFaction = sFactionStore.LookupEntry(faction->team);
|
||||
if (!expansionFaction)
|
||||
return 0;
|
||||
|
||||
return expansionFaction->GroupExpansion;
|
||||
}
|
||||
|
||||
void Player::BuildPlayerTalentsInfoData(WorldPacket* data)
|
||||
{
|
||||
*data << uint32(GetFreeTalentPoints()); // unspentTalentPoints
|
||||
|
||||
@@ -2324,6 +2324,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
|
||||
uint32 GetChampioningFaction() const { return m_ChampioningFaction; }
|
||||
void SetChampioningFaction(uint32 faction) { m_ChampioningFaction = faction; }
|
||||
uint8 GetExpansionForChampioningFaction() const;
|
||||
|
||||
Spell* m_spellModTakingSpell;
|
||||
|
||||
float GetAverageItemLevel() const;
|
||||
|
||||
@@ -4579,6 +4579,24 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
|
||||
case 57820: // Ebon Champion
|
||||
case 57821: // Champion of the Kirin Tor
|
||||
case 57822: // Wyrmrest Champion
|
||||
case 93337: // Ramkahen
|
||||
case 93339: // Earthen Ring
|
||||
case 93341: // Hyjal
|
||||
case 93347: // Therazane
|
||||
case 93368: // Wildhammer Clan
|
||||
case 94158: // Dragonmaw Clan
|
||||
case 93827: // Darkspear Champion
|
||||
case 93830: // Bilgewater Champion
|
||||
case 94462: // Undercity Champion
|
||||
case 94463: // Thunder Bluff Champion
|
||||
case 93828: // Silvermoon Champion
|
||||
case 93825: // Orgrimmar Champion
|
||||
case 93821: // Gnomeregan Champion
|
||||
case 93816: // Gilneas Champion
|
||||
case 93806: // Darnassus Champion
|
||||
case 93811: // Exodar Champion
|
||||
case 93805: // Ironforge Champion
|
||||
case 93795: // Sturmwind Champion
|
||||
{
|
||||
if (!caster || caster->GetTypeId() != TYPEID_PLAYER)
|
||||
break;
|
||||
@@ -4593,6 +4611,24 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
|
||||
case 57820: FactionID = 1098; break; // Knights of the Ebon Blade
|
||||
case 57821: FactionID = 1090; break; // Kirin Tor
|
||||
case 57822: FactionID = 1091; break; // The Wyrmrest Accord
|
||||
case 93337: FactionID = 1173; break; // Ramkahen
|
||||
case 93339: FactionID = 1135; break; // Earthen Ring
|
||||
case 93341: FactionID = 1158; break; // Hyjal
|
||||
case 93347: FactionID = 1171; break; // Therazane
|
||||
case 93368: FactionID = 1174; break; // Wildhammer Clan
|
||||
case 94158: FactionID = 1172; break; // Dragonmaw Clan
|
||||
case 93827: FactionID = 530; break; // Darkspear Champion
|
||||
case 93830: FactionID = 1133; break; // Bilgewater Champion
|
||||
case 94462: FactionID = 68; break; // Undercity Champion
|
||||
case 94463: FactionID = 81; break; // Thunder Bluff Champion
|
||||
case 93828: FactionID = 911; break; // Silvermoon Champion
|
||||
case 93825: FactionID = 76; break; // Orgrimmar Champion
|
||||
case 93821: FactionID = 54; break; // Gnomeregan Champion
|
||||
case 93816: FactionID = 1134; break; // Gilneas Champion
|
||||
case 93806: FactionID = 69; break; // Darnassus Champion
|
||||
case 93811: FactionID = 930; break; // Exodar Champion
|
||||
case 93805: FactionID = 47; break; // Ironforge Champion
|
||||
case 93795: FactionID = 72; break; // Sturmwind Champion
|
||||
}
|
||||
}
|
||||
caster->ToPlayer()->SetChampioningFaction(FactionID);
|
||||
|
||||
Reference in New Issue
Block a user