Ejemplo n.º 1
0
    public virtual void UpdateActorData()
    {
        float percentShieldRegen = GetMultiStatBonus(GroupTypes, BonusType.PERCENT_SHIELD_REGEN).CalculateStat(0f) / 100f;

        if (HasSpecialBonus(BonusType.SHIELD_RESTORE_APPLIES_TO_REGEN))
        {
            ShieldRegenRate = GetMultiStatBonus(GroupTypes, BonusType.SHIELD_REGEN, BonusType.SHIELD_RESTORE_SPEED).CalculateStat(percentShieldRegen * MaximumManaShield);
        }
        else
        {
            ShieldRegenRate = GetMultiStatBonus(GroupTypes, BonusType.SHIELD_REGEN).CalculateStat(percentShieldRegen * MaximumManaShield);
        }

        ShieldRestoreRate          = Math.Max(GetMultiStatBonus(GroupTypes, BonusType.SHIELD_RESTORE_SPEED).CalculateStat(0.1f), 0f) * MaximumManaShield;
        ShieldRestoreDelayModifier = Math.Max(GetMultiStatBonus(GroupTypes, BonusType.SHIELD_RESTORE_DELAY).CalculateStat(1f), 0.05f);
        DamageTakenModifier        = Math.Max(GetMultiStatBonus(GroupTypes, BonusType.DAMAGE_TAKEN).CalculateStat(1f), 0.01f);

        ApplyResistanceBonuses();
        SetNegation(ElementType.PHYSICAL, GetMultiStatBonus(GroupTypes, BonusType.PHYSICAL_RESISTANCE_NEGATION).CalculateStat(0));
        SetNegation(ElementType.FIRE, GetMultiStatBonus(GroupTypes, BonusType.FIRE_RESISTANCE_NEGATION, BonusType.ELEMENTAL_RESISTANCE_NEGATION).CalculateStat(0));
        SetNegation(ElementType.COLD, GetMultiStatBonus(GroupTypes, BonusType.COLD_RESISTANCE_NEGATION, BonusType.ELEMENTAL_RESISTANCE_NEGATION).CalculateStat(0));
        SetNegation(ElementType.LIGHTNING, GetMultiStatBonus(GroupTypes, BonusType.LIGHTNING_RESISTANCE_NEGATION, BonusType.ELEMENTAL_RESISTANCE_NEGATION).CalculateStat(0));
        SetNegation(ElementType.EARTH, GetMultiStatBonus(GroupTypes, BonusType.EARTH_RESISTANCE_NEGATION, BonusType.ELEMENTAL_RESISTANCE_NEGATION).CalculateStat(0));
        SetNegation(ElementType.DIVINE, GetMultiStatBonus(GroupTypes, BonusType.DIVINE_RESISTANCE_NEGATION, BonusType.PRIMORDIAL_RESISTANCE_NEGATION).CalculateStat(0));
        SetNegation(ElementType.VOID, GetMultiStatBonus(GroupTypes, BonusType.VOID_RESISTANCE_NEGATION, BonusType.PRIMORDIAL_RESISTANCE_NEGATION).CalculateStat(0));

        AfflictedStatusAvoidance = GetMultiStatBonus(GroupTypes, BonusType.AFFLICTED_STATUS_AVOIDANCE).CalculateStat(0);
        AfflictedStatusDuration  = Math.Max(GetMultiStatBonus(GroupTypes, BonusType.AFFLICTED_STATUS_DURATION).CalculateStat(1f), 0.01f);
        PoisonResistance         = Math.Min(GetMultiStatBonus(GroupTypes, BonusType.POISON_SHIELD_RESISTANCE).CalculateStat(0), 100) / 100f;

        AggroPriorityModifier = Math.Max(GetMultiStatBonus(GroupTypes, BonusType.AGGRO_PRIORITY_RATE).CalculateStat(1f), 0);

        OnHitData.UpdateStatusEffectData(this, GetGroupTypes(), null);
    }
Ejemplo n.º 2
0
 public void OnPlayerHit(Player player, OnHitData hitData)
 {
 }
Ejemplo n.º 3
0
 public void MonsterHit(IMonster monster, OnHitData hitData)
 {
 }
Ejemplo n.º 4
0
 public void OnNPCHit(NPCBase npc, OnHitData hitData)
 {
 }
Ejemplo n.º 5
0
 public void OnHit(OnHitData datum)
 {
     velocity = datum.vec;
     hp      -= datum.damage;
 }