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);
     }
 }
示例#3
0
 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);
     }
 }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
         });
     }
 }
示例#7
0
        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);
                });
            }
        }