Implement some Sigil behaviors
This commit is contained in:
@@ -297,8 +297,11 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
|
||||
_camera3D.AddShake(1.0f);
|
||||
TakeDamageAnimationPlayer.Play("take_damage");
|
||||
var defense = TotalDefense * SigilComponent.Sigil.DefenseModifier;
|
||||
var damageReceived = DamageCalculator.CalculateDamage(damage, defense, EquipmentComponent.ElementalResistance);
|
||||
var defense = TotalDefense;
|
||||
var elementalResistance = EquipmentComponent.ElementalResistance + SigilComponent.Sigil.ElementalResistanceSet;
|
||||
var damageReceived = DamageCalculator.CalculateDamage(damage, defense, elementalResistance);
|
||||
damageReceived *= Mathf.RoundToInt(1 + SigilComponent.Sigil.DamageModifier);
|
||||
GD.Print($"Damage dealt: {damageReceived}");
|
||||
HealthComponent.Damage(damageReceived, damage.ElementType);
|
||||
SfxDatabase.Instance.Play(SoundEffect.TakeDamage);
|
||||
|
||||
@@ -341,7 +344,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
{
|
||||
PlayerFXAnimations.Play("death");
|
||||
|
||||
if (AutoRevive)
|
||||
if (AutoRevive || SigilComponent.Sigil.AutoRevive)
|
||||
return;
|
||||
|
||||
SetSigil(new NoneSigil());
|
||||
@@ -790,7 +793,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
{
|
||||
if (animName == "death")
|
||||
{
|
||||
if (AutoRevive)
|
||||
if (AutoRevive || SigilComponent.Sigil.AutoRevive)
|
||||
PlayerFXAnimations.PlayBackwards("revive");
|
||||
else
|
||||
PlayerDied?.Invoke();
|
||||
@@ -856,6 +859,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
var rawInput = GlobalInputVector;
|
||||
var strafeLeftInput = LeftStrafeInputVector;
|
||||
var strafeRightInput = RightStrafeInputVector;
|
||||
var moveSpeed = Settings.MoveSpeed * (1 + SigilComponent.Sigil.MoveSpeedModifier);
|
||||
|
||||
var transform = Transform;
|
||||
transform.Basis = new Basis(Vector3.Up, Settings.RotationSpeed * -rawInput.X * delta) * transform.Basis;
|
||||
@@ -872,7 +876,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
else if (WalkSFX.Playing)
|
||||
WalkSFX.Stop();
|
||||
|
||||
var velocity = (Basis * moveDirection * Settings.MoveSpeed * Settings.Acceleration);
|
||||
var velocity = (Basis * moveDirection * (float)moveSpeed * Settings.Acceleration);
|
||||
if (_debugSprint)
|
||||
velocity *= 2;
|
||||
_knockbackStrength *= 0.9f;
|
||||
@@ -916,7 +920,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
if (SigilComponent.Sigil.ElementType == weapon.WeaponElement)
|
||||
totalDamage = Mathf.RoundToInt(totalDamage * 1.15f);
|
||||
|
||||
totalDamage = Mathf.RoundToInt(totalDamage * (1 + SigilComponent.Sigil.AttackModifier));
|
||||
totalDamage = Mathf.RoundToInt(totalDamage * (1 + SigilComponent.Sigil.DamageModifier));
|
||||
|
||||
if (isCriticalHit)
|
||||
{
|
||||
@@ -924,6 +928,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
SfxDatabase.Instance.Play(SoundEffect.Crit);
|
||||
}
|
||||
|
||||
GD.Print($"Damage dealt: {totalDamage}");
|
||||
|
||||
var baseAttack = new AttackData(totalDamage, weapon.WeaponElement, weapon.WeaponTag == WeaponTag.IgnoreDefense, weapon.WeaponTag == WeaponTag.IgnoreAffinity);
|
||||
|
||||
var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, enemy.ElementalResistanceSet);
|
||||
|
||||
Reference in New Issue
Block a user