systems rework: buffs, prestige graph, research, modular architecture

Decouples core systems from centralized globals in favor of catalogue-based architecture and data-driven content.

   Key changes:
   - Prestige: node-based buff tech tree, graph panel, progress bar
   - Research: multi-worker system, per-generator research, xp generation
   - Ascension: meta-currency layer via multi-currency prestige resets
   - Buffs: refactored as generator-independent via catalogues
   - UI: currency panel, edge-scrolling camera + zoom, current-goal panel
   - Alchemy Tower: crafting building with recipe/cost system
   - Testing: 7 test suites (ascension, prestige, research, goals)
   - Content: migrated from hardcoded idles/ to gym format (tiny_sword)
This commit was merged in pull request #1.
This commit is contained in:
2026-05-07 20:36:21 +00:00
parent 2743fd314a
commit 81a4058b04
242 changed files with 11226 additions and 2242 deletions

View File

@@ -0,0 +1,10 @@
[gd_resource type="Resource" script_class="PrestigeBuffCatalogue" format=3]
[ext_resource type="Script" path="res://core/prestige/prestige_buff_node.gd" id="1_node"]
[ext_resource type="Script" path="res://core/prestige/prestige_buff_catalogue.gd" id="2_cat"]
[ext_resource type="Resource" path="res://docs/gyms/tiny_sword/prestige/prestige_buff_gold_boost.tres" id="3_gold"]
[ext_resource type="Resource" path="res://docs/gyms/tiny_sword/prestige/prestige_buff_farm_boost.tres" id="4_farm"]
[resource]
script = ExtResource("2_cat")
nodes = Array[ExtResource("1_node")]([ExtResource("3_gold"), ExtResource("4_farm")])

View File

@@ -0,0 +1,13 @@
[gd_resource type="Resource" script_class="PrestigeBuffNode" format=3 uid="uid://cvogxo0msis2w"]
[ext_resource type="Script" uid="uid://mjyig8xlgki0" path="res://core/prestige/prestige_buff_node.gd" id="1_script"]
[resource]
script = ExtResource("1_script")
id = &"farm_boost"
display_name = "Fertile Grounds"
description = "Permanently increases farm food production."
parent_ids = Array[StringName]([&"gold_boost"])
effect_value = 2.0
target_id = &"farm"
x_position = 1.0

View File

@@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="PrestigeBuffNode" format=3 uid="uid://vl3ot4t876pc"]
[ext_resource type="Script" uid="uid://mjyig8xlgki0" path="res://core/prestige/prestige_buff_node.gd" id="1_script"]
[resource]
script = ExtResource("1_script")
id = &"gold_boost"
display_name = "Golden Touch"
description = "Permanently increases gold mine production."
effect_value = 2.0
target_id = &"goldmine"

View File

@@ -0,0 +1,69 @@
[gd_scene format=3 uid="uid://dprbgokqitaav"]
[ext_resource type="Script" uid="uid://n01pkakxllnj" path="res://core/prestige/prestige_buff_graph_panel.gd" id="1_panel"]
[ext_resource type="Script" uid="uid://uv5lxj6hmpk" path="res://core/prestige/prestige_buff_connection_overlay.gd" id="2_overlay"]
[ext_resource type="PackedScene" uid="uid://bqk8rwia7lpbg" path="res://core/prestige/prestige_buff_graph_tile.tscn" id="3_tile"]
[ext_resource type="Resource" uid="uid://vl3ot4t876pc" path="res://docs/gyms/tiny_sword/prestige/prestige_buff_gold_boost.tres" id="4_gold"]
[ext_resource type="Resource" uid="uid://cvogxo0msis2w" path="res://docs/gyms/tiny_sword/prestige/prestige_buff_farm_boost.tres" id="5_farm"]
[node name="PrestigeBuffGraphPanel" type="PanelContainer" unique_id=947835716]
custom_minimum_size = Vector2(600, 400)
script = ExtResource("1_panel")
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=829451203]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 12
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 12
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=637192845]
layout_mode = 2
[node name="Header" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=372819465]
layout_mode = 2
[node name="TitleLabel" type="Label" parent="MarginContainer/VBoxContainer/Header" unique_id=518293746]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "Prestige Buffs"
[node name="CloseButton" type="Button" parent="MarginContainer/VBoxContainer/Header" unique_id=184756392]
layout_mode = 2
size_flags_horizontal = 10
theme_override_font_sizes/font_size = 16
text = "✕"
[node name="BalanceLabel" type="Label" parent="MarginContainer/VBoxContainer" unique_id=293847561]
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "Prestige Currency: 0"
[node name="TilesArea" type="Control" parent="MarginContainer/VBoxContainer" unique_id=847291034]
layout_mode = 2
size_flags_vertical = 3
mouse_filter = 1
[node name="ConnectionOverlay" type="Control" parent="MarginContainer/VBoxContainer/TilesArea" unique_id=563829104]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("2_overlay")
[node name="GoldBoostTile" parent="MarginContainer/VBoxContainer/TilesArea" unique_id=756192834 instance=ExtResource("3_tile")]
layout_mode = 0
offset_right = 220.0
offset_bottom = 100.0
prestige_buff = ExtResource("4_gold")
[node name="FarmBoostTile" parent="MarginContainer/VBoxContainer/TilesArea" unique_id=619283475 instance=ExtResource("3_tile")]
layout_mode = 0
offset_left = 3.0
offset_top = 121.0
offset_right = 223.0
offset_bottom = 221.0
prestige_buff = ExtResource("5_farm")

View File

@@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="PrestigeBuffNode" format=3 uid="uid://bif136o485oqh"]
[ext_resource type="Script" uid="uid://mjyig8xlgki0" path="res://core/prestige/prestige_buff_node.gd" id="1_42hk5"]
[resource]
script = ExtResource("1_42hk5")
id = &"wood_boost"
display_name = "Wood Touch"
description = "Permanently increases forestry production."
parent_ids = Array[StringName]([&"farm_boost"])
effect_value = 2.0
target_id = &"forestry"

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="PrestigeConfig" format=3 uid="uid://dwmfvmusfskk6"]
[ext_resource type="Script" uid="uid://w34t58rpkoui" path="res://core/prestige/prestige_config.gd" id="1_3tg3a"]
[resource]
script = ExtResource("1_3tg3a")
id = &"ascension"
prestige_currency_id = &"ascension"
basis = 3