7 namespace Loot.Api.Core
16 public float MinMagnitude {
get;
private set; } = 1f;
17 public float MaxMagnitude {
get;
private set; } = 1f;
18 public float MagnitudeStrength {
get;
private set; } = 1f;
19 public float BasePower {
get;
private set; } = 1f;
20 public float RarityLevel {
get;
private set; } = 1f;
21 public float RollChance {
get;
private set; } = 1f;
22 public int RoundPrecision {
get;
private set; } = 0;
23 public bool IsUnique {
get;
private set; } =
false;
24 public float Magnitude {
get;
internal set; }
33 RoundedPower = (float)Math.Round(value, RoundPrecision);
37 public float RoundedPower {
get;
private set; }
41 Magnitude = RollMagnitude(magnitudePower, lukStat);
43 int iterations = (int)Math.Ceiling(lukStat) / 2;
46 for (
int i = 0; i < iterations; i++)
48 float rolledMagnitude = RollMagnitude(magnitudePower, lukStat);
49 if (rolledMagnitude > Magnitude)
51 Magnitude = rolledMagnitude;
62 float useMin = MinMagnitude * (1f + magnitudePower / 10f);
63 float useMax = MaxMagnitude * magnitudePower;
64 float randomMag = (useMin + Main.rand.NextFloat() * (useMax - useMin));
65 return randomMag * MagnitudeStrength;
70 return BasePower * Magnitude;
73 public virtual void NetReceive(Item item, BinaryReader reader)
77 public virtual void NetSend(Item item, BinaryWriter writer)
81 public virtual void Save(Item item, TagCompound tag)
85 public virtual void Load(Item item, TagCompound tag)
102 Property.MaxMagnitude = value.MaxMagnitude;
103 Property.MagnitudeStrength = value.MagnitudeStrength;
104 Property.BasePower = value.BasePower;
105 Property.RarityLevel = value.RarityLevel;
106 Property.RollChance = value.RollChance;
107 Property.RoundPrecision = value.RoundPrecision;
108 Property.IsUnique = value.IsUnique;
114 Property.MinMagnitude = val;
120 Property.MaxMagnitude = val;
126 Property.MagnitudeStrength = val;
132 Property.BasePower = val;
138 Property.RarityLevel = val;
144 Property.RollChance = val;
150 Property.RoundPrecision = val;
156 Property.IsUnique = val;
virtual void Save(Item item, TagCompound tag)
virtual void NetReceive(Item item, BinaryReader reader)
virtual void Load(Item item, TagCompound tag)
ModifierProperties RollMagnitudeAndPower(float magnitudePower=1f, float lukStat=0f)
ModifierPropertiesBuilder WithMinMagnitude(float val)
The ModifierPropertiesBuilder implements the builder pattern for ModifierProperties It provides a str...
virtual void NetSend(Item item, BinaryWriter writer)
ModifierPropertiesBuilder WithRoundPrecision(int val)
ModifierPropertiesBuilder WithMaxMagnitude(float val)
ModifierPropertiesBuilder IsUniqueModifier(bool val)
ModifierPropertiesBuilder WithRollChance(float val)
Defines the properties of a modifier
float RollMagnitude(float magnitudePower, float lukStat)
ModifierPropertiesBuilder WithRarityLevel(float val)
ModifierPropertiesBuilder WithBasePower(float val)
ModifierPropertiesBuilder WithMagnitudeStrength(float val)
Defines an abstract implementation of IPropertyBuilder<T>