diff options
| author | Jeremy <Golrag@users.noreply.github.com> | 2024-09-14 13:01:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-14 13:01:54 +0200 |
| commit | c499110a0d09364fa62a1f67db17032aea9c77e6 (patch) | |
| tree | 25dbe1cd4312e64e6f455ff9d05bec363f30ab3e /src/server/game | |
| parent | 4a574c0ce1149825c0fba77b0bea60608cbc470f (diff) | |
Scripts/Battlegrounds: Implement Silvershard mines (#30120)
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 2 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 237c283f8c6..f9b2944fd7d 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1380,6 +1380,7 @@ void Battleground::HandleKillPlayer(Player* victim, Player* killer) UpdatePlayerScore(killer, SCORE_HONORABLE_KILLS, 1); UpdatePlayerScore(killer, SCORE_KILLING_BLOWS, 1); + killer->UpdateCriteria(CriteriaType::KillPlayer, 1, 0, 0, victim); for (BattlegroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr) { @@ -1388,7 +1389,10 @@ void Battleground::HandleKillPlayer(Player* victim, Player* killer) continue; if (itr->second.Team == killerTeam && creditedPlayer->IsAtGroupRewardDistance(victim)) + { UpdatePlayerScore(creditedPlayer, SCORE_HONORABLE_KILLS, 1); + creditedPlayer->UpdateCriteria(CriteriaType::KillPlayer, 1, 0, 0, victim); + } } } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 2600a5fbdf9..eb48c74b1fa 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -4495,6 +4495,18 @@ void GameObject::HandleCustomTypeCommand(GameObjectTypeBase::CustomCommand const command.Execute(*m_goTypeImpl); } +TeamId GameObject::GetControllingTeam() const +{ + if (GetGoType() != GAMEOBJECT_TYPE_CONTROL_ZONE) + return TEAM_NEUTRAL; + + GameObjectType::ControlZone const* controlZone = dynamic_cast<GameObjectType::ControlZone const*>(m_goTypeImpl.get()); + if (!controlZone) + return TEAM_NEUTRAL; + + return controlZone->GetControllingTeam(); +} + void GameObject::CreateModel() { m_model = GameObjectModel::Create(std::make_unique<GameObjectModelOwnerImpl>(this), sWorld->GetDataPath()); diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 160b768544b..381317169db 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -453,6 +453,8 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject> UF::UpdateField<UF::GameObjectData, 0, TYPEID_GAMEOBJECT> m_gameObjectData; + TeamId GetControllingTeam() const; + protected: void CreateModel(); void UpdateModel(); // updates model in case displayId were changed |
