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
@@ -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")])