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
+26 -9
View File
@@ -4591,7 +4591,7 @@ namespace Game.Entities
else
m_deathExpireTime = now + PlayerConst.DeathExpireStep;
}
public int CalculateCorpseReclaimDelay(bool load = false)
{
Corpse corpse = GetCorpse();
@@ -4629,7 +4629,7 @@ namespace Game.Entities
return (int)(delay * Time.InMilliseconds);
}
public void SendCorpseReclaimDelay(int delay)
{
CorpseReclaimDelay packet = new();
@@ -4875,7 +4875,8 @@ namespace Game.Entities
foundPet = true;
}
}
};
}
;
FindAndRemovePet(m_petStable.ActivePets);
FindAndRemovePet(m_petStable.StabledPets);
@@ -5562,7 +5563,8 @@ namespace Game.Entities
if (creature.HasNpcFlag2(npcFlags2))
return true;
return false;
};
}
;
if (!hasNpcFlags())
return null;
@@ -6609,12 +6611,27 @@ namespace Game.Entities
public void UpdateTavernRestingState()
{
var atEntry = CliDB.AreaTriggerStorage.LookupByKey(_restMgr.GetInnTriggerId());
InnAreaTrigger innTrigger = _restMgr.GetInnTrigger();
if (innTrigger == null)
{
if (_restMgr.HasRestFlag(RestFlag.Tavern))
_restMgr.RemoveRestFlag(RestFlag.Tavern);
if (_restMgr.HasRestFlag(RestFlag.Tavern) && (atEntry == null || !IsInAreaTrigger(atEntry)))
_restMgr.RemoveRestFlag(RestFlag.Tavern);
else if (!_restMgr.HasRestFlag(RestFlag.Tavern) && IsInAreaTrigger(atEntry))
_restMgr.SetRestFlag(RestFlag.Tavern);
return;
}
if (innTrigger.IsDBC)
{
var atEntry = CliDB.AreaTriggerStorage.LookupByKey(innTrigger.AreaTriggerEntryId);
if (_restMgr.HasRestFlag(RestFlag.Tavern) && (atEntry == null || !IsInAreaTrigger(atEntry)))
{
_restMgr.RemoveRestFlag(RestFlag.Tavern);
_restMgr.SetInnTrigger(null);
}
else if (!_restMgr.HasRestFlag(RestFlag.Tavern) && IsInAreaTrigger(atEntry))
_restMgr.SetRestFlag(RestFlag.Tavern);
}
}
public void SendSysMessage(CypherStrings str, params object[] args)
+16 -4
View File
@@ -6,7 +6,7 @@ namespace Game.Entities
{
Player _player;
long _restTime;
uint _innAreaTriggerId;
InnAreaTrigger _innAreaTrigger;
float[] _restBonus = new float[(int)RestTypes.Max];
RestFlag _restFlagMask;
@@ -111,7 +111,7 @@ namespace Game.Entities
uint rested_loss = rested_bonus;
if (restType == RestTypes.XP)
MathFunctions.AddPct(ref rested_loss, _player.GetTotalAuraModifier(AuraType.ModRestedXpConsumption));
MathFunctions.AddPct(ref rested_loss, _player.GetTotalAuraModifier(AuraType.ModRestedXpConsumption));
SetRestBonus(restType, GetRestBonus(restType) - rested_loss);
@@ -157,7 +157,19 @@ namespace Game.Entities
public float GetRestBonus(RestTypes restType) { return _restBonus[(int)restType]; }
public bool HasRestFlag(RestFlag restFlag) { return (_restFlagMask & restFlag) != 0; }
public uint GetInnTriggerId() { return _innAreaTriggerId; }
public void SetInnTriggerID(uint id) { _innAreaTriggerId = id; }
public InnAreaTrigger GetInnTrigger() { return _innAreaTrigger; }
public void SetInnTrigger(InnAreaTrigger trigger) { _innAreaTrigger = trigger; }
}
public class InnAreaTrigger
{
public bool IsDBC = true;
public uint AreaTriggerEntryId;
public InnAreaTrigger(bool isDBC, uint areaTriggerEntryId = 0)
{
IsDBC = isDBC;
AreaTriggerEntryId = areaTriggerEntryId;
}
}
}