Core/Creature: Allow to skip Rate.Corpse.Decay.Looted when calling SetCorpseDelay()
Port From (https://github.com/TrinityCore/TrinityCore/commit/a4a3e2e75999230d0d2e38886eef4ce0271f4a1d)
This commit is contained in:
@@ -3143,6 +3143,7 @@ namespace Game.AI
|
|||||||
public struct CorpseDelay
|
public struct CorpseDelay
|
||||||
{
|
{
|
||||||
public uint timer;
|
public uint timer;
|
||||||
|
public uint includeDecayRatio;
|
||||||
}
|
}
|
||||||
public struct DisableEvade
|
public struct DisableEvade
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2178,7 +2178,7 @@ namespace Game.AI
|
|||||||
{
|
{
|
||||||
foreach (var target in targets)
|
foreach (var target in targets)
|
||||||
if (IsCreature(target))
|
if (IsCreature(target))
|
||||||
target.ToCreature().SetCorpseDelay(e.Action.corpseDelay.timer);
|
target.ToCreature().SetCorpseDelay(e.Action.corpseDelay.timer, e.Action.corpseDelay.includeDecayRatio == 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SmartActions.SpawnSpawngroup:
|
case SmartActions.SpawnSpawngroup:
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ namespace Game.Entities
|
|||||||
long m_respawnTime; // (secs) time of next respawn
|
long m_respawnTime; // (secs) time of next respawn
|
||||||
uint m_respawnDelay; // (secs) delay between corpse disappearance and respawning
|
uint m_respawnDelay; // (secs) delay between corpse disappearance and respawning
|
||||||
uint m_corpseDelay; // (secs) delay between death and corpse disappearance
|
uint m_corpseDelay; // (secs) delay between death and corpse disappearance
|
||||||
|
bool m_ignoreCorpseDecayRatio;
|
||||||
float m_wanderDistance;
|
float m_wanderDistance;
|
||||||
uint m_boundaryCheckTime; // (msecs) remaining time for next evade boundary check
|
uint m_boundaryCheckTime; // (msecs) remaining time for next evade boundary check
|
||||||
uint m_combatPulseTime; // (msecs) remaining time for next zone-in-combat pulse
|
uint m_combatPulseTime; // (msecs) remaining time for next zone-in-combat pulse
|
||||||
|
|||||||
@@ -2593,7 +2593,9 @@ namespace Game.Entities
|
|||||||
if (m_corpseRemoveTime <= now)
|
if (m_corpseRemoveTime <= now)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float decayRate = WorldConfig.GetFloatValue(WorldCfg.RateCorpseDecayLooted);
|
// Scripts can choose to ignore RATE_CORPSE_DECAY_LOOTED by calling SetCorpseDelay(timer, true)
|
||||||
|
float decayRate = m_ignoreCorpseDecayRatio ? 1.0f : WorldConfig.GetFloatValue(WorldCfg.RateCorpseDecayLooted);
|
||||||
|
|
||||||
// corpse skinnable, but without skinning flag, and then skinned, corpse will despawn next update
|
// corpse skinnable, but without skinning flag, and then skinned, corpse will despawn next update
|
||||||
if (loot.loot_type == LootType.Skinning)
|
if (loot.loot_type == LootType.Skinning)
|
||||||
m_corpseRemoveTime = now;
|
m_corpseRemoveTime = now;
|
||||||
@@ -3102,7 +3104,12 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public ulong GetSpawnId() { return m_spawnId; }
|
public ulong GetSpawnId() { return m_spawnId; }
|
||||||
|
|
||||||
public void SetCorpseDelay(uint delay) { m_corpseDelay = delay; }
|
public void SetCorpseDelay(uint delay, bool ignoreCorpseDecayRatio = false)
|
||||||
|
{
|
||||||
|
m_corpseDelay = delay;
|
||||||
|
if (ignoreCorpseDecayRatio)
|
||||||
|
m_ignoreCorpseDecayRatio = true;
|
||||||
|
}
|
||||||
public uint GetCorpseDelay() { return m_corpseDelay; }
|
public uint GetCorpseDelay() { return m_corpseDelay; }
|
||||||
public bool IsRacialLeader() { return GetCreatureTemplate().RacialLeader; }
|
public bool IsRacialLeader() { return GetCreatureTemplate().RacialLeader; }
|
||||||
public bool IsCivilian()
|
public bool IsCivilian()
|
||||||
|
|||||||
Reference in New Issue
Block a user