diff --git a/X2CommunityHighlander.XCOM_sln b/X2CommunityHighlander.XCOM_sln index 8b5a366..5af6ad3 100644 --- a/X2CommunityHighlander.XCOM_sln +++ b/X2CommunityHighlander.XCOM_sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # XCOM ModBuddy Solution File, Format Version 11.00 VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{5DAE07AF-E217-45C1-8DE7-FF99D6011E8A}") = "X2CommunityHighlander", "X2CommunityHighlander\X2CommunityHighlander.x2proj", "{6671DE85-5595-469A-9B54-28A003DEFE77}" +Project("{5DAE07AF-E217-45C1-8DE7-FF99D6011E8A}") = "X2CommunityHighlander", "X2CommunityHighlander\X2CommunityHighlander.x2proj", "{2B0DCA36-C993-41FB-8A29-C4670602A0B5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,10 +11,10 @@ Global Default|XCOM 2 = Default|XCOM 2 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6671DE85-5595-469A-9B54-28A003DEFE77}.Debug|XCOM 2.ActiveCfg = Debug|XCOM 2 - {6671DE85-5595-469A-9B54-28A003DEFE77}.Debug|XCOM 2.Build.0 = Debug|XCOM 2 - {6671DE85-5595-469A-9B54-28A003DEFE77}.Default|XCOM 2.ActiveCfg = Debug|XCOM 2 - {6671DE85-5595-469A-9B54-28A003DEFE77}.Default|XCOM 2.Build.0 = Debug|XCOM 2 + {2B0DCA36-C993-41FB-8A29-C4670602A0B5}.Debug|XCOM 2.ActiveCfg = Debug|XCOM 2 + {2B0DCA36-C993-41FB-8A29-C4670602A0B5}.Debug|XCOM 2.Build.0 = Debug|XCOM 2 + {2B0DCA36-C993-41FB-8A29-C4670602A0B5}.Default|XCOM 2.ActiveCfg = Debug|XCOM 2 + {2B0DCA36-C993-41FB-8A29-C4670602A0B5}.Default|XCOM 2.Build.0 = Debug|XCOM 2 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/X2CommunityHighlander/Src/XComGame/Classes/LootTableHelper.uc b/X2CommunityHighlander/Src/XComGame/Classes/LootTableHelper.uc new file mode 100644 index 0000000..8ff1dbb --- /dev/null +++ b/X2CommunityHighlander/Src/XComGame/Classes/LootTableHelper.uc @@ -0,0 +1,41 @@ +class LootTableHelper extends Object; + +static function AddEntryToLootTable(name TableName, LootTableEntry AddTableEntry) +{ + local X2LootTable LootTableCDO; + local LootTableEntry TableEntry; + local int Index, TableEntryIndex; + local array SumChances; + local int NewSumChances, OldChance; + + LootTableCDO = X2LootTable (class'Engine'.static.FindClassDefaultObject("X2LootTable")); + + Index = LootTableCDO.default.LootTables.Find('TableName', TableName); + + if (Index != INDEX_NONE) + { + foreach LootTableCDO.default.LootTables[Index].Loots(TableEntry) + { + SumChances[TableEntry.RollGroup] += TableEntry.Chance; + } + + // Recalculate the chances + NewSumChances = SumChances[AddTableEntry.RollGroup] + AddTableEntry.Chance; + if (NewSumChances > 0) + { + for (TableEntryIndex = 0; TableEntryIndex < LootTableCDO.default.LootTables[Index].Loots.Length; TableEntryIndex++) + { + if (LootTableCDO.default.LootTables[Index].Loots[TableEntryIndex].RollGroup == AddTableEntry.RollGroup) + { + OldChance = LootTableCDO.default.LootTables[Index].Loots[TableEntryIndex].Chance; + LootTableCDO.default.LootTables[Index].Loots[TableEntryIndex].Chance = Round(100 / NewSumChances * OldChance); + + } + } + AddTableEntry.Chance = Round(100 / NewSumChances * AddTableEntry.Chance); + } + + // Add the new table entry + LootTableCDO.default.LootTables[Index].Loots.AddItem(AddTableEntry); + } +} \ No newline at end of file diff --git a/X2CommunityHighlander/X2CommunityHighlander.x2proj b/X2CommunityHighlander/X2CommunityHighlander.x2proj index 87eb843..9aef111 100644 --- a/X2CommunityHighlander/X2CommunityHighlander.x2proj +++ b/X2CommunityHighlander/X2CommunityHighlander.x2proj @@ -57,6 +57,9 @@ Content + + Content + Content