示例#1
0
    private Healing CalculateHealing(int minh, int maxh, float critchance, HEALTYPE healtype)
    {
        int  value  = 0;
        bool isCrit = false;

        if (minh != maxh)
        {
            value = Random.Range(minh, maxh);
        }
        else
        {
            value = minh;
        }
        if (critchance > 0)
        {
            if (Random.Range(0, 100) < critchance)
            {
                value *= 2;
                isCrit = true;
            }
        }

        Healing myHeal = new Healing(value, isCrit, healtype);

        return(myHeal);
    }
示例#2
0
 public Healing Heal(Caster _caster, SpellInfo info, HEALSOURCE source, HEALTYPE healtype, int whichValue = 0)
 {
     try
     {
         return(ApplyHeal(_caster, info.baseValue + (int)(info.coeff * _caster.GetPower()), _caster.GetCritChance(), source, healtype));
     }
     catch
     {
         Debug.Log("Source: " + source);
         return(null);
     }
 }
示例#3
0
 private void WoKLoyaltyBeaconHealing(Healing myHeal, HEALSOURCE source, HEALTYPE healtype)
 {
     if ((GameCore.chosenChampion == CHAMPION.PALADIN) && (source != HEALSOURCE.WOK_LOYALTY) && (source != HEALSOURCE.GUIDANCE_OF_RAELA))
     {
         float perc = VALUES.WORD_OF_KINGS_LOYALTY_TRANSFER + core.myCaster.myAura[(int)AURA.SPIRIT_BOND].stacks * VALUES.SPIRIT_BOND_INCREASE;
         if ((core.myCaster.AuraActive(AURA.SPIRIT_BOND)) && ((healtype == HEALTYPE.DIRECT_MULTI) || (healtype == HEALTYPE.PERIODIC_MULTI)))
         {
             perc *= 0.3f;
         }
         core.BeaconHeal((int)(myHeal.value * perc), 4, soldier);
     }
 }
示例#4
0
    private Healing CalculateHealing(int value, float critchance, HEALTYPE healtype)
    {
        bool isCrit = false;

        if (critchance > 0)
        {
            if (Random.Range(0, 100) < critchance)
            {
                value *= 2;
                isCrit = true;
            }
        }

        Healing myHeal = new Healing(value, isCrit, healtype);

        return(myHeal);
    }
示例#5
0
 public SpellInfo(SPELL _id, string _name, int _basevalue, float _coeff, int _basevalue2,
                  float _coeff2, int _castTime, int _cooldown, int _charges, int _chargesGain,
                  string _icon, int _HoTgap, int _ticksCount, int _manaCost, HEALTYPE _healtype, bool _channeling, SpellEffect _effect)
 {
     ID          = _id;
     name        = _name;
     baseValue   = _basevalue;
     coeff       = _coeff;
     baseValue2  = _basevalue2;
     coeff2      = _coeff2;
     castTime    = _castTime;
     cooldown    = _cooldown;
     charges     = _charges;
     chargesGain = _chargesGain;
     icon        = _icon;
     HoTgap      = _HoTgap;
     ticksCount  = _ticksCount;
     manaCost    = _manaCost;
     healtype    = _healtype;
     channeling  = _channeling;
     effect      = _effect;
 }
示例#6
0
 public Healing Heal(Caster _caster, int val, float crit, HEALSOURCE source, HEALTYPE healtype)
 {
     return(healingHandler.Heal(_caster, val, crit, source, healtype));
 }
示例#7
0
 public Healing Heal(Caster _caster, SpellInfo info, HEALSOURCE source, HEALTYPE healtype, int whichValue = 0)
 {
     return(healingHandler.Heal(_caster, info, source, healtype, whichValue));
 }
示例#8
0
 public Healing(int _value, bool _isCrit, HEALTYPE _healtype)
 {
     value    = _value;
     isCrit   = _isCrit;
     healtype = _healtype;
 }
示例#9
0
    private Healing ApplyHeal(Caster _caster, int val, float crit, HEALSOURCE source, HEALTYPE healtype)
    {
        if (!soldier.isDead)
        {
            Healing myHeal = new Healing(0, false, healtype);

            myHeal = CalculateHealing(val, crit, healtype);

            myHeal.value = (int)(myHeal.value * _caster.HealingMultiplier());
            myHeal.value = (int)(myHeal.value * soldier.healingTakenBoost);

            myHeal = ApplyHealingModifiersBySource(myHeal, _caster, source);

            WoKLoyaltyBeaconHealing(myHeal, source, healtype);

            myHeal = ApplyHealingModifiersByBuff(source, myHeal, _caster);

            float heal_value = Mathf.Min(myHeal.value, soldier.maxHealth - soldier.health);
            heal_value *= Random.Range(95f, 105f) / 100f;
            int overheal_value = 0;
            overheal_value = Mathf.Max(0, (int)((myHeal.value + soldier.health) - soldier.maxHealth));

            overheal_value     = ApplyOverhealingModifiers(overheal_value, _caster, source);
            myHeal.overhealing = overheal_value;

            soldier.health = soldier.health + heal_value;
            core.recount.AddEntry(source, (int)heal_value, overheal_value);

            ExecuteDebuffsTriggeredByHealing(myHeal);

            CriticalHealTrigger(myHeal);

            UpdateHealthBar();

            LogHealing((int)heal_value, myHeal.isCrit);
            return(myHeal);
        }
        return(null);
    }
示例#10
0
    public Healing Heal(int minh, int maxh, float critchance, Caster _caster, SpellInfo info, HEALSOURCE source, HEALTYPE healtype)
    {
        if (!isDead)
        {
            Healing myHeal = new Healing(0, false, healtype);

            myHeal       = CalculateHealing(minh, maxh, critchance, healtype);
            myHeal.value = (int)(myHeal.value * _caster.HealingMultiplier());
            myHeal.value = (int)(myHeal.value * healingTakenBoost);

            myHeal = ApplyHealingModifiersBySource(myHeal, _caster, source);

            LogHealing((int)myHeal.value, myHeal.isCrit);

            WoKLoyaltyBeaconHealing(myHeal, source, healtype);

            myHeal = ApplyHealingModifiersByBuff(source, myHeal);

            float heal_value     = Mathf.Min(myHeal.value, maxHealth - health);
            int   overheal_value = 0;
            overheal_value = Mathf.Max(0, (int)((myHeal.value + health) - maxHealth));

            overheal_value     = ApplyOverhealingModifiers(overheal_value, _caster, source);
            myHeal.overhealing = overheal_value;

            health = health + heal_value;
            core.recount.AddEntry(source, (int)heal_value, overheal_value);

            ExecuteDebuffsTriggeredByHealing(myHeal);

            CriticalHealTrigger(myHeal);

            UpdateHealthBar();
            return(myHeal);
        }
        return(null);
    }