Core/Creatures: Allow scripts to change creature loot id (must be done before death)
Port From (https://github.com/TrinityCore/TrinityCore/commit/155cf58236f7adbd169f57e0578c96fd7ce2173f)
This commit is contained in:
@@ -55,6 +55,7 @@ namespace Game.Entities
|
||||
|
||||
bool DisableReputationGain;
|
||||
|
||||
uint? _lootId;
|
||||
LootModes m_LootMode; // Bitmask (default: LOOT_MODE_DEFAULT) that determines what loot will be lootable
|
||||
|
||||
// Waypoint path
|
||||
|
||||
@@ -1189,9 +1189,24 @@ namespace Game.Entities
|
||||
{
|
||||
_pickpocketLootRestore = GameTime.GetGameTime() + WorldConfig.GetIntValue(WorldCfg.CreaturePickpocketRefill);
|
||||
}
|
||||
|
||||
public void ResetPickPocketRefillTimer() { _pickpocketLootRestore = 0; }
|
||||
|
||||
public bool CanGeneratePickPocketLoot() { return _pickpocketLootRestore <= GameTime.GetGameTime(); }
|
||||
|
||||
public uint GetLootId()
|
||||
{
|
||||
if (_lootId.HasValue)
|
||||
return _lootId.Value;
|
||||
|
||||
return GetCreatureTemplate().LootId;
|
||||
}
|
||||
|
||||
public void SetLootId(uint? lootId)
|
||||
{
|
||||
_lootId = lootId;
|
||||
}
|
||||
|
||||
public void SetTappedBy(Unit unit, bool withGroup = true)
|
||||
{
|
||||
// set the player whose group should receive the right
|
||||
|
||||
@@ -756,7 +756,7 @@ namespace Game.Entities
|
||||
{
|
||||
if (dungeonEncounter != null)
|
||||
{
|
||||
creature.m_personalLoot = LootManager.GenerateDungeonEncounterPersonalLoot(dungeonEncounter.Id, creature.GetCreatureTemplate().LootId,
|
||||
creature.m_personalLoot = LootManager.GenerateDungeonEncounterPersonalLoot(dungeonEncounter.Id, creature.GetLootId(),
|
||||
LootStorage.Creature, LootType.Corpse, creature, creature.GetCreatureTemplate().MinGold, creature.GetCreatureTemplate().MaxGold,
|
||||
(ushort)creature.GetLootMode(), creature.GetMap().GetDifficultyLootItemContext(), tappers);
|
||||
}
|
||||
@@ -767,7 +767,7 @@ namespace Game.Entities
|
||||
|
||||
Loot loot = new(creature.GetMap(), creature.GetGUID(), LootType.Corpse, dungeonEncounter != null ? group : null);
|
||||
|
||||
uint lootid = creature.GetCreatureTemplate().LootId;
|
||||
uint lootid = creature.GetLootId();
|
||||
if (lootid != 0)
|
||||
loot.FillLoot(lootid, LootStorage.Creature, looter, dungeonEncounter != null, false, creature.GetLootMode(), creature.GetMap().GetDifficultyLootItemContext());
|
||||
|
||||
@@ -794,7 +794,7 @@ namespace Game.Entities
|
||||
if (dungeonEncounter != null)
|
||||
loot.SetDungeonEncounterId(dungeonEncounter.Id);
|
||||
|
||||
uint lootid = creature.GetCreatureTemplate().LootId;
|
||||
uint lootid = creature.GetLootId();
|
||||
if (lootid != 0)
|
||||
loot.FillLoot(lootid, LootStorage.Creature, tapper, true, false, creature.GetLootMode(), creature.GetMap().GetDifficultyLootItemContext());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user