Core/AreaTriggers: Add AREATRIGGER_ACTION_TAVERN

Port From (https://github.com/TrinityCore/TrinityCore/commit/8e6c7bdc5d9805fdd33bec35cfe2f7b154b4ed58)
This commit is contained in:
Hondacrx
2025-08-18 10:43:18 -04:00
parent 32d166380c
commit 8d0b667dd4
5 changed files with 79 additions and 17 deletions
@@ -856,6 +856,9 @@ namespace Game.Entities
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.NumUnitsInside), _insideUnits.Count);
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.NumPlayersInside), _insideUnits.Count(guid => guid.IsPlayer()));
if (IsStaticSpawn())
SetActive(!_insideUnits.Empty());
}
public AreaTriggerTemplate GetTemplate()
@@ -1017,6 +1020,16 @@ namespace Game.Entities
}
}
break;
case AreaTriggerActionTypes.Tavern:
{
Player player = caster.ToPlayer();
if (player != null)
{
player.GetRestMgr().SetInnTrigger(new InnAreaTrigger(false));
player.GetRestMgr().SetRestFlag(RestFlag.Tavern);
}
break;
}
default:
break;
}
@@ -1031,8 +1044,21 @@ namespace Game.Entities
{
foreach (AreaTriggerAction action in GetTemplate().Actions)
{
if (action.ActionType == AreaTriggerActionTypes.Cast || action.ActionType == AreaTriggerActionTypes.AddAura)
unit.RemoveAurasDueToSpell(action.Param, GetCasterGuid());
switch (action.ActionType)
{
case AreaTriggerActionTypes.Cast:
goto case AreaTriggerActionTypes.AddAura;
case AreaTriggerActionTypes.AddAura:
unit.RemoveAurasDueToSpell(action.Param, GetCasterGuid());
break;
case AreaTriggerActionTypes.Tavern:
Player player = unit.ToPlayer();
if (player != null)
player.GetRestMgr().SetInnTrigger(null);
break;
default:
break;
}
}
}
}