diff options
author | Subv <s.v.h21@hotmail.com> | 2012-09-28 17:56:08 -0500 |
---|---|---|
committer | Subv <s.v.h21@hotmail.com> | 2012-09-28 17:56:08 -0500 |
commit | a706b8027aa72a6d5313f12357393ec57098ccdf (patch) | |
tree | 5775350aa10ab48ae8e035d8bf898eda0f0498b9 /src | |
parent | 95db9605ce227403eb4ea7fa46c91f47eb51a3ac (diff) | |
parent | cb8fc503ddb1fc87abdd1c88146646c68aea46b9 (diff) |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into mmaps
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlefield/Battlefield.h | 6 | ||||
-rw-r--r-- | src/server/game/Battlefield/BattlefieldMgr.h | 6 | ||||
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 41 | ||||
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.h | 18 | ||||
-rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 4 | ||||
-rwxr-xr-x | src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp | 1 | ||||
-rwxr-xr-x | src/server/game/Battlegrounds/Zones/BattlegroundEY.h | 4 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 51 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 1 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 8 | ||||
-rwxr-xr-x | src/server/game/Handlers/BattleGroundHandler.cpp | 4 | ||||
-rwxr-xr-x | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/tanaris.cpp | 64 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp | 8 | ||||
-rwxr-xr-x | src/server/shared/Logging/Log.cpp | 11 |
15 files changed, 134 insertions, 97 deletions
diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h index 480aafbeb42..2ca6a2e3f96 100644 --- a/src/server/game/Battlefield/Battlefield.h +++ b/src/server/game/Battlefield/Battlefield.h @@ -211,9 +211,6 @@ class Battlefield : public ZoneScript /// Call this to init the Battlefield virtual bool SetupBattlefield() { return true; } - /// Generate packet which contain all worldstatedata of area - virtual void FillInitialWorldStates(WorldPacket& /*data*/) {} - /// Update data of a worldstate to all players present in zone void SendUpdateWorldState(uint32 field, uint32 value); @@ -330,7 +327,8 @@ class Battlefield : public ZoneScript virtual void DoCompleteOrIncrementAchievement(uint32 /*achievement*/, Player* /*player*/, uint8 /*incrementNumber = 1*/) {}; /// Send all worldstate data to all player in zone. - virtual void SendInitWorldStatesToAll() {}; + virtual void SendInitWorldStatesToAll() = 0; + virtual void FillInitialWorldStates(WorldPacket& /*data*/) = 0; /// Return if we can use mount in battlefield bool CanFlyIn() { return !m_isActive; } diff --git a/src/server/game/Battlefield/BattlefieldMgr.h b/src/server/game/Battlefield/BattlefieldMgr.h index 4ee37e424fd..1ec1f3b1151 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.h +++ b/src/server/game/Battlefield/BattlefieldMgr.h @@ -46,10 +46,10 @@ class BattlefieldMgr // called when player resurrects void HandlePlayerResurrects(Player * player, uint32 areaflag); // return assigned battlefield - Battlefield *GetBattlefieldToZoneId(uint32 zoneid); - Battlefield *GetBattlefieldByBattleId(uint32 battleid); + Battlefield* GetBattlefieldToZoneId(uint32 zoneid); + Battlefield* GetBattlefieldByBattleId(uint32 battleid); - ZoneScript *GetZoneScript(uint32 zoneId); + ZoneScript* GetZoneScript(uint32 zoneId); void AddZone(uint32 zoneid, Battlefield * handle); diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 2270bcf7927..0da2a9ca06c 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -612,33 +612,26 @@ void BattlefieldWG::OnCreatureRemove(Creature* /*creature*/) void BattlefieldWG::OnGameObjectCreate(GameObject* go) { - bool isWorkshop = false; uint8 workshopId = 0; switch (go->GetEntry()) { case GO_WINTERGRASP_FACTORY_BANNER_NE: - isWorkshop = true; workshopId = BATTLEFIELD_WG_WORKSHOP_NE; break; case GO_WINTERGRASP_FACTORY_BANNER_NW: - isWorkshop = true; workshopId = BATTLEFIELD_WG_WORKSHOP_NW; break; case GO_WINTERGRASP_FACTORY_BANNER_SE: - isWorkshop = true; workshopId = BATTLEFIELD_WG_WORKSHOP_SE; break; case GO_WINTERGRASP_FACTORY_BANNER_SW: - isWorkshop = true; workshopId = BATTLEFIELD_WG_WORKSHOP_SW; break; - + default: + return; } - if (!isWorkshop) - return; - for (Workshop::const_iterator itr = WorkshopsList.begin(); itr != WorkshopsList.end(); ++itr) { if (WGWorkshop* workshop = (*itr)) @@ -851,20 +844,13 @@ uint32 BattlefieldWG::GetData(uint32 data) return Battlefield::GetData(data); } -// Method sending worldsate to player -WorldPacket BattlefieldWG::BuildInitWorldStates() -{ - WorldPacket data(SMSG_INIT_WORLD_STATES, (4 + 4 + 4 + 2 + (BuildingsInZone.size() * 8) + (WorkshopsList.size() * 8))); - - data << uint32(m_MapId); - data << uint32(m_ZoneId); - data << uint32(0); - data << uint16(4 + 2 + 4 + BuildingsInZone.size() + WorkshopsList.size()); +void BattlefieldWG::FillInitialWorldStates(WorldPacket& data) +{ data << uint32(BATTLEFIELD_WG_WORLD_STATE_ATTACKER) << uint32(GetAttackerTeam()); data << uint32(BATTLEFIELD_WG_WORLD_STATE_DEFENDER) << uint32(GetDefenderTeam()); - data << uint32(BATTLEFIELD_WG_WORLD_STATE_ACTIVE) << uint32(IsWarTime()? 0 : 1); // Note: cleanup these two, their names look awkward - data << uint32(BATTLEFIELD_WG_WORLD_STATE_SHOW_WORLDSTATE) << uint32(IsWarTime()? 1 : 0); + data << uint32(BATTLEFIELD_WG_WORLD_STATE_ACTIVE) << uint32(IsWarTime() ? 0 : 1); // Note: cleanup these two, their names look awkward + data << uint32(BATTLEFIELD_WG_WORLD_STATE_SHOW_WORLDSTATE) << uint32(IsWarTime() ? 1 : 0); for (uint32 i = 0; i < 2; ++i) data << ClockWorldState[i] << uint32(time(NULL) + (m_Timer / 1000)); @@ -880,23 +866,28 @@ WorldPacket BattlefieldWG::BuildInitWorldStates() for (Workshop::const_iterator itr = WorkshopsList.begin(); itr != WorkshopsList.end(); ++itr) if (*itr) data << WorkshopsData[(*itr)->workshopId].worldstate << (*itr)->state; - - return data; } void BattlefieldWG::SendInitWorldStatesTo(Player* player) { - WorldPacket data = BuildInitWorldStates(); + WorldPacket data(SMSG_INIT_WORLD_STATES, (4 + 4 + 4 + 2 + (BuildingsInZone.size() * 8) + (WorkshopsList.size() * 8))); + + data << uint32(m_MapId); + data << uint32(m_ZoneId); + data << uint32(0); + data << uint16(10 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields + + FillInitialWorldStates(data); + player->GetSession()->SendPacket(&data); } void BattlefieldWG::SendInitWorldStatesToAll() { - WorldPacket data = BuildInitWorldStates(); for (uint8 team = 0; team < 2; team++) for (GuidSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) if (Player* player = sObjectAccessor->FindPlayer(*itr)) - player->GetSession()->SendPacket(&data); + SendInitWorldStatesTo(player); } void BattlefieldWG::BrokenWallOrTower(TeamId /*team*/) diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 11510e1ea98..323f7f2b13d 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -26,12 +26,6 @@ #include "GroupMgr.h" #include "Battlefield.h" -uint32 const VehNumWorldState[2] = { 3680, 3490 }; -uint32 const MaxVehNumWorldState[2] = { 3681, 3491 }; -uint32 const ClockWorldState[2] = { 3781, 4354 }; -uint32 const WintergraspFaction[3] = { 1732, 1735, 35 }; -float const WintergraspStalkerPos[4] = { 0, 0, 0, 0 }; - class BattlefieldWG; class WintergraspCapturePoint; @@ -404,9 +398,9 @@ class BattlefieldWG : public Battlefield void UpdateVehicleCountWG(); void UpdateCounterVehicle(bool init); - WorldPacket BuildInitWorldStates(); void SendInitWorldStatesTo(Player* player); void SendInitWorldStatesToAll(); + void FillInitialWorldStates(WorldPacket& data); void HandleKill(Player* killer, Unit* victim); void OnUnitDeath(Unit* unit); @@ -421,6 +415,7 @@ class BattlefieldWG : public Battlefield uint8 GetSpiritGraveyardId(uint32 areaId); uint32 GetData(uint32 data); + protected: bool m_isRelicInteractible; @@ -441,6 +436,12 @@ class BattlefieldWG : public Battlefield GameObject* m_titansRelic; }; +uint32 const VehNumWorldState[] = { 3680, 3490 }; +uint32 const MaxVehNumWorldState[] = { 3681, 3491 }; +uint32 const ClockWorldState[] = { 3781, 4354 }; +uint32 const WintergraspFaction[] = { 1732, 1735, 35 }; +float const WintergraspStalkerPos[] = { 0, 0, 0, 0 }; + uint8 const WG_MAX_OBJ = 32; uint8 const WG_KEEPGAMEOBJECT_MAX = 44; uint8 const WG_MAX_TURRET = 15; @@ -448,6 +449,7 @@ uint8 const WG_MAX_KEEP_NPC = 39; uint8 const WG_MAX_OUTSIDE_NPC = 14; uint8 const WG_OUTSIDE_ALLIANCE_NPC = 7; uint8 const WG_MAX_TELEPORTER = 12; +uint8 const WG_MAX_WORKSHOP = 6; enum WintergraspGameObjectBuildingType { @@ -1112,8 +1114,6 @@ const WintergraspTowerCannonData TowerCannon[WG_MAX_TOWER_CANNON] = // *****************WorkShop Data & Element***************** // ********************************************************* -uint8 const WG_MAX_WORKSHOP = 6; - struct WGWorkshopData { uint8 id; diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 647f55c4ffa..05fc4e68e8c 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1940,8 +1940,6 @@ void Battleground::RewardXPAtKill(Player* killer, Player* victim) void Battleground::HandleAreaTrigger(Player* player, uint32 trigger) { - sLog->outError(LOG_FILTER_BATTLEGROUND, "WARNING: Unhandled AreaTrigger %u in Battleground %u. Player coords (x: %f, y: %f, z: %f)", + sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Unhandled AreaTrigger %u in Battleground %u. Player coords (x: %f, y: %f, z: %f)", trigger, player->GetMapId(), player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()); - if (player->isGameMaster()) - player->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", trigger); } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index dfd7af583a5..e91c5122604 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -236,6 +236,7 @@ void BattlegroundAB::HandleAreaTrigger(Player* player, uint32 trigger) case 3870: // Black Smith case 4020: // Unk1 case 4021: // Unk2 + case 4674: // Unk3 //break; default: Battleground::HandleAreaTrigger(player, trigger); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h index c7ee4c62504..f7487a46653 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h @@ -105,11 +105,11 @@ enum EYBattlegroundObjectEntry enum EYBattlegroundPointsTrigger { TR_BLOOD_ELF_POINT = 4476, - TR_FEL_REAVER_POINT = 4514, + TR_FEL_REAVER_POINT = 4514, TR_MAGE_TOWER_POINT = 4516, TR_DRAENEI_RUINS_POINT = 4518, TR_BLOOD_ELF_BUFF = 4568, - TR_FEL_REAVER_BUFF = 4569, + TR_FEL_REAVER_BUFF = 4569, TR_MAGE_TOWER_BUFF = 4570, TR_DRAENEI_RUINS_BUFF = 4571 }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 68be167f919..fcc3c8a1e93 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -76,6 +76,7 @@ #include "AccountMgr.h" #include "Battlefield.h" #include "BattlefieldMgr.h" +#include "BattlefieldWG.h" #define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS) @@ -5505,12 +5506,7 @@ void Player::RepopAtGraveyard() if (sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId())) ClosestGrave = sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId())->GetClosestGraveYard(this); else - { - if (sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId())) - ClosestGrave = sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId())->GetClosestGraveYard(this); - else - ClosestGrave = sObjectMgr->GetClosestGraveYard(GetPositionX(), GetPositionY(), GetPositionZ(), GetMapId(), GetTeam()); - } + ClosestGrave = sObjectMgr->GetClosestGraveYard(GetPositionX(), GetPositionY(), GetPositionZ(), GetMapId(), GetTeam()); } // stop countdown until repop @@ -9046,6 +9042,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) uint32 mapid = GetMapId(); OutdoorPvP* pvp = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneid); InstanceScript* instance = GetInstanceScript(); + Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(zoneid); sLog->outDebug(LOG_FILTER_NETWORKIO, "Sending SMSG_INIT_WORLD_STATES to Map: %u, Zone: %u", mapid, zoneid); @@ -9119,6 +9116,10 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) case 4273: // Ulduar NumberOfFields = 10; break; + case 4197: // Wintergrasp + /// Use the max here, and fill with zeros if missing. + NumberOfFields = 10 + WG_MAX_OBJ + WG_MAX_WORKSHOP; + break; default: NumberOfFields = 12; break; @@ -9128,6 +9129,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) data << uint32(mapid); // mapid data << uint32(zoneid); // zone id data << uint32(areaid); // area id, new 2.1.0 + size_t countPos = data.wpos(); data << uint16(NumberOfFields); // count of uint64 blocks data << uint32(0x8d8) << uint32(0x0); // 1 data << uint32(0x8d7) << uint32(0x0); // 2 @@ -9673,6 +9675,16 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) data << uint32(4131) << uint32(0); // 10 WORLDSTATE_CRATES_REVEALED } break; + // Wintergrasp + case 4197: + if (bf && bf->GetTypeId() == BATTLEFIELD_WG) + { + bf->FillInitialWorldStates(data); + break; + } + else + data.put<uint16>(countPos, 12); + // No break here, intended. default: data << uint32(0x914) << uint32(0x0); // 7 data << uint32(0x913) << uint32(0x0); // 8 @@ -9682,6 +9694,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) } GetSession()->SendPacket(&data); SendBGWeekendWorldStates(); + SendBattlefieldWorldStates(); } void Player::SendBGWeekendWorldStates() @@ -9699,6 +9712,24 @@ void Player::SendBGWeekendWorldStates() } } +void Player::SendBattlefieldWorldStates() +{ + /// Send misc stuff that needs to be sent on every login, like the battle timers. + if (sWorld->getBoolConfig(CONFIG_WINTERGRASP_ENABLE)) + { + if (BattlefieldWG* wg = (BattlefieldWG*)sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)) + { + if (wg->IsWarTime()) + SendUpdateWorldState(ClockWorldState[1], uint32(time(NULL))); + else // Time to next battle + { + uint32 timer = wg->GetTimer() / 1000; + SendUpdateWorldState(ClockWorldState[1], time(NULL) + timer); + } + } + } +} + uint32 Player::GetXPRestBonus(uint32 xp) { uint32 rested_bonus = (uint32)GetRestBonus(); // xp for each rested bonus @@ -21760,6 +21791,14 @@ inline void UpdateVisibilityOf_helper(std::set<uint64>& s64, T* target, std::set } template<> +inline void UpdateVisibilityOf_helper(std::set<uint64>& s64, GameObject* target, std::set<Unit*>& /*v*/) +{ + // Don't update only GAMEOBJECT_TYPE_TRANSPORT (or all transports and destructible buildings?) + if ((target->GetGOInfo()->type != GAMEOBJECT_TYPE_TRANSPORT)) + s64.insert(target->GetGUID()); +} + +template<> inline void UpdateVisibilityOf_helper(std::set<uint64>& s64, Creature* target, std::set<Unit*>& v) { s64.insert(target->GetGUID()); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 0decacd6258..82e91985b04 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2125,6 +2125,7 @@ class Player : public Unit, public GridObject<Player> void SendUpdateWorldState(uint32 Field, uint32 Value); void SendDirectMessage(WorldPacket* data); void SendBGWeekendWorldStates(); + void SendBattlefieldWorldStates(); void SendAurasForTarget(Unit* target); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index cb2d46dff85..8b906ca47b2 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6643,7 +6643,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere if (beaconTarget == this || !(beaconTarget->GetAura(53563, victim->GetGUID()))) return false; basepoints0 = int32(damage); - triggered_spell_id = procSpell->IsRankOf(sSpellMgr->GetSpellInfo(365)) ? 53652 : 53654; + triggered_spell_id = procSpell->IsRankOf(sSpellMgr->GetSpellInfo(635)) ? 53652 : 53654; } else { // Check Party/Raid Group @@ -6662,7 +6662,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere beaconTarget = Member; basepoints0 = int32(damage); - triggered_spell_id = procSpell->IsRankOf(sSpellMgr->GetSpellInfo(365)) ? 53652 : 53654; + triggered_spell_id = procSpell->IsRankOf(sSpellMgr->GetSpellInfo(635)) ? 53652 : 53654; break; } } @@ -11579,7 +11579,9 @@ bool Unit::IsImmunedToSpellEffect(SpellInfo const* spellInfo, uint32 index) cons SpellImmuneList const& list = m_spellImmune[IMMUNITY_STATE]; for (SpellImmuneList::const_iterator itr = list.begin(); itr != list.end(); ++itr) if (itr->type == aura) - return true; + if (!(spellInfo->AttributesEx3 & SPELL_ATTR3_IGNORE_HIT_RESULT)) + return true; + // Check for immune to application of harmful magical effects AuraEffectList const& immuneAuraApply = GetAuraEffectsByType(SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL); for (AuraEffectList::const_iterator iter = immuneAuraApply.begin(); iter != immuneAuraApply.end(); ++iter) diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 3bae430ad2c..5c8860cc900 100755 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -324,8 +324,8 @@ void WorldSession::HandleBattlefieldListOpcode(WorldPacket &recv_data) uint8 fromWhere; recv_data >> fromWhere; // 0 - battlemaster (lua: ShowBattlefieldList), 1 - UI (lua: RequestBattlegroundInstanceInfo) - uint8 unk1; - recv_data >> unk1; // Unknown 3.2.2 + uint8 canGainXP; + recv_data >> canGainXP; // players with locked xp have their own bg queue on retail BattlemasterListEntry const* bl = sBattlemasterListStore.LookupEntry(bgTypeId); if (!bl) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 29dcde9d616..f28a02a52fc 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2280,6 +2280,10 @@ void AuraEffect::HandleAuraTransform(AuraApplication const* aurApp, uint8 mode, case 75532: target->SetDisplayId(target->getGender() == GENDER_MALE ? 31737 : 31738); break; + // Gnomeregan Pride + case 75531: + target->SetDisplayId(target->getGender() == GENDER_MALE ? 31654 : 31655); + break; default: break; } diff --git a/src/server/scripts/Kalimdor/tanaris.cpp b/src/server/scripts/Kalimdor/tanaris.cpp index 9b742b495bb..417c8b338c7 100644 --- a/src/server/scripts/Kalimdor/tanaris.cpp +++ b/src/server/scripts/Kalimdor/tanaris.cpp @@ -150,20 +150,20 @@ public: enum CustodianOfTime { - WHISPER_CUSTODIAN_1 = -1000217, - WHISPER_CUSTODIAN_2 = -1000218, - WHISPER_CUSTODIAN_3 = -1000219, - WHISPER_CUSTODIAN_4 = -1000220, - WHISPER_CUSTODIAN_5 = -1000221, - WHISPER_CUSTODIAN_6 = -1000222, - WHISPER_CUSTODIAN_7 = -1000223, - WHISPER_CUSTODIAN_8 = -1000224, - WHISPER_CUSTODIAN_9 = -1000225, - WHISPER_CUSTODIAN_10 = -1000226, - WHISPER_CUSTODIAN_11 = -1000227, - WHISPER_CUSTODIAN_12 = -1000228, - WHISPER_CUSTODIAN_13 = -1000229, - WHISPER_CUSTODIAN_14 = -1000230 + WHISPER_CUSTODIAN_1 = 0, + WHISPER_CUSTODIAN_2 = 1, + WHISPER_CUSTODIAN_3 = 2, + WHISPER_CUSTODIAN_4 = 3, + WHISPER_CUSTODIAN_5 = 4, + WHISPER_CUSTODIAN_6 = 5, + WHISPER_CUSTODIAN_7 = 6, + WHISPER_CUSTODIAN_8 = 7, + WHISPER_CUSTODIAN_9 = 8, + WHISPER_CUSTODIAN_10 = 9, + WHISPER_CUSTODIAN_11 = 10, + WHISPER_CUSTODIAN_12 = 11, + WHISPER_CUSTODIAN_13 = 12, + WHISPER_CUSTODIAN_14 = 13 }; class npc_custodian_of_time : public CreatureScript @@ -187,58 +187,58 @@ public: switch (waypointId) { case 0: - DoScriptText(WHISPER_CUSTODIAN_1, me, player); + Talk(WHISPER_CUSTODIAN_1, player->GetGUID()); break; case 1: - DoScriptText(WHISPER_CUSTODIAN_2, me, player); + Talk(WHISPER_CUSTODIAN_2, player->GetGUID()); break; case 2: - DoScriptText(WHISPER_CUSTODIAN_3, me, player); + Talk(WHISPER_CUSTODIAN_3, player->GetGUID()); break; case 3: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 5: - DoScriptText(WHISPER_CUSTODIAN_5, me, player); + Talk(WHISPER_CUSTODIAN_5, player->GetGUID()); break; case 6: - DoScriptText(WHISPER_CUSTODIAN_6, me, player); + Talk(WHISPER_CUSTODIAN_6, player->GetGUID()); break; case 7: - DoScriptText(WHISPER_CUSTODIAN_7, me, player); + Talk(WHISPER_CUSTODIAN_7, player->GetGUID()); break; case 8: - DoScriptText(WHISPER_CUSTODIAN_8, me, player); + Talk(WHISPER_CUSTODIAN_8, player->GetGUID()); break; case 9: - DoScriptText(WHISPER_CUSTODIAN_9, me, player); + Talk(WHISPER_CUSTODIAN_9, player->GetGUID()); break; case 10: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 13: - DoScriptText(WHISPER_CUSTODIAN_10, me, player); + Talk(WHISPER_CUSTODIAN_10, player->GetGUID()); break; case 14: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 16: - DoScriptText(WHISPER_CUSTODIAN_11, me, player); + Talk(WHISPER_CUSTODIAN_11, player->GetGUID()); break; case 17: - DoScriptText(WHISPER_CUSTODIAN_12, me, player); + Talk(WHISPER_CUSTODIAN_12, player->GetGUID()); break; case 18: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 22: - DoScriptText(WHISPER_CUSTODIAN_13, me, player); + Talk(WHISPER_CUSTODIAN_13, player->GetGUID()); break; case 23: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 24: - DoScriptText(WHISPER_CUSTODIAN_14, me, player); + Talk(WHISPER_CUSTODIAN_14, player->GetGUID()); DoCast(player, 34883); // below here is temporary workaround, to be removed when spell works properly player->AreaExploredOrEventHappens(10277); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index e8e938dc06b..6038b7ed9d6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -369,7 +369,7 @@ class boss_razorscale : public CreatureScript void MovementInform(uint32 type, uint32 id) { - if (type == POINT_MOTION_TYPE && id == 1) + if (type == EFFECT_MOTION_TYPE && id == 1) { phase = PHASE_GROUND; events.SetPhase(PHASE_GROUND); @@ -407,7 +407,7 @@ class boss_razorscale : public CreatureScript if (HarpoonCounter == RAID_MODE(2, 4)) { HarpoonCounter = 0; - me->GetMotionMaster()->MovePoint(1, RazorGround); + me->GetMotionMaster()->MoveLand(1, RazorGround); } if (phase == PHASE_GROUND) @@ -423,7 +423,7 @@ class boss_razorscale : public CreatureScript me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_PASSIVE); me->AttackStop(); - me->GetMotionMaster()->MovePoint(0, RazorFlight); + me->GetMotionMaster()->MoveTakeoff(0, RazorFlight); events.ScheduleEvent(EVENT_FIREBALL, 7000, 0, PHASE_FLIGHT); events.ScheduleEvent(EVENT_DEVOURING, 10000, 0, PHASE_FLIGHT); events.ScheduleEvent(EVENT_SUMMON, 5000, 0, PHASE_FLIGHT); @@ -525,7 +525,7 @@ class boss_razorscale : public CreatureScript phase = PHASE_PERMAGROUND; events.SetPhase(PHASE_PERMAGROUND); me->SetCanFly(false); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED); me->SetReactState(REACT_AGGRESSIVE); me->RemoveAurasDueToSpell(SPELL_HARPOON_TRIGGER); me->SetSpeed(MOVE_FLIGHT, 1.0f, true); diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index ed65104d6ac..9f3c8f77739 100755 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -281,9 +281,12 @@ void Log::vlog(LogFilterType filter, LogLevel level, char const* str, va_list ar void Log::write(LogMessage* msg) { - msg->text.append("\n"); - Logger* logger = GetLoggerByType(msg->type); - worker->enqueue(new LogOperation(logger, msg)); + if (worker) + { + msg->text.append("\n"); + Logger* logger = GetLoggerByType(msg->type); + worker->enqueue(new LogOperation(logger, msg)); + } } std::string Log::GetTimestampStr() @@ -481,6 +484,7 @@ void Log::Close() void Log::LoadFromConfig() { Close(); + worker = new LogWorker(); AppenderId = 0; m_logsDir = ConfigMgr::GetStringDefault("LogsDir", ""); if (!m_logsDir.empty()) @@ -488,5 +492,4 @@ void Log::LoadFromConfig() m_logsDir.push_back('/'); ReadAppendersFromConfig(); ReadLoggersFromConfig(); - worker = new LogWorker(); } |