예제 #1
0
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            var stacks = unit.GetModifierStacks("modifier_shadow_demon_shadow_poison");

            if (stacks <= 0)
            {
                return(new Damage());
            }

            var lvl            = this.Owner.Abilities.FirstOrDefault(x => x.Id == AbilityId.shadow_demon_shadow_poison)?.Level ?? 1;
            var stackDamage    = this.DamageData.GetValue(lvl);
            var maxStacks      = this.maxStacksData.GetValue(lvl);
            var multiplyStacks = Math.Min(stacks, maxStacks);
            var damage         = (int)Math.Pow(2, multiplyStacks - 1) * stackDamage;

            var overflowStacks = Math.Max(stacks - maxStacks, 0);

            if (overflowStacks > 0)
            {
                var overflowDamage = this.overflowDamageData.GetValue(this.Level);
                damage += overflowStacks * overflowDamage;
            }

            return(new Damage
            {
                [this.DamageType] = (int)damage
            });
        }
예제 #2
0
파일: QuillSpray.cs 프로젝트: vana41203/O9K
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            var baseDamage  = this.DamageData.GetValue(this.Level);
            var stackDamage = this.stackDamageData.GetValue(this.Level);
            var stacks      = unit.GetModifierStacks("modifier_bristleback_quill_spray");

            return(new Damage
            {
                [this.DamageType] = Math.Min(baseDamage + (stacks * stackDamage), this.maxDamageData.GetValue(this.Level))
            });
        }
예제 #3
0
        public float AmplifierValue(Unit9 source, Unit9 target)
        {
            if (this.Level == 0)
            {
                return(0);
            }

            var amplify = (this.amplifierData.GetValue(this.Level) / -100) * target.GetModifierStacks(this.AmplifierModifierNames[0]);

            return(Math.Max(amplify, this.maxDamageReductionData.GetValue(this.Level) / -100f));
        }
예제 #4
0
        // Token: 0x06000FE7 RID: 4071 RVA: 0x000288FC File Offset: 0x00026AFC
        public override Damage GetRawDamage(Unit9 unit, float?remainingHealth = null)
        {
            float      value          = this.DamageData.GetValue(this.Level);
            float      value2         = this.stackDamageData.GetValue(this.Level);
            int        modifierStacks = unit.GetModifierStacks("modifier_bristleback_quill_spray");
            Damage     damage         = new Damage();
            DamageType damageType     = this.DamageType;

            damage[damageType] = Math.Min(value + (float)modifierStacks * value2, this.maxDamageData.GetValue(this.Level));
            return(damage);
        }
예제 #5
0
        public override bool IsIntersecting(Unit9 unit, bool checkPrediction)
        {
            if (!base.IsIntersecting(unit, checkPrediction))
            {
                return(false);
            }

            if (unit.GetModifierStacks("modifier_bristleback_quill_spray") < 5)
            {
                return(false);
            }

            return(true);
        }
예제 #6
0
 public float AmplifierValue(Unit9 source, Unit9 target)
 {
     return(target.GetModifierStacks(this.AmplifierModifierNames[0]) / -100f);
 }