fix(Core/Loot): Fixed loading conditioned item loot. (#6337)

- Fixes #6326
This commit is contained in:
UltraNix
2021-06-18 17:07:24 +02:00
committed by GitHub
parent 6bab704a02
commit 289f140ab1
6 changed files with 45 additions and 14 deletions

View File

@@ -1380,7 +1380,7 @@ void LootTemplate::CopyConditions(ConditionList conditions)
group->CopyConditions(conditions);
}
bool LootTemplate::CopyConditions(LootItem* li) const
bool LootTemplate::CopyConditions(LootItem* li, uint32 conditionLootId) const
{
for (LootStoreItemList::const_iterator _iter = Entries.begin(); _iter != Entries.end(); ++_iter)
{
@@ -1389,7 +1389,7 @@ bool LootTemplate::CopyConditions(LootItem* li) const
{
if (LootTemplate const* Referenced = LootTemplates_Reference.GetLootFor(item->reference))
{
if (Referenced->CopyConditions(li))
if (Referenced->CopyConditions(li, conditionLootId))
{
return true;
}
@@ -1402,6 +1402,11 @@ bool LootTemplate::CopyConditions(LootItem* li) const
continue;
}
if (!item->conditions.empty() && conditionLootId && conditionLootId != item->conditions.front()->SourceGroup)
{
continue;
}
li->conditions = item->conditions;
return true;
}
@@ -1421,7 +1426,7 @@ bool LootTemplate::CopyConditions(LootItem* li) const
{
if (LootTemplate const* Referenced = LootTemplates_Reference.GetLootFor(item->reference))
{
if (Referenced->CopyConditions(li))
if (Referenced->CopyConditions(li, conditionLootId))
{
return true;
}
@@ -1434,6 +1439,11 @@ bool LootTemplate::CopyConditions(LootItem* li) const
continue;
}
if (!item->conditions.empty() && conditionLootId && conditionLootId != item->conditions.front()->SourceGroup)
{
continue;
}
li->conditions = item->conditions;
return true;
}
@@ -1447,7 +1457,7 @@ bool LootTemplate::CopyConditions(LootItem* li) const
{
if (LootTemplate const* Referenced = LootTemplates_Reference.GetLootFor(item->reference))
{
if (Referenced->CopyConditions(li))
if (Referenced->CopyConditions(li, conditionLootId))
{
return true;
}
@@ -1460,6 +1470,11 @@ bool LootTemplate::CopyConditions(LootItem* li) const
continue;
}
if (!item->conditions.empty() && conditionLootId && conditionLootId != item->conditions.front()->SourceGroup)
{
continue;
}
li->conditions = item->conditions;
return true;
}