package RTDB

Stat
{
	string enumName = "";
	string enumComment = "";
	string localizedName = "";
	string localizedDescription = "";
	string localizedStatDisplay = "";
	float min = 9999999;
	float max = -9999999;
	CName[] flags = [];
	CName[] themes = [];
	fk< Substat >[] substats = [];
	fk< ImprovementRelation > improvementRelation = "ImprovementRelation.None";
	bool canBeForcedByQuests = false;
	int decimalPlaces = 2;
	bool displayPercent = false;
	bool displayPlus = false;
	bool inMeters = false;
	bool inSeconds = false;
	bool inSpeed = false;
	bool multiplyBy100InText = false;
	bool roundValue = false;
}

Substat : Stat
{
	CName modifierType = "";
}

StatModifier
{
	fk< Stat > statType = "";
	CName modifierType = "";
}

ConstantStatModifier : StatModifier
{
	float value = 0.f;
}

RandomStatModifier : StatModifier
{
	float min = 0.f;
	float max = 0.f;
	bool useControlledRandom = false;
}

CurveStatModifier : StatModifier
{
	string id = "";
	string column = "";
	fk< Stat > refStat = "";
	CName refObject = "Self";
}

SubStatModifier : StatModifier
{
	fk< Stat > refStat = "";
	CName refObject = "Self";
}

CombinedStatModifier : StatModifier
{
	fk< Stat > refStat = "";
	CName refObject = "Self";
	CName opSymbol = "";
	float value = 0.f;
}

StatModifierGroup
{
	fk< StatModifier >[] statModifiers = [];
	int statModsLimit = -1;
	fk< StatModifier > statModsLimitModifier = "";
	bool drawBasedOnStatType = false;
	bool saveBasedOnStatType = false;
	fk< StatModifierGroup >[] relatedModifierGroups = [];
	bool optimiseCombinedModifiers = false;
}

Attribute : Stat
{
	min = 0;
	max = 20;
	fk< Proficiency >[] proficiencies = [];
	improvementRelation = "ImprovementRelation.Direct";
}

StatsArray
{
	CName arrayName = "";
	fk< Stat >[] enumStats = [];
	fk< Stat >[] additionalStats = [];
}

StatsFolder
{
	fk< Stat >[] stats = [];
	fk< StatsFolder >[] folders = [];
	fk< StatsArray >[] arrays = [];
}

StatsList
{
	fk< Stat >[] stats = [];
}

Cooldown
{
	float duration = 0.f;
	fk< CooldownType > type = "";
	bool modifiable = true;
	CName[] tags = [];
}

CooldownType
{
	CName type = "";
}

ImprovementRelation
{
	CName enumName = "";
	string enumComment = "";
}

