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); }
public void OnPlayerHit(Player player, OnHitData hitData) { }
public void MonsterHit(IMonster monster, OnHitData hitData) { }
public void OnNPCHit(NPCBase npc, OnHitData hitData) { }
public void OnHit(OnHitData datum) { velocity = datum.vec; hp -= datum.damage; }