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

@@ -0,0 +1,38 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Chickensoft.Serialization;
using Godot;
using Zennysoft.Game.Ma;
using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity;
[Meta(typeof(IAutoNode))]
public partial class Plastique : InventoryItem
{
public override void _Notification(int what) => this.Notify(what);
[Node] private Sprite3D _sprite { get; set; }
public override string ItemName => Stats.Name;
public override string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public override ItemTag ItemTag => Stats.ItemTag;
public void OnResolved()
{
_sprite.Texture = Stats.Texture;
}
public override Texture2D GetTexture() => Stats.Texture;
[Export]
[Save("inventory_stats")]
public EffectItemStats Stats { get; set; } = new EffectItemStats();
}

View File

@@ -0,0 +1 @@
uid://c5p0e4ywktyvd

View File

@@ -0,0 +1,57 @@
[gd_scene load_steps=7 format=3 uid="uid://c075bk1jydkwn"]
[ext_resource type="Script" uid="uid://c5p0e4ywktyvd" path="res://src/items/misc/Plastique.cs" id="1_jk2qh"]
[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_p8vuq"]
[ext_resource type="AudioStream" uid="uid://bjcersd5id8ee" path="res://src/audio/sfx/ITEM_PLASTIQUETIMER.ogg" id="2_vv5l4"]
[ext_resource type="Texture2D" uid="uid://bd6omweout2t6" path="res://src/items/Icons/plastique icon1.png" id="3_kmryk"]
[sub_resource type="Resource" id="Resource_vv5l4"]
script = ExtResource("2_p8vuq")
UsableItemTag = 0
ElementalDamageType = 4
Name = "Plastique"
Description = "Thermal"
SpawnRate = 0.5
BonusAttack = 0
BonusDefense = 0
BonusLuck = 0.05
BonusHP = 0
BonusVT = 0
AeolicResistance = 0
TelluricResistance = 0
HydricResistance = 0
IgneousResistance = 0
FerrumResistance = 0
ThrowSpeed = 12.0
ThrowDamage = 5
ItemTag = 0
Texture = ExtResource("3_kmryk")
AudioStream = ExtResource("2_vv5l4")
metadata/_custom_type_script = "uid://b5w4iw4iqmxtn"
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_etomv"]
radius = 0.470016
[node name="Plastique" type="Node3D"]
script = ExtResource("1_jk2qh")
Stats = SubResource("Resource_vv5l4")
[node name="Pickup" type="Area3D" parent="."]
unique_name_in_owner = true
collision_layer = 4
collision_mask = 0
[node name="Sprite" type="Sprite3D" parent="Pickup"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.272665, 0)
layers = 5
pixel_size = 0.05
billboard = 2
double_sided = false
alpha_antialiasing_mode = 1
texture_filter = 0
render_priority = 100
texture = ExtResource("3_kmryk")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
shape = SubResource("CapsuleShape3D_etomv")

View File

@@ -0,0 +1,57 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
using System;
using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity;
[Meta(typeof(IAutoNode))]
public partial class SetItem : RigidBody3D
{
public override void _Notification(int what) => this.Notify(what);
[Node] public AnimationTree AnimationTree { get; set; }
[Node] public Area3D ExplosionArea { get; set; }
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
protected AnimationNodeStateMachinePlayback _stateMachine;
protected readonly string _parametersPlayback = "parameters/playback";
public void OnReady()
{
_stateMachine = (AnimationNodeStateMachinePlayback)AnimationTree.Get(_parametersPlayback);
ExplosionArea.AreaEntered += ExplosionArea_AreaEntered;
AnimationTree.AnimationFinished += AnimationTree_AnimationFinished;
}
private void AnimationTree_AnimationFinished(StringName animName)
{
if (animName == "explode")
QueueFree();
}
private void ExplosionArea_AreaEntered(Area3D area)
{
// if (area is IDoor door) etc
// door.Demolish();
if (area.GetOwner() is IEnemy enemy)
enemy.HealthComponent.Damage(10);
}
public async void Set()
{
AddCollisionExceptionWith((Node)Player);
GlobalPosition = Player.GlobalPosition + Vector3.Up;
ApplyCentralImpulse(-Player.GlobalBasis.Z.Normalized() * 5.0f);
await ToSignal(GetTree().CreateTimer(1), "timeout");
Explode();
}
public void Explode()
{
_stateMachine.Travel("timer");
}
}

View File

@@ -0,0 +1 @@
uid://da8mhruqpgh6r

View File

@@ -0,0 +1,302 @@
[gd_scene load_steps=22 format=4 uid="uid://d1dquaeraxymf"]
[ext_resource type="Script" uid="uid://da8mhruqpgh6r" path="res://src/items/misc/SetItem.cs" id="1_m8dyi"]
[ext_resource type="AudioStream" uid="uid://bjcersd5id8ee" path="res://src/audio/sfx/ITEM_PLASTIQUETIMER.ogg" id="2_kgxna"]
[ext_resource type="Texture2D" uid="uid://dkqs4x4pi18on" path="res://src/items/assetts/plastique_plastique.png" id="2_m8dyi"]
[sub_resource type="Animation" id="Animation_eat5q"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ExplosionArea/Radius:scale")
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)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("ExplosionArea/Radius:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Model/Mesh:transparency")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Model/Mesh:material_overlay:albedo_color")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("ExplosionArea/CollisionShape3D:disabled")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_v8u1n"]
resource_name = "explode"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ExplosionArea/Radius:scale")
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(10, 10, 10)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("ExplosionArea/Radius:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Model/Mesh:transparency")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("ExplosionArea/CollisionShape3D:disabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, false]
}
[sub_resource type="Animation" id="Animation_kgxna"]
resource_name = "explode"
length = 6.0
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("TimerCountdown")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("2_kgxna")
}],
"times": PackedFloat32Array(0)
}
tracks/0/use_blend = true
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Model/Mesh:transparency")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Model/Mesh:material_overlay:albedo_color")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.366667, 0.5, 0.565232, 1.4, 1.53333, 1.59749, 2.4, 2.5572, 2.60183, 3.4, 3.6, 3.63109, 4.43333, 4.6, 4.63377, 5.47862, 5.6),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 0, 0, 0.439216), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 0, 0, 0.439216), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 0, 0, 0.439216), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 0, 0, 0.439216), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 0, 0, 0.439216), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 0, 0, 0.439216)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_eat5q"]
_data = {
&"RESET": SubResource("Animation_eat5q"),
&"explode": SubResource("Animation_v8u1n"),
&"timer": SubResource("Animation_kgxna")
}
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kgxna"]
transparency = 1
albedo_color = Color(1, 1, 1, 0)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_omo1p"]
resource_name = "Material"
cull_mode = 2
albedo_texture = ExtResource("2_m8dyi")
texture_filter = 2
[sub_resource type="ArrayMesh" id="ArrayMesh_kgxna"]
_surfaces = [{
"aabb": AABB(-2.73095, -1.72171, -1.52513, 5.45651, 2.42106, 3.07651),
"format": 34896613377,
"index_count": 180,
"index_data": PackedByteArray("AAABAAIAAgABAAMAAAAEAAEABQADAAEABQABAAQABgADAAUAAgADAAYABwAFAAQABwAEAAAABgAFAAcAAgAIAAAABgAJAAIAAgAJAAgABwAKAAYABgAKAAkAAAALAAcAAAAIAAsABwALAAoADAAIAAkADQAKAAsADgALAAgADgANAAsADAAOAAgADQAPAAoADwAJAAoADgAPAA0ADwAMAAkADgAMAA8AGAARABkAEwAZABEAGAAaABEAGgATABEAGwAaABgAGQATABQAGwAQABoAGgAcABMAEAAcABoAHAAdABMAFAATAB0AEAAVABwAGQAUABIAHAAeAB0AFQAeABwAHgAUAB0AEAAfABUAFQAfAB4AHgAgABQAIAASABQAHwAgAB4AIQAZABIAIAAhABIAIQAYABkAHwAXACAAFwAhACAAHwAWABcAFwAWACEAEAAWAB8AFgAYACEAFgAQABsAFgAbABgA"),
"lods": [0.327004, PackedByteArray("AAABAAIAAgABAAMAAAAEAAEABQADAAEABQABAAQABgADAAUAAgADAAYABwAFAAQABwAEAAAABgAFAAcAAgAIAAAABgAJAAIAAgAJAAgABwAKAAYABgAKAAkAAAALAAcAAAAIAAsABwALAAoADAAIAAkADQAKAAsADgALAAgADgANAAsADAAOAAgADQAPAAoADwAJAAoADgAPAA0ADwAMAAkADgAMAA8AEAARABIAEwASABEAEAATABEAEgATABQAEAAVABMAFgAQABIAFQAXABMAFwAUABMAEAAXABUAFwASABQAEAAWABcAFwAWABIA")],
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 34,
"vertex_data": PackedByteArray("Wkz+nlowAABaTG7LpM8AAFpM/p6kzwAApLNuy6TPAABaTG7LWjAAAKSzbstaMAAApLP+nqTPAACks/6eWjAAAAAA/p4AAAAAAAD+nv//AAD///6e//8AAP///p4AAAAAAAAAAP//AAD//wAAAAAAAAAAAAAAAAAA//8AAP//AABVoOTJEV0AAKSX///3ZQAA1Gj///dlAACkl///5pUAANRo///mlQAAVaDkyc2eAAAjYOTJEV0AACNg5MnNngAAPIAc4gBOAAA8gP//AE4AAKSXHOL3ZQAAPIDkyTM8AACklxzi5pUAADyA///erQAAPIAc4t6tAAA8gOTJq78AANRoHOLmlQAA1Ggc4vdlAAA=")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_v8u1n"]
resource_name = "plastique_Cube"
_surfaces = [{
"aabb": AABB(-2.73095, -1.72171, -1.52513, 5.45651, 2.42106, 3.07651),
"attribute_data": PackedByteArray("ObJMZuOmqjI5sqoy46ZMZhjUs2uJq+H+iauzaxjU4f6sKX0WHQF5aR0BfRasKXlpOvaEw+vf9Js69vSb69+Ew3VUfRbmK3lp5it9FnVUeWnh/rNrUtbh/lLWs2vh/uH+/2X80lNWs2v/ZZmXT6mza1NW4f6imZmXopn80k+p4f45lolhl2ImJjmWJiaXYolhWc1MZgPC6SpZzekqA8JMZsm/TGZztOkqyb/pKnO0TGbJoztAc5iZDMmjmQxzmDtAaR1VsZwPVqycD2yRaR1tjNYXz9XWF7y2SyULzmIKgb5S1tFeO/uCScboeWnG6Ns+4Rn8dhQMaIkUDN954RlLjLQ2WcTmKFq/5ihwpLQ2cZ95LneHqyDkmasgWop5LsacPBfhnpwP4Z48F1asPBdskWkd4Z5LKFqKSyjkmYYwcKTmKOWxhjDlsYYwWr+0NuWxSyWBvmIKC860E995tBNoiVLWgkk7+9Fe"),
"format": 34896613399,
"index_count": 180,
"index_data": PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUAGAAZABoAGgAZABsAGAAcABkAGgAbAB0AHgAcABgAHQAbAB8AHgAfABwAHQAfAB4AIAAhACIAIAAjACEAJAAlACYAJAAnACUAKAApACoAKAArACkALAAtAC4ALAAvAC0ASAAxAEkASABKADEASwBIAEkASwBJADIAMwBIAEsAMwBMAEgATABKAEgATAAwAEoATQBFAEYATQBOAEUARABOAE0ARABHAE4ATwBQAEIATwBRAFAAUQBBAFAAQwBRAE8AUQBSAEEAQwBTAFEAUwBSAFEAUwBAAFIANABUADYAVAA0ADcANwA0AFUAVAA3ADUAVgA9AD4AVgBXAD0APABXAFYAPAA/AFcAOwA4AFgAOAA7AFkAWQA7ADkAOABZADoA"),
"lods": [0.327004, PackedByteArray("AAABAAIAAAADAAEABAAFAAYABAAHAAUACAAJAAoACAALAAkADAANAA4ADAAPAA0AEAARABIAEAATABEAFAAVABYAFAAXABUAGAAZABoAGgAZABsAGAAcABkAGgAbAB0AHgAcABgAHQAbAB8AHgAfABwAHQAfAB4AIAAhACIAIAAjACEAJAAlACYAJAAnACUAKAApACoAKAArACkALAAtAC4ALAAvAC0AMAAxADIAMwAwADIANAA1ADYANQA0ADcAOAA5ADoAOAA7ADkAPAA9AD4APAA/AD0AQABBAEIAQwBAAEIARABFAEYARABHAEUA")],
"material": SubResource("StandardMaterial3D_omo1p"),
"name": "Material",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 90,
"vertex_data": PackedByteArray("Wkz+nlowFfZaTG7LpM9z0VpM/p6kz9vdWkxuy1owGvv//wAA//9z0QAA/p7//3PR///+nv//SsAAAAAA//9KwAAAAAD//0rAAAD+ngAAGfsAAP6e//9z0QAAAAAAAG/ZAAAAAAAAlvH//wAA//+Wsf//AAAAAEDcAAAAAP//veP//wAAAAAa+////p7//0rA///+ngAAb9n//wAA//9z0QAAAAAAAG/Z///+ngAAb9kAAP6eAAAZ+///AAAAABr7pLP+nqTP3MUAAP6e//++41pM/p6kz/jXAAD+ngAAlvH///6e//+VsVpM/p5aMD/jpLP+nlowQNf///6eAABB3KSzbstaMEDcWkxuy6TPveNaTG7LWjCW8aSzbsukz5axWkz+nqTP292ks27LpM9KwKSz/p6kzzLBWkxuy6TPc9Gks/6eWjC9zVpMbstaMBr7Wkz+nlowFfaks27LWjBv2aSz/p6kzzLBpLNuy1owb9mks/6eWjC9zaSzbsukz0rAVaDkyRFdL96kl///92VJ0tRo///3ZcP0I2DkyRFdr+Wkl///5pWtsdRo///3ZfTopJf///dlBdHUaP//5pXu11Wg5MkRXfr+I2Dkyc2efLNVoOTJzZ5f+SNg5MkRXfPVI2Dkyc2eHdXUaP//92XD9NRo///mlYPYI2DkyRFdo9UjYOTJzZ5zsdRo///mlYPYpJf//+aVicFVoOTJzZ5661Wg5MkRXYP1pJf//+aVicGkl///92VJ0lWg5MnNnkLBPIAc4gBOvvM8gP//AE5E7aSXHOL3ZbbU1Ggc4vdltPU8gOTJMzye9qSXHOL3Za7ZpJcc4uaVlL6klxzi5pXbzjyA///erTvEPIAc4t6t08HUaBzi5pW2xzyA5MmrvxLBPID//wBOg+c8gP//3q0VqtRoHOLmlTDZ1Ggc4vdloeo8gOTJMzyu/DyA5Mmrv6Lr+sr1HrR5za8eiwS1UFcEtUqGMVCzecyvN7e5eMZIRIfGSESHUFcEtbN5zK/nOgS1vT2NZA5oMkZxX2cxvlkncK6o+ko3t7l4F8X6SkqGMVDnOgS1F8X6SlBXBLWuqPpKq9AcIifwQCYZ4nopjeRCQjDG8Bdk2iw0E8cGKWaxjSBnsY0gJvBAJo3kQUIxxvEXHosEtTi3unjnwgiOtHnNr3vVzUhQVwS1+sr1HhfF+krnwgiOF8X6SnvVzUg4t7p4+pY+NHXEBVK/XHy0pzijlau9GSfR8ShIS7gaMTT5hTU8F/G/PlAL/hcMkdWfZVf23k9tjL9cfLQYc/SxiU8nwxxWN7UYc/Sx+7uBcHahqGWOtBFa+7uBcHXEBVKQjplHQca9OU3JsTaStrFCVFBuqiI73MQSwClXiLGnYxGzTXPqmeqZWpNak49yC7YncCZwD90rUY7rfi/SaIGoBFx0uOxZt+hyEXr7")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_kgxna")
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_v8u1n"]
animation = &"explode"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8ntcp"]
animation = &"timer"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6b0xy"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8ps5k"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7onlu"]
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_ublq3"]
states/explode/node = SubResource("AnimationNodeAnimation_v8u1n")
states/explode/position = Vector2(634, 100)
states/timer/node = SubResource("AnimationNodeAnimation_8ntcp")
states/timer/position = Vector2(371, 100)
transitions = ["explode", "End", SubResource("AnimationNodeStateMachineTransition_6b0xy"), "timer", "explode", SubResource("AnimationNodeStateMachineTransition_8ps5k"), "Start", "timer", SubResource("AnimationNodeStateMachineTransition_7onlu")]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ntcp"]
transparency = 1
albedo_color = Color(1, 1, 1, 0.113725)
[sub_resource type="SphereMesh" id="SphereMesh_6b0xy"]
material = SubResource("StandardMaterial3D_8ntcp")
[sub_resource type="SphereShape3D" id="SphereShape3D_kgxna"]
radius = 3.0
[sub_resource type="BoxShape3D" id="BoxShape3D_kgxna"]
size = Vector3(1, 0.303711, 0.469)
[node name="SetItem" type="RigidBody3D"]
process_mode = 1
collision_layer = 0
collision_mask = 5
axis_lock_angular_x = true
axis_lock_angular_y = true
axis_lock_angular_z = true
gravity_scale = 0.8
contact_monitor = true
script = ExtResource("1_m8dyi")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_eat5q")
}
[node name="Model" type="Node3D" parent="."]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0.00817871, 0)
[node name="Mesh" type="MeshInstance3D" parent="Model"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00269588, 0.721714, -0.0131256)
material_overlay = SubResource("StandardMaterial3D_kgxna")
mesh = SubResource("ArrayMesh_v8u1n")
skeleton = NodePath("")
[node name="TimerCountdown" type="AudioStreamPlayer3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00817871, 0)
[node name="AnimationTree" type="AnimationTree" parent="."]
unique_name_in_owner = true
root_node = NodePath("%AnimationTree/..")
tree_root = SubResource("AnimationNodeStateMachine_ublq3")
anim_player = NodePath("../AnimationPlayer")
[node name="ExplosionArea" type="Area3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00817871, 0)
collision_layer = 0
collision_mask = 2048
[node name="Radius" type="MeshInstance3D" parent="ExplosionArea"]
transform = Transform3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
mesh = SubResource("SphereMesh_6b0xy")
skeleton = NodePath("../..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="ExplosionArea"]
shape = SubResource("SphereShape3D_kgxna")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.199832, 0.0127869)
shape = SubResource("BoxShape3D_kgxna")