Add elemental VFX when hitting enemies (2D only currently)
This commit is contained in:
@@ -9,13 +9,13 @@ public interface IHealthComponent : IEntityComponent
|
||||
public IAutoProp<int> MaximumHP { get; }
|
||||
|
||||
public event Action? HealthReachedZero;
|
||||
public event Action? DamageTaken;
|
||||
public event Action<ElementType>? DamageTaken;
|
||||
|
||||
public bool AtFullHealth { get; }
|
||||
|
||||
public void Heal(int healAmount);
|
||||
|
||||
public void Damage(int damageAmount);
|
||||
public void Damage(int damageAmount, ElementType elementType);
|
||||
|
||||
public void SetCurrentHealth(int health);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ public class HealthComponent : IHealthComponent
|
||||
private readonly AutoProp<int> _maximumHP;
|
||||
|
||||
public event Action? HealthReachedZero;
|
||||
public event Action? DamageTaken;
|
||||
public event Action<ElementType>? DamageTaken;
|
||||
|
||||
public bool AtFullHealth => CurrentHP.Value == MaximumHP.Value;
|
||||
|
||||
@@ -44,7 +44,7 @@ public class HealthComponent : IHealthComponent
|
||||
_currentHP.OnNext(cappedAmount);
|
||||
}
|
||||
|
||||
public void Damage(int damageAmount)
|
||||
public void Damage(int damageAmount, ElementType elementType)
|
||||
{
|
||||
if (CurrentHP.Value <= 0)
|
||||
return;
|
||||
@@ -55,7 +55,7 @@ public class HealthComponent : IHealthComponent
|
||||
if (cappedAmount == 0)
|
||||
HealthReachedZero?.Invoke();
|
||||
else
|
||||
DamageTaken?.Invoke();
|
||||
DamageTaken?.Invoke(elementType);
|
||||
}
|
||||
|
||||
public void SetCurrentHealth(int health)
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
importer="oggvorbisstr"
|
||||
type="AudioStreamOggVorbis"
|
||||
uid="uid://cgk17d8erskht"
|
||||
path="res://.godot/imported/amb_ocean.ogg-01a11020be2db82b0e22d1423cb26aa3.oggvorbisstr"
|
||||
path="res://.godot/imported/amb_ocean.ogg-f4ee3d30caf9194f7881a02c6507d38a.oggvorbisstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/audio/amb/amb_ocean.ogg"
|
||||
dest_files=["res://.godot/imported/amb_ocean.ogg-01a11020be2db82b0e22d1423cb26aa3.oggvorbisstr"]
|
||||
source_file="res://src/audio/AMB/amb_ocean.ogg"
|
||||
dest_files=["res://.godot/imported/amb_ocean.ogg-f4ee3d30caf9194f7881a02c6507d38a.oggvorbisstr"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -169,8 +169,9 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
|
||||
}
|
||||
|
||||
public virtual void TakeHit()
|
||||
public virtual void TakeHit(ElementType damageElementType)
|
||||
{
|
||||
EnemyModelView.PlayElementalDamageAnimation(damageElementType);
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Alert());
|
||||
EnemyModelView.PlayHitAnimation();
|
||||
_hitSFX.Play();
|
||||
@@ -281,8 +282,8 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
|
||||
private void _rustTimer_Timeout()
|
||||
{
|
||||
HealthComponent.Damage(3);
|
||||
TakeHit();
|
||||
HealthComponent.Damage(3, ElementType.Ferrum);
|
||||
TakeHit(ElementType.Ferrum);
|
||||
}
|
||||
|
||||
private void _rustDuration_Timeout()
|
||||
|
||||
@@ -134,4 +134,6 @@ public abstract partial class EnemyModelView : Node3D, IEnemyModelView
|
||||
AnimationTree.Get(_parametersPlayback).As<AnimationNodeStateMachinePlayback>().Stop();
|
||||
AnimationTree.AnimationFinished -= AnimationTree_AnimationFinished;
|
||||
}
|
||||
|
||||
public abstract void PlayElementalDamageAnimation(ElementType elementType);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System.Linq;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
[Meta(typeof(IAutoNode))]
|
||||
@@ -17,6 +18,15 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
|
||||
|
||||
[Node] public AnimationPlayer AnimationPlayer { get; set; } = default!;
|
||||
|
||||
[Node] public AnimationPlayer FlameHitAnimation { get; set; } = default!;
|
||||
|
||||
[Node] public AnimationPlayer RustHitAnimation { get; set; } = default!;
|
||||
[Node] public AnimationPlayer HolyHitAnimation { get; set; } = default!;
|
||||
[Node] public AnimationPlayer WindHitAnimation { get; set; } = default!;
|
||||
[Node] public AnimationPlayer WaterHitAnimation { get; set; } = default!;
|
||||
[Node] public AnimationPlayer CurseHitAnimation { get; set; } = default!;
|
||||
[Node] public AnimationPlayer EarthHitAnimation { get; set; } = default!;
|
||||
|
||||
[ExportGroup("Enemy Model Properties")]
|
||||
[Export(PropertyHint.Range, "0.0, 1.0")]
|
||||
private float _upperThreshold { get; set; } = 0.5f;
|
||||
@@ -56,6 +66,47 @@ public partial class EnemyModelView2D : EnemyModelView, IEnemyModelView
|
||||
tweener.TweenMethod(Callable.From((float x) => SetShaderValue(x)), 0.0f, 0.1f, 0.8f);
|
||||
}
|
||||
|
||||
public override void PlayElementalDamageAnimation(ElementType elementType)
|
||||
{
|
||||
if (elementType == ElementType.Igneous)
|
||||
{
|
||||
if (FlameHitAnimation.IsPlaying())
|
||||
FlameHitAnimation.Stop();
|
||||
FlameHitAnimation.Play("FireHit");
|
||||
}
|
||||
else if (elementType == ElementType.Holy)
|
||||
{
|
||||
if (HolyHitAnimation.IsPlaying())
|
||||
HolyHitAnimation.Stop();
|
||||
HolyHitAnimation.Play("HolyHit");
|
||||
}
|
||||
else if (elementType == ElementType.Aeolic)
|
||||
{
|
||||
if (WindHitAnimation.IsPlaying())
|
||||
WindHitAnimation.Stop();
|
||||
WindHitAnimation.Play("WindHit");
|
||||
}
|
||||
else if (elementType == ElementType.Curse)
|
||||
{
|
||||
if (CurseHitAnimation.IsPlaying())
|
||||
CurseHitAnimation.Stop();
|
||||
CurseHitAnimation.Play("CurseHit");
|
||||
}
|
||||
else if (elementType == ElementType.Hydric)
|
||||
{
|
||||
if (WaterHitAnimation.IsPlaying())
|
||||
WaterHitAnimation.Stop();
|
||||
WaterHitAnimation.Play("WaterHit");
|
||||
}
|
||||
else if (elementType == ElementType.Telluric)
|
||||
{
|
||||
if (EarthHitAnimation.IsPlaying())
|
||||
EarthHitAnimation.Stop();
|
||||
EarthHitAnimation.Play("EarthHit");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private EnemyDirection GetEnemyDirection(
|
||||
Basis enemyBasis,
|
||||
Vector3 cameraDirection,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
@@ -59,4 +60,9 @@ public partial class EnemyModelView3D : EnemyModelView
|
||||
{
|
||||
MeshInstance.Transparency = transparencyAmount;
|
||||
}
|
||||
|
||||
public override void PlayElementalDamageAnimation(ElementType elementType)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,8 @@ public interface IEnemyModelView : INode3D
|
||||
|
||||
public void PlayDeathAnimation();
|
||||
|
||||
public void PlayElementalDamageAnimation(ElementType elementType);
|
||||
|
||||
public double ViewerSize { get; }
|
||||
|
||||
public AttackData AttackData { get; set; }
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=621 format=3 uid="uid://g84hcmgo3gtl"]
|
||||
[gd_scene load_steps=627 format=3 uid="uid://g84hcmgo3gtl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"]
|
||||
[ext_resource type="Texture2D" uid="uid://nps7rrvkgews" path="res://src/enemy/enemy_types/04. sara/animations/IDLE+MOVE/FRONT/0001.png" id="2_8j76g"]
|
||||
@@ -1442,6 +1442,9 @@ region = Rect2(3072, 512, 512, 512)
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": null
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_slhg2")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
@@ -4507,13 +4510,69 @@ _data = {
|
||||
&"RESET": SubResource("Animation_8wlnr")
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6shfu"]
|
||||
resource_name = "Fire Damage"
|
||||
length = 1.33334
|
||||
[sub_resource type="Animation" id="Animation_30xy4"]
|
||||
resource_name = "CurseHit"
|
||||
length = 1.56667
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/Flame Hit Effect:animation")
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Curse Hit Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Curse Hit Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 1.56667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 47]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_3pm1j"]
|
||||
resource_name = "EarthHit"
|
||||
length = 1.46667
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Earth Hit Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"EARTH DAMAGE"]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Earth Hit Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 1.46667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 44]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_6shfu"]
|
||||
resource_name = "Fire Damage"
|
||||
length = 2.93334
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Flame Hit Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
@@ -4525,7 +4584,7 @@ tracks/0/keys = {
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/Flame Hit Effect:frame")
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Flame Hit Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
@@ -4537,7 +4596,7 @@ tracks/1/keys = {
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/Flame Hit Effect:modulate")
|
||||
tracks/2/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Flame Hit Effect:modulate")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
@@ -4546,13 +4605,65 @@ tracks/2/keys = {
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056), Color(1, 1, 1, 0.85), Color(1, 1, 1, 0.056)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Rust Activation Effect:animation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Rust Activation Effect:frame")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 2.93333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [88, 88]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_f5cjs"]
|
||||
resource_name = "HolyHit"
|
||||
length = 0.700003
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Holy Hit Layer Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"HOLY"]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Holy Hit Layer Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.7),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 21]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_cftgd"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/Flame Hit Effect:modulate")
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Flame Hit Effect:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
@@ -4564,7 +4675,7 @@ tracks/0/keys = {
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/Flame Hit Effect:frame")
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Flame Hit Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
@@ -4576,7 +4687,7 @@ tracks/1/keys = {
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/Flame Hit Effect:animation")
|
||||
tracks/2/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Flame Hit Effect:animation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
@@ -4585,11 +4696,295 @@ tracks/2/keys = {
|
||||
"update": 1,
|
||||
"values": [&"Flame Damage"]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Rust Activation Effect:animation")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Rust Activation Effect:frame")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [88]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Holy Hit Layer Effect:animation")
|
||||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"HOLY"]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Holy Hit Layer Effect:frame")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Wind Hit Layer Effect:animation")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/8/type = "value"
|
||||
tracks/8/imported = false
|
||||
tracks/8/enabled = true
|
||||
tracks/8/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Wind Hit Layer Effect:frame")
|
||||
tracks/8/interp = 1
|
||||
tracks/8/loop_wrap = true
|
||||
tracks/8/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [50]
|
||||
}
|
||||
tracks/9/type = "value"
|
||||
tracks/9/imported = false
|
||||
tracks/9/enabled = true
|
||||
tracks/9/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 1 Effect:animation")
|
||||
tracks/9/interp = 1
|
||||
tracks/9/loop_wrap = true
|
||||
tracks/9/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"WATER DAMAGE"]
|
||||
}
|
||||
tracks/10/type = "value"
|
||||
tracks/10/imported = false
|
||||
tracks/10/enabled = true
|
||||
tracks/10/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 1 Effect:frame")
|
||||
tracks/10/interp = 1
|
||||
tracks/10/loop_wrap = true
|
||||
tracks/10/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [29]
|
||||
}
|
||||
tracks/11/type = "value"
|
||||
tracks/11/imported = false
|
||||
tracks/11/enabled = true
|
||||
tracks/11/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 2Effect:animation")
|
||||
tracks/11/interp = 1
|
||||
tracks/11/loop_wrap = true
|
||||
tracks/11/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"WATER"]
|
||||
}
|
||||
tracks/12/type = "value"
|
||||
tracks/12/imported = false
|
||||
tracks/12/enabled = true
|
||||
tracks/12/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 2Effect:frame")
|
||||
tracks/12/interp = 1
|
||||
tracks/12/loop_wrap = true
|
||||
tracks/12/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [51]
|
||||
}
|
||||
tracks/13/type = "value"
|
||||
tracks/13/imported = false
|
||||
tracks/13/enabled = true
|
||||
tracks/13/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Curse Hit Effect:animation")
|
||||
tracks/13/interp = 1
|
||||
tracks/13/loop_wrap = true
|
||||
tracks/13/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/14/type = "value"
|
||||
tracks/14/imported = false
|
||||
tracks/14/enabled = true
|
||||
tracks/14/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Curse Hit Effect:frame")
|
||||
tracks/14/interp = 1
|
||||
tracks/14/loop_wrap = true
|
||||
tracks/14/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [47]
|
||||
}
|
||||
tracks/15/type = "value"
|
||||
tracks/15/imported = false
|
||||
tracks/15/enabled = true
|
||||
tracks/15/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Earth Hit Effect:animation")
|
||||
tracks/15/interp = 1
|
||||
tracks/15/loop_wrap = true
|
||||
tracks/15/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"WATER DAMAGE"]
|
||||
}
|
||||
tracks/16/type = "value"
|
||||
tracks/16/imported = false
|
||||
tracks/16/enabled = true
|
||||
tracks/16/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Earth Hit Effect:frame")
|
||||
tracks/16/interp = 1
|
||||
tracks/16/loop_wrap = true
|
||||
tracks/16/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_0tqwp"]
|
||||
resource_name = "RustActivate"
|
||||
length = 1.46667
|
||||
step = 0.0166667
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Rust Activation Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Rust Activation Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 1.46667),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 88]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_q5dfb"]
|
||||
resource_name = "WaterHit"
|
||||
length = 1.7
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 1 Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"WATER DAMAGE"]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 1 Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 1),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 29]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 2Effect:animation")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"WATER"]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Water Hit Layer 2Effect:frame")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 1.7),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 51]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_godpv"]
|
||||
resource_name = "WindHit"
|
||||
length = 0.833335
|
||||
step = 0.0166667
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Wind Hit Layer Effect:animation")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [&"default"]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../Sprite3D/SubViewportContainer/SubViewport/VFXSprites/Wind Hit Layer Effect:frame")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.833333),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0, 50]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_0tqwp"]
|
||||
_data = {
|
||||
&"Fire Damage": SubResource("Animation_6shfu"),
|
||||
&"RESET": SubResource("Animation_cftgd")
|
||||
&"CurseHit": SubResource("Animation_30xy4"),
|
||||
&"EarthHit": SubResource("Animation_3pm1j"),
|
||||
&"FireHit": SubResource("Animation_6shfu"),
|
||||
&"HolyHit": SubResource("Animation_f5cjs"),
|
||||
&"RESET": SubResource("Animation_cftgd"),
|
||||
&"RustActivate": SubResource("Animation_0tqwp"),
|
||||
&"WaterHit": SubResource("Animation_q5dfb"),
|
||||
&"WindHit": SubResource("Animation_godpv")
|
||||
}
|
||||
|
||||
[node name="EnemyModelView" type="Node3D"]
|
||||
@@ -4625,66 +5020,59 @@ position = Vector2(400, 400)
|
||||
sprite_frames = SubResource("SpriteFrames_sobol")
|
||||
animation = &"idle_front"
|
||||
|
||||
[node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="VFXSprites" type="Node2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
|
||||
[node name="Rust Activation Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(1.54, 1.54)
|
||||
sprite_frames = SubResource("SpriteFrames_s0t7i")
|
||||
frame = 88
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Holy Hit Layer Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Holy Hit Layer Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(0.675, 0.675)
|
||||
sprite_frames = SubResource("SpriteFrames_jy23v")
|
||||
animation = &"HOLY"
|
||||
frame = 20
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Wind Hit Layer Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Wind Hit Layer Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(1.445, 1.445)
|
||||
sprite_frames = SubResource("SpriteFrames_olmld")
|
||||
frame = 50
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Flame Hit Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Flame Hit Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(3.445, 3.445)
|
||||
sprite_frames = SubResource("SpriteFrames_a23f0")
|
||||
animation = &"Flame Damage"
|
||||
frame = 40
|
||||
|
||||
[node name="Water Hit Layer 1 Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Water Hit Layer 1 Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(2.215, 2.215)
|
||||
sprite_frames = SubResource("SpriteFrames_bsjfy")
|
||||
animation = &"WATER DAMAGE"
|
||||
frame = 29
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Water Hit Layer 2Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Water Hit Layer 2Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(1.105, 0.895)
|
||||
sprite_frames = SubResource("SpriteFrames_cht2c")
|
||||
animation = &"WATER"
|
||||
frame = 51
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Curse Hit Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Curse Hit Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
texture_filter = 1
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(2.78, 2.78)
|
||||
sprite_frames = SubResource("SpriteFrames_v3crq")
|
||||
frame = 47
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Earth Hit Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport"]
|
||||
[node name="Earth Hit Effect" type="AnimatedSprite2D" parent="Sprite3D/SubViewportContainer/SubViewport/VFXSprites"]
|
||||
position = Vector2(400, 400)
|
||||
scale = Vector2(2.005, 2.005)
|
||||
sprite_frames = SubResource("SpriteFrames_bsjfy")
|
||||
animation = &"WATER DAMAGE"
|
||||
frame = 29
|
||||
frame_progress = 1.0
|
||||
|
||||
[node name="Hitbox" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
@@ -4731,8 +5119,53 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.72758, 0)
|
||||
autoplay = true
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="Flame Animation Player" type="AnimationPlayer" parent="."]
|
||||
root_node = NodePath("../Secondary Animation Player")
|
||||
[node name="VFXAnimations" type="Node" parent="."]
|
||||
|
||||
[node name="FlameHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
[node name="RustHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
[node name="HolyHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
[node name="WindHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
[node name="WaterHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
[node name="CurseHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
[node name="EarthHitAnimation" type="AnimationPlayer" parent="VFXAnimations"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../../Secondary Animation Player")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_0tqwp")
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -55,6 +55,11 @@ public partial class DemonWallArm : EnemyModelView
|
||||
}
|
||||
}
|
||||
|
||||
public override void PlayElementalDamageAnimation(ElementType elementType)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void OnExitTree()
|
||||
{
|
||||
Hitbox.AreaEntered -= Hitbox_AreaEntered;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -879,7 +879,7 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
private void RustTimeout()
|
||||
{
|
||||
_player.HealthComponent.Damage(3);
|
||||
_player.HealthComponent.Damage(3, ElementType.Ferrum);
|
||||
}
|
||||
|
||||
private void RustWoreOff() => _player.StatusEffectComponent.Rust.OnNext(false);
|
||||
|
||||
@@ -100,7 +100,7 @@ public class EffectService
|
||||
foreach (var enemy in currentEnemies)
|
||||
{
|
||||
var absorbAmount = enemy.HealthComponent.CurrentHP.Value * 0.25;
|
||||
enemy.HealthComponent.Damage((int)absorbAmount);
|
||||
enemy.HealthComponent.Damage((int)absorbAmount, ElementType.None);
|
||||
hpToAbsorb += absorbAmount;
|
||||
enemy.OnAbsorb();
|
||||
}
|
||||
@@ -118,7 +118,7 @@ public class EffectService
|
||||
foreach (var enemy in currentEnemies)
|
||||
{
|
||||
var damageDealt = DamageCalculator.CalculateDamage(new AttackData(20, elementType), 10, enemy.ElementalResistanceSet);
|
||||
enemy.HealthComponent.Damage(damageDealt);
|
||||
enemy.HealthComponent.Damage(damageDealt, elementType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public partial class SetItem : RigidBody3D
|
||||
if (area.GetOwner() is ExplodableWall wall)
|
||||
wall.Demolish();
|
||||
if (area.GetOwner() is IEnemy enemy)
|
||||
enemy.HealthComponent.Damage(10);
|
||||
enemy.HealthComponent.Damage(10, ElementType.Igneous);
|
||||
}
|
||||
|
||||
public async void Set()
|
||||
|
||||
@@ -148,14 +148,14 @@ public partial class ThrownItem : RigidBody3D, IThrownItem
|
||||
break;
|
||||
default:
|
||||
var damageDealt = DamageCalculator.CalculateDamage(new AttackData(usableItem.ThrowDamage, ElementType.None), enemy.DefenseComponent.CurrentDefense.Value, enemy.ElementalResistanceSet);
|
||||
enemy.HealthComponent.Damage(damageDealt);
|
||||
enemy.HealthComponent.Damage(damageDealt, ElementType.None);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var damageDealt = DamageCalculator.CalculateDamage(new AttackData(ItemThatIsThrown.ThrowDamage, ElementType.None), enemy.DefenseComponent.CurrentDefense.Value, enemy.ElementalResistanceSet);
|
||||
enemy.HealthComponent.Damage(damageDealt);
|
||||
enemy.HealthComponent.Damage(damageDealt, ElementType.None);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bl4xempufmgr5"
|
||||
path.bptc="res://.godot/imported/PALM OF HEAVEN.PNG-35554a412a9c4bc09647efa86e6b581e.bptc.ctex"
|
||||
path.bptc="res://.godot/imported/palm of heaven.png-8afcb54f797720ff29f3c00c68c0f579.bptc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
@@ -11,8 +11,8 @@ metadata={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/items/weapons/textures/PALM OF HEAVEN.PNG"
|
||||
dest_files=["res://.godot/imported/PALM OF HEAVEN.PNG-35554a412a9c4bc09647efa86e6b581e.bptc.ctex"]
|
||||
source_file="res://src/items/weapons/textures/palm of heaven.png"
|
||||
dest_files=["res://.godot/imported/palm of heaven.png-8afcb54f797720ff29f3c00c68c0f579.bptc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cp0er3xxxjkr5"
|
||||
path="res://.godot/imported/a2-puer_AREA_2_MAIN_222STONE.png-139f243ac630853348798dfe584da1e0.ctex"
|
||||
path="res://.godot/imported/A2-Puer_AREA_2_MAIN_222STONE.png-992459ef9849c39922a9b9e0c7774a4a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_AREA_2_MAIN_222STONE.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_AREA_2_MAIN_222STONE.png-139f243ac630853348798dfe584da1e0.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_AREA_2_MAIN_222STONE.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_AREA_2_MAIN_222STONE.png-992459ef9849c39922a9b9e0c7774a4a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://5r16swvuqjjg"
|
||||
path="res://.godot/imported/a2-puer_AREA_2_MAIN_STONE.png-986249227e569ea1e40b4825b7f05c47.ctex"
|
||||
path="res://.godot/imported/A2-Puer_AREA_2_MAIN_STONE.png-2267bd7e464cdc2e03c8954de01941bf.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_AREA_2_MAIN_STONE.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_AREA_2_MAIN_STONE.png-986249227e569ea1e40b4825b7f05c47.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_AREA_2_MAIN_STONE.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_AREA_2_MAIN_STONE.png-2267bd7e464cdc2e03c8954de01941bf.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cvnpxln2mmtkp"
|
||||
path="res://.godot/imported/a2-puer_COLUMN_WHITE.png-0b80d510851319464b2ef729d8868892.ctex"
|
||||
path="res://.godot/imported/A2-Puer_COLUMN_WHITE.png-18037c22b966bb159d05cb7acac1bc53.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_COLUMN_WHITE.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_COLUMN_WHITE.png-0b80d510851319464b2ef729d8868892.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_COLUMN_WHITE.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_COLUMN_WHITE.png-18037c22b966bb159d05cb7acac1bc53.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://tjtjbktl51kd"
|
||||
path="res://.godot/imported/a2-puer_GREENBIT.png-e1ed395f917a2fe57ed6288185af0729.ctex"
|
||||
path="res://.godot/imported/A2-Puer_GREENBIT.png-40a9ca6a0efc569a5f329f19b3c3e572.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_GREENBIT.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_GREENBIT.png-e1ed395f917a2fe57ed6288185af0729.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_GREENBIT.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_GREENBIT.png-40a9ca6a0efc569a5f329f19b3c3e572.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dqfdyguq83bhs"
|
||||
path="res://.godot/imported/a2-puer_M13_14.png-ed8b29b0af1c2b973bfaee62e57cab14.ctex"
|
||||
path="res://.godot/imported/A2-Puer_M13_14.png-e781478f15895763a566a64ff37db311.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_M13_14.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_M13_14.png-ed8b29b0af1c2b973bfaee62e57cab14.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_M13_14.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_M13_14.png-e781478f15895763a566a64ff37db311.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dorqwrqy03rim"
|
||||
path="res://.godot/imported/a2-puer_M13_49.png-86429b5a3cd80a9159f32ded99a631bc.ctex"
|
||||
path="res://.godot/imported/A2-Puer_M13_49.png-44faadb5ae300e9ecea145cfe1949536.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_M13_49.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_M13_49.png-86429b5a3cd80a9159f32ded99a631bc.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_M13_49.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_M13_49.png-44faadb5ae300e9ecea145cfe1949536.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://nl3bwenfa8fi"
|
||||
path="res://.godot/imported/a2-puer_RUBBLE_1.png-c7185e2aad2613007d1951f1515ef882.ctex"
|
||||
path="res://.godot/imported/A2-Puer_RUBBLE_1.png-72d7ff861d1df58d800502546da8d607.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_RUBBLE_1.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_RUBBLE_1.png-c7185e2aad2613007d1951f1515ef882.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_RUBBLE_1.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_RUBBLE_1.png-72d7ff861d1df58d800502546da8d607.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://0p6suo7fpxum"
|
||||
path="res://.godot/imported/a2-puer_STUCCO_DECAL_BIG.png-882b477f490f6ddbf5bffb3a6f8904e1.ctex"
|
||||
path="res://.godot/imported/A2-Puer_STUCCO_DECAL_BIG.png-015d9f8dd06372231a1f422979d3604e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_STUCCO_DECAL_BIG.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_STUCCO_DECAL_BIG.png-882b477f490f6ddbf5bffb3a6f8904e1.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_STUCCO_DECAL_BIG.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_STUCCO_DECAL_BIG.png-015d9f8dd06372231a1f422979d3604e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ct3mkni0v0y3g"
|
||||
path="res://.godot/imported/a2-puer_Tile 4.png-9d089a32db3fc38a0c5dee6cdb6d3495.ctex"
|
||||
path="res://.godot/imported/A2-Puer_Tile 4.png-0cfd085ec5fcea35eb2d1373e4717f77.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_Tile 4.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_Tile 4.png-9d089a32db3fc38a0c5dee6cdb6d3495.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_Tile 4.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_Tile 4.png-0cfd085ec5fcea35eb2d1373e4717f77.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b40fbcriycpp5"
|
||||
path="res://.godot/imported/a2-puer_imag2esnormal.jpg-d6e063b2785344af34fa3bb45d47aa2f.ctex"
|
||||
path="res://.godot/imported/A2-Puer_imag2esnormal.jpg-be023c8af9ff59eedfb3ede232c75195.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_imag2esnormal.jpg"
|
||||
dest_files=["res://.godot/imported/a2-puer_imag2esnormal.jpg-d6e063b2785344af34fa3bb45d47aa2f.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_imag2esnormal.jpg"
|
||||
dest_files=["res://.godot/imported/A2-Puer_imag2esnormal.jpg-be023c8af9ff59eedfb3ede232c75195.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b25r6gysyhu3e"
|
||||
path="res://.godot/imported/a2-puer_inner_rock2.png-943622742770f7b55d1e40645d07d057.ctex"
|
||||
path="res://.godot/imported/A2-Puer_inner_rock2.png-7c99975de214e5dddd3507f87212b910.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_inner_rock2.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_inner_rock2.png-943622742770f7b55d1e40645d07d057.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_inner_rock2.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_inner_rock2.png-7c99975de214e5dddd3507f87212b910.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cw4hq3kofjowa"
|
||||
path="res://.godot/imported/a2-puer_lime_hand_relief.png-85b73e808337e8b8841453cbda0e78cd.ctex"
|
||||
path="res://.godot/imported/A2-Puer_lime_hand_relief.png-825857ea33249fe0361c829ba37bbfdb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_lime_hand_relief.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_lime_hand_relief.png-85b73e808337e8b8841453cbda0e78cd.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_lime_hand_relief.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_lime_hand_relief.png-825857ea33249fe0361c829ba37bbfdb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bqrsde28o867s"
|
||||
path="res://.godot/imported/a2-puer_mother_GREEN.png-7bb7d8dd57027953ba1e08ed0c256c8b.ctex"
|
||||
path="res://.godot/imported/A2-Puer_mother_GREEN.png-ba1f3d21981ed19fc5cc87868e04808c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_mother_GREEN.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_mother_GREEN.png-7bb7d8dd57027953ba1e08ed0c256c8b.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_mother_GREEN.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_mother_GREEN.png-ba1f3d21981ed19fc5cc87868e04808c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://4aq3a26dliyg"
|
||||
path="res://.godot/imported/a2-puer_swirled_column _AREA222.png-6f90c188eae5b7e81110f39984d5d43f.ctex"
|
||||
path="res://.godot/imported/A2-Puer_swirled_column _AREA222.png-4842b180cffdbc0274ecb9cbbbbc8221.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
@@ -13,8 +13,8 @@ generator_parameters={
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/a2-puer_swirled_column _AREA222.png"
|
||||
dest_files=["res://.godot/imported/a2-puer_swirled_column _AREA222.png-6f90c188eae5b7e81110f39984d5d43f.ctex"]
|
||||
source_file="res://src/map/dungeon/models/Area 2/Puer/A2-Puer_swirled_column _AREA222.png"
|
||||
dest_files=["res://.godot/imported/A2-Puer_swirled_column _AREA222.png-4842b180cffdbc0274ecb9cbbbbc8221.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ public partial class Npc : Node3D
|
||||
_isInDialogueZone = true;
|
||||
}
|
||||
|
||||
public override void _UnhandledInput(InputEvent @event)
|
||||
public override void _Input(InputEvent @event)
|
||||
{
|
||||
if (@event.IsActionPressed(GameInputs.Interact) && _isInDialogueZone)
|
||||
{
|
||||
|
||||
@@ -269,7 +269,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
_camera3D.AddShake(1.0f);
|
||||
TakeDamageAnimationPlayer.Play("take_damage");
|
||||
var damageReceived = DamageCalculator.CalculateDamage(damage, TotalDefense, EquipmentComponent.ElementalResistance);
|
||||
HealthComponent.Damage(damageReceived);
|
||||
HealthComponent.Damage(damageReceived, damage.ElementType);
|
||||
SfxDatabase.Instance.Play(SoundEffect.TakeDamage);
|
||||
|
||||
if (EquipmentComponent.EquippedArmor.Value.ArmorTag == ArmorTag.DegradeOnHit)
|
||||
@@ -851,7 +851,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
VTComponent.Reduce(1);
|
||||
}
|
||||
else
|
||||
HealthComponent.Damage(1);
|
||||
HealthComponent.Damage(1, ElementType.None);
|
||||
}
|
||||
|
||||
private void Hitbox_AreaEntered(Area3D area)
|
||||
@@ -875,7 +875,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
|
||||
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);
|
||||
enemy.HealthComponent.Damage(damageDealt);
|
||||
enemy.HealthComponent.Damage(damageDealt, weapon.WeaponElement);
|
||||
|
||||
if (weapon.WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)
|
||||
knockbackable.Knockback(0.3f, -CurrentBasis.Z.Normalized());
|
||||
|
||||
@@ -36,7 +36,7 @@ public partial class PlayerProjectile : RigidBody3D
|
||||
{
|
||||
var projectileDamage = new AttackData(AttackData.Damage, AttackData.ElementType, false, false);
|
||||
var damageDealt = DamageCalculator.CalculateDamage(projectileDamage, enemy.DefenseComponent.CurrentDefense.Value, enemy.ElementalResistanceSet);
|
||||
enemy.HealthComponent.Damage(damageDealt);
|
||||
enemy.HealthComponent.Damage(damageDealt, AttackData.ElementType);
|
||||
CallDeferred(MethodName.QueueFree);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user