Demon wall implementation (attack data, takes damage, dies, etc) but mostly placeholders

This commit is contained in:
2025-03-25 00:09:33 -07:00
parent f69c6b94a1
commit 84c4d1b9ce
40 changed files with 20732 additions and 625 deletions

View File

@@ -7,7 +7,6 @@ using Godot;
using Godot.Collections;
using SimpleInjector;
using System;
using System.Linq;
using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
@@ -96,6 +95,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<ISaveChunk<Play
private Dictionary<int, int> _expToNextLevel;
private IDamageCalculator _damageCalculator;
#region Initialization
public void Initialize()
{
@@ -110,6 +111,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<ISaveChunk<Play
{ 7, 417 },
{ 8, 609 }
};
_damageCalculator = new DamageCalculator();
}
public void Setup()
@@ -147,10 +149,14 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<ISaveChunk<Play
PlayerLogic.Set(Stats);
PlayerLogic.Set(_gameRepo);
var defaultWeapon = new Weapon();
defaultWeapon.Stats = _defaultWeapon;
var defaultArmor = new Armor();
defaultArmor.Stats = _defaultArmor;
var defaultWeapon = new Weapon
{
Stats = _defaultWeapon
};
var defaultArmor = new Armor
{
Stats = _defaultArmor
};
Inventory.TryAdd(defaultWeapon);
Inventory.TryAdd(defaultArmor);
@@ -330,9 +336,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<ISaveChunk<Play
{
if (Stats.CurrentHP.Value > 0)
{
damage = CalculateDefenseResistance(damage);
if (isCriticalHit)
damage *= 2;
_damageCalculator.CalculateDamage(damage, elementType, Stats.CurrentDefense.Value + Stats.BonusDefense.Value, ((Armor)_equippedArmor.Value).Stats.ElementalResistanceSet);
Stats.SetCurrentHP(Stats.CurrentHP.Value - (int)damage);
}
}
@@ -537,11 +541,6 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<ISaveChunk<Play
LevelUp();
}
private double CalculateDefenseResistance(double incomingDamage)
{
return Mathf.Max(incomingDamage - Stats.CurrentDefense.Value - Stats.BonusDefense.Value, 0.0);
}
private void Hitbox_AreaEntered(Area3D area)
{
var target = area.GetOwner();