actual reward has priority over xp reward

This commit is contained in:
iAmAsval 2020-12-15 20:50:45 +01:00
parent 127af65b82
commit 1a3b2935f0
2 changed files with 25 additions and 32 deletions

View File

@ -35,22 +35,7 @@ namespace FModel.Creator.Bundles
Count = count.Value;
}
if (obj.TryGetValue("RewardsTable", out var v4) && v4 is ObjectProperty rewardsTable && rewardsTable.Value.Resource.OuterIndex.Resource != null)
{
Package p = Utils.GetPropertyPakPackage(rewardsTable.Value.Resource.OuterIndex.Resource?.ObjectName.String);
if (p != null && p.HasExport() && !p.Equals(default))
{
var u = p.GetExport<UDataTable>();
if (u != null && u.TryGetValue("Default", out var i) && i is UObject r &&
r.TryGetValue("TemplateId", out var i1) && i1 is NameProperty templateId &&
r.TryGetValue("Quantity", out var i2) && i2 is IntProperty quantity)
{
Reward = new Reward(quantity, templateId);
}
}
}
if (Reward == null && obj.TryGetValue("Rewards", out var v2) && v2 is ArrayProperty rewards)
if (obj.TryGetValue("Rewards", out var v2) && v2 is ArrayProperty rewards)
{
foreach (StructProperty reward in rewards.Value)
{
@ -76,6 +61,21 @@ namespace FModel.Creator.Bundles
}
}
if (Reward == null && obj.TryGetValue("RewardsTable", out var v4) && v4 is ObjectProperty rewardsTable && rewardsTable.Value.Resource.OuterIndex.Resource != null)
{
Package p = Utils.GetPropertyPakPackage(rewardsTable.Value.Resource.OuterIndex.Resource?.ObjectName.String);
if (p != null && p.HasExport() && !p.Equals(default))
{
var u = p.GetExport<UDataTable>();
if (u != null && u.TryGetValue("Default", out var i) && i is UObject r &&
r.TryGetValue("TemplateId", out var i1) && i1 is NameProperty templateId &&
r.TryGetValue("Quantity", out var i2) && i2 is IntProperty quantity)
{
Reward = new Reward(quantity, templateId);
}
}
}
if (Reward == null && obj.TryGetValue("HiddenRewards", out var v3) && v3 is ArrayProperty hiddenRewards)
{
foreach (StructProperty reward in hiddenRewards.Value)

View File

@ -176,24 +176,17 @@ namespace FModel.PakReader.Parsers
{
_dataExports[i] = new UObject();
#if DEBUG
try
{
var header = new FUnversionedHeader(this);
if (!header.HasValues)
continue;
using var it = new FIterator(header);
FConsole.AppendText(string.Concat("\n", exportType.String, ": ", Summary.Name.String), "#CA6C6C", true);
do
{
FConsole.AppendText($"Val: {it.Current.Val} (IsNonZero: {it.Current.IsNonZero})", FColors.Yellow, true);
}
while (it.MoveNext());
}
catch (FileLoadException)
{
var header = new FUnversionedHeader(this);
if (!header.HasValues)
continue;
using var it = new FIterator(header);
FConsole.AppendText(string.Concat("\n", exportType.String, ": ", Summary.Name.String), "#CA6C6C", true);
do
{
FConsole.AppendText($"Val: {it.Current.Val} (IsNonZero: {it.Current.IsNonZero})", FColors.Yellow, true);
}
while (it.MoveNext());
#endif
}
}