aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/options.cmake2
-rw-r--r--src/server/game/Entities/Object/Object.cpp23
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Maps/Map.cpp9
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp5
-rw-r--r--src/server/game/Scripting/ScriptMgr.h4
-rw-r--r--src/server/game/Spells/SpellHistory.cpp4
-rw-r--r--src/server/scripts/Spells/spell_item.cpp12
8 files changed, 32 insertions, 30 deletions
diff --git a/cmake/options.cmake b/cmake/options.cmake
index 3eb55ce6086..e636c1d7a92 100644
--- a/cmake/options.cmake
+++ b/cmake/options.cmake
@@ -33,7 +33,7 @@ foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
set_property(CACHE ${SCRIPT_MODULE_VARIABLE} PROPERTY STRINGS default disabled static dynamic)
endforeach()
-option(TOOLS "Build map/vmap/mmap extraction/assembler tools" 0)
+option(TOOLS "Build map/vmap/mmap extraction/assembler tools" 1)
option(USE_SCRIPTPCH "Use precompiled headers when compiling scripts" 1)
option(USE_COREPCH "Use precompiled headers when compiling servers" 1)
option(WITH_DYNAMIC_LINKING "Enable dynamic library linking." 0)
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 7610c9981c5..a8369728fe8 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1496,23 +1496,18 @@ void WorldObject::UpdateAllowedPositionZ(float x, float y, float &z) const
float WorldObject::GetGridActivationRange() const
{
- if (ToPlayer())
+ if (isActiveObject())
{
- if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
- return DEFAULT_VISIBILITY_INSTANCE;
+ if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->GetCinematicMgr()->IsOnCinematic())
+ return std::max(DEFAULT_VISIBILITY_INSTANCE, GetMap()->GetVisibilityRange());
+
return GetMap()->GetVisibilityRange();
}
- else if (ToCreature())
- return ToCreature()->m_SightDistance;
- else if (ToDynObject())
- {
- if (isActiveObject())
- return GetMap()->GetVisibilityRange();
- else
- return 0.0f;
- }
- else
- return 0.0f;
+
+ if (Creature const* thisCreature = ToCreature())
+ return thisCreature->m_SightDistance;
+
+ return 0.0f;
}
float WorldObject::GetVisibilityRange() const
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 86eefa043cd..9e969887ba6 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -4711,6 +4711,9 @@ void Player::BuildPlayerRepop()
// set and clear other
SetByteValue(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND);
+
+ // OnPlayerRepop hook
+ sScriptMgr->OnPlayerRepop(this);
}
void Player::ResurrectPlayer(float restore_percent, bool applySickness)
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index d2bc9cdfb51..943f4bd759b 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -721,14 +721,9 @@ void Map::Update(const uint32 t_diff)
VisitNearbyCellsOf(player, grid_object_update, world_object_update);
- // If player is using far sight, visit that object too
+ // If player is using far sight or mind vision, visit that object too
if (WorldObject* viewPoint = player->GetViewpoint())
- {
- if (Creature* viewCreature = viewPoint->ToCreature())
- VisitNearbyCellsOf(viewCreature, grid_object_update, world_object_update);
- else if (DynamicObject* viewObject = viewPoint->ToDynObject())
- VisitNearbyCellsOf(viewObject, grid_object_update, world_object_update);
- }
+ VisitNearbyCellsOf(viewPoint, grid_object_update, world_object_update);
// Handle updates for creatures in combat with player and are more than 60 yards away
if (player->IsInCombat())
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 621580a689b..f04f288a828 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -2160,6 +2160,11 @@ void ScriptMgr::OnQuestStatusChange(Player* player, uint32 questId)
FOREACH_SCRIPT(PlayerScript)->OnQuestStatusChange(player, questId);
}
+void ScriptMgr::OnPlayerRepop(Player* player)
+{
+ FOREACH_SCRIPT(PlayerScript)->OnPlayerRepop(player);
+}
+
// Account
void ScriptMgr::OnAccountLogin(uint32 accountId)
{
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 996a6579cf6..c47c75f3a9a 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -742,6 +742,9 @@ class TC_GAME_API PlayerScript : public UnitScript
// Called after a player's quest status has been changed
virtual void OnQuestStatusChange(Player* /*player*/, uint32 /*questId*/) { }
+
+ // Called when a player presses release when he died
+ virtual void OnPlayerRepop(Player* /*player*/) { }
};
class TC_GAME_API AccountScript : public ScriptObject
@@ -1072,6 +1075,7 @@ class TC_GAME_API ScriptMgr
void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent, uint8 extendState);
void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea);
void OnQuestStatusChange(Player* player, uint32 questId);
+ void OnPlayerRepop(Player* player);
public: /* AccountScript */
diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp
index de7414a66d7..a3c30f02329 100644
--- a/src/server/game/Spells/SpellHistory.cpp
+++ b/src/server/game/Spells/SpellHistory.cpp
@@ -308,10 +308,10 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel
// Now we have cooldown data (if found any), time to apply mods
if (Player* modOwner = _owner->GetSpellModOwner())
{
- if (cooldown > 0)
+ if (cooldown >= 0)
modOwner->ApplySpellMod<SPELLMOD_COOLDOWN>(spellInfo->Id, cooldown, spell);
- if (categoryCooldown > 0 && !spellInfo->HasAttribute(SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS))
+ if (categoryCooldown >= 0 && !spellInfo->HasAttribute(SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS))
modOwner->ApplySpellMod<SPELLMOD_COOLDOWN>(spellInfo->Id, categoryCooldown, spell);
}
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 53ad94a9fc5..8a030ebafdb 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -4602,7 +4602,7 @@ public:
Unit* target = GetCaster();
if (target->getPowerType() == POWER_MANA)
- availableElixirs.push_back(28509); // Elixir of Major Mageblood (22840)
+ availableElixirs.push_back(28509); // Elixir of Major Mageblood (22840)
uint32 chosenElixir = Trinity::Containers::SelectRandomContainerElement(availableElixirs);
@@ -4614,13 +4614,13 @@ public:
if (sSpellMgr->IsSpellMemberOfSpellGroup(chosenElixir, SPELL_GROUP_ELIXIR_GUARDIAN))
chosenSpellGroup = SPELL_GROUP_ELIXIR_GUARDIAN;
// If another spell of the same group is already active the elixir should not be cast
- if (chosenSpellGroup)
+ if (chosenSpellGroup != SPELL_GROUP_NONE)
{
- Unit::AuraApplicationMap& Auras = target->GetAppliedAuras();
- for (Unit::AuraApplicationMap::iterator itr = Auras.begin(); itr != Auras.end(); ++itr)
+ Unit::AuraApplicationMap const& auraMap = target->GetAppliedAuras();
+ for (auto itr = auraMap.begin(); itr != auraMap.end(); ++itr)
{
- uint32 spell_id = itr->second->GetBase()->GetId();
- if (sSpellMgr->IsSpellMemberOfSpellGroup(spell_id, chosenSpellGroup) && spell_id != chosenElixir)
+ uint32 spellId = itr->second->GetBase()->GetId();
+ if (sSpellMgr->IsSpellMemberOfSpellGroup(spellId, chosenSpellGroup) && spellId != chosenElixir)
{
useElixir = false;
break;