mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 02:42:22 +01:00
level
level showing up on items now, fix s19, improve performance, fix big issue on s5
This commit is contained in:
71
Project Reboot 3.0/FortLootLevel.cpp
Normal file
71
Project Reboot 3.0/FortLootLevel.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#include "FortLootLevel.h"
|
||||
#include "FortWorldItemDefinition.h"
|
||||
|
||||
int UFortLootLevel::GetItemLevel(const FDataTableCategoryHandle& LootLevelData, int WorldLevel)
|
||||
{
|
||||
// OMG IM GONNA DIE
|
||||
|
||||
// we should use GetRows but L
|
||||
|
||||
auto DataTable = LootLevelData.DataTable;
|
||||
|
||||
if (!DataTable)
|
||||
return 0;
|
||||
|
||||
if (!LootLevelData.ColumnName.ComparisonIndex.Value)
|
||||
return 0;
|
||||
|
||||
if (!LootLevelData.RowContents.ComparisonIndex.Value)
|
||||
return 0;
|
||||
|
||||
std::vector<FFortLootLevelData*> OurLootLevelDatas;
|
||||
|
||||
for (auto& LootLevelDataPair : LootLevelData.DataTable->GetRowMap<FFortLootLevelData>())
|
||||
{
|
||||
if (LootLevelDataPair.Second->Category != LootLevelData.RowContents)
|
||||
continue;
|
||||
|
||||
OurLootLevelDatas.push_back(LootLevelDataPair.Second);
|
||||
}
|
||||
|
||||
if (OurLootLevelDatas.size() > 0)
|
||||
{
|
||||
int PickedIndex = -1;
|
||||
int PickedLootLevel = 0;
|
||||
|
||||
for (int i = 0; i < OurLootLevelDatas.size(); i++)
|
||||
{
|
||||
auto CurrentLootLevelData = OurLootLevelDatas.at(i);
|
||||
|
||||
if (CurrentLootLevelData->LootLevel <= WorldLevel && CurrentLootLevelData->LootLevel > PickedLootLevel)
|
||||
{
|
||||
PickedLootLevel = CurrentLootLevelData->LootLevel;
|
||||
PickedIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (PickedIndex != -1)
|
||||
{
|
||||
auto PickedLootLevelData = OurLootLevelDatas.at(PickedIndex);
|
||||
|
||||
const auto PickedMinItemLevel = PickedLootLevelData->MinItemLevel;
|
||||
const auto PickedMaxItemLevel = PickedLootLevelData->MaxItemLevel;
|
||||
auto v15 = PickedMaxItemLevel - PickedMinItemLevel;
|
||||
|
||||
if (v15 + 1 <= 0)
|
||||
{
|
||||
v15 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
auto v16 = (int)(float)((float)((float)rand() * 0.000030518509) * (float)(v15 + 1));
|
||||
if (v16 <= v15)
|
||||
v15 = v16;
|
||||
}
|
||||
|
||||
return v15 + PickedMinItemLevel;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user