/// <summary> /// Applied before GetValueString runs. /// </summary> internal static bool Prefix(StandardAmountDisplayer __instance, Amount master, AmountInstance instance, ref string __result) { var text = CACHED_BUILDER; text.Clear(); GetValueString(text, __instance.Formatter, instance, master); __result = text.ToString(); return(false); }
/// <summary> /// Applied before GetTooltip runs. /// </summary> internal static bool Prefix(StandardAmountDisplayer __instance, Amount master, AmountInstance instance, ref string __result) { var text = CACHED_BUILDER; var formatter = __instance.Formatter; var timeSlice = formatter.DeltaTimeSlice; string desc = master.description; var modifiers = instance.deltaAttribute.Modifiers; int n = modifiers.Count; // Yes the base game uses None even if the time slice is not none text.Clear().Append(desc).Replace("{0}", formatter.GetFormattedValue(instance. value, TimeSlice.None)); if (desc.Contains("{1}")) { // GetIdentityDescriptor calls GetComponent so only call if needed text.Replace("{1}", GameUtil.GetIdentityDescriptor(instance.gameObject)); } text.AppendLine().AppendLine(); if (timeSlice == TimeSlice.PerCycle) { text.Append(STRINGS.UI.CHANGEPERCYCLE).Replace("{0}", formatter. GetFormattedValue(instance.deltaAttribute.GetTotalDisplayValue(), TimeSlice.PerCycle)); } else if (timeSlice == TimeSlice.PerSecond) { text.Append(STRINGS.UI.CHANGEPERSECOND).Replace("{0}", formatter. GetFormattedValue(instance.deltaAttribute.GetTotalDisplayValue(), TimeSlice.PerSecond)); } for (int i = 0; i < n; i++) { var modifier = modifiers[i]; text.AppendLine().Append(Constants.TABBULLETSTRING).Append(modifier. GetDescription()).Append(": ").Append(formatter.GetFormattedModifier( modifier)); } __result = text.ToString(); return(false); }