public override void SetupBehavior() { base.SetupBehavior(); SetupMortarProjectile(); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ( (count, inv, master) => { return(Mathf.Min(procChance + stackChance * (count - 1), capChance)); }, (value, inv, master) => { return($"Firing Chance: {Pct(value, 0, 1)}"); } ), ( (count, inv, master) => { return(dmgCoefficient + (count - 1) * dmgStack); }, (value, inv, master) => { return($"Damage: {Pct(value, 0)}"); } ), ( (count, inv, master) => { return(Mathf.Floor(1 + stackAmount * (count - 1))); }, (value, inv, master) => { return($"Mortars: {value}"); } )); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(itemDef, procChance, stackChance, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.LinearStacking, (value, extraStackValue, procCoefficient) => { return(Mathf.CeilToInt((capChance - value * procCoefficient) / (extraStackValue * procCoefficient)) + 1); }); } }
public override void SetupBehavior() { base.SetupBehavior(); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return(Util.ConvertAmplificationPercentageIntoReductionPercentage(procChance * count)); }, (value, inv, master) => { return($"Freeze Chance: {Pct(value, 1, 1f)}"); })); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(catalogIndex, procChance, procChance, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.HyperbolicStacking); } }
public override void SetupBehavior() { base.SetupBehavior(); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return(BatteryBullets_ProcCoefficient + BatteryBullets_ProcCoefficientStack * (count - 1)); }, (value, inv, master) => { return($"Shock Chance: +{Pct(value)}"); } )); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(itemDef, BatteryBullets_ProcCoefficient, BatteryBullets_ProcCoefficientStack, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.LinearStacking); } }
public override void SetupBehavior() { base.SetupBehavior(); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return(procTime + (count - 1) * stackTime); }, (value, inv, master) => { return($"Duration: {value.ToString("N1")} s"); } )); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(catalogIndex, procChance, null, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.NoStacking); } }
public override void SetupBehavior() { base.SetupBehavior(); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return((1f - Mathf.Pow(1 - procChance / 100f, count)) * 100f); }, (value, inv, master) => { return($"Knockback Chance: {Pct(value, 1, 1)}"); } )); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(catalogIndex, procChance, procChance, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.ExponentialStacking); } }
public override void SetupBehavior() { base.SetupBehavior(); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ((count, inv, master) => { return(Mathf.Min(procChance + stackChance * (count - 1), capChance)); }, (value, inv, master) => { return($"Instakill Chance: {Pct(value, 1, 1f)}"); })); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(catalogIndex, procChance, stackChance, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.LinearStacking, (value, extraStackValue, procCoefficient) => { return(Mathf.CeilToInt((capChance - value * procCoefficient) / (extraStackValue * procCoefficient)) + 1); }); } }
public override void SetupBehavior() { base.SetupBehavior(); poisonBuff = ScriptableObject.CreateInstance <BuffDef>(); //poisonBuff.buffColor = new Color32(66, 28, 82, 255); poisonBuff.canStack = false; poisonBuff.isDebuff = true; poisonBuff.name = "CCIThalliumPoison"; poisonBuff.iconSprite = assetBundle.LoadAsset <Sprite>("Assets/ClassicItems/Icons/thallium_buff_icon.png"); CustomBuff thalliumCustomBuff = new CustomBuff(poisonBuff); BuffAPI.Add(thalliumCustomBuff); DotController.DotDef thalliumDotDef = new DotController.DotDef { interval = .5f, damageCoefficient = 1, damageColorIndex = DamageColorIndex.DeathMark, associatedBuff = poisonBuff }; poisonDot = DotAPI.RegisterDotDef(thalliumDotDef, (dotController, dotStack) => { CharacterBody attackerBody = dotStack.attackerObject.GetComponent <CharacterBody>(); if (attackerBody) { float damageMultiplier = dmgCoefficient + dmgStack * (GetCount(attackerBody) - 1); float poisonDamage = 0f; if (dotController.victimBody) { poisonDamage += dotController.victimBody.damage; } dotStack.damage = poisonDamage * damageMultiplier; } }); if (Compat_ItemStats.enabled) { Compat_ItemStats.CreateItemStatDef(itemDef, ( (count, inv, master) => { return(Mathf.Min(procChance + stackChance * (count - 1), capChance)); }, (value, inv, master) => { return($"Poison Chance: {Pct(value, 0, 1)}"); } ), ( (count, inv, master) => { return(dmgCoefficient + (count - 1) * dmgStack); }, (value, inv, master) => { return($"Victim damage per second: {Pct(value, 0)}"); } ), ( (count, inv, master) => { return(duration); }, (value, inv, master) => { return($"Poison Duration: {value}"); } )); } if (Compat_BetterUI.enabled) { Compat_BetterUI.AddEffect(itemDef, procChance, stackChance, Compat_BetterUI.ChanceFormatter, Compat_BetterUI.LinearStacking, (value, extraStackValue, procCoefficient) => { return(Mathf.CeilToInt((capChance - value * procCoefficient) / (extraStackValue * procCoefficient)) + 1); }); } }