package RTDB

LootTable
{
	int minItemsToLoot = 1;
	int maxItemsToLoot = 1;
	string lootGenerationType = "dropChance";
	fk< LootItem >[] lootItems = [];
	fk< ItemQueryElement >[] queries = [];
	fk< LootTable >[] lootTableInclusions = [];
}

PersistentLootTable : LootTable
{
}

LootTableElement
{
	fk< StatModifier >[] dropChanceModifiers = [];
	float dropChance = 1;
	fk< StatModifier >[] quantityModifiers = [];
	int dropCountMin = 1;
	int dropCountMax = 1;
	fk< StatModifier >[] statModifiers = [];
	fk< IPrereq > playerPrereqID = "";
}

LootItem : LootTableElement
{
	fk< Item > itemID = "";
}

ItemQueryElement : LootTableElement
{
	fk< ItemQuery > query = "";
}

ControlledLootSet
{
	fk< LootItem >[] lootItems = [];
	fk< IPrereq > playerPrereqID = "";
	fk< IPrereq > npcPrereqID = "";
	fk< LootItem >[] replacementLootItems = [];
	fk< ItemQueryElement >[] replacementQueries = [];
	bool maxDropsGloballyShared = false;
	bool itemsInSetShareDropCount = false;
	int maxDrops = 0;
	float maxDropsPerLevel = 0;
	bool rollOverDropsPerLevel = true;
	float chanceBase = 0;
	float chanceIncreasePerAttempt = 0;
	float chanceMax = 1f;
	float progressionBasedChanceBonus = 0f;
	float progressionBasedThreshold = 0f;
	bool dropsFromNPCs = true;
	bool blocksFromNPCs = true;
	bool dropsInContainers = true;
	bool blocksInContainers = true;
	fk< ContainerType >[] excludedContainerTypes = 
	[
		"Loot.ShardCaseContainer", "Loot.QuestContainer"
	];
}

ControlledLootTable
{
	fk< ControlledLootSet >[] controlledLootSets = [];
	int maxDropsPerAttempt = 1;
}

ContainerType
{
	string enumName = "";
	string enumComment = "";
}

HandicapLootList
{
	fk< HandicapLootPreset >[] loot = [];
}

HandicapLootPreset
{
	fk< Item > item = "";
	int handicapLimit = 0;
	int handicapMinQty = 0;
	int handicapMaxQty = 0;
}

