Skip to content

Instantly share code, notes, and snippets.

@Retriman
Created October 11, 2012 14:48
Show Gist options
  • Save Retriman/3872919 to your computer and use it in GitHub Desktop.
Save Retriman/3872919 to your computer and use it in GitHub Desktop.
Winter
@@ -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