/// <summary> /// Primary constructor /// </summary> /// <param name="affectedDistance"></param> /// <param name="damage"></param> /// <param name="absorbDamage"></param> /// <param name="calculationType"></param> /// <param name="attackType"></param> public PendingDamage(int affectedDistance, int damage, int absorbDamage, DamageCalculationTypes calculationType, AttackTypes attackType) { AffectedDistance = affectedDistance; Damage = damage; AbsorbDamage = absorbDamage; CalculationType = calculationType; AttackType = attackType; DamageType = DamageTypes.AREA; }
/// <summary> /// Primary constructor /// </summary> /// <param name="target"></param> /// <param name="damage"></param> /// <param name="absorbDamage"></param> /// <param name="calculationType"></param> /// <param name="attackType"></param> public PendingDamage(AbstractAttackable target, int damage, int absorbDamage, DamageCalculationTypes calculationType, AttackTypes attackType) { Target = target; Damage = damage; AbsorbDamage = absorbDamage; CalculationType = calculationType; AttackType = attackType; DamageType = DamageTypes.ENTITY; }
/// <summary> /// Enforcing a damage where the attacker exists /// </summary> /// <param name="target">Target</param> /// <param name="attacker">Attacker</param> /// <param name="damage">Damage (if percentage 1-100)</param> /// <param name="absorbDamage">Damage absorb = shield transfer (if percentage 1-100)</param> /// <param name="calculationType">Calculation type (defined or percentage)</param> /// <param name="attackType">Type of attack</param> public void EnforceDamage(AbstractAttackable target, AbstractAttacker attacker, int damage, int absorbDamage, DamageCalculationTypes calculationType, AttackTypes attackType) { if (target == null) { Out.QuickLog("Something went wrong enforcing damage, target is null", LogKeys.ERROR_LOG); throw new Exception("Target is null, cannot damage"); } if (attacker == null) { Out.QuickLog("Something went wrong enforcing damage, attacker is null", LogKeys.ERROR_LOG); throw new Exception("Attacker is null, cannot damage"); } if (damage == 0 && absorbDamage == 0) { // damage finished return; } _pendingDamages.Enqueue(new PendingDamage(target, attacker, damage, absorbDamage, calculationType, attackType)); }
/// <summary> /// Secondary constructor /// </summary> /// <param name="target"></param> /// <param name="attacker"></param> /// <param name="damage"></param> /// <param name="absorbDamage"></param> /// <param name="calculationType"></param> /// <param name="attackType"></param> public PendingDamage(AbstractAttackable target, AbstractAttacker attacker, int damage, int absorbDamage, DamageCalculationTypes calculationType, AttackTypes attackType) : this(target, damage, absorbDamage, calculationType, attackType) { Attacker = attacker; }
/// <summary> /// Secondary constructor /// </summary> /// <param name="attacker"></param> /// <param name="affectedDistance"></param> /// <param name="damage"></param> /// <param name="absorbDamage"></param> /// <param name="calculationType"></param> /// <param name="attackType"></param> public PendingDamage(AbstractAttacker attacker, int affectedDistance, int damage, int absorbDamage, DamageCalculationTypes calculationType, AttackTypes attackType) : this(affectedDistance, damage, absorbDamage, calculationType, attackType) { Attacker = attacker; }