public void GainMastery(TransformationDefinition definition, float gain) { PlayerTransformation playerTransformation = AcquiredTransformations[definition]; float maxMastery = playerTransformation.Definition.GetMaxMastery(this); if (playerTransformation.CurrentMastery >= maxMastery) { return; } if (playerTransformation.CurrentMastery + gain > maxMastery) { gain = maxMastery - playerTransformation.CurrentMastery; } if (Trait != null) { Trait.OnPlayerMasteryGained(this, ref gain, playerTransformation.CurrentMastery); } playerTransformation.CurrentMastery += gain; definition.OnPlayerMasteryGain(this, gain, playerTransformation.CurrentMastery); }
public void ChangeMastery(TransformationDefinition definition, float change) { PlayerTransformation playerTransformation = AcquiredTransformations[definition]; float maxMastery = playerTransformation.Definition.GetMaxMastery(this); if (playerTransformation.CurrentMastery >= maxMastery) { return; } if (playerTransformation.CurrentMastery + change > maxMastery) { change = maxMastery - playerTransformation.CurrentMastery; } if (Trait != null) { Trait.OnPlayerMasteryGained(this, ref change, playerTransformation.CurrentMastery); } playerTransformation.ChangeMastery(this, change); definition.OnPlayerMasteryChanged(this, change, playerTransformation.CurrentMastery); }