private void SetDiceThrowLabel(ICaste caste, IRace race, string propertyName, Label label) { var casteAttributes = caste.GetCustomAttributes(propertyName); var diceThrow = AttributeUtils.GetAttribute <DiceThrowAttribute>(casteAttributes); var diceThrowModifier = AttributeUtils.GetAttribute <DiceThrowModifierAttribute>(casteAttributes); var specialTrainingAttribute = AttributeUtils.GetAttribute <SpecialTrainingAttribute>(casteAttributes); label.Text = Lng.Elem(EnumUtils.GetDescription(diceThrow.DiceThrowType)); if (diceThrowModifier != null) { label.Text += $" + {diceThrowModifier.Modifier}"; } if (specialTrainingAttribute != null) { label.Text += $" + {Lng.Elem("St")}"; } if (diceThrow.DiceThrowType.ToString().EndsWith("2_Times")) { label.Text += " (2x)"; } var raceModifier = race.GetPropertyShortValue(propertyName); if (raceModifier != 0) { label.Text += raceModifier < 0 ? $" - {Math.Abs(raceModifier)}" : $" + {raceModifier}"; } }