Core/Objects: Implemented vignettes

Port From (https://github.com/TrinityCore/TrinityCore/commit/fccf6fb72b60b08dfbe6d5fb17fba55239944fca)
This commit is contained in:
hondacrx
2024-03-13 21:09:46 -04:00
parent 2c008b2b70
commit 4b9b81c7e2
21 changed files with 573 additions and 10 deletions
+23
View File
@@ -538,6 +538,8 @@ namespace Game.Entities
// This needs to be before RemoveFromWorld to make GetCaster() return a valid for aura removal
InterruptNonMeleeSpells(true);
SetVignette(0);
if (IsInWorld)
RemoveFromWorld();
else
@@ -939,6 +941,24 @@ namespace Game.Entities
return collisionHeight1 == 0.0f ? MapConst.DefaultCollesionHeight : collisionHeight1;
}
public override VignetteData GetVignette() { return m_vignette; }
public void SetVignette(uint vignetteId)
{
if (m_vignette != null)
{
if (m_vignette.Data.ID == vignetteId)
return;
Vignettes.Remove(m_vignette, this);
m_vignette = null;
}
var vignette = CliDB.VignetteStorage.LookupByKey(vignetteId);
if (vignette != null)
m_vignette = Vignettes.Create(vignette, this);
}
public override string GetDebugInfo()
{
string str = $"{base.GetDebugInfo()}\nIsAIEnabled: {IsAIEnabled()} DeathState: {GetDeathState()} UnitMovementFlags: {GetUnitMovementFlags()} UnitMovementFlags2: {GetUnitMovementFlags2()} Class: {GetClass()}\n" +
@@ -1574,6 +1594,9 @@ namespace Game.Entities
SetEmoteState(Emote.OneshotNone);
SetStandState(UnitStandStateType.Stand);
if (m_vignette != null && !m_vignette.Data.GetFlags().HasFlag(VignetteFlags.PersistsThroughDeath))
SetVignette(0);
// players in instance don't have ZoneScript, but they have InstanceScript
ZoneScript zoneScript = GetZoneScript() != null ? GetZoneScript() : GetInstanceScript();
if (zoneScript != null)