public static void addCommodityMultiplier(Sim s, CommodityKind commodity, float multiplier) { BuffCommodityDecayModifier.BuffInstanceCommodityDecayModifier buffModifier = s.BuffManager.GetElement(BuffNames.CommodityDecayModifier) as BuffCommodityDecayModifier.BuffInstanceCommodityDecayModifier; if (buffModifier == null) { BuffManager.BuffDictionary.TryGetValue((ulong)BuffNames.CommodityDecayModifier, out BuffInstance value); if (value == null) { StyledNotification.Show(new StyledNotification.Format("ERROR Add Commodity Multiplier buff failed for: " + s.Name, StyledNotification.NotificationStyle.kDebugAlert)); return; } buffModifier = (BuffCommodityDecayModifier.BuffInstanceCommodityDecayModifier)value; buffModifier.mTimeoutPaused = true; buffModifier.SetCustomBuffInstanceName("EWDecayModifierBuff"); buffModifier.SetCustomBuffInstanceDescription("EWDecayModifierBuff_BuffDescription"); buffModifier.SetThumbnail("moodlet_whackedout", 0x48000000, s); s.BuffManager.AddBuff(buffModifier); } buffModifier.AddCommodityMultiplier(commodity, multiplier); }
public static void removeCommodityMultiplier(Sim s, CommodityKind commodity, float multiplier) { BuffCommodityDecayModifier.BuffInstanceCommodityDecayModifier buffModifier = s.BuffManager.GetElement(BuffNames.CommodityDecayModifier) as BuffCommodityDecayModifier.BuffInstanceCommodityDecayModifier; if (buffModifier == null) { StyledNotification.Show(new StyledNotification.Format("ERROR Remove " + commodity + " multiplier failed for: " + s.Name, StyledNotification.NotificationStyle.kDebugAlert)); return; } buffModifier.AddCommodityMultiplier(commodity, 1 / multiplier); if (buffModifier.GetCommodityMultiplier(commodity) == 1f) { buffModifier.mCommodityDecayMultipliers.Remove(commodity); } if (buffModifier.mCommodityDecayMultipliers.Count == 0) { s.BuffManager.RemoveElement(buffModifier.Guid); } }