Merge commit '4fd51ab3b94c5a61d009f57ad28fb728bd154fb8' into 4.3.4
Conflicts: .travis.yml cmake/macros/ConfigureBoost.cmake sql/base/auth_database.sql sql/base/characters_database.sql sql/base/dev/world_database.sql sql/updates/world/2015_03_21_00_world.sql src/server/game/Miscellaneous/Language.h src/server/game/Spells/Auras/SpellAuraEffects.cpp src/server/game/Spells/Spell.cpp src/server/game/Spells/SpellEffects.cpp src/server/game/Spells/SpellInfo.cpp src/server/scripts/Spells/spell_quest.cpp src/server/worldserver/Main.cpp
This commit is contained in:
commit
fd0ef7bfab
402 files changed
+2494
-366
No files matched your search
@@ -64,6 +64,7 @@ include_directories(
|
||||
${CMAKE_SOURCE_DIR}/src/server/shared/Logging
|
||||
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
|
||||
${CMAKE_SOURCE_DIR}/src/server/shared/Threading
|
||||
${CMAKE_SOURCE_DIR}/src/server/shared/Updater
|
||||
${CMAKE_SOURCE_DIR}/src/server/shared/Utilities
|
||||
${CMAKE_SOURCE_DIR}/src/server/ipc
|
||||
${CMAKE_SOURCE_DIR}/src/server/collision
|
||||
|
||||
@@ -236,7 +236,8 @@ public:
|
||||
zoneId, (zoneEntry ? zoneEntry->area_name : unknown),
|
||||
areaId, (areaEntry ? areaEntry->area_name : unknown),
|
||||
object->GetPhaseMask(),
|
||||
object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation(),
|
||||
object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation());
|
||||
handler->PSendSysMessage(LANG_GRID_POSITION,
|
||||
cell.GridX(), cell.GridY(), cell.CellX(), cell.CellY(), object->GetInstanceId(),
|
||||
zoneX, zoneY, groundZ, floorZ, haveMap, haveVMap, haveMMap);
|
||||
|
||||
|
||||
-6
@@ -255,12 +255,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
|
||||
if (GetBossState(BOSS_VALKIRIES) == SPECIAL)
|
||||
state = DONE;
|
||||
break;
|
||||
case DONE:
|
||||
if (instance->GetPlayers().getFirst()->GetSource()->GetTeam() == ALLIANCE)
|
||||
EventStage = 4020;
|
||||
else
|
||||
EventStage = 4030;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
+6
-12
@@ -133,7 +133,7 @@ class npc_announcer_toc10 : public CreatureScript
|
||||
|
||||
char const* _message = "We are ready!";
|
||||
|
||||
if (player->IsInCombat() || instance->IsEncounterInProgress() || instance->GetData(TYPE_EVENT))
|
||||
if (player->IsInCombat() || instance->IsEncounterInProgress())
|
||||
return true;
|
||||
|
||||
uint8 i = 0;
|
||||
@@ -199,17 +199,11 @@ class npc_announcer_toc10 : public CreatureScript
|
||||
}
|
||||
else if (instance->GetBossState(BOSS_LICH_KING) != DONE)
|
||||
{
|
||||
if (GameObject* floor = ObjectAccessor::GetGameObject(*player, instance->GetGuidData(GO_ARGENT_COLISEUM_FLOOR)))
|
||||
floor->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
|
||||
|
||||
creature->CastSpell(creature, SPELL_CORPSE_TELEPORT, false);
|
||||
creature->CastSpell(creature, SPELL_DESTROY_FLOOR_KNOCKUP, false);
|
||||
|
||||
if (!ObjectAccessor::GetCreature(*creature, instance->GetGuidData(NPC_ANUBARAK)))
|
||||
creature->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
|
||||
|
||||
if (creature->IsVisible())
|
||||
creature->SetVisible(false);
|
||||
if (creature->GetMap()->GetPlayers().getFirst()->GetSource()->GetTeam() == ALLIANCE)
|
||||
instance->SetData(TYPE_EVENT, 4020);
|
||||
else
|
||||
instance->SetData(TYPE_EVENT, 4030);
|
||||
instance->SetBossState(BOSS_LICH_KING, NOT_STARTED);
|
||||
}
|
||||
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
return true;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "InstanceScript.h"
|
||||
#include "Vehicle.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptMgr.h"
|
||||
@@ -91,6 +92,7 @@ class instance_ulduar : public InstanceMapScript
|
||||
|
||||
// Creatures
|
||||
ObjectGuid LeviathanGUID;
|
||||
GuidVector LeviathanVehicleGUIDs;
|
||||
ObjectGuid IgnisGUID;
|
||||
ObjectGuid RazorscaleGUID;
|
||||
ObjectGuid RazorscaleController;
|
||||
@@ -217,6 +219,11 @@ class instance_ulduar : public InstanceMapScript
|
||||
case NPC_LEVIATHAN:
|
||||
LeviathanGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_SALVAGED_DEMOLISHER:
|
||||
case NPC_SALVAGED_SIEGE_ENGINE:
|
||||
case NPC_SALVAGED_CHOPPER:
|
||||
LeviathanVehicleGUIDs.push_back(creature->GetGUID());
|
||||
break;
|
||||
case NPC_IGNIS:
|
||||
IgnisGUID = creature->GetGUID();
|
||||
break;
|
||||
@@ -682,6 +689,24 @@ class instance_ulduar : public InstanceMapScript
|
||||
switch (type)
|
||||
{
|
||||
case BOSS_LEVIATHAN:
|
||||
if (state == DONE)
|
||||
{
|
||||
// Eject all players from vehicles and make them untargetable.
|
||||
// They will be despawned after a while
|
||||
for (auto const& vehicleGuid : LeviathanVehicleGUIDs)
|
||||
{
|
||||
if (Creature* vehicleCreature = instance->GetCreature(vehicleGuid))
|
||||
{
|
||||
if (Vehicle* vehicle = vehicleCreature->GetVehicleKit())
|
||||
{
|
||||
vehicle->RemoveAllPassengers();
|
||||
vehicleCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
vehicleCreature->DespawnOrUnsummon(5 * MINUTE * IN_MILLISECONDS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case BOSS_IGNIS:
|
||||
case BOSS_RAZORSCALE:
|
||||
case BOSS_XT002:
|
||||
@@ -1143,6 +1168,34 @@ class instance_ulduar : public InstanceMapScript
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateDoorState(GameObject* door) override
|
||||
{
|
||||
// Leviathan doors are set to DOOR_TYPE_ROOM except the one it uses to enter the room
|
||||
// which has to be set to DOOR_TYPE_PASSAGE
|
||||
if (door->GetEntry() == GO_LEVIATHAN_DOOR && door->GetPositionX() > 400.f)
|
||||
door->SetGoState(GetBossState(BOSS_LEVIATHAN) == DONE ? GO_STATE_ACTIVE : GO_STATE_READY);
|
||||
else
|
||||
InstanceScript::UpdateDoorState(door);
|
||||
}
|
||||
|
||||
void AddDoor(GameObject* door, bool add) override
|
||||
{
|
||||
// Leviathan doors are South except the one it uses to enter the room
|
||||
// which is North and should not be used for boundary checks in BossAI::CheckBoundary()
|
||||
if (door->GetEntry() == GO_LEVIATHAN_DOOR && door->GetPositionX() > 400.f)
|
||||
{
|
||||
if (add)
|
||||
GetBossInfo(BOSS_LEVIATHAN)->door[DOOR_TYPE_PASSAGE].insert(door->GetGUID());
|
||||
else
|
||||
GetBossInfo(BOSS_LEVIATHAN)->door[DOOR_TYPE_PASSAGE].erase(door->GetGUID());
|
||||
|
||||
if (add)
|
||||
UpdateDoorState(door);
|
||||
}
|
||||
else
|
||||
InstanceScript::AddDoor(door, add);
|
||||
}
|
||||
|
||||
private:
|
||||
EventMap _events;
|
||||
uint32 _algalonTimer;
|
||||
|
||||
@@ -54,6 +54,7 @@ enum UlduarNPCs
|
||||
NPC_LEVIATHAN = 33113,
|
||||
NPC_SALVAGED_DEMOLISHER = 33109,
|
||||
NPC_SALVAGED_SIEGE_ENGINE = 33060,
|
||||
NPC_SALVAGED_CHOPPER = 33062,
|
||||
NPC_IGNIS = 33118,
|
||||
NPC_RAZORSCALE = 33186,
|
||||
NPC_RAZORSCALE_CONTROLLER = 33233,
|
||||
|
||||
Reference in new issue
Block a user