Throwable item rework, increase health on timer timeout, add boss 1 model

This commit is contained in:
2024-09-22 23:05:33 -07:00
parent f490a390aa
commit 59390c04bf
44 changed files with 3373 additions and 101 deletions

View File

@@ -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);
}
}
}