Merge branch 'azerothcore:master' into Playerbot

This commit is contained in:
bash
2025-09-28 00:12:50 +02:00
committed by GitHub
25 changed files with 595 additions and 80 deletions
+20 -18
View File
@@ -640,7 +640,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
Unit* caster = me;
// Areatrigger Cast!
if (e.GetScriptType() == SMART_SCRIPT_TYPE_AREATRIGGER)
if (e.IsAreatriggerScript())
caster = unit->SummonTrigger(unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ(), unit->GetOrientation(), 5000);
if (e.action.cast.targetsLimit)
@@ -3990,27 +3990,29 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e,
}
case SMART_TARGET_INSTANCE_STORAGE:
{
if (InstanceScript* instance = GetBaseObject()->GetInstanceScript())
{
if (e.target.instanceStorage.type == 1)
{
if (Creature* creature = instance->GetCreature(e.target.instanceStorage.index))
{
targets.push_back(creature);
}
}
else if (e.target.instanceStorage.type == 2)
{
if (GameObject* go = instance->GetGameObject(e.target.instanceStorage.index))
{
targets.push_back(go);
}
}
}
InstanceScript* instance = nullptr;
if (e.IsAreatriggerScript() && scriptTrigger)
instance = scriptTrigger->GetInstanceScript();
else
instance = GetBaseObject()->GetInstanceScript();
if (!instance)
{
LOG_ERROR("scripts.ai.sai", "SMART_TARGET_INSTANCE_STORAGE: Entry {} SourceType {} Event {} Action {} Target {} called outside an instance map.",
e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.GetTargetType());
return;
}
if (e.target.instanceStorage.type == 1)
{
if (Creature* creature = instance->GetCreature(e.target.instanceStorage.index))
targets.push_back(creature);
}
else if (e.target.instanceStorage.type == 2)
{
if (GameObject* go = instance->GetGameObject(e.target.instanceStorage.index))
targets.push_back(go);
}
break;
@@ -1993,6 +1993,8 @@ public:
uint32 GetActionType() const { return (uint32)action.type; }
uint32 GetTargetType() const { return (uint32)target.type; }
[[nodiscard]] bool IsAreatriggerScript() const { return source_type == SMART_SCRIPT_TYPE_AREATRIGGER; }
uint32 timer;
uint32 priority;
bool active;
+4 -4
View File
@@ -2243,7 +2243,7 @@ void Player::SetGameMaster(bool on)
CombatStopWithPets();
SetPhaseMask(uint32(PHASEMASK_ANYWHERE), false); // see and visible in all phases
m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GM, GetSession()->GetSecurity());
SetServerSideVisibilityDetect(SERVERSIDE_VISIBILITY_GM, GetSession()->GetSecurity());
}
else
{
@@ -2279,7 +2279,7 @@ void Player::SetGameMaster(bool on)
UpdateArea(m_areaUpdateId);
getHostileRefMgr().setOnlineOfflineState(true);
m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GM, SEC_PLAYER);
SetServerSideVisibilityDetect(SERVERSIDE_VISIBILITY_GM, SEC_PLAYER);
}
UpdateObjectVisibility();
@@ -2293,7 +2293,7 @@ void Player::SetGMVisible(bool on)
{
RemoveAurasDueToSpell(VISUAL_AURA);
m_ExtraFlags &= ~PLAYER_EXTRA_GM_INVISIBLE;
m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GM, SEC_PLAYER);
SetServerSideVisibility(SERVERSIDE_VISIBILITY_GM, SEC_PLAYER);
getHostileRefMgr().setOnlineOfflineState(false);
CombatStopWithPets();
@@ -2302,7 +2302,7 @@ void Player::SetGMVisible(bool on)
{
AddAura(VISUAL_AURA, this);
m_ExtraFlags |= PLAYER_EXTRA_GM_INVISIBLE;
m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GM, GetSession()->GetSecurity());
SetServerSideVisibility(SERVERSIDE_VISIBILITY_GM, GetSession()->GetSecurity());
}
}