diff --git a/project.godot b/project.godot index 3e23d36..63ba279 100644 --- a/project.godot +++ b/project.godot @@ -31,6 +31,38 @@ folder_colors={ [input] +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) +] +} +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +] +} Move_Left={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) diff --git a/systems/combat/combat_state.gd b/systems/combat/combat_state.gd index 89e6ea7..a19c56c 100644 --- a/systems/combat/combat_state.gd +++ b/systems/combat/combat_state.gd @@ -28,7 +28,7 @@ func state_enter(_params: Dictionary): # Connect to all needed signals and initialize the combatants for team in teams: for combatant in team.members: - combatant.init_combat() + combatant.init_combat(self) if !combatant.damaged.is_connected(on_combatant_damaged): combatant.damaged.connect(on_combatant_damaged) diff --git a/systems/combat/combatant/combatant.gd b/systems/combat/combatant/combatant.gd index 7cee394..2c8692c 100644 --- a/systems/combat/combatant/combatant.gd +++ b/systems/combat/combatant/combatant.gd @@ -11,11 +11,19 @@ extends Node2D signal damaged(damaged_combatant: Combatant, source: DamageSource, final_amount: int) +@onready var attack_btn = $"Combat Menu/PanelContainer/MarginContainer/VBoxContainer/BtnAttack" +@onready var defend_btn = $"Combat Menu/PanelContainer/MarginContainer/VBoxContainer/BtnDefend" + @export var combat_stats: CombatStats @export var actions: Array[CombatAction] = [] @export var is_player_driven = true -var next_action: CombatAction = null +@export_category("Debug") +@export var enable_debug_logging: bool = true + +var _combat_context: CombatState +var _next_action: CombatAction = null +var _has_focus: = false # current state var hp: int = 0 # Health Points @@ -23,12 +31,14 @@ var ps: int = 0 # Physical Stamina var ms: int = 0 # Mental Stamina var atb: float = 0 # ATB Timer - counts down, turn is ready at 0 -func init_combat(): - print("Initing Combatant") +func init_combat(context: CombatState): + context.debugger.log(DebugLogger.LogLevel.INFO, "Initing Combatant", !enable_debug_logging) + + _combat_context = context if !is_player_driven: $"Combat Menu".visible = false - pass + func is_defeated(): @@ -40,11 +50,17 @@ func is_defeated(): func is_turn_ready(): return atb <= 0 +func set_focus(focused: bool): + _has_focus = focused + +func has_focus(): + return _has_focus + func process_tick(delta, _team: CombatTeam): if atb > 0: atb -= delta - # TODO: handle input + # TODO: handle input if has_focus func take_damage(source: DamageSource): @@ -62,6 +78,3 @@ func take_damage(source: DamageSource): hp -= final_amount damaged.emit(self, source, final_amount) - -func on_action_clicked(btn): - print("Action Clicked: %s" % btn.text) diff --git a/systems/combat/combatant/combatant.tscn b/systems/combat/combatant/combatant.tscn index 953c56a..9f1505f 100644 --- a/systems/combat/combatant/combatant.tscn +++ b/systems/combat/combatant/combatant.tscn @@ -1,38 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://4glu7reewmf3"] +[gd_scene load_steps=3 format=3 uid="uid://4glu7reewmf3"] [ext_resource type="Script" path="res://systems/combat/combatant/combatant.gd" id="1_7ynxf"] +[ext_resource type="PackedScene" uid="uid://by6mq2xbbkqns" path="res://systems/combat/combatant/ui/combat_menu.tscn" id="2_781jy"] [node name="Combatant" type="Node2D"] script = ExtResource("1_7ynxf") -[node name="Combat Menu" type="Control" parent="."] -texture_filter = 2 -layout_mode = 3 -anchors_preset = 0 -offset_right = 40.0 -offset_bottom = 40.0 - -[node name="PanelContainer" type="PanelContainer" parent="Combat Menu"] -layout_mode = 2 -offset_right = 44.0 -offset_bottom = 48.0 - -[node name="MarginContainer" type="MarginContainer" parent="Combat Menu/PanelContainer"] -layout_mode = 2 -theme_override_constants/margin_left = 2 -theme_override_constants/margin_top = 2 -theme_override_constants/margin_right = 2 -theme_override_constants/margin_bottom = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="Combat Menu/PanelContainer/MarginContainer"] -layout_mode = 2 - -[node name="BtnAttack" type="Button" parent="Combat Menu/PanelContainer/MarginContainer/VBoxContainer"] -layout_mode = 2 -theme_override_font_sizes/font_size = 10 -text = "Attack" - -[node name="BtnDefend" type="Button" parent="Combat Menu/PanelContainer/MarginContainer/VBoxContainer"] -layout_mode = 2 -theme_override_font_sizes/font_size = 10 -text = "Defend" +[node name="Combat Menu" parent="." instance=ExtResource("2_781jy")] diff --git a/systems/combat/combatant/ui/combat_menu.gd b/systems/combat/combatant/ui/combat_menu.gd new file mode 100644 index 0000000..a1bbfe7 --- /dev/null +++ b/systems/combat/combatant/ui/combat_menu.gd @@ -0,0 +1,11 @@ +extends Control + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/systems/combat/combatant/ui/combat_menu.tscn b/systems/combat/combatant/ui/combat_menu.tscn new file mode 100644 index 0000000..c74cc7c --- /dev/null +++ b/systems/combat/combatant/ui/combat_menu.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=2 format=3 uid="uid://by6mq2xbbkqns"] + +[ext_resource type="Script" path="res://systems/combat/combatant/ui/combat_menu.gd" id="1_2ftpt"] + +[node name="Combat Menu" type="Control"] +texture_filter = 2 +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_2ftpt") + +[node name="PanelContainer" type="PanelContainer" parent="."] +layout_mode = 2 +offset_right = 44.0 +offset_bottom = 48.0 + +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 2 +theme_override_constants/margin_top = 2 +theme_override_constants/margin_right = 2 +theme_override_constants/margin_bottom = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="BtnAttack" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 10 +text = "Attack" + +[node name="BtnDefend" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 10 +text = "Defend" diff --git a/systems/combat/common actions/action_attack.gd b/systems/combat/common actions/action_attack.gd index ee091e7..9b34d8d 100644 --- a/systems/combat/common actions/action_attack.gd +++ b/systems/combat/common actions/action_attack.gd @@ -5,7 +5,7 @@ extends CombatAction var target: Combatant var damage: DamageSource -func init(): +func _init(): print("Setting action name") name = "Attack" diff --git a/systems/debug/debug logger/debug_logger.gd b/systems/debug/debug logger/debug_logger.gd new file mode 100644 index 0000000..ef7fd57 --- /dev/null +++ b/systems/debug/debug logger/debug_logger.gd @@ -0,0 +1,47 @@ +class_name DebugLogger +extends Node + + + +enum LogLevel +{ + ERROR, + WARNING, + INFO, + TRACE +} + + +var _log_level: LogLevel = LogLevel.INFO +var _log_history: Array[LogMessage] = [] + + +func log(level: LogLevel, message: String, silent = false): + var msg = LogMessage.new() + msg.level = level + msg.message = message + msg.timestamp = get_timestamp() + _log_history.append(msg) + + if !silent: + if msg.level <= _log_level: + print("%s" % msg.get_formatted()) + + if msg.level == LogLevel.ERROR: + push_error("%s" % msg.get_formatted()) + + if msg.level == LogLevel.WARNING: + push_warning("%s" % msg.get_formatted()) + +func get_timestamp(): + return Time.get_datetime_string_from_system(false, true) + + +func dump_log_file(): + var output = "" + for msg in _log_history: + output += "%s\n" % msg.get_formatted() + + var file = FileAccess.open("debug.log", FileAccess.WRITE) + output.trim_suffix("\n") + file.store_string(output) diff --git a/systems/debug/debug logger/log_message.gd b/systems/debug/debug logger/log_message.gd new file mode 100644 index 0000000..83ec823 --- /dev/null +++ b/systems/debug/debug logger/log_message.gd @@ -0,0 +1,14 @@ + +class_name LogMessage +extends RefCounted + + +var level: DebugLogger.LogLevel +var message: String +var timestamp: String + +func get_formatted(): + var lvl_strs = ["ERROR", "WARNING", "INFO", "TRACE"] + + var formatted = "[%s][%s] %s" % [lvl_strs[level], timestamp, message] + return formatted \ No newline at end of file diff --git a/systems/debug/debug panel/debug_panel.gd b/systems/debug/debug panel/debug_panel.gd new file mode 100644 index 0000000..d2c1270 --- /dev/null +++ b/systems/debug/debug panel/debug_panel.gd @@ -0,0 +1,70 @@ +class_name DebugPanel +extends Node + +@export var log_max_lines = 2 + +@onready var db_panel_container = $CanvasLayer/PanelContainer +@onready var db_label = $CanvasLayer/PanelContainer/DebugUI/Info + +var sections := {} # { String - Name : DebugSection } +var log_history: Array[String] + +const DEFAULT_SECTION = "DEFAULT_SECTION" + +func initialize(): + sections[DEFAULT_SECTION] = DebugSection.new() + sections[DEFAULT_SECTION].section_name = DEFAULT_SECTION + +func set_visible(vis): + db_panel_container.visible = vis + +func is_visible(): + return db_panel_container.visible + +func clear(): + db_label.text = "" + sections.clear() + log_history.clear() + +func update_value(section: String, label: String, val: String): + section = section.dedent().trim_prefix("\n").trim_suffix("\n") + label = label.dedent().trim_prefix("\n").trim_suffix("\n") + val = val.dedent().trim_prefix("\n").trim_suffix("\n") + + if section == "": + sections[DEFAULT_SECTION].section_values[label] = val + else: + if !sections.has(section): + add_section(section) + sections[section].section_name = section + sections[section].section_values[label] = val + +func remove_value(section: String, label: String): + section = section.dedent().trim_prefix("\n").trim_suffix("\n") + label = label.dedent().trim_prefix("\n").trim_suffix("\n") + + if section == "": + sections[DEFAULT_SECTION].section_values.erase(label) + else: + sections[section].section_values.erase(label) + +func add_section(sname: String): + if sections.has(sname): + return + + sections[sname] = DebugSection.new() + sections[sname].section_name = name + +func update(): + db_label.text = "Debug Panel" + + for section in sections: + if sections[section].section_values.size() == 0: + continue + + db_label.text += "\n--------------------\n" + + if DEFAULT_SECTION != section: + db_label.text += "::%s::\n--------------------\n" % section + + db_label.text += sections[section].get_section_text() diff --git a/systems/debug/debug panel/debug_panel.tscn b/systems/debug/debug panel/debug_panel.tscn new file mode 100644 index 0000000..fea07a8 --- /dev/null +++ b/systems/debug/debug panel/debug_panel.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=2 format=3 uid="uid://b4vfwfbq4c355"] + +[ext_resource type="Script" path="res://systems/debug/debug panel/debug_panel.gd" id="1_bx2jn"] + +[node name="Debug Panel" type="Node"] +script = ExtResource("1_bx2jn") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="PanelContainer" type="PanelContainer" parent="CanvasLayer"] +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="DebugUI" type="MarginContainer" parent="CanvasLayer/PanelContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_right = 5 + +[node name="Info" type="Label" parent="CanvasLayer/PanelContainer/DebugUI"] +layout_mode = 2 +theme_override_font_sizes/font_size = 12 +text = "DEBUG PANEL YO" diff --git a/systems/debug/debug panel/debug_section.gd b/systems/debug/debug panel/debug_section.gd new file mode 100644 index 0000000..df726d5 --- /dev/null +++ b/systems/debug/debug panel/debug_section.gd @@ -0,0 +1,17 @@ +class_name DebugSection +extends RefCounted + +var section_name = "" +var section_values = {} # { label : values } +var is_hidden = false + +func get_section_text(): + + if is_hidden: + return "^" + + var text = "" + for label in section_values: + text += "%s%s" % [label, section_values[label]] + text += "\n" + return text diff --git a/systems/debug/debugger.gd b/systems/debug/debugger.gd new file mode 100644 index 0000000..da3fcf8 --- /dev/null +++ b/systems/debug/debugger.gd @@ -0,0 +1,10 @@ +class_name Debugger +extends Control + +# public vars +@onready var debug_panel = $"Debug Panel" +@onready var debug_logger = $"DebugLogger" + + +func log(level: DebugLogger.LogLevel, msg: String, silent = false): + debug_logger.log(level, msg, silent) diff --git a/systems/debug/debugger.tscn b/systems/debug/debugger.tscn new file mode 100644 index 0000000..18c9d19 --- /dev/null +++ b/systems/debug/debugger.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=3 uid="uid://bnbxvjy2n20tj"] + +[ext_resource type="PackedScene" uid="uid://b4vfwfbq4c355" path="res://systems/debug/debug panel/debug_panel.tscn" id="1_ka3q2"] +[ext_resource type="Script" path="res://systems/debug/debugger.gd" id="1_ypa46"] +[ext_resource type="Script" path="res://systems/debug/debug logger/debug_logger.gd" id="3_ehcbp"] + +[node name="Debugger" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ypa46") + +[node name="Debug Panel" parent="." instance=ExtResource("1_ka3q2")] + +[node name="DebugLogger" type="Node" parent="."] +script = ExtResource("3_ehcbp") diff --git a/systems/game_state/game_state.gd b/systems/game_state/game_state.gd index e22190e..a5f938a 100644 --- a/systems/game_state/game_state.gd +++ b/systems/game_state/game_state.gd @@ -8,12 +8,18 @@ extends Node # constants (CONSTANT_CASE) # @export variables (snake_case) # public variables (non-underscore-prefixed snake_case) +@export var debugger: Debugger = null + # private variables (underscore-prefixed _snake_case) # @onready variables (snake_case) # # optional built-in virtual _init method # optional built-in virtual _enter_tree() method # built-in virtual _ready method +func _ready(): + if !debugger: + push_warning("Debugger not set in GameState") + # remaining built-in virtual methods (underscore-prefixed _snake_case) # public methods (non-underscore-prefixed snake_case) func state_enter(_params: Dictionary): diff --git a/testing/sandbox.tscn b/testing/sandbox.tscn index bef82b2..9a59f83 100644 --- a/testing/sandbox.tscn +++ b/testing/sandbox.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3 uid="uid://dnmtnb7kvhmkp"] +[gd_scene load_steps=16 format=3 uid="uid://dnmtnb7kvhmkp"] [ext_resource type="Script" path="res://testing/sandbox.gd" id="1_41e3p"] [ext_resource type="Texture2D" uid="uid://dxqymswxvgfax" path="res://testing/art/MainLev2.0.png" id="2_t8bqu"] @@ -9,6 +9,7 @@ [ext_resource type="PackedScene" uid="uid://d1nq0efa53wra" path="res://actors/player chars/alex/alex.tscn" id="7_c3ubv"] [ext_resource type="PackedScene" uid="uid://bp3ea21lf4bpm" path="res://systems/combat/ui/combat_log.tscn" id="7_qbibk"] [ext_resource type="PackedScene" uid="uid://dwi00nixw6eia" path="res://actors/enemies/blob/blob.tscn" id="8_vcyws"] +[ext_resource type="PackedScene" uid="uid://bnbxvjy2n20tj" path="res://systems/debug/debugger.tscn" id="10_b3rek"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_6ttut"] texture = ExtResource("2_t8bqu") @@ -12591,14 +12592,15 @@ layer_2/name = "Doodads 2" layer_2/y_sort_enabled = true layer_2/tile_data = PackedInt32Array(983087, 3, 2, 1048623, 3, 3, 983088, 65539, 2, 1048624, 65539, 3, 1114160, 65539, 4, 852017, 131075, 0, 917553, 131075, 1, 983089, 131075, 2, 1048625, 131075, 3, 1114161, 131075, 4, 1376305, 131075, 8, 1441841, 131075, 9, 852018, 196611, 0, 917554, 196611, 1, 983090, 196611, 2, 1048626, 196611, 3, 1114162, 196611, 4, 1179698, 196611, 5, 1245234, 196611, 6, 1310770, 196611, 7, 1376306, 196611, 8, 1441842, 196611, 9, 852019, 262147, 0, 917555, 262147, 1, 983091, 262147, 2, 1048627, 262147, 3, 1114163, 262147, 4, 1179699, 262147, 5, 1245235, 262147, 6, 1310771, 262147, 7, 1376307, 262147, 8, 1441843, 262147, 9, 852020, 327683, 0, 917556, 327683, 1, 983092, 327683, 2, 1048628, 327683, 3, 1114164, 327683, 4, 1179700, 327683, 5, 1245236, 327683, 6, 1310772, 327683, 7, 1376308, 327683, 8, 1441844, 327683, 9, 852021, 393219, 0, 917557, 393219, 1, 983093, 393219, 2, 1048629, 393219, 3, 1114165, 393219, 4, 1179701, 393219, 5, 1245237, 393219, 6, 1310773, 393219, 7, 1376309, 393219, 8, 1441845, 393219, 9, 852022, 458755, 0, 917558, 458755, 1, 983094, 458755, 2, 1048630, 458755, 3, 1114166, 458755, 4, 1179702, 458755, 5, 1245238, 458755, 6, 1310774, 458755, 7, 1376310, 458755, 8, 1441846, 458755, 9, 852023, 524291, 0, 917559, 524291, 1, 983095, 524291, 2, 1048631, 524291, 3, 1114167, 524291, 4, 524325, 3, 2, 589861, 3, 3, 524326, 65539, 2, 589862, 65539, 3, 655398, 65539, 4, 393255, 131075, 0, 458791, 131075, 1, 524327, 131075, 2, 589863, 131075, 3, 655399, 131075, 4, 917543, 131075, 8, 983079, 131075, 9, 393256, 196611, 0, 458792, 196611, 1, 524328, 196611, 2, 589864, 196611, 3, 655400, 196611, 4, 720936, 196611, 5, 786472, 196611, 6, 852008, 196611, 7, 917544, 196611, 8, 983080, 196611, 9, 393257, 262147, 0, 458793, 262147, 1, 524329, 262147, 2, 589865, 262147, 3, 655401, 262147, 4, 720937, 262147, 5, 786473, 262147, 6, 852009, 262147, 7, 917545, 262147, 8, 983081, 262147, 9, 393258, 327683, 0, 458794, 327683, 1, 524330, 327683, 2, 589866, 327683, 3, 655402, 327683, 4, 720938, 327683, 5, 786474, 327683, 6, 852010, 327683, 7, 917546, 327683, 8, 983082, 327683, 9, 393259, 393219, 0, 458795, 393219, 1, 524331, 393219, 2, 589867, 393219, 3, 655403, 393219, 4, 720939, 393219, 5, 786475, 393219, 6, 852011, 393219, 7, 917547, 393219, 8, 983083, 393219, 9, 393260, 458755, 0, 458796, 458755, 1, 524332, 458755, 2, 589868, 458755, 3, 655404, 458755, 4, 720940, 458755, 5, 786476, 458755, 6, 852012, 458755, 7, 917548, 458755, 8, 983084, 458755, 9, 393261, 524291, 0, 458797, 524291, 1, 524333, 524291, 2, 589869, 524291, 3, 655405, 524291, 4, 851974, 3, 2, 917510, 3, 3, 851975, 65539, 2, 917511, 65539, 3, 983047, 65539, 4, 720904, 131075, 0, 786440, 131075, 1, 851976, 131075, 2, 917512, 131075, 3, 983048, 131075, 4, 1245192, 131075, 8, 1310728, 131075, 9, 720905, 196611, 0, 786441, 196611, 1, 851977, 196611, 2, 917513, 196611, 3, 983049, 196611, 4, 1048585, 196611, 5, 1114121, 196611, 6, 1179657, 196611, 7, 1245193, 196611, 8, 1310729, 196611, 9, 720906, 262147, 0, 786442, 262147, 1, 851978, 262147, 2, 917514, 262147, 3, 983050, 262147, 4, 1048586, 262147, 5, 1114122, 262147, 6, 1179658, 262147, 7, 1245194, 262147, 8, 1310730, 262147, 9, 720907, 327683, 0, 786443, 327683, 1, 851979, 327683, 2, 917515, 327683, 3, 983051, 327683, 4, 1048587, 327683, 5, 1114123, 327683, 6, 1179659, 327683, 7, 1245195, 327683, 8, 1310731, 327683, 9, 720908, 393219, 0, 786444, 393219, 1, 851980, 393219, 2, 917516, 393219, 3, 983052, 393219, 4, 1048588, 393219, 5, 1114124, 393219, 6, 1179660, 393219, 7, 1245196, 393219, 8, 1310732, 393219, 9, 720909, 458755, 0, 786445, 458755, 1, 851981, 458755, 2, 917517, 458755, 3, 983053, 458755, 4, 1048589, 458755, 5, 1114125, 458755, 6, 1179661, 458755, 7, 1245197, 458755, 8, 1310733, 458755, 9, 720910, 524291, 0, 786446, 524291, 1, 851982, 524291, 2, 917518, 524291, 3, 983054, 524291, 4, 524309, 2, 2, 589845, 2, 3, 524310, 65538, 2, 589846, 65538, 3, 655382, 65538, 4, 393239, 131074, 0, 458775, 131074, 1, 524311, 131074, 2, 589847, 131074, 3, 655383, 131074, 4, 917527, 131074, 8, 983063, 131074, 9, 393240, 196610, 0, 458776, 196610, 1, 524312, 196610, 2, 589848, 196610, 3, 655384, 196610, 4, 720920, 196610, 5, 786456, 196610, 6, 851992, 196610, 7, 917528, 196610, 8, 983064, 196610, 9, 393241, 262146, 0, 458777, 262146, 1, 524313, 262146, 2, 589849, 262146, 3, 655385, 262146, 4, 720921, 262146, 5, 786457, 262146, 6, 851993, 262146, 7, 917529, 262146, 8, 983065, 262146, 9, 393242, 327682, 0, 458778, 327682, 1, 524314, 327682, 2, 589850, 327682, 3, 655386, 327682, 4, 720922, 327682, 5, 786458, 327682, 6, 851994, 327682, 7, 917530, 327682, 8, 983066, 327682, 9, 393243, 393218, 0, 458779, 393218, 1, 524315, 393218, 2, 589851, 393218, 3, 655387, 393218, 4, 720923, 393218, 5, 786459, 393218, 6, 851995, 393218, 7, 917531, 393218, 8, 983067, 393218, 9, 393244, 458754, 0, 458780, 458754, 1, 524316, 458754, 2, 589852, 458754, 3, 655388, 458754, 4, 720924, 458754, 5, 786460, 458754, 6, 851996, 458754, 7, 917532, 458754, 8, 983068, 458754, 9, 393245, 524290, 0, 458781, 524290, 1, 524317, 524290, 2, 589853, 524290, 3, 655389, 524290, 4, 524318, 589826, 2, 1507340, 2, 2, 1572876, 2, 3, 1507341, 65538, 2, 1572877, 65538, 3, 1638413, 65538, 4, 1376270, 131074, 0, 1441806, 131074, 1, 1507342, 131074, 2, 1572878, 131074, 3, 1638414, 131074, 4, 1900558, 131074, 8, 1966094, 131074, 9, 1376271, 196610, 0, 1441807, 196610, 1, 1507343, 196610, 2, 1572879, 196610, 3, 1638415, 196610, 4, 1703951, 196610, 5, 1769487, 196610, 6, 1835023, 196610, 7, 1900559, 196610, 8, 1966095, 196610, 9, 1376272, 262146, 0, 1441808, 262146, 1, 1507344, 262146, 2, 1572880, 262146, 3, 1638416, 262146, 4, 1703952, 262146, 5, 1769488, 262146, 6, 1835024, 262146, 7, 1900560, 262146, 8, 1966096, 262146, 9, 1376273, 327682, 0, 1441809, 327682, 1, 1507345, 327682, 2, 1572881, 327682, 3, 1638417, 327682, 4, 1703953, 327682, 5, 1769489, 327682, 6, 1835025, 327682, 7, 1900561, 327682, 8, 1966097, 327682, 9, 1376274, 393218, 0, 1441810, 393218, 1, 1507346, 393218, 2, 1572882, 393218, 3, 1638418, 393218, 4, 1703954, 393218, 5, 1769490, 393218, 6, 1835026, 393218, 7, 1900562, 393218, 8, 1966098, 393218, 9, 1376275, 458754, 0, 1441811, 458754, 1, 1507347, 458754, 2, 1572883, 458754, 3, 1638419, 458754, 4, 1703955, 458754, 5, 1769491, 458754, 6, 1835027, 458754, 7, 1900563, 458754, 8, 1966099, 458754, 9, 1376276, 524290, 0, 1441812, 524290, 1, 1507348, 524290, 2, 1572884, 524290, 3, 1638420, 524290, 4, 1507349, 589826, 2, 1441829, 2, 2, 1507365, 2, 3, 1441830, 65538, 2, 1507366, 65538, 3, 1572902, 65538, 4, 1310759, 131074, 0, 1376295, 131074, 1, 1441831, 131074, 2, 1507367, 131074, 3, 1572903, 131074, 4, 1835047, 131074, 8, 1900583, 131074, 9, 1310760, 196610, 0, 1376296, 196610, 1, 1441832, 196610, 2, 1507368, 196610, 3, 1572904, 196610, 4, 1638440, 196610, 5, 1703976, 196610, 6, 1769512, 196610, 7, 1835048, 196610, 8, 1900584, 196610, 9, 1310761, 262146, 0, 1376297, 262146, 1, 1441833, 262146, 2, 1507369, 262146, 3, 1572905, 262146, 4, 1638441, 262146, 5, 1703977, 262146, 6, 1769513, 262146, 7, 1835049, 262146, 8, 1900585, 262146, 9, 1310762, 327682, 0, 1376298, 327682, 1, 1441834, 327682, 2, 1507370, 327682, 3, 1572906, 327682, 4, 1638442, 327682, 5, 1703978, 327682, 6, 1769514, 327682, 7, 1835050, 327682, 8, 1900586, 327682, 9, 1310763, 393218, 0, 1376299, 393218, 1, 1441835, 393218, 2, 1507371, 393218, 3, 1572907, 393218, 4, 1638443, 393218, 5, 1703979, 393218, 6, 1769515, 393218, 7, 1835051, 393218, 8, 1900587, 393218, 9, 1310764, 458754, 0, 1376300, 458754, 1, 1441836, 458754, 2, 1507372, 458754, 3, 1572908, 458754, 4, 1638444, 458754, 5, 1703980, 458754, 6, 1769516, 458754, 7, 1835052, 458754, 8, 1900588, 458754, 9, 1310765, 524290, 0, 1376301, 524290, 1, 1441837, 524290, 2, 1507373, 524290, 3, 1572909, 524290, 4, 1441838, 589826, 2) -[node name="CombatState" type="Node" parent="."] +[node name="CombatState" type="Node" parent="." node_paths=PackedStringArray("debugger")] script = ExtResource("6_37h1i") +debugger = NodePath("../Debugger") [node name="CombatLog" parent="CombatState" instance=ExtResource("7_qbibk")] -offset_left = 135.0 -offset_top = 656.0 -offset_right = 135.0 -offset_bottom = 656.0 +offset_left = 202.0 +offset_top = 632.0 +offset_right = -192.0 +offset_bottom = -1.0 [node name="Alex" parent="." instance=ExtResource("7_c3ubv")] texture_filter = 1 @@ -12609,3 +12611,5 @@ position = Vector2(417, 513) [node name="Camera2D" type="Camera2D" parent="."] position = Vector2(642, 362) + +[node name="Debugger" parent="." instance=ExtResource("10_b3rek")]