Initial project sync

This commit is contained in:
wxm
2026-07-06 22:55:14 -07:00
commit 8cca00d0da
1066 changed files with 58585 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
class_name ActionData
extends Resource
@export var id: StringName
@export var display_name: String
@export var input_pattern: Array[StringName] = []
@export var base_cost := 0.0
@export var base_reward := 0.0
@export var damage_mult := 1.0
@export var move_mult_x := 0.0
@export var move_mult_y := 0.0
@export var knockback_mult_x := 0.0
@export var knockback_mult_y := 0.0
@export var hit_type: StringName = &"melee"
@export var range := 0.0
@export var target_type: StringName = &"single"
@export var armor_level := 0
@export var clear_window := true
@export var can_chain := false
@export var special: StringName = &""
@export var startup_beats := 0.25
@export var active_beats := 0.25
@export var recovery_beats := 0.5
@export_range(0.0, 1.0, 0.05) var cancel_from := 0.5
@export var allowed_ground_states: Array[StringName] = [&"Grounded", &"Airborne"]
@export var allowed_action_phases: Array[StringName] = [&"Neutral"]
@export var action_tags: Array[StringName] = []
@export var defense_tags: Array[StringName] = []
@export var cancel_into_tags: Array[StringName] = []
@export var on_hit_effects: Array[Resource] = []
@export var animation: StringName
var action_beats: float:
get:
return startup_beats + active_beats + recovery_beats
+1
View File
@@ -0,0 +1 @@
uid://cooudhoob8dn4
+23
View File
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_a12lf"]
[resource]
script = ExtResource("1_a12lf")
id = &"air_attack_left"
display_name = "Air Attack Left"
input_pattern = Array[StringName]([&"A"])
base_reward = 10.0
damage_mult = 1.3
move_mult_x = -5.8
move_mult_y = -1.6
hit_type = &"melee"
range = 75.0
clear_window = true
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Airborne"])
action_tags = Array[StringName]([&"basic", &"air", &"left"])
animation = &"atk_air"
+23
View File
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_a12rh"]
[resource]
script = ExtResource("1_a12rh")
id = &"air_attack_right"
display_name = "Air Attack Right"
input_pattern = Array[StringName]([&"D"])
base_reward = 10.0
damage_mult = 1.3
move_mult_x = 5.8
move_mult_y = -1.6
hit_type = &"melee"
range = 75.0
clear_window = true
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Airborne"])
action_tags = Array[StringName]([&"basic", &"air", &"right"])
animation = &"atk_air"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_block_start"]
[resource]
script = ExtResource("1_block_start")
id = &"block_start"
display_name = "Block Start"
input_pattern = Array[StringName]([&"S"])
damage_mult = 0.0
move_mult_x = 0.0
move_mult_y = 0.0
hit_type = &"defense"
clear_window = false
startup_beats = 0.1
active_beats = 0.5
recovery_beats = 0.2
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"block", &"down"])
defense_tags = Array[StringName]([&"parry"])
animation = &"block_start"
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_c5flf"]
[resource]
script = ExtResource("1_c5flf")
id = &"combo_finisher_left"
display_name = "Combo Finisher Left"
input_pattern = Array[StringName]([&"A", &"A", &"SP"])
base_cost = 30.0
knockback_mult_x = 2.0
damage_mult = 2.2
move_mult_x = -1.3
hit_type = &"melee"
range = 95.0
clear_window = true
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.75
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"skill", &"left"])
animation = &"combo_finisher"
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_c5frh"]
[resource]
script = ExtResource("1_c5frh")
id = &"combo_finisher_right"
display_name = "Combo Finisher Right"
input_pattern = Array[StringName]([&"D", &"D", &"SP"])
base_cost = 30.0
knockback_mult_x = 2.0
damage_mult = 2.2
move_mult_x = 1.3
hit_type = &"melee"
range = 95.0
clear_window = true
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.75
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"skill", &"right"])
animation = &"combo_finisher"
+23
View File
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_h5slf"]
[resource]
script = ExtResource("1_h5slf")
id = &"dash_slash_left"
display_name = "Dash Slash Left"
input_pattern = Array[StringName]([&"A", &"SP"])
base_cost = 20.0
knockback_mult_x = 1.5
damage_mult = 1.6
move_mult_x = -2.6
hit_type = &"melee"
range = 95.0
clear_window = true
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.25
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"skill", &"left", &"dash_through"])
animation = &"dash_slash"
+23
View File
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_d5srh"]
[resource]
script = ExtResource("1_d5srh")
id = &"dash_slash_right"
display_name = "Dash Slash Right"
input_pattern = Array[StringName]([&"D", &"SP"])
base_cost = 20.0
knockback_mult_x = 1.5
damage_mult = 1.6
move_mult_x = 2.6
hit_type = &"melee"
range = 95.0
clear_window = true
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.25
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"skill", &"right", &"dash_through"])
animation = &"dash_slash"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_2way_shoot"
display_name = "Boss 2-Way Shoot"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.45
knockback_mult_x = 0.5
knockback_mult_y = 0.0
hit_type = &"projectile"
armor_level = 1
startup_beats = 0.75
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"ranged"])
animation = &"boss_2way_shoot"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_combo_1"
display_name = "Boss Combo 1"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 1.6
knockback_mult_x = 0.4
knockback_mult_y = 0.0
hit_type = &"melee"
range = 70.0
startup_beats = 0.75
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"melee"])
animation = &"boss_ground_combo_1"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_combo_2"
display_name = "Boss Combo 2"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 1.8
knockback_mult_x = 0.5
knockback_mult_y = 0.0
hit_type = &"melee"
range = 76.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.75
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"melee"])
animation = &"boss_ground_combo_2"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_combo_3"
display_name = "Boss Combo 3"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 2.2
knockback_mult_x = 1.2
knockback_mult_y = 0.2
hit_type = &"melee"
range = 96.0
armor_level = 1
startup_beats = 0.75
active_beats = 0.5
recovery_beats = 1.0
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"melee", &"heavy"])
animation = &"boss_ground_combo_3"
+21
View File
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_dash"
display_name = "Boss Dash"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.0
move_mult_x = 2.5
knockback_mult_x = 0.0
knockback_mult_y = 0.0
hit_type = &"movement"
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.25
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"move"])
animation = &"boss_dash"
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_lunging_stab"
display_name = "Boss Lunging Stab"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 3.0
move_mult_x = 2.0
knockback_mult_x = 1.6
knockback_mult_y = 0.3
hit_type = &"melee"
range = 130.0
armor_level = 2
startup_beats = 2.0
active_beats = 0.5
recovery_beats = 1.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"melee", &"heavy", &"action"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"boss_lunging_stab"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_retreat_dash"
display_name = "Boss Retreat Dash"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.0
move_mult_x = 1.4
knockback_mult_x = 0.0
knockback_mult_y = 0.0
hit_type = &"movement"
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.25
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"move", &"retreat"])
animation = &"boss_dash"
@@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_shoot_1"
display_name = "Boss Shoot 1"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.4
knockback_mult_x = 0.3
knockback_mult_y = 0.0
hit_type = &"projectile"
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.25
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"ranged"])
animation = &"boss_shoot_1"
@@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"boss_shoot_2"
display_name = "Boss Shoot 2"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.4
knockback_mult_x = 0.3
knockback_mult_y = 0.0
hit_type = &"projectile"
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.25
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"boss", &"ranged"])
animation = &"boss_shoot_2"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_jin_zhan_1_attack"
display_name = "Jin Zhan 1 Slash"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.55
knockback_mult_x = 2.4
knockback_mult_y = 0.0
hit_type = &"melee"
range = 130.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"jin_zhan", &"melee"])
animation = &"jin_zhan_1_attack"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_jin_zhan_3_attack_1"
display_name = "Jin Zhan 3 Slash 1"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.5
knockback_mult_x = 2.4
knockback_mult_y = 0.0
hit_type = &"melee"
range = 130.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"jin_zhan", &"melee"])
animation = &"jin_zhan_3_attack_1"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_jin_zhan_3_attack_2"
display_name = "Jin Zhan 3 Slash 2"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.6
knockback_mult_x = 2.4
knockback_mult_y = 0.0
hit_type = &"melee"
range = 130.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"jin_zhan", &"melee"])
animation = &"jin_zhan_3_attack_2"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_jin_zhan_3_attack_3"
display_name = "Jin Zhan 3 Slash 3"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.75
knockback_mult_x = 2.4
knockback_mult_y = 0.0
hit_type = &"melee"
range = 130.0
startup_beats = 0.75
active_beats = 0.25
recovery_beats = 0.75
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"jin_zhan", &"melee"])
animation = &"jin_zhan_3_attack_3"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_yuan_cheng_1_attack_1"
display_name = "Yuan Cheng 1 Shot 1"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.45
knockback_mult_x = 0.25
knockback_mult_y = 0.0
hit_type = &"projectile"
range = 520.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"yuan_cheng", &"ranged"])
animation = &"yuan_cheng_1_attack_1"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_yuan_cheng_1_attack_2"
display_name = "Yuan Cheng 1 Shot 2"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.55
knockback_mult_x = 0.3
knockback_mult_y = 0.0
hit_type = &"projectile"
range = 540.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"yuan_cheng", &"ranged"])
animation = &"yuan_cheng_1_attack_2"
@@ -0,0 +1,21 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_action"]
[resource]
script = ExtResource("1_action")
id = &"minion_yuan_cheng_2_attack"
display_name = "Yuan Cheng 2 Shot"
input_pattern = Array[StringName]([])
base_reward = 0.0
damage_mult = 0.65
knockback_mult_x = 0.35
knockback_mult_y = 0.0
hit_type = &"projectile"
range = 560.0
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"enemy", &"minion", &"yuan_cheng", &"ranged"])
animation = &"yuan_cheng_2_attack"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_f3x8p"]
[resource]
script = ExtResource("1_f3x8p")
id = &"ground_attack_left_1"
display_name = "Ground Attack Left 1"
input_pattern = Array[StringName]([&"A"])
base_reward = 10.0
damage_mult = 1.0
move_mult_x = -1.0
hit_type = &"melee"
range = 70.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"left"])
animation = &"atk_ground_1"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_rx60x"]
[resource]
script = ExtResource("1_rx60x")
id = &"ground_attack_left_2"
display_name = "Ground Attack Left 2"
input_pattern = Array[StringName]([&"A", &"A"])
base_reward = 12.0
damage_mult = 1.2
move_mult_x = -1.1
hit_type = &"melee"
range = 70.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"left"])
animation = &"atk_ground_2"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_9l3la"]
[resource]
script = ExtResource("1_9l3la")
id = &"ground_attack_left_3"
display_name = "Ground Attack Left 3"
input_pattern = Array[StringName]([&"A", &"A", &"A"])
base_reward = 15.0
damage_mult = 1.5
move_mult_x = -1.2
hit_type = &"melee"
range = 80.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.75
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"left"])
animation = &"atk_ground_3"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_r05pk"]
[resource]
script = ExtResource("1_r05pk")
id = &"ground_attack_right_1"
display_name = "Ground Attack Right 1"
input_pattern = Array[StringName]([&"D"])
base_reward = 10.0
damage_mult = 1.0
move_mult_x = 1.0
hit_type = &"melee"
range = 70.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"right"])
animation = &"atk_ground_1"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_o2w5j"]
[resource]
script = ExtResource("1_o2w5j")
id = &"ground_attack_right_2"
display_name = "Ground Attack Right 2"
input_pattern = Array[StringName]([&"D", &"D"])
base_reward = 12.0
damage_mult = 1.2
move_mult_x = 1.1
hit_type = &"melee"
range = 70.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"right"])
animation = &"atk_ground_2"
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_t3wrd"]
[resource]
script = ExtResource("1_t3wrd")
id = &"ground_attack_right_3"
display_name = "Ground Attack Right 3"
input_pattern = Array[StringName]([&"D", &"D", &"D"])
base_reward = 15.0
damage_mult = 1.5
move_mult_x = 1.2
hit_type = &"melee"
range = 80.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.75
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"right"])
animation = &"atk_ground_3"
+24
View File
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_g6slf"]
[resource]
script = ExtResource("1_g6slf")
id = &"ground_smash_left"
display_name = "Ground Smash Left"
input_pattern = Array[StringName]([&"A", &"A", &"A", &"SP"])
base_cost = 40.0
knockback_mult_x = 2.2
damage_mult = 2.8
move_mult_x = -0.8
knockback_mult_y = 1.8
hit_type = &"melee"
range = 110.0
clear_window = true
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 1.0
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"skill", &"left", &"knockup"])
animation = &"ground_smash"
+24
View File
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_g6srh"]
[resource]
script = ExtResource("1_g6srh")
id = &"ground_smash_right"
display_name = "Ground Smash Right"
input_pattern = Array[StringName]([&"D", &"D", &"D", &"SP"])
base_cost = 40.0
knockback_mult_x = 2.2
damage_mult = 2.8
move_mult_x = 0.8
knockback_mult_y = 1.8
hit_type = &"melee"
range = 110.0
clear_window = true
startup_beats = 0.5
active_beats = 0.25
recovery_beats = 1.0
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"skill", &"right", &"knockup"])
animation = &"ground_smash"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_xjy11"]
[resource]
script = ExtResource("1_xjy11")
id = &"jian_yu_left_lv1"
display_name = "Jian Yu Left Lv1"
damage_mult = 1.8
move_mult_x = 0.0
base_cost = 20.0
knockback_mult_x = 0.8
knockback_mult_y = 0.6
range = 280.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"left"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"blade_rain_cast"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_ytpcs"]
[resource]
script = ExtResource("1_ytpcs")
id = &"jian_yu_left_lv2"
display_name = "Jian Yu Left Lv2"
damage_mult = 2.8
move_mult_x = 0.0
base_cost = 35.0
knockback_mult_x = 0.8
knockback_mult_y = 0.6
range = 280.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"left"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"blade_rain_cast"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_95us2"]
[resource]
script = ExtResource("1_95us2")
id = &"jian_yu_left_lv3"
display_name = "Jian Yu Left Lv3"
damage_mult = 4.2
move_mult_x = 0.0
base_cost = 50.0
knockback_mult_x = 0.8
knockback_mult_y = 0.6
range = 280.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"left"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"blade_rain_cast"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_hlh5a"]
[resource]
script = ExtResource("1_hlh5a")
id = &"jian_yu_right_lv1"
display_name = "Jian Yu Right Lv1"
damage_mult = 1.8
move_mult_x = 0.0
base_cost = 20.0
knockback_mult_x = 0.8
knockback_mult_y = 0.6
range = 280.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"right"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"blade_rain_cast"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_6sg6r"]
[resource]
script = ExtResource("1_6sg6r")
id = &"jian_yu_right_lv2"
display_name = "Jian Yu Right Lv2"
damage_mult = 2.8
move_mult_x = 0.0
base_cost = 35.0
knockback_mult_x = 0.8
knockback_mult_y = 0.6
range = 280.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"right"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"blade_rain_cast"
+22
View File
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_v06qg"]
[resource]
script = ExtResource("1_v06qg")
id = &"jian_yu_right_lv3"
display_name = "Jian Yu Right Lv3"
damage_mult = 4.2
move_mult_x = 0.0
base_cost = 50.0
knockback_mult_x = 0.8
knockback_mult_y = 0.6
range = 280.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"right"])
defense_tags = Array[StringName]([&"super_armor"])
animation = &"blade_rain_cast"
+24
View File
@@ -0,0 +1,24 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_2smdg"]
[resource]
script = ExtResource("1_2smdg")
id = &"launcher_up"
display_name = "Launcher Up"
input_pattern = Array[StringName]([&"W"])
base_reward = 12.0
damage_mult = 1.2
move_mult_x = 0.6
move_mult_y = 1.8
knockback_mult_y = 1.8
hit_type = &"melee"
range = 60.0
clear_window = false
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Grounded"])
action_tags = Array[StringName]([&"basic", &"launcher", &"knockup"])
animation = &"rising_slash"
+23
View File
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_p13ds"]
[resource]
script = ExtResource("1_p13ds")
id = &"plunging_strike"
display_name = "Plunging Strike"
input_pattern = Array[StringName]([&"S"])
base_reward = 15.0
damage_mult = 1.8
move_mult_y = -2.6
knockback_mult_y = 1.4
hit_type = &"melee"
range = 85.0
clear_window = true
startup_beats = 0.25
active_beats = 0.5
recovery_beats = 0.5
cancel_from = 0.5
allowed_ground_states = Array[StringName]([&"Airborne"])
action_tags = Array[StringName]([&"basic", &"air", &"down", &"knockup"])
animation = &"plunge_start"
+20
View File
@@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_b1z3o"]
[resource]
script = ExtResource("1_b1z3o")
id = &"zhan_bo_lv1"
display_name = "Zhan Bo Lv1"
damage_mult = 1.2
base_cost = 15.0
knockback_mult_x = 1.0
hit_type = &"projectile"
range = 380.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"projectile"])
animation = &"blade_wave_cast"
+20
View File
@@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_3aixl"]
[resource]
script = ExtResource("1_3aixl")
id = &"zhan_bo_lv2"
display_name = "Zhan Bo Lv2"
damage_mult = 2.0
base_cost = 25.0
knockback_mult_x = 1.3
hit_type = &"projectile"
range = 460.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"projectile"])
animation = &"blade_wave_cast"
+20
View File
@@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="ActionData" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/action_data.gd" id="1_ig9pq"]
[resource]
script = ExtResource("1_ig9pq")
id = &"zhan_bo_lv3"
display_name = "Zhan Bo Lv3"
damage_mult = 3.2
base_cost = 40.0
knockback_mult_x = 1.6
hit_type = &"projectile"
range = 540.0
special = &"charge_cast"
startup_beats = 0.25
active_beats = 0.25
recovery_beats = 0.5
allowed_action_phases = Array[StringName]([&"Charging"])
action_tags = Array[StringName]([&"charge", &"projectile"])
animation = &"blade_wave_cast"
+28
View File
@@ -0,0 +1,28 @@
class_name BeatChart
extends Resource
@export var chart_id: StringName = &""
@export var total_beats := 0
@export var tracks: Array = []
@export var initial_time_phase: StringName = &"past"
func all_events() -> Array:
var result: Array = []
for track in tracks:
if not track is Resource:
continue
for event in track.call("sorted_events"):
result.append(event)
result.sort_custom(func(a: Resource, b: Resource) -> bool:
var a_position := float(a.call("beat_position"))
var b_position := float(b.call("beat_position"))
if is_equal_approx(a_position, b_position):
return str(a.get("event_type")) < str(b.get("event_type"))
return a_position < b_position
)
return result
func is_empty() -> bool:
return all_events().is_empty()
+1
View File
@@ -0,0 +1 @@
uid://b0jn7bu4w1co7
+34
View File
@@ -0,0 +1,34 @@
class_name ChartEvent
extends Resource
@export var event_id: StringName = &""
@export var beat_index := 0
@export var subdivision := 0
@export var subdivisions_per_beat := 1
@export var event_type: StringName = &""
@export var target_id: StringName = &""
@export var action_id: StringName = &""
@export var payload: Dictionary = {}
@export var lead_beats := 1.0
@export var time_phase_mask: StringName = &"both"
func matches_time_phase(time_phase: StringName) -> bool:
if time_phase_mask.is_empty() or time_phase_mask == &"both":
return true
return time_phase_mask == time_phase
func beat_position() -> float:
var safe_subdivisions := maxi(1, subdivisions_per_beat)
return float(beat_index) + float(subdivision) / float(safe_subdivisions)
func time_seconds(beat_time: float) -> float:
return beat_position() * maxf(0.001, beat_time)
func key() -> StringName:
if not event_id.is_empty():
return event_id
return StringName("%s:%s:%d:%d" % [event_type, target_id, beat_index, subdivision])
+1
View File
@@ -0,0 +1 @@
uid://bsbmwl7n6uil5
+27
View File
@@ -0,0 +1,27 @@
class_name ChartTrack
extends Resource
@export var track_id: StringName = &""
@export var track_type: StringName = &""
@export var events: Array = []
@export var time_phase_mask: StringName = &"both"
func sorted_events() -> Array:
var result: Array = []
for event in events:
if event is Resource:
_apply_track_time_phase_mask(event)
result.append(event)
result.sort_custom(func(a: Resource, b: Resource) -> bool:
return float(a.call("beat_position")) < float(b.call("beat_position"))
)
return result
func _apply_track_time_phase_mask(event: Resource) -> void:
if time_phase_mask.is_empty() or time_phase_mask == &"both":
return
var event_mask := StringName(str(event.get("time_phase_mask")))
if event_mask.is_empty() or event_mask == &"both":
event.set("time_phase_mask", time_phase_mask)
+1
View File
@@ -0,0 +1 @@
uid://t7etuk7uw3ns
+105
View File
@@ -0,0 +1,105 @@
[gd_resource type="Resource" script_class="BeatChart" load_steps=15 format=3]
[ext_resource type="Script" path="res://resources/chart_event.gd" id="1_event"]
[ext_resource type="Script" path="res://resources/chart_track.gd" id="2_track"]
[ext_resource type="Script" path="res://resources/beat_chart.gd" id="3_chart"]
[sub_resource type="Resource" id="ChartEvent_melee_1"]
script = ExtResource("1_event")
event_id = &"stage7_combo_1"
beat_index = 2
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_1"
lead_beats = 1.0
[sub_resource type="Resource" id="ChartEvent_melee_2"]
script = ExtResource("1_event")
event_id = &"stage7_combo_2"
beat_index = 4
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_2"
lead_beats = 1.0
[sub_resource type="Resource" id="ChartEvent_melee_3"]
script = ExtResource("1_event")
event_id = &"stage7_combo_3"
beat_index = 6
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_3"
lead_beats = 1.0
[sub_resource type="Resource" id="ChartEvent_special_stab"]
script = ExtResource("1_event")
event_id = &"stage7_lunging_stab"
beat_index = 10
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_lunging_stab"
lead_beats = 2.0
time_phase_mask = &"past"
[sub_resource type="Resource" id="ChartEvent_ranged_1"]
script = ExtResource("1_event")
event_id = &"stage7_shoot_1"
beat_index = 16
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_1"
lead_beats = 1.0
[sub_resource type="Resource" id="ChartEvent_ranged_2"]
script = ExtResource("1_event")
event_id = &"stage7_shoot_2"
beat_index = 18
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_2"
lead_beats = 1.0
[sub_resource type="Resource" id="ChartEvent_special_dash"]
script = ExtResource("1_event")
event_id = &"stage7_dash"
beat_index = 20
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_dash"
lead_beats = 1.0
time_phase_mask = &"past"
[sub_resource type="Resource" id="ChartEvent_ranged_2way"]
script = ExtResource("1_event")
event_id = &"stage7_2way_shoot"
beat_index = 22
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_2way_shoot"
lead_beats = 1.0
[sub_resource type="Resource" id="ChartTrack_melee"]
script = ExtResource("2_track")
track_id = &"track_boss_melee"
track_type = &"boss"
time_phase_mask = &"past"
events = Array[Resource]([SubResource("ChartEvent_melee_1"), SubResource("ChartEvent_melee_2"), SubResource("ChartEvent_melee_3")])
[sub_resource type="Resource" id="ChartTrack_ranged"]
script = ExtResource("2_track")
track_id = &"track_boss_ranged"
track_type = &"boss"
time_phase_mask = &"future"
events = Array[Resource]([SubResource("ChartEvent_ranged_1"), SubResource("ChartEvent_ranged_2"), SubResource("ChartEvent_ranged_2way")])
[sub_resource type="Resource" id="ChartTrack_special"]
script = ExtResource("2_track")
track_id = &"track_boss_special"
track_type = &"boss"
events = Array[Resource]([SubResource("ChartEvent_special_stab"), SubResource("ChartEvent_special_dash")])
[resource]
script = ExtResource("3_chart")
chart_id = &"stage7_boss_opening"
total_beats = 32
tracks = Array[Resource]([SubResource("ChartTrack_melee"), SubResource("ChartTrack_ranged"), SubResource("ChartTrack_special")])
+195
View File
@@ -0,0 +1,195 @@
[gd_resource type="Resource" script_class="BeatChart" format=3 uid="uid://3xrcwnvo4ih3"]
[ext_resource type="Script" uid="uid://bsbmwl7n6uil5" path="res://resources/chart_event.gd" id="1_event"]
[ext_resource type="Script" uid="uid://t7etuk7uw3ns" path="res://resources/chart_track.gd" id="2_track"]
[ext_resource type="Script" uid="uid://b0jn7bu4w1co7" path="res://resources/beat_chart.gd" id="3_chart"]
[sub_resource type="Resource" id="ChartEvent_melee_1"]
script = ExtResource("1_event")
event_id = &"stage9_m1_combo_1"
beat_index = 2
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_1"
[sub_resource type="Resource" id="ChartEvent_melee_2"]
script = ExtResource("1_event")
event_id = &"stage9_m1_combo_2"
beat_index = 4
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_2"
[sub_resource type="Resource" id="ChartEvent_melee_3"]
script = ExtResource("1_event")
event_id = &"stage9_m1_combo_3"
beat_index = 6
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_3"
[sub_resource type="Resource" id="ChartEvent_melee_dash_in"]
script = ExtResource("1_event")
event_id = &"stage9_m2_dash_in"
beat_index = 24
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_dash"
[sub_resource type="Resource" id="ChartEvent_melee_4"]
script = ExtResource("1_event")
event_id = &"stage9_m2_combo_1"
beat_index = 26
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_1"
[sub_resource type="Resource" id="ChartEvent_melee_5"]
script = ExtResource("1_event")
event_id = &"stage9_m2_combo_2"
beat_index = 28
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_2"
[sub_resource type="Resource" id="ChartEvent_melee_6"]
script = ExtResource("1_event")
event_id = &"stage9_m3_combo_3"
beat_index = 50
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_combo_3"
[sub_resource type="Resource" id="ChartTrack_melee"]
script = ExtResource("2_track")
track_id = &"track_boss_melee"
track_type = &"boss"
events = [SubResource("ChartEvent_melee_1"), SubResource("ChartEvent_melee_2"), SubResource("ChartEvent_melee_3"), SubResource("ChartEvent_melee_dash_in"), SubResource("ChartEvent_melee_4"), SubResource("ChartEvent_melee_5"), SubResource("ChartEvent_melee_6")]
[sub_resource type="Resource" id="ChartEvent_ranged_1"]
script = ExtResource("1_event")
event_id = &"stage9_r1_shoot_1"
beat_index = 16
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_1"
[sub_resource type="Resource" id="ChartEvent_ranged_2"]
script = ExtResource("1_event")
event_id = &"stage9_r1_shoot_2"
beat_index = 18
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_2"
[sub_resource type="Resource" id="ChartEvent_ranged_retreat"]
script = ExtResource("1_event")
event_id = &"stage9_r1_retreat"
beat_index = 20
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_retreat_dash"
[sub_resource type="Resource" id="ChartEvent_ranged_2way"]
script = ExtResource("1_event")
event_id = &"stage9_r2_2way"
beat_index = 22
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_2way_shoot"
[sub_resource type="Resource" id="ChartEvent_ranged_3"]
script = ExtResource("1_event")
event_id = &"stage9_r2_shoot_1"
beat_index = 34
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_1"
[sub_resource type="Resource" id="ChartEvent_ranged_4"]
script = ExtResource("1_event")
event_id = &"stage9_r2_shoot_2"
beat_index = 36
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_2"
[sub_resource type="Resource" id="ChartEvent_ranged_5"]
script = ExtResource("1_event")
event_id = &"stage9_r3_shoot_1"
beat_index = 46
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_shoot_1"
[sub_resource type="Resource" id="ChartTrack_ranged"]
script = ExtResource("2_track")
track_id = &"track_boss_ranged"
track_type = &"boss"
events = [SubResource("ChartEvent_ranged_1"), SubResource("ChartEvent_ranged_2"), SubResource("ChartEvent_ranged_retreat"), SubResource("ChartEvent_ranged_2way"), SubResource("ChartEvent_ranged_3"), SubResource("ChartEvent_ranged_4"), SubResource("ChartEvent_ranged_5")]
[sub_resource type="Resource" id="ChartEvent_special_stab_1"]
script = ExtResource("1_event")
event_id = &"stage9_s1_lunging_stab"
beat_index = 10
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_lunging_stab"
lead_beats = 2.0
[sub_resource type="Resource" id="ChartEvent_special_stab_2"]
script = ExtResource("1_event")
event_id = &"stage9_s2_lunging_stab"
beat_index = 42
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_lunging_stab"
lead_beats = 2.0
[sub_resource type="Resource" id="ChartEvent_special_2way"]
script = ExtResource("1_event")
event_id = &"stage9_s3_2way"
beat_index = 54
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_2way_shoot"
[sub_resource type="Resource" id="ChartEvent_special_retreat"]
script = ExtResource("1_event")
event_id = &"stage9_s3_retreat"
beat_index = 58
event_type = &"enemy_action"
target_id = &"Boss"
action_id = &"boss_retreat_dash"
[sub_resource type="Resource" id="ChartTrack_special"]
script = ExtResource("2_track")
track_id = &"track_boss_special"
track_type = &"boss"
events = [SubResource("ChartEvent_special_stab_1"), SubResource("ChartEvent_special_stab_2"), SubResource("ChartEvent_special_2way"), SubResource("ChartEvent_special_retreat")]
[sub_resource type="Resource" id="ChartEvent_time_anchor_1"]
script = ExtResource("1_event")
event_id = &"stage9_ta_08"
beat_index = 8
event_type = &"time_anchor"
lead_beats = 2.0
[sub_resource type="Resource" id="ChartEvent_time_anchor_2"]
script = ExtResource("1_event")
event_id = &"stage9_ta_40"
beat_index = 40
event_type = &"time_anchor"
lead_beats = 2.0
[sub_resource type="Resource" id="ChartTrack_time_anchor"]
script = ExtResource("2_track")
track_id = &"track_time_anchor"
track_type = &"time_anchor"
events = [SubResource("ChartEvent_time_anchor_1"), SubResource("ChartEvent_time_anchor_2")]
[resource]
script = ExtResource("3_chart")
chart_id = &"stage9_boss_duel"
total_beats = 64
tracks = [SubResource("ChartTrack_melee"), SubResource("ChartTrack_ranged"), SubResource("ChartTrack_special"), SubResource("ChartTrack_time_anchor")]
@@ -0,0 +1,7 @@
class_name ActionRuleModifier
extends Resource
@export var blocked_action_tags: Array[StringName] = []
@export var allowed_action_tags: Array[StringName] = []
@export var allow_movement_while_charging := false
@export var block_movement := false
@@ -0,0 +1 @@
uid://cphgi446ov1i6
+7
View File
@@ -0,0 +1,7 @@
class_name DefenseModifier
extends Resource
@export var defense_state: StringName = &""
@export var damage_mult := 1.0
@export var interrupts := true
@export var required_attack_tags: Array[StringName] = []
@@ -0,0 +1 @@
uid://b10ssegsbqfn
+25
View File
@@ -0,0 +1,25 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=4 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/stat_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_burst_damage"]
script = ExtResource("2")
stat = &"damage_mult"
operation = "multiply"
value = 1.2
[sub_resource type="Resource" id="Resource_burst_cost"]
script = ExtResource("2")
stat = &"cost_mult"
operation = "multiply"
value = 0.0
[resource]
script = ExtResource("1")
id = &"effect_burst_power"
display_name = "Burst Power"
duration_type = &"beats"
duration = 16.0
max_stacks = 1
stat_modifiers = Array[Resource]([SubResource("Resource_burst_damage"), SubResource("Resource_burst_cost")])
+16
View File
@@ -0,0 +1,16 @@
class_name EffectDefinition
extends Resource
@export var id: StringName
@export var display_name: String
@export var duration_type: StringName = &"seconds"
@export var duration := 0.0
@export var max_stacks := 1
@export var stat_modifiers: Array[Resource] = []
@export var defense_modifiers: Array[Resource] = []
@export var action_rule_modifiers: Array[Resource] = []
@export var trigger_event: StringName = &""
@export var trigger_effects: Array[Resource] = []
@export var required_event_action_tags: Array[StringName] = []
@export var blocked_event_action_tags: Array[StringName] = []
@export var until_event: StringName = &""
@@ -0,0 +1 @@
uid://cvlmwyu6iqb8g
+16
View File
@@ -0,0 +1,16 @@
[gd_resource type="Resource" script_class="EffectDefinition" format=3 uid="uid://bop6tpmynvgqf"]
[ext_resource type="Script" uid="uid://cvlmwyu6iqb8g" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" uid="uid://brratisl42y1l" path="res://resources/effects/stat_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_haste_move"]
script = ExtResource("2")
stat = &"move_speed"
value = 1.25
[resource]
script = ExtResource("1")
id = &"effect_haste"
display_name = "Haste"
duration = 2.0
stat_modifiers = Array[Resource]([SubResource("Resource_haste_move")])
@@ -0,0 +1,19 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/defense_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_hurt_super_armor_defense"]
script = ExtResource("2")
defense_state = &"SuperArmor"
damage_mult = 1.0
interrupts = false
[resource]
script = ExtResource("1")
id = &"hurt_super_armor"
display_name = "Hurt Super Armor"
duration_type = &"seconds"
duration = 0.5
max_stacks = 1
defense_modifiers = Array[Resource]([SubResource("Resource_hurt_super_armor_defense")])
+92
View File
@@ -0,0 +1,92 @@
class_name EffectInstance
extends RefCounted
var definition: Resource
var remaining := 0.0
var stacks := 1
var source: Variant = &"-"
static func create(next_definition: Resource, next_source: Variant = &"-") -> RefCounted:
var script: Script = load("res://resources/effects/effect_instance.gd")
var instance: RefCounted = script.new()
instance.definition = next_definition
instance.remaining = float(next_definition.get("duration"))
if StringName(str(next_definition.get("duration_type"))) == &"until_event":
instance.remaining = 1.0
instance.source = next_source
return instance
func is_expired() -> bool:
return remaining <= 0.0 and StringName(str(definition.get("duration_type"))) != &"infinite"
func tick_time(delta: float) -> void:
var duration_type := StringName(str(definition.get("duration_type")))
if duration_type == &"seconds":
remaining -= delta
func tick_beats(beats: float) -> void:
var duration_type := StringName(str(definition.get("duration_type")))
if duration_type == &"beats":
remaining -= beats
func tick_event(event_name: StringName, context: Dictionary = {}) -> void:
if not matches_event_context(context):
return
var duration_type := StringName(str(definition.get("duration_type")))
if duration_type == &"actions" and event_name == &"on_action_start":
remaining -= 1.0
elif duration_type == &"hits" and event_name == &"on_hit":
remaining -= 1.0
elif duration_type == &"hurts" and event_name == &"on_hurt":
remaining -= 1.0
elif duration_type == &"measures" and event_name == &"on_measure_start":
remaining -= 1.0
elif duration_type == &"until_event" and event_name == StringName(str(definition.get("until_event"))):
remaining = 0.0
func matches_event_context(context: Dictionary = {}) -> bool:
var action_tags := _event_action_tags(context)
var required_tags := _string_name_array(definition.get("required_event_action_tags"))
if not required_tags.is_empty() and not _has_any(action_tags, required_tags):
return false
var blocked_tags := _string_name_array(definition.get("blocked_event_action_tags"))
if not blocked_tags.is_empty() and _has_any(action_tags, blocked_tags):
return false
return true
func _event_action_tags(context: Dictionary) -> Array[StringName]:
if context.has("action_tags"):
return _string_name_array(context["action_tags"])
var action: Resource = context.get("action", null) as Resource
if action != null:
return _string_name_array(action.get("action_tags"))
var result = context.get("result", {})
if result is Dictionary:
if result.has("action_tags"):
return _string_name_array(result["action_tags"])
var result_action: Resource = result.get("action", null) as Resource
if result_action != null:
return _string_name_array(result_action.get("action_tags"))
return []
func _string_name_array(value: Variant) -> Array[StringName]:
var result: Array[StringName] = []
if value is Array:
for item: Variant in value:
result.append(StringName(str(item)))
return result
func _has_any(values: Array[StringName], candidates: Array[StringName]) -> bool:
for value: StringName in values:
if candidates.has(value):
return true
return false
+1
View File
@@ -0,0 +1 @@
uid://bvqpc3oh47qdb
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Resource" path="res://resources/effects/effect_haste.tres" id="2"]
[resource]
script = ExtResource("1")
id = &"effect_on_landed_haste"
display_name = "On Landed Haste"
duration_type = &"infinite"
duration = 0.0
max_stacks = 1
trigger_event = &"on_landed"
trigger_effects = Array[Resource]([ExtResource("2")])
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Resource" path="res://resources/effects/effect_perfect_damage_buff.tres" id="2"]
[resource]
script = ExtResource("1")
id = &"effect_on_perfect_damage_reward"
display_name = "On Perfect Damage Reward"
duration_type = &"infinite"
duration = 0.0
max_stacks = 1
trigger_event = &"on_perfect"
trigger_effects = Array[Resource]([ExtResource("2")])
@@ -0,0 +1,17 @@
[gd_resource type="Resource" script_class="EffectDefinition" format=3 uid="uid://ccy324lau1u7c"]
[ext_resource type="Script" uid="uid://cvlmwyu6iqb8g" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" uid="uid://brratisl42y1l" path="res://resources/effects/stat_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_perfect_damage"]
script = ExtResource("2")
stat = &"damage_mult"
value = 1.25
[resource]
script = ExtResource("1")
id = &"effect_perfect_damage_buff"
display_name = "Perfect Damage Buff"
duration_type = &"hits"
duration = 1.0
stat_modifiers = Array[Resource]([SubResource("Resource_perfect_damage")])
+17
View File
@@ -0,0 +1,17 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/action_rule_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_root_rule"]
script = ExtResource("2")
block_movement = true
[resource]
script = ExtResource("1")
id = &"effect_root"
display_name = "Root"
duration_type = &"seconds"
duration = 1.5
max_stacks = 1
action_rule_modifiers = Array[Resource]([SubResource("Resource_root_rule")])
+17
View File
@@ -0,0 +1,17 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/action_rule_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_silence_rule"]
script = ExtResource("2")
blocked_action_tags = Array[StringName]([&"skill"])
[resource]
script = ExtResource("1")
id = &"effect_silence"
display_name = "Silence"
duration_type = &"seconds"
duration = 2.0
max_stacks = 1
action_rule_modifiers = Array[Resource]([SubResource("Resource_silence_rule")])
+19
View File
@@ -0,0 +1,19 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/stat_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_slow_move"]
script = ExtResource("2")
stat = &"move_speed"
operation = "multiply"
value = 0.5
[resource]
script = ExtResource("1")
id = &"effect_slow"
display_name = "Slow"
duration_type = &"seconds"
duration = 2.0
max_stacks = 1
stat_modifiers = Array[Resource]([SubResource("Resource_slow_move")])
@@ -0,0 +1,19 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/defense_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_invincible_defense"]
script = ExtResource("2")
defense_state = &"Invincible"
damage_mult = 1.0
interrupts = false
[resource]
script = ExtResource("1")
id = &"effect_temporary_invincible"
display_name = "Temporary Invincible"
duration_type = &"seconds"
duration = 0.5
max_stacks = 1
defense_modifiers = Array[Resource]([SubResource("Resource_invincible_defense")])
@@ -0,0 +1,19 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/defense_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_super_armor_defense"]
script = ExtResource("2")
defense_state = &"SuperArmor"
damage_mult = 1.0
interrupts = false
[resource]
script = ExtResource("1")
id = &"effect_temporary_super_armor"
display_name = "Temporary Super Armor"
duration_type = &"seconds"
duration = 1.0
max_stacks = 1
defense_modifiers = Array[Resource]([SubResource("Resource_super_armor_defense")])
+6
View File
@@ -0,0 +1,6 @@
class_name StatModifier
extends Resource
@export var stat: StringName
@export_enum("add", "multiply") var operation := "multiply"
@export var value := 1.0
+1
View File
@@ -0,0 +1 @@
uid://brratisl42y1l
@@ -0,0 +1,19 @@
[gd_resource type="Resource" script_class="EffectDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" path="res://resources/effects/stat_modifier.gd" id="2"]
[sub_resource type="Resource" id="Resource_attack_buff_damage"]
script = ExtResource("2")
stat = &"damage_mult"
operation = "add"
value = 0.5
[resource]
script = ExtResource("1")
id = &"time_anchor_attack_buff"
display_name = "Time Anchor Attack Buff"
duration_type = &"infinite"
duration = 0.0
max_stacks = 7
stat_modifiers = Array[Resource]([SubResource("Resource_attack_buff_damage")])
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="EffectDefinition" format=3 uid="uid://djg52uwagbdat"]
[ext_resource type="Script" uid="uid://cvlmwyu6iqb8g" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" uid="uid://brratisl42y1l" path="res://resources/effects/stat_modifier.gd" id="2"]
[ext_resource type="Script" uid="uid://b10ssegsbqfn" path="res://resources/effects/defense_modifier.gd" id="3"]
[sub_resource type="Resource" id="Resource_taken_down"]
script = ExtResource("3")
damage_mult = 0.25
[sub_resource type="Resource" id="Resource_damage_up"]
script = ExtResource("2")
stat = &"damage_mult"
value = 1.4
[resource]
script = ExtResource("1")
id = &"effect_tp_future_enemy_strong"
display_name = "Future Phase Strong"
duration_type = &"infinite"
stat_modifiers = Array[Resource]([SubResource("Resource_damage_up")])
defense_modifiers = Array[Resource]([SubResource("Resource_taken_down")])
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="EffectDefinition" format=3 uid="uid://dkg4j1an7jclo"]
[ext_resource type="Script" uid="uid://cvlmwyu6iqb8g" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" uid="uid://brratisl42y1l" path="res://resources/effects/stat_modifier.gd" id="2"]
[ext_resource type="Script" uid="uid://b10ssegsbqfn" path="res://resources/effects/defense_modifier.gd" id="3"]
[sub_resource type="Resource" id="Resource_taken_up"]
script = ExtResource("3")
damage_mult = 2.5
[sub_resource type="Resource" id="Resource_damage_down"]
script = ExtResource("2")
stat = &"damage_mult"
value = 0.7
[resource]
script = ExtResource("1")
id = &"effect_tp_future_enemy_weak"
display_name = "Future-Strong Enemy Weakened"
duration_type = &"infinite"
stat_modifiers = Array[Resource]([SubResource("Resource_damage_down")])
defense_modifiers = Array[Resource]([SubResource("Resource_taken_up")])
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="EffectDefinition" format=3 uid="uid://e1bbntw3dfsx"]
[ext_resource type="Script" uid="uid://cvlmwyu6iqb8g" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" uid="uid://brratisl42y1l" path="res://resources/effects/stat_modifier.gd" id="2"]
[ext_resource type="Script" uid="uid://b10ssegsbqfn" path="res://resources/effects/defense_modifier.gd" id="3"]
[sub_resource type="Resource" id="Resource_taken_down"]
script = ExtResource("3")
damage_mult = 0.25
[sub_resource type="Resource" id="Resource_damage_up"]
script = ExtResource("2")
stat = &"damage_mult"
value = 1.4
[resource]
script = ExtResource("1")
id = &"effect_tp_past_enemy_strong"
display_name = "Past Phase Strong"
duration_type = &"infinite"
stat_modifiers = Array[Resource]([SubResource("Resource_damage_up")])
defense_modifiers = Array[Resource]([SubResource("Resource_taken_down")])
@@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="EffectDefinition" format=3 uid="uid://bougox245ioo"]
[ext_resource type="Script" uid="uid://cvlmwyu6iqb8g" path="res://resources/effects/effect_definition.gd" id="1"]
[ext_resource type="Script" uid="uid://brratisl42y1l" path="res://resources/effects/stat_modifier.gd" id="2"]
[ext_resource type="Script" uid="uid://b10ssegsbqfn" path="res://resources/effects/defense_modifier.gd" id="3"]
[sub_resource type="Resource" id="Resource_taken_up"]
script = ExtResource("3")
damage_mult = 2.5
[sub_resource type="Resource" id="Resource_damage_down"]
script = ExtResource("2")
stat = &"damage_mult"
value = 0.7
[resource]
script = ExtResource("1")
id = &"effect_tp_past_enemy_weak"
display_name = "Past-Strong Enemy Weakened"
duration_type = &"infinite"
stat_modifiers = Array[Resource]([SubResource("Resource_damage_down")])
defense_modifiers = Array[Resource]([SubResource("Resource_taken_up")])
+24
View File
@@ -0,0 +1,24 @@
class_name JudgementPolicy
extends Resource
@export var entries: Dictionary = {}
func multiplier(label: StringName, channel: StringName, fallback := 1.0) -> float:
var entry := _entry_for(label)
if entry.is_empty():
return fallback
if entry.has(str(channel)):
return float(entry[str(channel)])
if entry.has(channel):
return float(entry[channel])
return fallback
func _entry_for(label: StringName) -> Dictionary:
var key := str(label).to_lower()
if entries.has(key) and entries[key] is Dictionary:
return entries[key]
if entries.has(label) and entries[label] is Dictionary:
return entries[label]
return {}
+1
View File
@@ -0,0 +1 @@
uid://bklc74dqht34e
+23
View File
@@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="JudgementPolicy" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/judgement_policy.gd" id="1_policy"]
[resource]
script = ExtResource("1_policy")
entries = {
"bad": {
"cost": 1.2,
"damage": 0.7,
"reward": 0.6
},
"good": {
"cost": 1.0,
"damage": 0.85,
"reward": 0.8
},
"perfect": {
"cost": 0.8,
"damage": 1.0,
"reward": 1.0
}
}
+25
View File
@@ -0,0 +1,25 @@
class_name PlayerSkillBindings
extends Resource
@export var charge_entries: Array[Dictionary] = []
@export var burst_action_id: StringName = &""
@export var counter_action_id: StringName = &""
@export var blade_chain_action_id: StringName = &""
func charge_entry_for_symbol(symbol: StringName) -> Dictionary:
for entry: Dictionary in charge_entries:
if StringName(str(entry.get("symbol", &""))) == symbol:
return entry.duplicate(true)
return {}
func cast_action_id(entry: Dictionary, level: int) -> StringName:
var cast_ids: Dictionary = entry.get("cast_action_ids", {})
if cast_ids.has(level):
return StringName(str(cast_ids[level]))
var level_key := str(level)
if cast_ids.has(level_key):
return StringName(str(cast_ids[level_key]))
return &""
+1
View File
@@ -0,0 +1 @@
uid://bfhpj4kxpw50e
+38
View File
@@ -0,0 +1,38 @@
[gd_resource type="Resource" script_class="PlayerSkillBindings" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/player_action_bindings.gd" id="1_xjc2f"]
[resource]
script = ExtResource("1_xjc2f")
charge_entries = Array[Dictionary]([{
"symbol": &"A",
"entry_mode": &"after_tap",
"cast_trigger": &"on_release",
"cast_action_ids": {
1: &"jian_yu_left_lv1",
2: &"jian_yu_left_lv2",
3: &"jian_yu_left_lv3"
}
}, {
"symbol": &"D",
"entry_mode": &"after_tap",
"cast_trigger": &"on_release",
"cast_action_ids": {
1: &"jian_yu_right_lv1",
2: &"jian_yu_right_lv2",
3: &"jian_yu_right_lv3"
}
}, {
"symbol": &"S",
"entry_mode": &"after_tap",
"cast_trigger": &"on_secondary_key",
"cast_key": &"SP",
"cast_action_ids": {
1: &"zhan_bo_lv1",
2: &"zhan_bo_lv2",
3: &"zhan_bo_lv3"
}
}])
burst_action_id = &"burst_activate"
counter_action_id = &"counter_projectile"
blade_chain_action_id = &"blade_chain_projectile_2"
@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="TimeAnchorFrequencyProfile" load_steps=2 format=3]
[ext_resource type="Script" path="res://resources/time_anchor_frequency_profile.gd" id="1"]
[resource]
script = ExtResource("1")
streak_thresholds = Array[int]([0, 8, 16])
anchors_per_window = Array[int]([1, 2, 4])
window_beats = 4
@@ -0,0 +1,34 @@
class_name TimeAnchorFrequencyProfile
extends Resource
@export var streak_thresholds: Array[int] = [0, 8, 16]
@export var anchors_per_window: Array[int] = [1, 2, 4]
@export var window_beats := 4
func interval_for_streak(streak: int) -> int:
var anchors := anchors_per_window_for_streak(streak)
return maxi(1, int(ceil(float(window_beats) / float(maxi(1, anchors)))))
func anchors_per_window_for_streak(streak: int) -> int:
var count := 1
for index: int in range(streak_thresholds.size()):
if index >= anchors_per_window.size():
break
if streak >= streak_thresholds[index]:
count = clampi(anchors_per_window[index], 1, maxi(1, window_beats))
return count
func anchor_offsets_for_streak(streak: int) -> Array[int]:
var safe_window := maxi(1, window_beats)
var count := anchors_per_window_for_streak(streak)
if count <= 1:
return [safe_window]
if count == 2:
return [maxi(1, int(ceil(float(safe_window) * 0.5))), safe_window]
var offsets: Array[int] = []
for beat_offset: int in range(1, safe_window + 1):
offsets.append(beat_offset)
return offsets
@@ -0,0 +1 @@
uid://bvfrkrccl0pl
@@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="TimePhaseProfile" load_steps=4 format=3]
[ext_resource type="Script" path="res://resources/time_phase_profile.gd" id="1"]
[ext_resource type="Resource" path="res://resources/effects/time_phase/effect_tp_future_enemy_weak.tres" id="2"]
[ext_resource type="Resource" path="res://resources/effects/time_phase/effect_tp_future_enemy_strong.tres" id="3"]
[resource]
script = ExtResource("1")
past_effects = Array[Resource]([ExtResource("2")])
future_effects = Array[Resource]([ExtResource("3")])
past_visual_key = &"past"
future_visual_key = &"future"
@@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="TimePhaseProfile" load_steps=4 format=3]
[ext_resource type="Script" path="res://resources/time_phase_profile.gd" id="1"]
[ext_resource type="Resource" path="res://resources/effects/time_phase/effect_tp_past_enemy_strong.tres" id="2"]
[ext_resource type="Resource" path="res://resources/effects/time_phase/effect_tp_past_enemy_weak.tres" id="3"]
[resource]
script = ExtResource("1")
past_effects = Array[Resource]([ExtResource("2")])
future_effects = Array[Resource]([ExtResource("3")])
past_visual_key = &"past"
future_visual_key = &"future"
+15
View File
@@ -0,0 +1,15 @@
class_name TimePhaseProfile
extends Resource
@export var past_effects: Array[Resource] = []
@export var future_effects: Array[Resource] = []
@export var past_visual_key: StringName = &"past"
@export var future_visual_key: StringName = &"future"
func effects_for_time_phase(time_phase: StringName) -> Array[Resource]:
return future_effects if time_phase == &"future" else past_effects
func visual_key_for_time_phase(time_phase: StringName) -> StringName:
return future_visual_key if time_phase == &"future" else past_visual_key
+1
View File
@@ -0,0 +1 @@
uid://cp1s5pnihfd0