Throwable item rework, increase health on timer timeout, add boss 1 model
This commit is contained in:
@@ -4,13 +4,13 @@ namespace GameJamDungeon
|
||||
{
|
||||
public static class DamageCalculator
|
||||
{
|
||||
public static double CalculatePlayerDamage(int totalAttack, EnemyStatResource enemyStatInfo, WeaponStats weapon, bool isCriticalHit)
|
||||
public static double CalculateWeaponAttackDamage(int totalAttack, EnemyStatResource enemyStatResource, WeaponStats weapon, bool isCriticalHit)
|
||||
{
|
||||
var hydricResistance = enemyStatInfo.HydricResistance;
|
||||
var igneousResistance = enemyStatInfo.IgneousResistance;
|
||||
var telluricResistance = enemyStatInfo.TelluricResistance;
|
||||
var aeolicResistance = enemyStatInfo.AeolicResistance;
|
||||
var ferrumResistance = enemyStatInfo.FerrumResistance;
|
||||
var hydricResistance = enemyStatResource.HydricResistance;
|
||||
var igneousResistance = enemyStatResource.IgneousResistance;
|
||||
var telluricResistance = enemyStatResource.TelluricResistance;
|
||||
var aeolicResistance = enemyStatResource.AeolicResistance;
|
||||
var ferrumResistance = enemyStatResource.FerrumResistance;
|
||||
|
||||
if (weapon.WeaponTags.Contains(WeaponTag.IgnoreAffinity))
|
||||
{
|
||||
@@ -27,29 +27,45 @@ namespace GameJamDungeon
|
||||
var elementDDamage = (weapon.AeolicDamageBonus > 0 ? weapon.AeolicDamageBonus - aeolicResistance : 0) / 100;
|
||||
var elementEDamage = (weapon.FerrumDamageBonus > 0 ? weapon.FerrumDamageBonus - ferrumResistance : 0) / 100;
|
||||
var elementalBonusDamage = totalAttack + (totalAttack * elementADamage) + (totalAttack * elementBDamage) + (totalAttack * elementCDamage) + (totalAttack * elementDDamage) + (totalAttack * elementEDamage);
|
||||
var calculatedDamage = elementalBonusDamage - enemyStatInfo.CurrentDefense;
|
||||
var calculatedDamage = elementalBonusDamage - enemyStatResource.CurrentDefense;
|
||||
|
||||
if (isCriticalHit)
|
||||
calculatedDamage *= 2;
|
||||
|
||||
return calculatedDamage;
|
||||
return Mathf.Max(calculatedDamage, 0.0);
|
||||
}
|
||||
|
||||
public static double CalculateEnemyDamage(int playerTotalDefense, EnemyStatResource enemyStatInfo, ArmorStats armor, bool isCriticalHit)
|
||||
public static double CalculateEnemyAttackDamage(int playerTotalDefense, EnemyStatResource enemyStatResource, ArmorStats armor, bool isCriticalHit)
|
||||
{
|
||||
var totalAttack = enemyStatInfo.CurrentAttack;
|
||||
var elementADamage = (enemyStatInfo.BaseHydricDamageBonus > 0 ? enemyStatInfo.BaseHydricDamageBonus - armor.HydricResistance : 0) / 100;
|
||||
var elementBDamage = (enemyStatInfo.IgneousDamageBonus > 0 ? enemyStatInfo.IgneousDamageBonus - armor.IgneousResistance : 0) / 100;
|
||||
var elementCDamage = (enemyStatInfo.TelluricDamageBonus > 0 ? enemyStatInfo.TelluricDamageBonus - armor.TelluricResistance : 0) / 100;
|
||||
var elementDDamage = (enemyStatInfo.AeolicDamageBonus > 0 ? enemyStatInfo.AeolicDamageBonus - armor.AeolicResistance : 0) / 100;
|
||||
var elementEDamage = (enemyStatInfo.FerrumDamageBonus > 0 ? enemyStatInfo.FerrumDamageBonus - armor.FerrumResistance : 0) / 100;
|
||||
var totalAttack = enemyStatResource.CurrentAttack;
|
||||
var elementADamage = (enemyStatResource.BaseHydricDamageBonus > 0 ? enemyStatResource.BaseHydricDamageBonus - armor.HydricResistance : 0) / 100;
|
||||
var elementBDamage = (enemyStatResource.IgneousDamageBonus > 0 ? enemyStatResource.IgneousDamageBonus - armor.IgneousResistance : 0) / 100;
|
||||
var elementCDamage = (enemyStatResource.TelluricDamageBonus > 0 ? enemyStatResource.TelluricDamageBonus - armor.TelluricResistance : 0) / 100;
|
||||
var elementDDamage = (enemyStatResource.AeolicDamageBonus > 0 ? enemyStatResource.AeolicDamageBonus - armor.AeolicResistance : 0) / 100;
|
||||
var elementEDamage = (enemyStatResource.FerrumDamageBonus > 0 ? enemyStatResource.FerrumDamageBonus - armor.FerrumResistance : 0) / 100;
|
||||
var elementalBonusDamage = totalAttack + (totalAttack * elementADamage) + (totalAttack * elementBDamage) + (totalAttack * elementCDamage) + (totalAttack * elementDDamage) + (totalAttack * elementEDamage);
|
||||
var calculatedDamage = elementalBonusDamage - playerTotalDefense - (armor != null ? armor.Defense : 0);
|
||||
|
||||
if (isCriticalHit)
|
||||
calculatedDamage *= 2;
|
||||
|
||||
return calculatedDamage;
|
||||
return Mathf.Max(calculatedDamage, 0.0);
|
||||
}
|
||||
|
||||
public static double CalculateThrownItemDamage(int baseThrowDamage, EnemyStatResource enemyStatResource, ThrowableItemStats throwableItemStats)
|
||||
{
|
||||
if (throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.InflictAeolicDamage))
|
||||
return Mathf.Max(baseThrowDamage * enemyStatResource.AeolicResistance, 0.0);
|
||||
if (throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.InflictFerrumDamage))
|
||||
return Mathf.Max(baseThrowDamage * enemyStatResource.FerrumResistance, 0.0);
|
||||
if (throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.InflictHydricDamage))
|
||||
return Mathf.Max(baseThrowDamage * enemyStatResource.HydricResistance, 0.0);
|
||||
if (throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.InflictIgneousDamage))
|
||||
return Mathf.Max(baseThrowDamage * enemyStatResource.IgneousResistance, 0.0);
|
||||
if (throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.InflictTelluricDamage))
|
||||
return Mathf.Max(baseThrowDamage * enemyStatResource.TelluricResistance, 0.0);
|
||||
|
||||
return Mathf.Max(baseThrowDamage, 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user