diff --git a/asset_dev/balls/powerball/fireball.blend b/asset_dev/balls/powerball/fireball.blend new file mode 100644 index 0000000..b732db8 --- /dev/null +++ b/asset_dev/balls/powerball/fireball.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91479b69b0d87552d312e8f08ab41f75675a3f358cd9d886a20ae5ba99abeaa0 +size 921808 diff --git a/asset_dev/balls/powerball/fireball.blend1 b/asset_dev/balls/powerball/fireball.blend1 new file mode 100644 index 0000000..963f217 Binary files /dev/null and b/asset_dev/balls/powerball/fireball.blend1 differ diff --git a/asset_dev/particles/smoke.blend b/asset_dev/particles/smoke.blend new file mode 100644 index 0000000..eac4a0e --- /dev/null +++ b/asset_dev/particles/smoke.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdd95c5ec38ace0054ea11f91452a5655a91ad7b559cd78ea39aa62ae42d0d10 +size 905944 diff --git a/asset_dev/particles/smoke.blend1 b/asset_dev/particles/smoke.blend1 new file mode 100644 index 0000000..810ca94 Binary files /dev/null and b/asset_dev/particles/smoke.blend1 differ diff --git a/assets/models/balls/powerball/fireball.bin b/assets/models/balls/powerball/fireball.bin new file mode 100644 index 0000000..2b26b40 Binary files /dev/null and b/assets/models/balls/powerball/fireball.bin differ diff --git a/assets/models/balls/powerball/fireball.gltf b/assets/models/balls/powerball/fireball.gltf new file mode 100644 index 0000000..4566d9d --- /dev/null +++ b/assets/models/balls/powerball/fireball.gltf @@ -0,0 +1,104 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.2.60", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Fireball" + } + ], + "meshes":[ + { + "name":"Sphere.001", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3 + } + ] + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":84, + "max":[ + 0.17320509254932404, + 0.20000000298023224, + 0.20000001788139343 + ], + "min":[ + -0.17320507764816284, + 0, + -0.18961560726165771 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":84, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":84, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":108, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":1008, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":1008, + "byteOffset":1008, + "target":34962 + }, + { + "buffer":0, + "byteLength":672, + "byteOffset":2016, + "target":34962 + }, + { + "buffer":0, + "byteLength":216, + "byteOffset":2688, + "target":34963 + } + ], + "buffers":[ + { + "byteLength":2904, + "uri":"fireball.bin" + } + ] +} diff --git a/assets/models/balls/powerball/fireball.gltf.import b/assets/models/balls/powerball/fireball.gltf.import new file mode 100644 index 0000000..1de1b51 --- /dev/null +++ b/assets/models/balls/powerball/fireball.gltf.import @@ -0,0 +1,36 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dd2nxbfssd4hh" +path="res://.godot/imported/fireball.gltf-97c966d8efae6c02cddcd5d037fee594.scn" + +[deps] + +source_file="res://assets/models/balls/powerball/fireball.gltf" +dest_files=["res://.godot/imported/fireball.gltf-97c966d8efae6c02cddcd5d037fee594.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/assets/models/particles/smoke.bin b/assets/models/particles/smoke.bin new file mode 100644 index 0000000..c8d36d4 Binary files /dev/null and b/assets/models/particles/smoke.bin differ diff --git a/assets/models/particles/smoke.gltf b/assets/models/particles/smoke.gltf new file mode 100644 index 0000000..6ed385f --- /dev/null +++ b/assets/models/particles/smoke.gltf @@ -0,0 +1,104 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.2.60", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"SmokeCloud" + } + ], + "meshes":[ + { + "name":"Sphere", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3 + } + ] + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":153, + "max":[ + 0.20304334163665771, + 0.14592236280441284, + 0.14660561084747314 + ], + "min":[ + -0.2416081726551056, + -0.14180392026901245, + -0.15602463483810425 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":153, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":153, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":720, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":1836, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":1836, + "byteOffset":1836, + "target":34962 + }, + { + "buffer":0, + "byteLength":1224, + "byteOffset":3672, + "target":34962 + }, + { + "buffer":0, + "byteLength":1440, + "byteOffset":4896, + "target":34963 + } + ], + "buffers":[ + { + "byteLength":6336, + "uri":"smoke.bin" + } + ] +} diff --git a/assets/models/particles/smoke.gltf.import b/assets/models/particles/smoke.gltf.import new file mode 100644 index 0000000..33010f8 --- /dev/null +++ b/assets/models/particles/smoke.gltf.import @@ -0,0 +1,48 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bkrb4rxwjaxba" +path="res://.godot/imported/smoke.gltf-923367b79e5b097f0bc224e276b9686d.scn" + +[deps] + +source_file="res://assets/models/particles/smoke.gltf" +dest_files=["res://.godot/imported/smoke.gltf-923367b79e5b097f0bc224e276b9686d.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={ +"meshes": { +"smoke_Sphere": { +"generate/lightmap_uv": 0, +"generate/lods": 0, +"generate/shadow_meshes": 0, +"lods/normal_merge_angle": 60.0, +"lods/normal_split_angle": 25.0, +"save_to_file/enabled": true, +"save_to_file/path": "res://assets/models/particles/smoke_mesh.res" +} +} +} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/assets/models/particles/smoke_mesh.res b/assets/models/particles/smoke_mesh.res new file mode 100644 index 0000000..7292634 --- /dev/null +++ b/assets/models/particles/smoke_mesh.res @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e98661f18acb352a1af394614ae53235c3e201198d01382c65b37e892de10ce +size 9683 diff --git a/src/equipment/balls/physics_ball/game_ball.gd b/src/equipment/balls/physics_ball/game_ball.gd index f7ed050..7dfbc62 100644 --- a/src/equipment/balls/physics_ball/game_ball.gd +++ b/src/equipment/balls/physics_ball/game_ball.gd @@ -17,6 +17,9 @@ enum Type { const TERRAIN_DAMPING_EPSILON := 1e-6 const MAGNUS_EPSILON := 1e-3 +## If enabled, ball ability cooldown is only reset at end of shot. +@export var once_per_shot_ability := false + ## Angular damping while in air @export var air_damping := 0.0 ## Angular damping while in collision with rough terrain @@ -51,6 +54,7 @@ var player: WorldPlayer var _last_contact_normal: Vector3 = Vector3.UP var _position_on_last_wake: Vector3 var _awake := false +var _ability_triggered := false var _zones: Array[BallZone] = [] @onready var ability_cooldown: Timer = %AbilityCooldown @@ -75,10 +79,15 @@ func enter_water() -> void: ## Activate this ball's ability, if there is one. func activate_ability() -> void: - if ability_cooldown.is_stopped(): + if once_per_shot_ability: + if not _ability_triggered: + _ability_triggered = true + _activate_ability() + # TODO bonk + elif ability_cooldown.is_stopped(): _activate_ability() ability_cooldown.start() - # TODO: bonk + # TODO bonk func _activate_ability() -> void: @@ -106,6 +115,7 @@ func _integrate_forces(state: PhysicsDirectBodyState3D) -> void: if not _awake: # Triggered on first frame after waking _awake = true + _ability_triggered = false _position_on_last_wake = global_position _last_contact_normal = Vector3.UP # TODO something's fucky here... I think this gets called once after the ball sleeps diff --git a/src/equipment/balls/power_ball/power_ball.gd b/src/equipment/balls/power_ball/power_ball.gd index 5656c93..1a8a15a 100644 --- a/src/equipment/balls/power_ball/power_ball.gd +++ b/src/equipment/balls/power_ball/power_ball.gd @@ -1,11 +1,18 @@ extends GameBall -const ABILITY_MAGNITUDE := 5.0 +const ABILITY_MAGNITUDE := 2.0 + +const SCREENSHAKE_INTENSITY := 8.0 +const SCREENSHAKE_LENGTH := 3.0 var _ability_impulse := Vector3.ZERO +@onready var fireball_pivot: Node3D = %FireballPivot + @onready var powerball_animation: AnimationPlayer = %PowerballAnimation +@onready var game: Game = get_tree().get_first_node_in_group(Game.group) + func _activate_ability() -> void: _ability_impulse = linear_velocity.normalized() * ABILITY_MAGNITUDE @@ -17,5 +24,16 @@ func _activate_ability() -> void: func _finish_ability() -> void: can_sleep = true freeze = false - linear_velocity = Vector3.ZERO apply_central_impulse(_ability_impulse) + game.viewport.screen_shake(SCREENSHAKE_INTENSITY, SCREENSHAKE_LENGTH) + + +func _process(_delta: float) -> void: + # Rotate fireball to direction of travel + var y := linear_velocity.normalized() + if y.length_squared() <= 1e-9: + y = -global_basis.z.normalized() + var x := Vector3(y.y, -y.x, 0) + var z := y.cross(x).normalized() + x = z.cross(y).normalized() # orthonormalize + fireball_pivot.global_basis = Basis(x, y, z) diff --git a/src/equipment/balls/power_ball/power_ball.tscn b/src/equipment/balls/power_ball/power_ball.tscn index 92ec6a5..144c3dc 100644 --- a/src/equipment/balls/power_ball/power_ball.tscn +++ b/src/equipment/balls/power_ball/power_ball.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=18 format=3 uid="uid://deuytmxw2lc62"] +[gd_scene load_steps=37 format=4 uid="uid://deuytmxw2lc62"] [ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_14gld"] [ext_resource type="Texture2D" uid="uid://ckhiq6rfjv63u" path="res://assets/textures/gfolfball/gfolfball.png" id="2_a2gtg"] [ext_resource type="Script" path="res://src/equipment/balls/power_ball/power_ball.gd" id="2_hy51e"] [ext_resource type="Texture2D" uid="uid://btntjs7mbdigu" path="res://assets/textures/gfolfball/gfolfball_normal.png" id="3_60i75"] +[ext_resource type="PackedScene" uid="uid://dd2nxbfssd4hh" path="res://assets/models/balls/powerball/fireball.gltf" id="5_i8vmm"] +[ext_resource type="AudioStream" uid="uid://tqr7u7vb2r0f" path="res://assets/sound/sfx/ball/effects/fireball.wav" id="6_uwolu"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c4cm7"] albedo_color = Color(2, 0.266, 0.266, 1) @@ -25,6 +27,91 @@ height = 0.1 radial_segments = 6 rings = 6 +[sub_resource type="Gradient" id="Gradient_b68qa"] +offsets = PackedFloat32Array(0.291939, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 0, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_sr8jb"] +gradient = SubResource("Gradient_b68qa") +fill = 1 +fill_from = Vector2(0.5, 0.5) +metadata/_snap_enabled = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aqmuo"] +transparency = 1 +cull_mode = 2 +shading_mode = 0 +vertex_color_use_as_albedo = true +albedo_color = Color(2, 1.98431, 1.6, 0.156863) +albedo_texture = SubResource("GradientTexture2D_sr8jb") + +[sub_resource type="Animation" id="Animation_5t74j"] +resource_name = "flicker" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("FireballScaleRoot:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.00610052, 0.1, 0.206101, 0.3, 0.40305, 0.5, 0.60305, 0.7, 0.80305, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9), +"transitions": PackedFloat32Array(0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1, 0.618, 1), +"update": 0, +"values": [Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1), Vector3(1, 1, 1), Vector3(1, 1.2, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("FireballScaleRoot:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = false +tracks/1/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 2.0944, 0)] +} + +[sub_resource type="Animation" id="Animation_2co83"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("FireballScaleRoot:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("FireballScaleRoot:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hmunj"] +_data = { +"RESET": SubResource("Animation_2co83"), +"flicker": SubResource("Animation_5t74j") +} + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_jvq4v"] +random_pitch = 1.1 +streams_count = 1 +stream_0/stream = ExtResource("6_uwolu") + [sub_resource type="Curve" id="Curve_ai354"] max_value = 100.0 _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.115, 100), 0.0, 0.0, 0, 0] @@ -70,9 +157,86 @@ sections = 3 section_length = 0.1 curve = SubResource("Curve_p1ob2") +[sub_resource type="Gradient" id="Gradient_ljxg5"] +offsets = PackedFloat32Array(0, 0.01566, 0.237136, 0.760626) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 0.3, 1, 1, 0.0623333, 0.03, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_3g0ul"] +gradient = SubResource("Gradient_ljxg5") + +[sub_resource type="Curve" id="Curve_ux8et"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.298, 0.484), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_m3urn"] +curve = SubResource("Curve_ux8et") + +[sub_resource type="Curve" id="Curve_odpml"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.122105, 1), 0.0, 0.0, 0, 0, Vector2(0.787368, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -15.6101, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="CurveTexture" id="CurveTexture_gkytq"] +curve = SubResource("Curve_odpml") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_6n6nm"] +lifetime_randomness = 0.24 +angle_min = -720.0 +angle_max = 720.0 +angular_velocity_min = -15.0 +angular_velocity_max = 15.0 +gravity = Vector3(0, 1, 0) +damping_min = 3.0 +damping_max = 3.0 +damping_curve = SubResource("CurveTexture_m3urn") +scale_min = 0.3 +scale_max = 3.0 +scale_curve = SubResource("CurveTexture_gkytq") +color_ramp = SubResource("GradientTexture1D_3g0ul") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1upti"] +transparency = 1 +vertex_color_use_as_albedo = true +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="ArrayMesh" id="ArrayMesh_r0r4b"] +_surfaces = [{ +"aabb": AABB(-0.241608, -0.141804, -0.156025, 0.444652, 0.287726, 0.30263), +"format": 34896613377, +"index_count": 720, +"index_data": PackedByteArray("eQAIACkAeQAnAAgAeAAGACsAeAAlAAYAAAAsAFMAHwBWAFQAdwAHACoAdwAmAAcAdgAFACwAdgAkAAUAHwBYAFYAdQAMADMAdQAvAAwAdAAKADUAdAAtAAoAcwANADIAcwAwAA0AcgALADQAcgAuAAsABQA1AFUAHwBaAFgAcQARADwAcQA4ABEAcAAPAD4AcAA2AA8AbwASADsAbwA5ABIAbgAQAD0AbgA3ABAACgA+AFcAHwBbAFoAbQAXAEYAbQBCABcAbAAVAEgAbABAABUAawAYAEUAawBDABgAagAWAEcAagBBABYADwBIAFkAaQAcAE8AaQBLABwAaAAaAFEAaABJABoAZwAdAE4AZwBMAB0AZgAbAFAAZgBKABsAFQBRAD8AHwBNAFsAZQAAAF4AZQAgAAAAZAADAGAAZAAjAAMAYwABAF0AYwAhAAEAGgBeAFwAHwBUAE0AYgACAGEAYgAiAAIAYAAiAGIAYAADACIAHQBiAEsAHQBgAGIASwBhABwASwBiAGEAVAAEAF8AVABfAE0ATQBfAB4AXgAAAFMAXgBTAFwAXABTABQAYQAhAGMAYQACACEAHABjAEoAHABhAGMASgBdABsASgBjAF0AXwAjAGQAXwAEACMAHgBkAEwAHgBfAGQATABgAB0ATABkAGAAXQAgAGUAXQABACAAGwBlAEkAGwBdAGUASQBeABoASQBlAF4ATQAeAFIATQBSAFsAWwBSABkAUQAaAFwAUQBcAD8APwBcABQATwBKAGYATwAcAEoAFwBmAEEAFwBPAGYAQQBQABYAQQBmAFAAUgBMAGcAUgAeAEwAGQBnAEMAGQBSAGcAQwBOABgAQwBnAE4AUABJAGgAUAAbAEkAFgBoAEAAFgBQAGgAQABRABUAQABoAFEATgBLAGkATgAdAEsAGABpAEIAGABOAGkAQgBPABcAQgBpAE8ASAAVAD8ASAA/AFkAWQA/ABQARgBBAGoARgAXAEEAEQBqADcAEQBGAGoANwBHABAANwBqAEcARABDAGsARAAZAEMAEwBrADkAEwBEAGsAOQBFABIAOQBrAEUARwBAAGwARwAWAEAAEABsADYAEABHAGwANgBIAA8ANgBsAEgARQBCAG0ARQAYAEIAEgBtADgAEgBFAG0AOABGABEAOABtAEYAWwAZAEQAWwBEAFoAWgBEABMAPgAPAFkAPgBZAFcAVwBZABQAPAA3AG4APAARADcADABuAC4ADAA8AG4ALgA9AAsALgBuAD0AOgA5AG8AOgATADkADgBvADAADgA6AG8AMAA7AA0AMABvADsAPQA2AHAAPQAQADYACwBwAC0ACwA9AHAALQA+AAoALQBwAD4AOwA4AHEAOwASADgADQBxAC8ADQA7AHEALwA8AAwALwBxADwAWgATADoAWgA6AFgAWAA6AA4ANQAKAFcANQBXAFUAVQBXABQAMwAuAHIAMwAMAC4ABwByACUABwAzAHIAJQA0AAYAJQByADQAMQAwAHMAMQAOADAACQBzACcACQAxAHMAJwAyAAgAJwBzADIANAAtAHQANAALAC0ABgB0ACQABgA0AHQAJAA1AAUAJAB0ADUAMgAvAHUAMgANAC8ACAB1ACYACAAyAHUAJgAzAAcAJgB1ADMAWAAOADEAWAAxAFYAVgAxAAkAKwAkAHYAKwAGACQAAQB2ACAAAQArAHYAIAAsAAAAIAB2ACwAKQAmAHcAKQAIACYAAwB3ACIAAwApAHcAIgAqAAIAIgB3ACoAVgAJACgAVgAoAFQAVAAoAAQALAAFAFUALABVAFMAUwBVABQAKgAlAHgAKgAHACUAAgB4ACEAAgAqAHgAIQArAAEAIQB4ACsAKAAnAHkAKAAJACcABAB5ACMABAAoAHkAIwApAAMAIwB5ACkA"), +"lods": [0.0297894, PackedByteArray("KAAIAHcAKAAnAAgAJwANAAgAKAAJACcACQBzACcAJwBzAA0AVgAJACgAVgAoAFQAHwBWAFQAVAAoAAQACQAxAHMAVgAxAAkAWAAxAFYAHwBYAFYAWAAOADEAMQAwAHMAMQAOADAAcwAwAA0ADgA6ADAAWAA6AA4AMABxAA0AMAA6AHEAWgA6AFgAHwBaAFgAWgATADoAOgATADkAOgA5AHEADQBxAC8ALwBuAC4ADQAvADMACAANADMAMwAvAC4ACAAzAAcABwAzAC4AdwAIAAcALwBxADwALwA8AG4AcQARADwAcQA5ABEAPAAQAG4APAARABAAbgAQAD0ALgBuAD0ALgA9AAsACwA9AD4APQAQAD4ALgALAHQAEQBHABAAPgAQAA8AEABsAA8AEABHAGwAPgAPAFkAPgBZAFcAVwBZABQACgA+AFcACwA+AAoAdAALAAoADwBsAFkAbAA/AFkAWQA/ABQAbAAVAD8AbAAWABUARwAWAGwARwBBABYARgBBAEcARgAXAEEAEQBGAEcAbQAXAEYAEQBtAEYAbQBCABcAOQBtABEAGABCAG0AOQAYAG0AOQBrABgAawBDABgAEwBrADkARABDAGsAEwBEAGsARAAZAEMAWgBEABMAWwAZAEQAWwBEAFoAHwBbAFoAAAAsAFMAUwBVABQALABVAFMALAAFAFUAIAAsAAAAIAB2ACwAdgAFACwAXQAgAAAAIQB2ACAAXQAhACAAIQArAHYAXQAAAF4AXgAAAFMAXgBTAFwAXABTABQAGgBeAFwAGgBdAF4AYQAhAF0AGwBdABoAGwBhAF0AUAAbABoATwAbAFAAHABhABsATwAcABsAYQACACEAAgArACEASwBhABwAaQAcAE8AaQBLABwAQgBpAE8AQgBPABcAFwBPAFAAGABpAEIAFwBQAEEAQQBQABYAGABOAGkATgBLAGkAQwBOABgAFgBQAFEAUAAaAFEAFgBRABUAUQAaAFwAFQBRAD8AUQBcAD8APwBcABQAGQBOAEMAGQAdAE4ATgAdAEsAHQBiAEsASwBiAGEAYgACAGEAHQBgAGIAYAACAGIAGQAeAB0AHgBgAB0ATQAeABkATQAZAFsAHwBNAFsAHgAEAGAATQAEAB4AVAAEAE0AHwBUAE0ABAAjAGAABAAoACMAYAAjAAMAYAADAAIAIwAoAHcAIwB3AAMAAwB3AAIAAgB3ACoAdwAHACoAAgAqACsAKgAHACUAKgAlACsABwAuACUAJQAuAHQAKwAlACQAJQB0ACQAKwAkAHYAdgAkAAUAJAB0AAUAdAAKAAUABQAKAFcABQBXAFUAVQBXABQA"), 0.0626595, PackedByteArray("HwBWAFQAVgAJAFQAVAAJAAQAVAAEAE0AHwBUAE0ATQAEAB4AHgAEAAMABAAJAAMATQAeABkAHwBNABkAGQAeAB0AHgADAB0AGQAdAEMAQwAdABcAHQBLABcAHQADAGIAHQBiAEsAAwACAGIAAwB3AAIAAwAJAHcAdwAlAAIAdwAJACUACQAvACUAYgACAGEASwBiAGEAAgAlACsAYQACACsASwBhABsAYQArABsAFwBLABsAFwAbABYAKwAlAAUAGwArAAAAKwAFAAAAFgAbABoAGwAAABoAFgAaAD8AGgBcAD8APwBcABQAGgAAAFMAGgBTAFwAXABTABQAAAAFAFUAAABVAFMAUwBVABQABQBXAFUAVQBXABQABQAKAFcAJQAKAAUAJQAuAAoAJQAvAC4ACgBZAFcAVwBZABQACgAPAFkALwBuAC4ALgBuAAoACgAQAA8AbgAQAAoAEAAWAA8ARgAWABAADwAWAD8ADwA/AFkAWQA/ABQAbgBGABAARgAXABYADQBGAG4ALwANAG4ACQANAC8ADQA5AEYAOQAXAEYAQwAXADkAGQBDADkADgA5AA0AEwAZADkADgATADkAWgAZABMAHwAZAFoAWgATAA4AWgAOAFgAHwBaAFgACQAOAA0AWAAOAAkAWAAJAFYAHwBYAFYA"), 0.112059, PackedByteArray("HwBWAFQAVgAJAFQAVAAJAAQAHgAEABoABAAJABoAGgAJAAUAWAAJAFYAHwBYAFYAWAAOAAkACQAOAAUAWgATAA4AHwBaAFgAWgAOAFgAQQATAFoAHwBBAFoADgATAEEADgBBAA8ADgAPAAoADwBBAFkAWQBBABQACgAPAFkACgBZAFcAVwBZABQABQAKAFcABQBXAFUAVQBXABQABQAOAAoAAAAFAFUAAABVAFMAUwBVABQAGgAFAAAAGgAAAFMAGgBTAFwAXABTABQAGgBcAEEAQQBcABQAHwBNAEEATQAeAEEATQAEAB4AVAAEAE0AHwBUAE0AQQAeABoA")], +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 122, +"vertex_data": PackedByteArray("P4da5E85AAAZi0+ryw8AADKZ0m8oGgAAv5qxa18bAAAXi+IxP0EAAOLHkdYwYQAALfDpqktKAAD//yp+dUEAANf3fEXxRQAAncXVLY1iAAClx/rcUKYAAJb2qrQEwgAAHv9nfIe4AACD8LZSarwAALvFXDBHpQAAGov6zB3HAAA1kJGcSewAAC6RroHD6gAAWYtcVPT2AACeinMgOtMAAOmLW+FQhAAAeUMU8VqvAAAFJqaqbb0AAK8U9H7rtgAA/SW6UWa9AAC9UB0xJaUAAJhP5M+sXwAAxyUtq0JKAAAnGbh+YEoAAIokPE+LSQAA3E/dKNhiAACNiogOsHsAAPyI6sjGHAAA5JGFh0UQAAD/maNuLxsAAEaOO0VPKQAAstpAu0ZWAABV+NCUrEUAAJP6YWYNRAAALd/QKwdVAADGqOEw1lEAAJO/ZFBLJgAAecFYeAUmAADNv/yjTyUAAJaqdu/USQAAguHl0fGzAAAo+8SUPMIAAGn5IG50sgAA0dpnQUaxAAB0xR0x+4MAAPbqJmKqiwAA6vKFc5eQAADm8HOrIoQAAHbGDtGagwAA8YsluObfAAB6kP6SP+sAAMqPnHcs7QAAGYthQZneAAAKrRcd8b4AANy951AA2wAA68eyfL7wAACyw5+9ovIAAGqoKtZWuAAABm7//7qUAAAaNabF+rUAAPUb/4/ovQAAKRs/byO7AABhO2VBSbEAACRqziTPvAAAVVYaRoLiAAAQSrd8//8AAIlVm7mb5AAArG2i7orJAABhO++6rVYAAJUbQJQJRQAAnhgrZbhBAAAWOK00AlUAAOht1ypncwAAQCI5R7SEAAAAABGBjYUAACUfCbijgwAAuEWt7Zh5AAC9UB0x+4MAAHyJuN86YgAAGYsnK9BiAAAgqUrjJ3QAAEuoLitecwAAe6gJ1saUAAB4rfATW5EAADSNC+A0qAAAhIkAAG2qAADPaiweBZQAAJZs3unjaQAA2VfPrWorAADnbVfLMVIAAOttwifnUAAAzVPRQD0bAADbSbSEwgMAAPtKCVkAAAAADlCFo14UAAD9YBkpTDUAAD1j77oGQAAALg6DqOGEAABhO2VB+4MAAJUzV8hsgQAAvAtuUo2FAAA4Tt2hAvgAADhjUEEAyAAAtV9j0VvZAAAhT5BaaPUAAPXHN5pU+QAAg7PoPs/JAADNtTfXwNYAABHCBGfH4gAA4/clj/KIAAD/2jNCO4QAAHLburzagwAA/+z/bXyOAACJuZnVgikAAKnBHGdhIQAAJ74eh1kwAACFtcgzCTkAAA==") +}] +blend_shape_mode = 0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_x6ojl"] +resource_name = "smoke_Sphere" +_surfaces = [{ +"aabb": AABB(-0.241608, -0.141804, -0.156025, 0.444652, 0.287726, 0.30263), +"attribute_data": PackedByteArray("qqqqKqqqVVWqqv9/qqqqqqqqVNX/f6oq/39VVf9//3//f6qq/39U1VVVqipVVVVVVVX/f1VVqqpVVVTVqiqqKqoqVVWqKv9/qiqqqqoqVNVVFQAA/z8AAKpqAABUlQAA/78AAKnqAAAAAKoq//+qKgAAVVX//1VVAAD/f////38AAKqq//+qqgAAVNX//1TVVNWqKlTVVVVU1f9/VNWqqlTVVNVVFf///z///6pq//9Ulf///7///6nq//+qqv8/qqqqaqqqVJWqqv+//3//P/9/qmr/f1SV/3//v1SVVNVUlaqqVJX/f1SVVVVUlaoqVVX/P1VVqmpVVVSVVVX/v6pqVNWqaqqqqmr/f6pqVVWqaqoqqir/P6oqqmqqKlSVqir/v/8/VNX/P6qq/z//f/8/VVX/P6oqqgpVFVT1VRUAAP8/////PwAAqmr//6pqAABUlf//VJUAAP+/////v1UVVNVVFaqqVRX/f1UVVVVVFaoqVNX/P1TVqmpU1VSVVNX/v6nKqer/36nqqeqqqqnq/3+p6lVVqeqqKqnqVNX/n1UVVLVVFf+fqepUtanqVHVVFaqKVRVUdanqqoqp6qpKVRX/X1UVqkqp6v9fqer/H1UVVTVVFf8fqepVNanqqgqp6lT1qeqpylUV/99VFf+/VVX/v6oq/79U1f+/qqr/v/9//79Ulf+/qmr/v/+//7//P6nqqmqp6v+/qer/P6nqVJVVFapqVRX/v1UV/z9VFVSV/z+qav8//7//P/8//z9Ulapqqmqqav+/qmr/P6pqVJVUlf8/VJVUlVSVqmpUlf+/qqpU1f9/qir/f6oq/3+qKv9/VNX/f1TVVVWqKlVVqipVVVTVVVVU1VVVVNWqKqoqqiqqKqoqVNVVFQAA/78AAKnqAABU1aoqVNWqKlTVVNVU1VTVVRX///8///+p6v//AACqagAAqmoAAKpq//+qav//qmr//6pqVLVVFf8fVRX/H6nqVTWp6v/fVRWqqqoqqqqqqv9/qir/f1TV/39U1VVVqipVVaoqVVWqqlVVqqqqKlTVAABVVf//VVUAAP9/AAD/f////3////9/VNWqKlTVVVVU1VVVVNWqqlTVVNVVFf///z///6nq////f6pq/3+qav9/qmpUlVVVVVWqalVVqmpVVapqVVVUlVVVVJWqClUVVPVVFVUV/39VFf9/VNVUlVTVVJVUtVUVqkqp6lU1qer/v/9//79Ulf8/qmr/P6pqVJVUlf9//3//f6qqVVVVVf//qir//1VV////f1TVVVVU1f9/VRX///9//z9VVapqVVWqalVVVJX/P1VV/z+qKqoKVRVU9VUV//9UlVTVVJWp6v9/qer/f6nqVVWp6qoqqkqp6v8fqepVNanq/7//f/+/VJWp6lSV/z+qav8/qmr/P1SVVJX/P1SVVJU="), +"format": 34896613399, +"index_count": 720, +"index_data": PackedByteArray("mAAIADgAmAA2AAgAlwAGADoAlwA0AAYAAAA7AGgALABvAGoAlgAHADkAlgA1AAcAlQAFADsAlQAzAAUAKwBzAG4AlAAMAEIAlAA+AAwAkwAKAEQAkwA8AAoAkgANAEEAkgA/AA0AkQALAEMAkQA9AAsABQBEAGwAKgB3AHIAkAARAEsAkABHABEAjwAPAE0AjwBFAA8AjgASAEoAjgBIABIAjQAQAEwAjQBGABAACgBNAHAAKQB4AHYAjAAeAFoAjABUAB4AiwAaAFwAiwBQABoAigAgAFkAigBWACAAiQAcAFsAiQBSABwADwBcAHQAiAAmAGQAiABfACYAhwAkAGYAhwBdACQAhgAnAGMAhgBgACcAhQAlAGUAhQBeACUAGwBmAE8ALgBiAHkAhAAAAH0AhAAvAAAAgwADAH8AgwAyAAMAggABAHwAggAwAAEAJAB9AHoALQBrAGEAgQACAIAAgQAxAAIAfwAxAIEAfwADADEAJwCBAF8AJwB/AIEAXwCAACYAXwCBAIAAawAEAH4AawB+AGEAYQB+ACgAfQAAAGkAfQBpAHoAegBpABgAgAAwAIIAgAACADAAJgCCAF4AJgCAAIIAXgB8ACUAXgCCAHwAfgAyAIMAfgAEADIAKACDAGAAKAB+AIMAYAB/ACcAYACDAH8AfAAvAIQAfAABAC8AJQCEAF0AJQB8AIQAXQB9ACQAXQCEAH0AYgAoAGcAYgBnAHkAeQBnACMAZgAkAHsAZgB7AE8ATwB7ABkAZABeAIUAZAAmAF4AHwCFAFMAHwBkAIUAUwBlAB0AUwCFAGUAZwBgAIYAZwAoAGAAIwCGAFcAIwBnAIYAVwBjACEAVwCGAGMAZQBdAIcAZQAlAF0AHQCHAFEAHQBlAIcAUQBmABsAUQCHAGYAYwBfAIgAYwAnAF8AIQCIAFUAIQBjAIgAVQBkAB8AVQCIAGQAXAAaAE4AXABOAHQAdABOABQAWgBSAIkAWgAeAFIAEQCJAEYAEQBaAIkARgBbABAARgCJAFsAWABWAIoAWAAiAFYAEwCKAEgAEwBYAIoASABZABIASACKAFkAWwBQAIsAWwAcAFAAEACLAEUAEABbAIsARQBcAA8ARQCLAFwAWQBUAIwAWQAgAFQAEgCMAEcAEgBZAIwARwBaABEARwCMAFoAeAAiAFgAeABYAHYAdgBYABMATQAPAHUATQB1AHAAcAB1ABUASwBGAI0ASwARAEYADACNAD0ADABLAI0APQBMAAsAPQCNAEwASQBIAI4ASQATAEgADgCOAD8ADgBJAI4APwBKAA0APwCOAEoATABFAI8ATAAQAEUACwCPADwACwBMAI8APABNAAoAPACPAE0ASgBHAJAASgASAEcADQCQAD4ADQBKAJAAPgBLAAwAPgCQAEsAdwATAEkAdwBJAHIAcgBJAA4ARAAKAHEARABxAGwAbABxABYAQgA9AJEAQgAMAD0ABwCRADQABwBCAJEANABDAAYANACRAEMAQAA/AJIAQAAOAD8ACQCSADYACQBAAJIANgBBAAgANgCSAEEAQwA8AJMAQwALADwABgCTADMABgBDAJMAMwBEAAUAMwCTAEQAQQA+AJQAQQANAD4ACACUADUACABBAJQANQBCAAcANQCUAEIAcwAOAEAAcwBAAG4AbgBAAAkAOgAzAJUAOgAGADMAAQCVAC8AAQA6AJUALwA7AAAALwCVADsAOAA1AJYAOAAIADUAAwCWADEAAwA4AJYAMQA5AAIAMQCWADkAbwAJADcAbwA3AGoAagA3AAQAOwAFAG0AOwBtAGgAaABtABcAOQA0AJcAOQAHADQAAgCXADAAAgA5AJcAMAA6AAEAMACXADoANwA2AJgANwAJADYABACYADIABAA3AJgAMgA4AAMAMgCYADgA"), +"lods": [0.0297894, PackedByteArray("NwDsAAwBNwA2AOwANgANAOwANwAJADYACQCSADYANgCSAA0AbwAJADcAbwA3AGoALABvAGoAagA3AAQACQBAAJIAbgBAAAkAcwBAAG4AKwBzAG4AcwAOAEAAQAA/AJIAQAAOAD8AkgA/AA0ADgBJAD8AAgFJAA4APwAKAQ0APwBJAAoBBAFJAAIBKgAEAQIBBAETAEkASQATAEgASQBIAAoBDQAKAfcA9wAJAfYADQD3AEIA7AANAEIAQgD3APUA7ABCAOsA6wBCAPUADAHsAOsA9wAKAUsA9wBLAAgBCgERAEsACgFIABEASwAQAAgBSwARABAACAEQAPgA9QAIAfgA9QD4AO0A7QD4APkA+AAQAPkA9QDtAJMAEQBbABAA+QAQAA8AEACLAA8AEABbAIsA+QAPAHUA+QB1AHAAcAB1ABUACgD5AHAA7QD5AAoAkwDtAAoADwCLAHQAiwD6AHQAdAD6ABQAiwAaAPoAiwAcABoAWwAcAIsAWwBSABwAWgBSAFsAWgAeAFIAEQBaAFsAjAAeAFoAEQCMAFoAjABUAB4ASACMABEAIABUAIwASAAgAIwASACKACAAigBWACAAEwCKAEgAWABWAIoAEwBYAIoAWAAiAFYAAwFYABMAeAAiAFgAeABYAAMB8wB4AAMBAAA7AGgAaABtABcAOwBtAGgAOwAFAG0ALwA7AAAALwALATsACwEFADsAfAAvAAAAMAALAS8AfAAwAC8AMAA6AAsBfAAAAH0AfQAAAGkAfQBpAHoAegBpABgAJAB9AHoAJAB8AH0ABQEwAHwA8QB8ACQA8QAFAXwAAAHxACQA/wDxAAAB8gAFAfEA/gDyAPEABQECADAAAgA6ADAA/QAFAfIABwHyAP4ABwH9APIA/AAHAf4A/AD+APAA8AD+AAABIQAHAfwA8AAAAVMAUwAAAe8AIQBjAAcBYwD9AAcBVwBjACEA7wAAAQEBAAEkAAEB7wABAe4AAQEkAHsA7gABAfsAAQF7APsA+wB7ABkAIwBjAFcAIwAnAGMAYwAnAP0AJwAGAf0A/QAGAQUBBgECAAUBJwB/AAYBfwACAAYBIwAoACcAKAB/ACcAYgAoACMAYgAjAHkALgBiAHkAKAAEAH8AYQAEACgAawAEAGEALQBrAGEABAAyAH8ABAA3ADIAfwAyAAMAfwADAAIAMgA3AAwBMgAMAQMAAwAMAQIAAgAMATkADAHrADkAAgA5ADoAOQDrADQAOQA0ADoA6wD1ADQANAD1AJMAOgA0APQANACTAPQAOgD0AAsBCwH0AAUA9ACTAAUAkwAKAAUABQAKAHEABQBxAGwAbABxABYA"), 0.0626595, PackedByteArray("LABvAGoAbwC/AGoAagC/AAQAawAEAGEALQBrAGEAYQAEANAA0AAEAL0ABAC/AL0AYgDQACMA0wBiACMAIwDQAM8A0AC9AM8AIwDPAFcAVwDPAMoAzwDhAMoAzwC9AOcAzwDnAF8AvQACAOcAvQDqAAIAvQC/AOoA6gDUAAIA6gDAANYAvwDbANYA5wACAOYA4gDnAOYAAgDUANcA5gACANcA4gDmAM0A5gDXAM0AywDhAM0AywDOAMcA1wDUAL4AzQDXALwA1wC+ALwAxwDNAMwAzQC8AMwAxwDMAN4AzAB7AN4A3gB7ABkAzAC8AOMAzADjAHoAegDjABgAvAC+AG0AvABtAGgAaABtABcAvgBxAGwAbABxABYAvgDBAHEA1QDBAL4A1QDaAMEA1QDcANgAwQB1AHAAcAB1ABUAwQAPAHUA2wDoANgA2QDoAMIAwgAQAA8A6AAQAMIAEADGAA8A4ADGABAADwDGAN0ADwDdAHQAdADdABQA6ADfABAA3wDJAMYAwwDfAOgA2wDDAOkAvwDDANsAwwBIAN8ASADIAN8AVgDIAEgAIgBWAEgADgBIAMMAxQAiAEgADgDFAEgAdgAiAMUA0QAiAHYA5QDFAA4A5QAOAOQA0gDlAOQAvwAOAMQAcwAOAL8AcwC/AG4AKwBzAG4A"), 0.112059, PackedByteArray("LABvAGoAbwAJAGoAagAJAAQArAAEAKoAmQCeAKoAqgCeAJwAcwAJAG4AKwBzAG4AcwCjAAkAnQCjAJsAugCmAKMArwC6AHIAugAOAHIAsQCmALkArgCxALkAoQCmALMAoQCzAKUAoQCkAJ8ApACyALgAuACyAKcACgCkAHUACgB1AHAAcAB1ABUAmgAKAHEAmgBxAGwAbABxABYAmgCiAKAAAACaAG0AAABtAGgAaABtABcAJAAFAAAAJAAAALcAJAC3AHoAegC3AKgAJAC7ALUAtQC7AKkAsABiALQAYgAoALQAYQAEACgAawAEAGEALQBrAGEAtgCtAKsA")], +"material": SubResource("StandardMaterial3D_1upti"), +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 269, +"vertex_data": PackedByteArray("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") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_r0r4b") + [sub_resource type="Animation" id="Animation_7yrvu"] resource_name = "activate" -length = 0.8 +length = 4.8 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -99,6 +263,54 @@ tracks/1/keys = { "method": &"_finish_ability" }] } +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("BallMesh/FireballPivot:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.8, 4.8), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("BallMesh/FireballPivot/FireballScaleRoot/fireball/Fireball:surface_material_override/0:albedo_color") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.8, 0.9, 4, 4.8), +"transitions": PackedFloat32Array(1, 1, 1.618, 1), +"update": 0, +"values": [Color(1, 0.993333, 0.8, 0), Color(2, 1.98431, 1.6, 0.156863), Color(2, 1.98431, 1.6, 0.156863), Color(1, 0.993333, 0.8, 0)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("ParticleEffects/SmokeParticles:emitting") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.9, 4.5), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("SFX/PowerballSFX:playing") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.333333), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} [sub_resource type="Animation" id="Animation_6c6mi"] length = 0.001 @@ -114,6 +326,54 @@ tracks/0/keys = { "update": 1, "values": [false] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("BallMesh/FireballPivot:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("BallMesh/FireballPivot/FireballScaleRoot/fireball/Fireball:surface_material_override/0:albedo_color") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(2, 1.98431, 1.6, 0.156863)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ParticleEffects/SmokeParticles:emitting") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("SFX/PowerballSFX:playing") +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="AnimationLibrary" id="AnimationLibrary_ospg0"] _data = { @@ -124,10 +384,33 @@ _data = { [node name="PowerBall" instance=ExtResource("1_14gld")] freeze_mode = 1 script = ExtResource("2_hy51e") +once_per_shot_ability = true [node name="BallMesh" parent="." index="0"] mesh = SubResource("SphereMesh_0b0i7") +[node name="FireballPivot" type="Node3D" parent="BallMesh" index="0"] +unique_name_in_owner = true +visible = false + +[node name="FireballScaleRoot" type="Node3D" parent="BallMesh/FireballPivot" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0) + +[node name="fireball" parent="BallMesh/FireballPivot/FireballScaleRoot" index="0" instance=ExtResource("5_i8vmm")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.2, 0) + +[node name="Fireball" parent="BallMesh/FireballPivot/FireballScaleRoot/fireball" index="0"] +surface_material_override/0 = SubResource("StandardMaterial3D_aqmuo") + +[node name="FireballAnimation" type="AnimationPlayer" parent="BallMesh/FireballPivot" index="1"] +libraries = { +"": SubResource("AnimationLibrary_hmunj") +} +autoplay = "flicker" + +[node name="PowerballSFX" type="AudioStreamPlayer3D" parent="SFX" index="3"] +stream = SubResource("AudioStreamRandomizer_jvq4v") + [node name="PowerParticles" type="GPUParticles3D" parent="ParticleEffects" index="1"] emitting = false amount = 32 @@ -139,8 +422,20 @@ trail_lifetime = 0.4 process_material = SubResource("ParticleProcessMaterial_k07ua") draw_pass_1 = SubResource("RibbonTrailMesh_elifs") +[node name="SmokeParticles" type="GPUParticles3D" parent="ParticleEffects" index="2"] +emitting = false +amount = 128 +lifetime = 4.0 +randomness = 0.5 +fixed_fps = 60 +visibility_aabb = AABB(-50, -50, -50, 100, 100, 100) +process_material = SubResource("ParticleProcessMaterial_6n6nm") +draw_pass_1 = SubResource("ArrayMesh_x6ojl") + [node name="PowerballAnimation" type="AnimationPlayer" parent="." index="7"] unique_name_in_owner = true libraries = { "": SubResource("AnimationLibrary_ospg0") } + +[editable path="BallMesh/FireballPivot/FireballScaleRoot/fireball"] diff --git a/src/world/world.tscn b/src/world/world.tscn index 3b9ba64..8cb7233 100644 --- a/src/world/world.tscn +++ b/src/world/world.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://cwnwcd8kushl3"] +[gd_scene load_steps=8 format=3 uid="uid://cwnwcd8kushl3"] [ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"] [ext_resource type="PackedScene" uid="uid://bm2o3mex10v11" path="res://levels/debug_level/debug_level.tscn" id="2_0xu5a"] @@ -6,22 +6,10 @@ [ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"] [ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"] [ext_resource type="Script" path="res://src/world/play_manager/round_robin_manager.gd" id="5_h6mje"] -[ext_resource type="Resource" uid="uid://c1pnqsddvey3m" path="res://src/equipment/clubs/drivers/debug_driver.tres" id="5_u5ok3"] - -[sub_resource type="Resource" id="Resource_njyo4"] -script = ExtResource("2_e743i") -life = 4.0 -name = "Gfolfer2" -color = Color(1, 0.439216, 0.439216, 1) -driver = ExtResource("5_u5ok3") -_balls = { -1: -1, -2: -1 -} [sub_resource type="Resource" id="Resource_rdjhi"] script = ExtResource("5_h6mje") -players = Array[ExtResource("2_e743i")]([ExtResource("3_pyw81"), SubResource("Resource_njyo4")]) +players = Array[ExtResource("2_e743i")]([ExtResource("3_pyw81")]) [node name="World" type="Node" groups=["WorldGroup"]] script = ExtResource("1_ybjyx")