Add plastique item

Add Door object
Initial work for look up animation
This commit is contained in:
2026-01-02 17:06:01 -08:00
parent 5b9de11e5a
commit 04543fcfac
32 changed files with 1652 additions and 990 deletions

View File

@@ -71,6 +71,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
private bool HealthTimerIsActive = false;
#endregion
public event Action PointUpFinished;
#region Node Dependencies
[Node] private IAnimationPlayer AnimationPlayer { get; set; } = default!;
@@ -91,6 +93,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
[Node] private CollisionShape3D MainCollision { get; set; } = default!;
[Node] private ShakeCamera _camera3D { get; set; } = default!;
[Node] private AnimationPlayer CameraAnimations { get; set; } = default!;
#endregion
@@ -107,187 +111,201 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
public void Initialize()
{
var container = new SimpleInjector.Container();
container.Register<IPlayerLogic, PlayerLogic>(Lifestyle.Singleton);
var container = new SimpleInjector.Container();
container.Register<IPlayerLogic, PlayerLogic>(Lifestyle.Singleton);
PlayerLogic = container.GetInstance<IPlayerLogic>();
PlayerLogic.Set(this as IPlayer);
PlayerLogic.Set(Settings);
PlayerLogic = container.GetInstance<IPlayerLogic>();
PlayerLogic.Set(this as IPlayer);
PlayerLogic.Set(Settings);
Inventory = new Inventory();
HealthComponent = new HealthComponent(InitialHP);
VTComponent = new VTComponent(InitialVT);
AttackComponent = new AttackComponent(InitialAttack);
DefenseComponent = new DefenseComponent(InitialDefense);
ExperiencePointsComponent = new ExperiencePointsComponent();
LuckComponent = new LuckComponent(InitialLuck);
EquipmentComponent = new EquipmentComponent();
Inventory = new Inventory();
HealthComponent = new HealthComponent(InitialHP);
VTComponent = new VTComponent(InitialVT);
AttackComponent = new AttackComponent(InitialAttack);
DefenseComponent = new DefenseComponent(InitialDefense);
ExperiencePointsComponent = new ExperiencePointsComponent();
LuckComponent = new LuckComponent(InitialLuck);
EquipmentComponent = new EquipmentComponent();
_itemReroller = new ItemReroller(ItemDatabase.Instance);
_itemReroller = new ItemReroller(ItemDatabase.Instance);
Settings = new PlayerLogic.Settings() { RotationSpeed = RotationSpeed, MoveSpeed = MoveSpeed, Acceleration = Acceleration };
CameraAnimations.AnimationFinished += CameraAnimations_AnimationFinished;
PlayerBinding = PlayerLogic.Bind();
Settings = new PlayerLogic.Settings() { RotationSpeed = RotationSpeed, MoveSpeed = MoveSpeed, Acceleration = Acceleration };
PlayerBinding
.Handle((in PlayerLogic.Output.ThrowItem output) =>
{
})
.Handle((in PlayerLogic.Output.Move output) =>
{
Move(output.delta);
});
PlayerBinding = PlayerLogic.Bind();
PlayerLogic.Start();
this.Provide();
PlayerBinding
.Handle((in PlayerLogic.Output.ThrowItem output) =>
{
})
.Handle((in PlayerLogic.Output.Move output) =>
{
Move(output.delta);
});
PlayerLogic.Start();
this.Provide();
}
public void ResetPlayerData()
{
foreach (var item in Inventory.Items)
Inventory.Remove(item);
foreach (var item in Inventory.Items)
Inventory.Remove(item);
HealthComponent.Reset();
VTComponent.Reset();
AttackComponent.Reset();
DefenseComponent.Reset();
ExperiencePointsComponent.Reset();
LuckComponent.Reset();
EquipmentComponent.Reset();
HealthComponent.Reset();
VTComponent.Reset();
AttackComponent.Reset();
DefenseComponent.Reset();
ExperiencePointsComponent.Reset();
LuckComponent.Reset();
EquipmentComponent.Reset();
HealthTimer.Timeout += OnHealthTimerTimeout;
HealthTimer.Timeout += OnHealthTimerTimeout;
}
#region Initialization
public void OnReady()
{
Hitbox.AreaEntered += Hitbox_AreaEntered;
CollisionDetector.AreaEntered += CollisionDetector_AreaEntered;
HealthComponent.HealthReachedZero += Die;
HealthTimer.WaitTime = _healthTimerWaitTime;
SetProcessInput(false);
SetPhysicsProcess(false);
Hitbox.AreaEntered += Hitbox_AreaEntered;
CollisionDetector.AreaEntered += CollisionDetector_AreaEntered;
HealthComponent.HealthReachedZero += Die;
HealthTimer.WaitTime = _healthTimerWaitTime;
SetProcessInput(false);
SetPhysicsProcess(false);
}
#endregion
public void Activate()
{
SetProcessInput(true);
SetPhysicsProcess(true);
SetHealthTimerStatus(HealthTimerIsActive);
SetProcessInput(true);
SetPhysicsProcess(true);
SetHealthTimerStatus(HealthTimerIsActive);
}
public void Deactivate()
{
Velocity = Vector3.Zero;
SetProcessInput(false);
SetPhysicsProcess(false);
SetHealthTimerStatus(false);
Velocity = Vector3.Zero;
SetProcessInput(false);
SetPhysicsProcess(false);
SetHealthTimerStatus(false);
}
public void LookUp() => CameraAnimations.Play("look_up");
private void SetHealthTimerStatus(bool isActive)
{
if (isActive)
HealthTimer.Start();
else
HealthTimer.Stop();
if (isActive)
HealthTimer.Start();
else
HealthTimer.Stop();
}
public void TeleportPlayer(Transform3D newTransform)
{
Transform = newTransform;
Transform = newTransform;
}
public void TakeDamage(AttackData damage)
{
_camera3D.AddShake(1.0f);
TakeDamageAnimationPlayer.Play("take_damage");
var damageReceived = DamageCalculator.CalculateDamage(damage, DefenseComponent.CurrentDefense.Value + EquipmentComponent.BonusDefense, EquipmentComponent.ElementalResistance);
HealthComponent.Damage(damageReceived);
SfxDatabase.Instance.Play(SoundEffect.TakeDamage);
_camera3D.AddShake(1.0f);
TakeDamageAnimationPlayer.Play("take_damage");
var damageReceived = DamageCalculator.CalculateDamage(damage, DefenseComponent.CurrentDefense.Value + EquipmentComponent.BonusDefense, EquipmentComponent.ElementalResistance);
HealthComponent.Damage(damageReceived);
SfxDatabase.Instance.Play(SoundEffect.TakeDamage);
}
public void Knockback(float impulse)
{
_knockbackStrength = impulse;
_knockbackDirection = GlobalBasis.Z.Normalized();
_knockbackStrength = impulse;
_knockbackDirection = GlobalBasis.Z.Normalized();
}
public void LevelUp()
{
var rng = new RandomNumberGenerator();
rng.Randomize();
var hpIncrease = rng.RandiRange(3, 6);
HealthComponent.RaiseMaximumHP(hpIncrease);
ExperiencePointsComponent.LevelUp();
var rng = new RandomNumberGenerator();
rng.Randomize();
var hpIncrease = rng.RandiRange(3, 6);
HealthComponent.RaiseMaximumHP(hpIncrease);
ExperiencePointsComponent.LevelUp();
}
public void Die()
{
PlayerFXAnimations.Play("death");
HealthTimer.WaitTime = _healthTimerWaitTime;
HealthTimer.Timeout -= OnHealthTimerTimeout;
SetProcessInput(false);
SetPhysicsProcess(false);
PlayerDied?.Invoke();
PlayerFXAnimations.Play("death");
HealthTimer.WaitTime = _healthTimerWaitTime;
HealthTimer.Timeout -= OnHealthTimerTimeout;
SetProcessInput(false);
SetPhysicsProcess(false);
PlayerDied?.Invoke();
}
public void Reset()
{
CameraAnimations.Play("RESET");
}
public override void _Input(InputEvent @event)
{
if (@event.IsActionPressed(GameInputs.Attack))
Attack();
if (@event.IsActionPressed(GameInputs.Sprint))
Settings.MoveSpeed *= 2;
if (@event.IsActionReleased(GameInputs.Sprint))
Settings.MoveSpeed /= 2;
if (@event.IsActionPressed(GameInputs.Attack))
Attack();
if (@event.IsActionPressed(GameInputs.Sprint))
Settings.MoveSpeed *= 2;
if (@event.IsActionReleased(GameInputs.Sprint))
Settings.MoveSpeed /= 2;
}
public void PlayTestAnimation()
{
PlayerFXAnimations.Play("test_animation");
PlayerFXAnimations.Play("test_animation");
}
public void OnPhysicsProcess(double delta)
{
PlayerLogic.Input(new PlayerLogic.Input.PhysicsTick(delta));
PlayerLogic.Input(new PlayerLogic.Input.Moved(GlobalPosition, GlobalTransform));
PlayerLogic.Input(new PlayerLogic.Input.PhysicsTick(delta));
PlayerLogic.Input(new PlayerLogic.Input.Moved(GlobalPosition, GlobalTransform));
}
public void Equip(EquipableItem equipable)
{
if (equipable.ItemTag == ItemTag.MysteryItem)
{
var rerolledItem = _itemReroller.RerollItem(equipable, Inventory);
Equip(rerolledItem);
return;
}
if (equipable.ItemTag == ItemTag.MysteryItem)
{
var rerolledItem = _itemReroller.RerollItem(equipable, Inventory);
Equip(rerolledItem);
return;
}
HealthComponent.RaiseMaximumHP(equipable.BonusHP, false);
VTComponent.RaiseMaximumVT(equipable.BonusVT, false);
HealthComponent.RaiseMaximumHP(equipable.BonusHP, false);
VTComponent.RaiseMaximumVT(equipable.BonusVT, false);
EquipmentComponent.Equip(equipable);
EquipmentComponent.Equip(equipable);
}
public void Unequip(EquipableItem equipable)
{
HealthComponent.SetMaximumHealth(HealthComponent.MaximumHP.Value - equipable.BonusHP);
VTComponent.SetMaximumVT(VTComponent.MaximumVT.Value - equipable.BonusVT);
HealthComponent.SetMaximumHealth(HealthComponent.MaximumHP.Value - equipable.BonusHP);
VTComponent.SetMaximumVT(VTComponent.MaximumVT.Value - equipable.BonusVT);
EquipmentComponent.Unequip(equipable);
EquipmentComponent.Unequip(equipable);
}
private void CameraAnimations_AnimationFinished(StringName animName)
{
PointUpFinished?.Invoke();
}
private static Vector3 GlobalInputVector
{
get
{
var rawInput = Input.GetVector(GameInputs.MoveLeft, GameInputs.MoveRight, GameInputs.MoveUp, GameInputs.MoveDown);
var input = new Vector3
{
X = rawInput.X,
Z = rawInput.Y
};
return input with { Y = 0f };
}
get
{
var rawInput = Input.GetVector(GameInputs.MoveLeft, GameInputs.MoveRight, GameInputs.MoveUp, GameInputs.MoveDown);
var input = new Vector3
{
X = rawInput.X,
Z = rawInput.Y
};
return input with { Y = 0f };
}
}
private static float LeftStrafeInputVector => Input.GetActionStrength(GameInputs.StrafeLeft);
@@ -296,143 +314,143 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
private void Attack()
{
if (PlayerIsHittingGeometry())
AnimationPlayer.Play("hit_wall");
else if (!AnimationPlayer.IsPlaying())
PlayAttackAnimation();
if (PlayerIsHittingGeometry())
AnimationPlayer.Play("hit_wall");
else if (!AnimationPlayer.IsPlaying())
PlayAttackAnimation();
}
private void ThrowItem()
{
var itemScene = GD.Load<PackedScene>("res://src/items/throwable/ThrowableItem.tscn");
var throwItem = itemScene.Instantiate<ThrowableItem>();
GetTree().Root.AddChildEx(throwItem);
throwItem.GlobalPosition = CurrentPosition + new Vector3(0, 3.5f, 0);
throwItem.GlobalRotation = GlobalRotation;
var itemScene = GD.Load<PackedScene>("res://src/items/throwable/ThrowableItem.tscn");
var throwItem = itemScene.Instantiate<ThrowableItem>();
GetTree().Root.AddChildEx(throwItem);
throwItem.GlobalPosition = CurrentPosition + new Vector3(0, 3.5f, 0);
throwItem.GlobalRotation = GlobalRotation;
}
private void PlayAttackAnimation()
{
SfxDatabase.Instance.Play(((Weapon)EquipmentComponent.EquippedWeapon.Value).SoundEffect);
var attackSpeed = ((Weapon)EquipmentComponent.EquippedWeapon.Value).AttackSpeed;
AnimationPlayer.SetSpeedScale((float)attackSpeed);
AnimationPlayer.Play("attack");
SfxDatabase.Instance.Play(((Weapon)EquipmentComponent.EquippedWeapon.Value).SoundEffect);
var attackSpeed = ((Weapon)EquipmentComponent.EquippedWeapon.Value).AttackSpeed;
AnimationPlayer.SetSpeedScale((float)attackSpeed);
AnimationPlayer.Play("attack");
}
private void OnExitTree()
{
PlayerLogic.Stop();
PlayerBinding.Dispose();
Hitbox.AreaEntered -= Hitbox_AreaEntered;
CollisionDetector.AreaEntered -= CollisionDetector_AreaEntered;
HealthComponent.HealthReachedZero -= Die;
HealthTimer.Timeout -= OnHealthTimerTimeout;
PlayerLogic.Stop();
PlayerBinding.Dispose();
Hitbox.AreaEntered -= Hitbox_AreaEntered;
CollisionDetector.AreaEntered -= CollisionDetector_AreaEntered;
HealthComponent.HealthReachedZero -= Die;
HealthTimer.Timeout -= OnHealthTimerTimeout;
}
private void Move(float delta)
{
var rawInput = GlobalInputVector;
var strafeLeftInput = LeftStrafeInputVector;
var strafeRightInput = RightStrafeInputVector;
var rawInput = GlobalInputVector;
var strafeLeftInput = LeftStrafeInputVector;
var strafeRightInput = RightStrafeInputVector;
var transform = Transform;
transform.Basis = new Basis(Vector3.Up, Settings.RotationSpeed * -rawInput.X * delta) * transform.Basis;
var moveDirection = new Vector3(strafeRightInput - strafeLeftInput, 0, rawInput.Z).Normalized();
var velocity = Basis * moveDirection * Settings.MoveSpeed * Settings.Acceleration;
_knockbackStrength *= 0.9f;
Transform = Transform with { Basis = transform.Basis };
Velocity = velocity + (_knockbackDirection * _knockbackStrength);
if (!WalkSFX.Playing && !Velocity.IsZeroApprox())
WalkSFX.Play();
else if (Velocity.IsZeroApprox())
WalkSFX.Stop();
MoveAndSlide();
var transform = Transform;
transform.Basis = new Basis(Vector3.Up, Settings.RotationSpeed * -rawInput.X * delta) * transform.Basis;
var moveDirection = new Vector3(strafeRightInput - strafeLeftInput, 0, rawInput.Z).Normalized();
var velocity = Basis * moveDirection * Settings.MoveSpeed * Settings.Acceleration;
_knockbackStrength *= 0.9f;
Transform = Transform with { Basis = transform.Basis };
Velocity = velocity + (_knockbackDirection * _knockbackStrength);
if (!WalkSFX.Playing && !Velocity.IsZeroApprox())
WalkSFX.Play();
else if (Velocity.IsZeroApprox())
WalkSFX.Stop();
MoveAndSlide();
}
private void OnPlayerPositionUpdated(Vector3 globalPosition) => GlobalPosition = globalPosition;
private void OnHealthTimerTimeout()
{
if (VTComponent.CurrentVT.Value > 0)
{
if (((Accessory)EquipmentComponent.EquippedAccessory.Value).AccessoryTag == AccessoryTag.HalfVTConsumption)
reduceOnTick = !reduceOnTick;
if (VTComponent.CurrentVT.Value > 0)
{
if (((Accessory)EquipmentComponent.EquippedAccessory.Value).AccessoryTag == AccessoryTag.HalfVTConsumption)
reduceOnTick = !reduceOnTick;
HealthComponent.Heal(1);
HealthComponent.Heal(1);
if (reduceOnTick)
VTComponent.Reduce(1);
}
else
HealthComponent.Damage(1);
if (reduceOnTick)
VTComponent.Reduce(1);
}
else
HealthComponent.Damage(1);
}
private void Hitbox_AreaEntered(Area3D area)
{
var target = area.GetOwner();
if (target is IEnemy enemy)
HitEnemy(enemy);
var target = area.GetOwner();
if (target is IEnemy enemy)
HitEnemy(enemy);
}
private void HitEnemy(IEnemy enemy)
{
var ignoreElementalResistance = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreAffinity;
var ignoreDefense = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreDefense;
var isCriticalHit = BattleExtensions.IsCriticalHit(LuckComponent.Luck.Value + EquipmentComponent.BonusLuck);
var totalDamage = AttackComponent.CurrentAttack.Value + EquipmentComponent.BonusAttack;
var element = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponElement;
var ignoreElementalResistance = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreAffinity;
var ignoreDefense = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponTag == WeaponTag.IgnoreDefense;
var isCriticalHit = BattleExtensions.IsCriticalHit(LuckComponent.Luck.Value + EquipmentComponent.BonusLuck);
var totalDamage = AttackComponent.CurrentAttack.Value + EquipmentComponent.BonusAttack;
var element = (EquipmentComponent.EquippedWeapon.Value as Weapon).WeaponElement;
if (isCriticalHit)
{
totalDamage += (int)(totalDamage * 0.5f);
SfxDatabase.Instance.Play(SoundEffect.Crit);
}
if (isCriticalHit)
{
totalDamage += (int)(totalDamage * 0.5f);
SfxDatabase.Instance.Play(SoundEffect.Crit);
}
var baseAttack = new AttackData(totalDamage, element, ignoreDefense, ignoreElementalResistance);
var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, ElementalResistanceSet.None);
enemy.HealthComponent.Damage(damageDealt);
var baseAttack = new AttackData(totalDamage, element, ignoreDefense, ignoreElementalResistance);
var damageDealt = DamageCalculator.CalculateDamage(baseAttack, enemy.DefenseComponent.CurrentDefense.Value, ElementalResistanceSet.None);
enemy.HealthComponent.Damage(damageDealt);
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)
knockbackable.Knockback(0.3f, -CurrentBasis.Z.Normalized());
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.SelfDamage)
HealthComponent.Damage(5);
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.Knockback && enemy is IKnockbackable knockbackable)
knockbackable.Knockback(0.3f, -CurrentBasis.Z.Normalized());
if (((Weapon)EquipmentComponent.EquippedWeapon.Value).WeaponTag == WeaponTag.SelfDamage)
HealthComponent.Damage(5);
}
private void CollisionDetector_AreaEntered(Area3D area)
{
if (area.GetParent() is InventoryItem inventoryItem)
{
var isAdded = Inventory.PickUpItem(inventoryItem);
if (isAdded)
inventoryItem.QueueFree();
}
if (area.GetParent() is DroppedItem droppedItem)
{
var isAdded = Inventory.PickUpItem(droppedItem.Item);
if (isAdded)
droppedItem.QueueFree();
}
if (area.GetParent() is ThrownItem thrownItem)
{
var isAdded = Inventory.PickUpItem(thrownItem.ItemThatIsThrown);
if (isAdded)
thrownItem.QueueFree();
}
if (area.GetParent() is Restorative restorative)
{
restorative.QueueFree();
}
if (area.GetParent() is InventoryItem inventoryItem)
{
var isAdded = Inventory.PickUpItem(inventoryItem);
if (isAdded)
inventoryItem.QueueFree();
}
if (area.GetParent() is DroppedItem droppedItem)
{
var isAdded = Inventory.PickUpItem(droppedItem.Item);
if (isAdded)
droppedItem.QueueFree();
}
if (area.GetParent() is ThrownItem thrownItem)
{
var isAdded = Inventory.PickUpItem(thrownItem.ItemThatIsThrown);
if (isAdded)
thrownItem.QueueFree();
}
if (area.GetParent() is Restorative restorative)
{
restorative.QueueFree();
}
}
private bool PlayerIsHittingGeometry()
{
var collisions = WallCheck.GetCollidingBodies();
return collisions.Count > 0;
var collisions = WallCheck.GetCollidingBodies();
return collisions.Count > 0;
}
private void WallCheck_BodyEntered(Node body)
{
GD.Print("Hit wall");
AnimationPlayer.Stop();
GD.Print("Hit wall");
AnimationPlayer.Stop();
}
}

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=1729 format=3 uid="uid://cfecvvav8kkp6"]
[gd_scene load_steps=1732 format=3 uid="uid://cfecvvav8kkp6"]
[ext_resource type="Script" uid="uid://yxmiqy7i0t7r" path="res://src/player/Player.cs" id="1_xcol5"]
[ext_resource type="PackedScene" uid="uid://didc6vnf5ftlg" path="res://src/camera/ShakeCamera.tscn" id="2_jtmj1"]
@@ -46,6 +46,42 @@ material = SubResource("ShaderMaterial_jtmj1")
flip_faces = true
size = Vector2(2, 2)
[sub_resource type="Animation" id="Animation_ilpvp"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_ubmds"]
resource_name = "look_up"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0.785398, 0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_sifmb"]
_data = {
&"RESET": SubResource("Animation_ilpvp"),
&"look_up": SubResource("Animation_ubmds")
}
[sub_resource type="Animation" id="Animation_3ojaj"]
resource_name = "IconAnimation"
length = 2.5
@@ -163,371 +199,6 @@ _data = {
&"hit_wall": SubResource("Animation_qgbg1")
}
[sub_resource type="AtlasTexture" id="AtlasTexture_gx6yx"]
atlas = ExtResource("5_bngr8")
region = Rect2(0, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5gt6s"]
atlas = ExtResource("5_bngr8")
region = Rect2(512, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_syglp"]
atlas = ExtResource("5_bngr8")
region = Rect2(1024, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_o81wv"]
atlas = ExtResource("5_bngr8")
region = Rect2(1536, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_uc14s"]
atlas = ExtResource("5_bngr8")
region = Rect2(2048, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_84vg4"]
atlas = ExtResource("5_bngr8")
region = Rect2(2560, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_18gts"]
atlas = ExtResource("5_bngr8")
region = Rect2(3072, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_sq31b"]
atlas = ExtResource("5_bngr8")
region = Rect2(3584, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ucph0"]
atlas = ExtResource("5_bngr8")
region = Rect2(4096, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5pe5a"]
atlas = ExtResource("5_bngr8")
region = Rect2(4608, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_iqf1f"]
atlas = ExtResource("5_bngr8")
region = Rect2(5120, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_58hdl"]
atlas = ExtResource("5_bngr8")
region = Rect2(5632, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dk5l"]
atlas = ExtResource("5_bngr8")
region = Rect2(6144, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_pmdkx"]
atlas = ExtResource("5_bngr8")
region = Rect2(6656, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_delwj"]
atlas = ExtResource("5_bngr8")
region = Rect2(7168, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_c0hrp"]
atlas = ExtResource("5_bngr8")
region = Rect2(7680, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nm3ps"]
atlas = ExtResource("5_bngr8")
region = Rect2(8192, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ax7gm"]
atlas = ExtResource("5_bngr8")
region = Rect2(8704, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xdngf"]
atlas = ExtResource("5_bngr8")
region = Rect2(9216, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qjoth"]
atlas = ExtResource("5_bngr8")
region = Rect2(9728, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ir6la"]
atlas = ExtResource("5_bngr8")
region = Rect2(10240, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_kvy4v"]
atlas = ExtResource("5_bngr8")
region = Rect2(10752, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_6y4ab"]
atlas = ExtResource("5_bngr8")
region = Rect2(11264, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hhwgf"]
atlas = ExtResource("5_bngr8")
region = Rect2(11776, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_l178f"]
atlas = ExtResource("5_bngr8")
region = Rect2(12288, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0npj3"]
atlas = ExtResource("5_bngr8")
region = Rect2(12800, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dcc3e"]
atlas = ExtResource("5_bngr8")
region = Rect2(13312, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_iqcna"]
atlas = ExtResource("5_bngr8")
region = Rect2(13824, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0u5oq"]
atlas = ExtResource("5_bngr8")
region = Rect2(14336, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qninq"]
atlas = ExtResource("5_bngr8")
region = Rect2(14848, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5vt5r"]
atlas = ExtResource("5_bngr8")
region = Rect2(15360, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_a3n34"]
atlas = ExtResource("5_bngr8")
region = Rect2(15872, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hh1fj"]
atlas = ExtResource("5_bngr8")
region = Rect2(0, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ldcx"]
atlas = ExtResource("5_bngr8")
region = Rect2(512, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_07bvn"]
atlas = ExtResource("5_bngr8")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_rqdqm"]
atlas = ExtResource("5_bngr8")
region = Rect2(1536, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_mjb05"]
atlas = ExtResource("5_bngr8")
region = Rect2(2048, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_r0mys"]
atlas = ExtResource("5_bngr8")
region = Rect2(2560, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ro8ch"]
atlas = ExtResource("5_bngr8")
region = Rect2(3072, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_c5lge"]
atlas = ExtResource("5_bngr8")
region = Rect2(3584, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_o0af2"]
atlas = ExtResource("5_bngr8")
region = Rect2(4096, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ht5qq"]
atlas = ExtResource("5_bngr8")
region = Rect2(4608, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_spm6q"]
atlas = ExtResource("5_bngr8")
region = Rect2(5120, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_baipy"]
atlas = ExtResource("5_bngr8")
region = Rect2(5632, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_i0amg"]
atlas = ExtResource("5_bngr8")
region = Rect2(6144, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xpptc"]
atlas = ExtResource("5_bngr8")
region = Rect2(6656, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_bxeg4"]
atlas = ExtResource("5_bngr8")
region = Rect2(7168, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xgu6y"]
atlas = ExtResource("5_bngr8")
region = Rect2(7680, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_53n88"]
atlas = ExtResource("5_bngr8")
region = Rect2(8192, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_gwmts"]
atlas = ExtResource("5_bngr8")
region = Rect2(8704, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_7wi2f"]
atlas = ExtResource("5_bngr8")
region = Rect2(9216, 512, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_xbcdg"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_gx6yx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5gt6s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_syglp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o81wv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uc14s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_84vg4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_18gts")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sq31b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ucph0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5pe5a")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iqf1f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_58hdl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3dk5l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pmdkx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_delwj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c0hrp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nm3ps")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ax7gm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xdngf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qjoth")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ir6la")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kvy4v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6y4ab")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hhwgf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l178f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0npj3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dcc3e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iqcna")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0u5oq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qninq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5vt5r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a3n34")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hh1fj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ldcx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_07bvn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rqdqm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mjb05")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r0mys")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ro8ch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c5lge")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o0af2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ht5qq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_spm6q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_baipy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i0amg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xpptc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bxeg4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xgu6y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_53n88")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gwmts")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7wi2f")
}],
"loop": false,
"name": &"default",
"speed": 64.0
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_eu047"]
atlas = ExtResource("6_ct55r")
region = Rect2(0, 0, 512, 512)
@@ -1271,6 +942,442 @@ animations = [{
"speed": 32.0
}]
[sub_resource type="Animation" id="Animation_j5wmh"]
resource_name = "Divinity_Recall"
length = 3.46667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/Divinity Recall:sprite_frames")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3.46667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [SubResource("SpriteFrames_xtuex"), SubResource("SpriteFrames_xtuex")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/Divinity Recall:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.0333333, 1.06667, 2.7),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SubViewportContainer/SubViewport/ColorRect:color")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.0333333, 0.0666667, 0.1, 0.133333, 0.166667, 0.2, 0.233333, 0.266667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0)]
}
[sub_resource type="AtlasTexture" id="AtlasTexture_gx6yx"]
atlas = ExtResource("5_bngr8")
region = Rect2(0, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5gt6s"]
atlas = ExtResource("5_bngr8")
region = Rect2(512, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_syglp"]
atlas = ExtResource("5_bngr8")
region = Rect2(1024, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_o81wv"]
atlas = ExtResource("5_bngr8")
region = Rect2(1536, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_uc14s"]
atlas = ExtResource("5_bngr8")
region = Rect2(2048, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_84vg4"]
atlas = ExtResource("5_bngr8")
region = Rect2(2560, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_18gts"]
atlas = ExtResource("5_bngr8")
region = Rect2(3072, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_sq31b"]
atlas = ExtResource("5_bngr8")
region = Rect2(3584, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ucph0"]
atlas = ExtResource("5_bngr8")
region = Rect2(4096, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5pe5a"]
atlas = ExtResource("5_bngr8")
region = Rect2(4608, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_iqf1f"]
atlas = ExtResource("5_bngr8")
region = Rect2(5120, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_58hdl"]
atlas = ExtResource("5_bngr8")
region = Rect2(5632, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dk5l"]
atlas = ExtResource("5_bngr8")
region = Rect2(6144, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_pmdkx"]
atlas = ExtResource("5_bngr8")
region = Rect2(6656, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_delwj"]
atlas = ExtResource("5_bngr8")
region = Rect2(7168, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_c0hrp"]
atlas = ExtResource("5_bngr8")
region = Rect2(7680, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nm3ps"]
atlas = ExtResource("5_bngr8")
region = Rect2(8192, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ax7gm"]
atlas = ExtResource("5_bngr8")
region = Rect2(8704, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xdngf"]
atlas = ExtResource("5_bngr8")
region = Rect2(9216, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qjoth"]
atlas = ExtResource("5_bngr8")
region = Rect2(9728, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ir6la"]
atlas = ExtResource("5_bngr8")
region = Rect2(10240, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_kvy4v"]
atlas = ExtResource("5_bngr8")
region = Rect2(10752, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_6y4ab"]
atlas = ExtResource("5_bngr8")
region = Rect2(11264, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hhwgf"]
atlas = ExtResource("5_bngr8")
region = Rect2(11776, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_l178f"]
atlas = ExtResource("5_bngr8")
region = Rect2(12288, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0npj3"]
atlas = ExtResource("5_bngr8")
region = Rect2(12800, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_dcc3e"]
atlas = ExtResource("5_bngr8")
region = Rect2(13312, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_iqcna"]
atlas = ExtResource("5_bngr8")
region = Rect2(13824, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0u5oq"]
atlas = ExtResource("5_bngr8")
region = Rect2(14336, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qninq"]
atlas = ExtResource("5_bngr8")
region = Rect2(14848, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5vt5r"]
atlas = ExtResource("5_bngr8")
region = Rect2(15360, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_a3n34"]
atlas = ExtResource("5_bngr8")
region = Rect2(15872, 0, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_hh1fj"]
atlas = ExtResource("5_bngr8")
region = Rect2(0, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ldcx"]
atlas = ExtResource("5_bngr8")
region = Rect2(512, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_07bvn"]
atlas = ExtResource("5_bngr8")
region = Rect2(1024, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_rqdqm"]
atlas = ExtResource("5_bngr8")
region = Rect2(1536, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_mjb05"]
atlas = ExtResource("5_bngr8")
region = Rect2(2048, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_r0mys"]
atlas = ExtResource("5_bngr8")
region = Rect2(2560, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ro8ch"]
atlas = ExtResource("5_bngr8")
region = Rect2(3072, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_c5lge"]
atlas = ExtResource("5_bngr8")
region = Rect2(3584, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_o0af2"]
atlas = ExtResource("5_bngr8")
region = Rect2(4096, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ht5qq"]
atlas = ExtResource("5_bngr8")
region = Rect2(4608, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_spm6q"]
atlas = ExtResource("5_bngr8")
region = Rect2(5120, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_baipy"]
atlas = ExtResource("5_bngr8")
region = Rect2(5632, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_i0amg"]
atlas = ExtResource("5_bngr8")
region = Rect2(6144, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xpptc"]
atlas = ExtResource("5_bngr8")
region = Rect2(6656, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_bxeg4"]
atlas = ExtResource("5_bngr8")
region = Rect2(7168, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xgu6y"]
atlas = ExtResource("5_bngr8")
region = Rect2(7680, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_53n88"]
atlas = ExtResource("5_bngr8")
region = Rect2(8192, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_gwmts"]
atlas = ExtResource("5_bngr8")
region = Rect2(8704, 512, 512, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_7wi2f"]
atlas = ExtResource("5_bngr8")
region = Rect2(9216, 512, 512, 512)
[sub_resource type="SpriteFrames" id="SpriteFrames_xbcdg"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_gx6yx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5gt6s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_syglp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o81wv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uc14s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_84vg4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_18gts")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sq31b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ucph0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5pe5a")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iqf1f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_58hdl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3dk5l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pmdkx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_delwj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c0hrp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nm3ps")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ax7gm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xdngf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qjoth")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ir6la")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kvy4v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6y4ab")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hhwgf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l178f")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0npj3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dcc3e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iqcna")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0u5oq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qninq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5vt5r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a3n34")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hh1fj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ldcx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_07bvn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_rqdqm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mjb05")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r0mys")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ro8ch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c5lge")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_o0af2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ht5qq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_spm6q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_baipy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_i0amg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xpptc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bxeg4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xgu6y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_53n88")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gwmts")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7wi2f")
}],
"loop": false,
"name": &"default",
"speed": 64.0
}]
[sub_resource type="Animation" id="Animation_rxepx"]
resource_name = "GeoReactor Air"
length = 1.66667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/Geomantic Reactor Air:sprite_frames")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.66667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [SubResource("SpriteFrames_xbcdg"), SubResource("SpriteFrames_xbcdg")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/ColorRect:color")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.0333333, 0.0666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_27b85"]
resource_name = "GeoReactor Water"
[sub_resource type="Animation" id="Animation_jtmj1"]
length = 0.001
tracks/0/type = "value"
@@ -1568,77 +1675,6 @@ tracks/1/keys = {
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0.48), Color(1, 1, 1, 1), Color(1, 1, 1, 0.48), Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_j5wmh"]
resource_name = "Divinity_Recall"
length = 3.46667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/Divinity Recall:sprite_frames")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 3.46667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [SubResource("SpriteFrames_xtuex"), SubResource("SpriteFrames_xtuex")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/Divinity Recall:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.0333333, 1.06667, 2.7),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SubViewportContainer/SubViewport/ColorRect:color")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.0333333, 0.0666667, 0.1, 0.133333, 0.166667, 0.2, 0.233333, 0.266667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_rxepx"]
resource_name = "GeoReactor Air"
length = 1.66667
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/Geomantic Reactor Air:sprite_frames")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.66667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [SubResource("SpriteFrames_xbcdg"), SubResource("SpriteFrames_xbcdg")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/ColorRect:color")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.0333333, 0.0666667),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.623529), Color(1, 1, 1, 0)]
}
[sub_resource type="Animation" id="Animation_27b85"]
resource_name = "GeoReactor Water"
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ebyyx"]
_data = {
&"Divinity_Recall": SubResource("Animation_j5wmh"),
@@ -12346,6 +12382,12 @@ shadow_blur = 2.038
omni_range = 6.0
omni_attenuation = 0.017
[node name="CameraAnimations" type="AnimationPlayer" parent="Camera"]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_sifmb")
}
[node name="Minimap" type="Node3D" parent="."]
[node name="Minimap Sprite" type="Sprite3D" parent="Minimap"]
@@ -12499,7 +12541,6 @@ frame_progress = 0.0753843
[node name="ItemVFX" type="Sprite2D" parent="ScreenFX/SubViewportContainer/SubViewport"]
position = Vector2(6.10352e-05, 6.10352e-05)
scale = Vector2(1, 1)
[node name="Kyuuketsuki" type="AnimatedSprite2D" parent="ScreenFX/SubViewportContainer/SubViewport"]
modulate = Color(1, 1, 1, 0.508)