Created
October 11, 2012 14:48
-
-
Save Retriman/3872919 to your computer and use it in GitHub Desktop.
Winter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -298,10 +298,13 @@ void BattlefieldWG::OnBattleStart() | |
SendWarningToAllInZone(BATTLEFIELD_WG_TEXT_START); | |
} | |
void BattlefieldWG::UpdateCounterVehicle(bool init) | |
{ | |
+ if (!IsWarTime()) | |
+ return; | |
+ | |
if (init) | |
{ | |
SetData(BATTLEFIELD_WG_DATA_VEHICLE_H, 0); | |
SetData(BATTLEFIELD_WG_DATA_VEHICLE_A, 0); | |
} | |
@@ -393,21 +396,42 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) | |
{ | |
if (Player* player = sObjectAccessor->FindPlayer(*itr)) | |
{ | |
player->CastSpell(player, SPELL_ESSENCE_OF_WINTERGRASP, true); | |
player->CastSpell(player, SPELL_VICTORY_REWARD, true); | |
+ if (GetData(BATTLEFIELD_WG_DATA_DAMAGED_TOWER_DEF)) | |
+ player->CastSpell(player, SPELL_DAMAGED_BUILDING, true); | |
+ else | |
+ if (!GetData(BATTLEFIELD_WG_DATA_BROKEN_TOWER_DEF)) | |
+ player->CastSpell(player, SPELL_INTACT_BUILDING, true); | |
+ if (GetData(BATTLEFIELD_WG_DATA_BROKEN_TOWER_ATT)) | |
+ player->CastSpell(player, SPELL_DESTROYED_TOWER, true); | |
+ else | |
+ if (GetData(BATTLEFIELD_WG_DATA_DAMAGED_TOWER_ATT)) | |
+ player->CastSpell(player, SPELL_DAMAGED_TOWER, true); | |
+ player->AreaExploredOrEventHappens(QUEST_VICTORY_WINTERGRASP_A); | |
+ player->AreaExploredOrEventHappens(QUEST_VICTORY_WINTERGRASP_H); | |
// Send Wintergrasp victory achievement | |
DoCompleteOrIncrementAchievement(ACHIEVEMENTS_WIN_WG, player); | |
// Award achievement for succeeding in Wintergrasp in 10 minutes or less | |
if (!endByTimer && GetTimer() <= 10000) | |
DoCompleteOrIncrementAchievement(ACHIEVEMENTS_WIN_WG_TIMER_10, player); | |
} | |
} | |
for (GuidSet::const_iterator itr = m_PlayersInWar[GetAttackerTeam()].begin(); itr != m_PlayersInWar[GetAttackerTeam()].end(); ++itr) | |
+ { | |
if (Player* player = sObjectAccessor->FindPlayer(*itr)) | |
+ { | |
player->CastSpell(player, SPELL_DEFEAT_REWARD, true); | |
+ if (GetData(BATTLEFIELD_WG_DATA_BROKEN_TOWER_DEF)) | |
+ player->CastSpell(player, SPELL_DESTROYED_TOWER, true); | |
+ else | |
+ if (GetData(BATTLEFIELD_WG_DATA_DAMAGED_TOWER_DEF)) | |
+ player->CastSpell(player, SPELL_DAMAGED_TOWER, true); | |
+ } | |
+ } | |
for (uint8 team = 0; team < 2; ++team) | |
{ | |
for (GuidSet::const_iterator itr = m_PlayersInWar[team].begin(); itr != m_PlayersInWar[team].end(); ++itr) | |
if (Player* player = sObjectAccessor->FindPlayer(*itr)) | |
@@ -890,19 +914,18 @@ void BattlefieldWG::SendInitWorldStatesToAll() | |
SendInitWorldStatesTo(player); | |
} | |
void BattlefieldWG::BrokenWallOrTower(TeamId /*team*/) | |
{ | |
-// might be some use for this in the future. old code commented out below. KL | |
-/* if (team == GetDefenderTeam()) | |
+ if (team == GetDefenderTeam()) | |
{ | |
- for (GuidSet::const_iterator itr = m_PlayersInWar[GetAttackerTeam()].begin(); itr != m_PlayersInWar[GetAttackerTeam()].end(); ++itr) | |
+ for (GuidSet::const_iterator itr = m_PlayersInWar[GetDefenderTeam()].begin(); itr != m_PlayersInWar[GetDefenderTeam()].end(); ++itr) | |
{ | |
if (Player* player = sObjectAccessor->FindPlayer(*itr)) | |
- IncrementQuest(player, WGQuest[player->GetTeamId()][2], true); | |
+ player->KilledMonsterCredit(CREDIT_TOWERS, 0); | |
} | |
- }*/ | |
+ } | |
} | |
// Called when a tower is broke | |
void BattlefieldWG::UpdatedDestroyedTowerCount(TeamId team) | |
{ | |
@@ -142,10 +142,17 @@ enum WintergraspAreaIds | |
AREA_EASTPARK_WORKSHOP = 4612, | |
AREA_WINTERGRASP = 4197, | |
AREA_THE_CHILLED_QUAGMIRE = 4589 | |
}; | |
+enum CreditsWintergrasp | |
+{ | |
+ QUEST_VICTORY_WINTERGRASP_A = 13181, | |
+ QUEST_VICTORY_WINTERGRASP_H = 13183, | |
+ CREDIT_TOWERS = 35074, | |
+}; | |
+ | |
/*######################### | |
*####### Graveyards ###### | |
*#########################*/ | |
class BfGraveyardWG : public BfGraveyard | |
@@ -1271,12 +1278,14 @@ struct BfWGGameObjectBuilding | |
m_WG->GetRelic()->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); | |
else | |
sLog->outError(LOG_FILTER_GENERAL, "BattlefieldWG: Relic not found."); | |
break; | |
} | |
- | |
- m_WG->BrokenWallOrTower(TeamId(m_Team)); | |
+ | |
+ if (m_Type == BATTLEFIELD_WG_OBJECTTYPE_TOWER) | |
+ m_WG->BrokenWallOrTower(TeamId(m_Team)); | |
+ | |
} | |
void Init(GameObject* go, uint32 type, uint32 worldstate, uint32 nameid) | |
{ | |
// GameObject associated to object | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment