From 10f0d5de1ded5baf0b3743353dffdf8215ae9ac4 Mon Sep 17 00:00:00 2001 From: Breadway Date: Wed, 29 Apr 2026 11:50:42 +0800 Subject: [PATCH] Update Fedora state: 2026-04-29 11:50 --- Downloads/docker-compose.yml | 208 ++ apps-flatpak.txt | 1 + .../CLion2025.3/app-internal-state.db | Bin 0 -> 1323008 bytes .../JetBrains/CLion2025.3/bundled_plugins.txt | 121 + dot_config/JetBrains/CLion2025.3/clion.key | Bin 0 -> 27576 bytes .../JetBrains/CLion2025.3/clion64.vmoptions | 5 + .../CLion2025.3/codestyles/Default.xml | 100 + .../CLion2025.3/disabled_plugins.txt | 1 + .../CLion2025.3/early-access-registry.txt | 10 + .../JetBrains/CLion2025.3/empty_nova.txt | 0 .../empty_splash-subscription-mode.txt | 0 .../CLion2025.3/options/Clang-Tidy.xml | 817 ++++++ .../options/CommonFeedbackSurveyService.xml | 3 + .../options/ConversationToolStoreService.xml | 5 + .../options/DontShowAgainFeedbackService.xml | 3 + .../options/EventLogAllowedList.xml | 22 + .../CLion2025.3/options/PerfProfiler.xml | 9 + .../options/RadFeedbackService.xml | 6 + .../CLion2025.3/options/actionSummary.xml | 241 ++ .../CLion2025.3/options/advancedSettings.xml | 10 + .../CLion2025.3/options/baseRefactoring.xml | 5 + .../CLion2025.3/options/colors.scheme.xml | 5 + .../CLion2025.3/options/console-font.xml | 5 + .../CLion2025.3/options/cppRuleManager.xml | 16 + .../CLion2025.3/options/csvSettings.xml | 12 + .../options/dailyLocalStatistics.xml | 227 ++ .../CLion2025.3/options/databaseDrivers.xml | 3 + .../CLion2025.3/options/databaseSettings.xml | 58 + .../CLion2025.3/options/debugger.xml | 22 + .../JetBrains/CLion2025.3/options/diff.xml | 5 + .../CLion2025.3/options/editor-font.xml | 5 + .../JetBrains/CLion2025.3/options/editor.xml | 67 + .../options/features.usage.statistics.xml | 129 + .../CLion2025.3/options/filetypes.xml | 11 + .../JetBrains/CLion2025.3/options/find.xml | 9 + .../options/github-copilot.local.xml | 5 + .../CLion2025.3/options/github-copilot.xml | 6 + .../JetBrains/CLion2025.3/options/github.xml | 7 + .../JetBrains/CLion2025.3/options/gitlab.xml | 3 + .../options/ide-features-trainer.xml | 9 + .../CLion2025.3/options/ide.general.local.xml | 5 + .../CLion2025.3/options/ide.general.xml | 23 + .../options/inline.factors.completion.xml | 12 + .../CLion2025.3/options/log-categories.xml | 3 + .../CLion2025.3/options/notifications.xml | 5 + .../JetBrains/CLion2025.3/options/other.xml | 73 + .../CLion2025.3/options/path.macros.xml | 6 + .../options/profilerRunConfigurations.xml | 6 + .../CLion2025.3/options/project.default.xml | 18 + .../CLion2025.3/options/proxy.settings.xml | 5 + .../options/pycharm-job-survey-service.xml | 5 + .../CLion2025.3/options/recentProjects.xml | 42 + .../CLion2025.3/options/runner.layout.xml | 13 + .../CLion2025.3/options/rust.feedback.xml | 5 + .../CLion2025.3/options/settingsSync.xml | 5 + .../options/sshRecentConnections.v2.xml | 7 + .../options/sshRecentConnectionsHost.xml | 7 + .../CLion2025.3/options/terminal-font.xml | 6 + .../CLion2025.3/options/terminal.xml | 5 + .../CLion2025.3/options/textmate.xml | 3 + .../options/trace_license_storage.xml | 5 + .../CLion2025.3/options/trusted-paths.xml | 17 + .../JetBrains/CLion2025.3/options/ui.lnf.xml | 5 + .../JetBrains/CLion2025.3/options/updates.xml | 8 + .../CLion2025.3/options/usage.statistics.xml | 7 + .../options/web-types-npm-loader.xml | 5 + .../CLion2025.3/options/window.layouts.xml | 93 + .../CLion2025.3/options/window.state.xml | 21 + .../CLion2025.3/plugin_PCWMP.license | Bin 0 -> 27576 bytes .../CLion2025.3/resharper-host/CultureOptions | 1 + .../CLion2025.3/tasks/Hazard_Pay.contexts.zip | Bin 0 -> 139 bytes .../CLion2025.3/tasks/Hazard_Pay.tasks.zip | Bin 0 -> 139 bytes .../CLion2025.3/tasks/Laser_Tag.contexts.zip | Bin 0 -> 139 bytes .../CLion2025.3/tasks/Laser_Tag.tasks.zip | Bin 0 -> 12839 bytes .../CLion2025.3/tasks/laser_tag.contexts.zip | Bin 0 -> 139 bytes .../CLion2025.3/tasks/laser_tag.tasks.zip | Bin 0 -> 139 bytes .../CLion2025.3/tools/External Tools.xml | 16 + .../CLion2025.3/updatedBrokenPlugins.db | Bin 0 -> 224573 bytes .../workspace/3BOE7pLB3btMHvDTrKDW53uXjfo.xml | 461 ++++ .../workspace/3BOrMOzGDHaQBprjdNtkqiVEnfP.xml | 306 +++ .../workspace/3BOreagVTgIQtFhZt0F9hFMY2Kf.xml | 222 ++ .../workspace/3BOwI6rZZR4ziS18yC8jtS91ggR.xml | 401 +++ .../Rider2025.3/app-internal-state.db | Bin 0 -> 49152 bytes .../Rider2025.3/early-access-registry.txt | 6 + .../empty_splash-subscription-mode.txt | 0 .../options/RiderPerAppSettingsManager.xml | 5 + .../Rider2025.3/options/actionSummary.xml | 7 + .../Rider2025.3/options/advancedSettings.xml | 9 + .../Rider2025.3/options/codeLens.xml | 7 + .../Rider2025.3/options/colors.scheme.xml | 5 + .../Rider2025.3/options/console-font.xml | 5 + .../Rider2025.3/options/debugger.xml | 22 + .../Rider2025.3/options/editor-font.xml | 5 + .../options/editor.codeinsight.xml | 5 + .../JetBrains/Rider2025.3/options/editor.xml | 18 + .../options/features.usage.statistics.xml | 116 + .../Rider2025.3/options/filetypes.xml | 11 + .../JetBrains/Rider2025.3/options/find.xml | 8 + .../Rider2025.3/options/ide.general.xml | 14 + .../Rider2025.3/options/log-categories.xml | 3 + .../Rider2025.3/options/notifications.xml | 5 + .../JetBrains/Rider2025.3/options/other.xml | 42 + .../Rider2025.3/options/path.macros.xml | 6 + .../options/profilerRunConfigurations.xml | 6 + .../Rider2025.3/options/project.default.xml | 7 + .../Rider2025.3/options/proxy.settings.xml | 5 + .../options/rider.perapp.window.state.v2.xml | 84 + .../Rider2025.3/options/riderVersions.xml | 53 + .../Rider2025.3/options/runner.layout.xml | 5 + .../Rider2025.3/options/settingsSync.xml | 5 + .../options/sshRecentConnections.v2.xml | 7 + .../options/sshRecentConnectionsHost.xml | 7 + .../JetBrains/Rider2025.3/options/ui.lnf.xml | 5 + .../JetBrains/Rider2025.3/options/updates.xml | 6 + .../Rider2025.3/options/usage.statistics.xml | 6 + .../Rider2025.3/options/window.state.xml | 8 + .../Rider2025.3/plugin_PCWMP.license | Bin 0 -> 5546 bytes .../Rider2025.3/resharper-host/CultureOptions | 1 + .../GlobalSettingsStorage.DotSettings | 6 + dot_config/JetBrains/Rider2025.3/rider.key | Bin 0 -> 5546 bytes .../JetBrains/Rider2025.3/rider64.vmoptions | 4 + .../Rider2025.3/updatedBrokenPlugins.db | Bin 0 -> 217824 bytes .../User/History/-1aabd2fd/0Ago.csv | 2402 +++++++++++++++++ .../User/History/-1aabd2fd/entries.json | 1 + .../User/History/-2e6bd5d9/DwLj.py | 78 + .../User/History/-2e6bd5d9/entries.json | 1 + .../User/History/-393f507a/entries.json | 1 + .../User/History/-393f507a/jeJQ.json | 3 + .../User/History/-3a2e7e8b/UHTA.yml | 198 ++ .../User/History/-3a2e7e8b/ebbC.yml | 174 ++ .../User/History/-3a2e7e8b/entries.json | 1 + .../User/History/-3a2e7e8b/i7DI.yml | 208 ++ .../User/History/-3a2e7e8b/xBDr.yml | 199 ++ .../User/History/-6123ca19/Xb2Q.py | 18 + .../User/History/-6123ca19/entries.json | 1 + .../User/History/-7d2a273a/bWGM.py | 77 + .../User/History/-7d2a273a/entries.json | 1 + .../User/History/6b1c27e9/entries.json | 1 + .../User/History/6b1c27e9/qMUb.py | 45 + .../User/History/6c11eec7/3jGE.py | 196 ++ .../User/History/6c11eec7/46oA.py | 200 ++ .../User/History/6c11eec7/54EK.py | 93 + .../User/History/6c11eec7/9dqp.py | 180 ++ .../User/History/6c11eec7/EkUx.py | 200 ++ .../User/History/6c11eec7/MJ5p.py | 200 ++ .../User/History/6c11eec7/PpFf.py | 92 + .../User/History/6c11eec7/QTk6.py | 200 ++ .../User/History/6c11eec7/WSl3.py | 180 ++ .../User/History/6c11eec7/bLJN.py | 197 ++ .../User/History/6c11eec7/blt8.py | 197 ++ .../User/History/6c11eec7/cTNf.py | 144 + .../User/History/6c11eec7/entries.json | 1 + .../User/History/6c11eec7/j9Wc.py | 197 ++ .../User/History/6c11eec7/o2Y7.py | 200 ++ .../User/History/6c11eec7/sBVR.py | 196 ++ .../User/History/6c11eec7/u91r.py | 200 ++ .../User/History/785723cb/1nKM.txt | 6 + .../User/History/785723cb/entries.json | 1 + .../User/History/7da6e0fb/9KVj.py | 284 ++ .../User/History/7da6e0fb/FOyN.py | 227 ++ .../User/History/7da6e0fb/Gx76.py | 227 ++ .../User/History/7da6e0fb/Ldgu.py | 253 ++ .../User/History/7da6e0fb/MtI5.py | 272 ++ .../User/History/7da6e0fb/NtsI.py | 270 ++ .../User/History/7da6e0fb/SA9R.py | 189 ++ .../User/History/7da6e0fb/bwYb.py | 231 ++ .../User/History/7da6e0fb/enQE.py | 270 ++ .../User/History/7da6e0fb/entries.json | 1 + .../User/History/7da6e0fb/ycv3.py | 227 ++ .../User/History/7da6e0fb/yfjL.py | 227 ++ .../private_Code/User/chatLanguageModels.json | 1 + ...15f13b33-3dc7-40aa-8a44-bc553620d024.jsonl | 3 + ...5ac4e9c8-7d0c-4bfc-99ab-f2186f80b5f1.jsonl | 1 + ...774290be-a51d-442b-9810-d3d5a353019f.jsonl | 13 + ...93153c4c-abc7-42d0-a6c8-ddaf556cfb10.jsonl | 3 + ....c5981b2c-1e8f-4ec9-99a0-923d51711de8.json | 1 + .../copilotCli/copilotCLIShim.js | 4 + .../copilotCli/copilotCLIShim.ps1 | 219 ++ .../copilotCli/executable_copilot | 3 + .../debugCommand/copilotDebugCommand.js | 6 + .../debugCommand/executable_copilot-debug | 3 + .../plan-agent/Plan.agent.md | 108 + .../toolEmbeddingsCache.bin | Bin 0 -> 10379 bytes .../ms-python.python/pythonrc.py | 88 + .../pythonLocator/31f2aee4e71d21fb.4.json | 21 + .../pythonLocator/767d51c1340bd893.4.json | 39 + .../pythonLocator/c03c93ec8cafc307.4.json | 21 + .../pythonLocator/ca3ed784184f1b3b.4.json | 21 + .../pythonLocator/f0d7a494a3f77623.4.json | 21 + .../User/globalStorage/state.vscdb | Bin 0 -> 733184 bytes .../User/globalStorage/state.vscdb.backup | Bin 0 -> 733184 bytes .../User/globalStorage/storage.json | 93 + .../tailscale.vscode-tailscale/config.json | 9 + dot_config/private_Code/User/settings.json | 3 + .../1775815287792/state.vscdb | Bin 0 -> 61440 bytes ...8b91d7a6-ae77-42bc-b66f-8d95a086715a.jsonl | 1 + ...c7465b2a-7199-40ce-9951-b6795d0a3a84.jsonl | 1 + ...dc74fbcd-b41d-47af-90f7-d0a978ef802b.jsonl | 1 + ...eab52d46-dfac-4e20-a099-6b67cabfb460.jsonl | 2 + .../ms-python.python/pythonrc.py | 88 + .../state.vscdb | Bin 0 -> 49152 bytes .../state.vscdb.backup | Bin 0 -> 49152 bytes .../workspace.json | 3 + ...2324c150-9e6f-47e2-8f4a-20af82ec2af1.jsonl | 1 + ...e8ce1288-ab4d-4fa7-83ee-d054c746a71b.jsonl | 1 + .../state.vscdb | Bin 0 -> 24576 bytes .../state.vscdb.backup | Bin 0 -> 24576 bytes .../workspace.json | 3 + ...6f526eae-b27b-49cd-9817-e72d6480f23f.jsonl | 17 + .../ms-python.python/pythonrc.py | 88 + .../state.vscdb | Bin 0 -> 69632 bytes .../state.vscdb.backup | Bin 0 -> 69632 bytes .../workspace.json | 3 + ...11f2de30-ec2b-4879-a78f-e06b4c2b0bad.jsonl | 1 + ...123907f6-8dde-436d-91a1-9b20eef75377.jsonl | 2 + ...232d35f4-1b7a-4e62-aa92-a4adfa72f21c.jsonl | 1 + ...3c426d55-429e-4167-afb1-8c4ff89be4b7.jsonl | 1 + ...63779320-deba-4d03-8619-47e146708f20.jsonl | 2 + ...782648e0-18b2-4e6c-a6c7-609c19b021df.jsonl | 1 + ...809bdf57-f190-4e54-98f2-ea20e1c04007.jsonl | 1 + ...c6f9ede1-602d-4967-a697-8f3f963b9e59.jsonl | 1 + ...cfad25bb-6655-45fb-84e8-21d567d83b3e.jsonl | 1 + ...f85b2f7c-7ec0-4989-b6d9-8884cf2da8ca.jsonl | 1 + ...fc173837-a45e-47a1-88ac-13e2ce965177.jsonl | 139 + ...fde32f5e-d620-48a9-b4be-6e17e9f78358.jsonl | 2 + .../ms-python.python/pythonrc.py | 88 + .../state.vscdb | Bin 0 -> 2887680 bytes .../state.vscdb.backup | Bin 0 -> 2887680 bytes .../workspace.json | 3 + .../private_fish/completions/fisher.fish | 7 + dot_config/private_fish/completions/tide.fish | 13 + .../private_fish/conf.d/_tide_init.fish | 44 + dot_config/private_fish/config.fish | 7 + dot_config/private_fish/fish_plugins | 2 + .../functions/_tide_1_line_prompt.fish | 19 + .../functions/_tide_2_line_prompt.fish | 31 + .../functions/_tide_cache_variables.fish | 17 + .../functions/_tide_detect_os.fish | 76 + .../functions/_tide_find_and_remove.fish | 3 + .../functions/_tide_fish_colorize.fish | 7 + .../functions/_tide_item_aws.fish | 11 + .../functions/_tide_item_bun.fish | 6 + .../functions/_tide_item_character.fish | 17 + .../functions/_tide_item_cmd_duration.fish | 12 + .../functions/_tide_item_context.fish | 14 + .../functions/_tide_item_crystal.fish | 6 + .../functions/_tide_item_direnv.fish | 7 + .../functions/_tide_item_distrobox.fish | 4 + .../functions/_tide_item_docker.fish | 5 + .../functions/_tide_item_elixir.fish | 4 + .../functions/_tide_item_gcloud.fish | 8 + .../functions/_tide_item_git.fish | 72 + .../private_fish/functions/_tide_item_go.fish | 6 + .../functions/_tide_item_java.fish | 6 + .../functions/_tide_item_jobs.fish | 7 + .../functions/_tide_item_kubectl.fish | 4 + .../functions/_tide_item_nix_shell.fish | 3 + .../functions/_tide_item_node.fish | 6 + .../private_fish/functions/_tide_item_os.fish | 3 + .../functions/_tide_item_php.fish | 6 + .../functions/_tide_item_private_mode.fish | 3 + .../functions/_tide_item_pulumi.fish | 19 + .../functions/_tide_item_python.fish | 27 + .../functions/_tide_item_ruby.fish | 6 + .../functions/_tide_item_rustc.fish | 6 + .../functions/_tide_item_shlvl.fish | 4 + .../functions/_tide_item_status.fish | 15 + .../functions/_tide_item_terraform.fish | 5 + .../functions/_tide_item_time.fish | 3 + .../functions/_tide_item_toolbox.fish | 4 + .../functions/_tide_item_vi_mode.fish | 16 + .../functions/_tide_item_zig.fish | 6 + .../functions/_tide_parent_dirs.fish | 10 + .../functions/_tide_print_item.fish | 22 + .../private_fish/functions/_tide_pwd.fish | 42 + .../_tide_remove_unusable_items.fish | 25 + .../functions/_tide_sub_bug-report.fish | 73 + .../functions/_tide_sub_configure.fish | 156 ++ .../functions/_tide_sub_reload.fish | 3 + dot_config/private_fish/functions/bkp.fish | 38 + .../functions/fish_mode_prompt.fish | 1 + .../private_fish/functions/fish_prompt.fish | 170 ++ dot_config/private_fish/functions/fisher.fish | 251 ++ .../private_fish/functions/get_idf.fish | 3 + dot_config/private_fish/functions/tide.fish | 28 + .../tide/configure/choices/all/finish.fish | 46 + .../tide/configure/choices/all/icons.fish | 33 + .../configure/choices/all/prompt_colors.fish | 26 + .../choices/all/prompt_connection.fish | 31 + .../prompt_connection_andor_frame_color.fish | 40 + .../configure/choices/all/prompt_spacing.fish | 22 + .../tide/configure/choices/all/show_time.fish | 33 + .../tide/configure/choices/all/style.fish | 36 + .../tide/configure/choices/all/transient.fish | 22 + .../choices/classic/classic_prompt_color.fish | 38 + .../classic/classic_prompt_separators.fish | 40 + .../choices/lean/lean_prompt_height.fish | 26 + .../powerline/powerline_prompt_heads.fish | 32 + .../powerline/powerline_prompt_style.fish | 51 + .../powerline/powerline_prompt_tails.fish | 40 + .../powerline_right_prompt_frame.fish | 20 + .../rainbow/rainbow_prompt_separators.fish | 40 + .../tide/configure/configs/classic.fish | 118 + .../configure/configs/classic_16color.fish | 91 + .../tide/configure/configs/lean.fish | 118 + .../tide/configure/configs/lean_16color.fish | 91 + .../tide/configure/configs/rainbow.fish | 118 + .../configure/configs/rainbow_16color.fish | 95 + .../functions/_fake_tide_cache_variables.fish | 41 + .../functions/_fake_tide_item_character.fish | 8 + .../_fake_tide_item_cmd_duration.fish | 3 + .../functions/_fake_tide_item_git.fish | 3 + .../functions/_fake_tide_item_newline.fish | 5 + .../functions/_fake_tide_item_os.fish | 3 + .../functions/_fake_tide_item_time.fish | 3 + .../functions/_fake_tide_print_item.fish | 22 + .../functions/_fake_tide_prompt.fish | 42 + .../configure/functions/_fake_tide_pwd.fish | 11 + .../functions/tide/configure/icons.fish | 41 + .../private_fish/private_fish_variables | 258 ++ .../private_fish_variables.6stNNw | 240 ++ .../private_fish_variables.P8CFom | 213 ++ .../private_fish_variables.QxGhnJ | 213 ++ .../private_fish_variables.ajVm5Y | 235 ++ .../private_fish_variables.w8NwWo | 218 ++ dot_config/private_fish/themes/.keep | 0 dot_vscode/argv.json | 20 + dot_vscode/extensions/extensions.json | 1 + install-apps.sh | 32 - private_dot_ssh/config | 26 + private_dot_ssh/id_ed221798.pub | 1 + private_dot_ssh/id_ed25519.pub | 1 + private_dot_ssh/private_known_hosts | 18 + qmk_firmware/dot_vscode/extensions.json | 10 + qmk_firmware/dot_vscode/settings.json | 57 + run_onchange_install-apps.sh.tmpl | 39 + vial-qmk/dot_vscode/extensions.json | 10 + vial-qmk/dot_vscode/settings.json | 57 + 338 files changed, 18983 insertions(+), 32 deletions(-) create mode 100644 Downloads/docker-compose.yml create mode 100644 dot_config/JetBrains/CLion2025.3/app-internal-state.db create mode 100644 dot_config/JetBrains/CLion2025.3/bundled_plugins.txt create mode 100644 dot_config/JetBrains/CLion2025.3/clion.key create mode 100644 dot_config/JetBrains/CLion2025.3/clion64.vmoptions create mode 100644 dot_config/JetBrains/CLion2025.3/codestyles/Default.xml create mode 100644 dot_config/JetBrains/CLion2025.3/disabled_plugins.txt create mode 100644 dot_config/JetBrains/CLion2025.3/early-access-registry.txt create mode 100644 dot_config/JetBrains/CLion2025.3/empty_nova.txt create mode 100644 dot_config/JetBrains/CLion2025.3/empty_splash-subscription-mode.txt create mode 100644 dot_config/JetBrains/CLion2025.3/options/Clang-Tidy.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/CommonFeedbackSurveyService.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/ConversationToolStoreService.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/DontShowAgainFeedbackService.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/EventLogAllowedList.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/PerfProfiler.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/RadFeedbackService.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/actionSummary.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/advancedSettings.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/baseRefactoring.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/colors.scheme.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/console-font.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/cppRuleManager.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/csvSettings.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/dailyLocalStatistics.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/databaseDrivers.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/databaseSettings.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/debugger.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/diff.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/editor-font.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/editor.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/features.usage.statistics.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/filetypes.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/find.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/github-copilot.local.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/github-copilot.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/github.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/gitlab.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/ide-features-trainer.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/ide.general.local.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/ide.general.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/inline.factors.completion.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/log-categories.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/notifications.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/other.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/path.macros.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/profilerRunConfigurations.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/project.default.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/proxy.settings.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/pycharm-job-survey-service.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/recentProjects.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/runner.layout.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/rust.feedback.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/settingsSync.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/sshRecentConnections.v2.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/sshRecentConnectionsHost.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/terminal-font.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/terminal.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/textmate.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/trace_license_storage.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/trusted-paths.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/ui.lnf.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/updates.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/usage.statistics.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/web-types-npm-loader.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/window.layouts.xml create mode 100644 dot_config/JetBrains/CLion2025.3/options/window.state.xml create mode 100644 dot_config/JetBrains/CLion2025.3/plugin_PCWMP.license create mode 100644 dot_config/JetBrains/CLion2025.3/resharper-host/CultureOptions create mode 100644 dot_config/JetBrains/CLion2025.3/tasks/Hazard_Pay.contexts.zip create mode 100644 dot_config/JetBrains/CLion2025.3/tasks/Hazard_Pay.tasks.zip create mode 100644 dot_config/JetBrains/CLion2025.3/tasks/Laser_Tag.contexts.zip create mode 100644 dot_config/JetBrains/CLion2025.3/tasks/Laser_Tag.tasks.zip create mode 100644 dot_config/JetBrains/CLion2025.3/tasks/laser_tag.contexts.zip create mode 100644 dot_config/JetBrains/CLion2025.3/tasks/laser_tag.tasks.zip create mode 100644 dot_config/JetBrains/CLion2025.3/tools/External Tools.xml create mode 100644 dot_config/JetBrains/CLion2025.3/updatedBrokenPlugins.db create mode 100644 dot_config/JetBrains/CLion2025.3/workspace/3BOE7pLB3btMHvDTrKDW53uXjfo.xml create mode 100644 dot_config/JetBrains/CLion2025.3/workspace/3BOrMOzGDHaQBprjdNtkqiVEnfP.xml create mode 100644 dot_config/JetBrains/CLion2025.3/workspace/3BOreagVTgIQtFhZt0F9hFMY2Kf.xml create mode 100644 dot_config/JetBrains/CLion2025.3/workspace/3BOwI6rZZR4ziS18yC8jtS91ggR.xml create mode 100644 dot_config/JetBrains/Rider2025.3/app-internal-state.db create mode 100644 dot_config/JetBrains/Rider2025.3/early-access-registry.txt create mode 100644 dot_config/JetBrains/Rider2025.3/empty_splash-subscription-mode.txt create mode 100644 dot_config/JetBrains/Rider2025.3/options/RiderPerAppSettingsManager.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/actionSummary.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/advancedSettings.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/codeLens.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/colors.scheme.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/console-font.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/debugger.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/editor-font.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/editor.codeinsight.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/editor.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/features.usage.statistics.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/filetypes.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/find.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/ide.general.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/log-categories.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/notifications.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/other.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/path.macros.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/profilerRunConfigurations.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/project.default.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/proxy.settings.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/rider.perapp.window.state.v2.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/riderVersions.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/runner.layout.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/settingsSync.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/sshRecentConnections.v2.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/sshRecentConnectionsHost.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/ui.lnf.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/updates.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/usage.statistics.xml create mode 100644 dot_config/JetBrains/Rider2025.3/options/window.state.xml create mode 100644 dot_config/JetBrains/Rider2025.3/plugin_PCWMP.license create mode 100644 dot_config/JetBrains/Rider2025.3/resharper-host/CultureOptions create mode 100644 dot_config/JetBrains/Rider2025.3/resharper-host/GlobalSettingsStorage.DotSettings create mode 100644 dot_config/JetBrains/Rider2025.3/rider.key create mode 100644 dot_config/JetBrains/Rider2025.3/rider64.vmoptions create mode 100644 dot_config/JetBrains/Rider2025.3/updatedBrokenPlugins.db create mode 100644 dot_config/private_Code/User/History/-1aabd2fd/0Ago.csv create mode 100644 dot_config/private_Code/User/History/-1aabd2fd/entries.json create mode 100644 dot_config/private_Code/User/History/-2e6bd5d9/DwLj.py create mode 100644 dot_config/private_Code/User/History/-2e6bd5d9/entries.json create mode 100644 dot_config/private_Code/User/History/-393f507a/entries.json create mode 100644 dot_config/private_Code/User/History/-393f507a/jeJQ.json create mode 100644 dot_config/private_Code/User/History/-3a2e7e8b/UHTA.yml create mode 100644 dot_config/private_Code/User/History/-3a2e7e8b/ebbC.yml create mode 100644 dot_config/private_Code/User/History/-3a2e7e8b/entries.json create mode 100644 dot_config/private_Code/User/History/-3a2e7e8b/i7DI.yml create mode 100644 dot_config/private_Code/User/History/-3a2e7e8b/xBDr.yml create mode 100644 dot_config/private_Code/User/History/-6123ca19/Xb2Q.py create mode 100644 dot_config/private_Code/User/History/-6123ca19/entries.json create mode 100644 dot_config/private_Code/User/History/-7d2a273a/bWGM.py create mode 100644 dot_config/private_Code/User/History/-7d2a273a/entries.json create mode 100644 dot_config/private_Code/User/History/6b1c27e9/entries.json create mode 100644 dot_config/private_Code/User/History/6b1c27e9/qMUb.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/3jGE.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/46oA.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/54EK.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/9dqp.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/EkUx.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/MJ5p.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/PpFf.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/QTk6.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/WSl3.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/bLJN.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/blt8.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/cTNf.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/entries.json create mode 100644 dot_config/private_Code/User/History/6c11eec7/j9Wc.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/o2Y7.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/sBVR.py create mode 100644 dot_config/private_Code/User/History/6c11eec7/u91r.py create mode 100644 dot_config/private_Code/User/History/785723cb/1nKM.txt create mode 100644 dot_config/private_Code/User/History/785723cb/entries.json create mode 100644 dot_config/private_Code/User/History/7da6e0fb/9KVj.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/FOyN.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/Gx76.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/Ldgu.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/MtI5.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/NtsI.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/SA9R.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/bwYb.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/enQE.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/entries.json create mode 100644 dot_config/private_Code/User/History/7da6e0fb/ycv3.py create mode 100644 dot_config/private_Code/User/History/7da6e0fb/yfjL.py create mode 100644 dot_config/private_Code/User/chatLanguageModels.json create mode 100644 dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/15f13b33-3dc7-40aa-8a44-bc553620d024.jsonl create mode 100644 dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/5ac4e9c8-7d0c-4bfc-99ab-f2186f80b5f1.jsonl create mode 100644 dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/774290be-a51d-442b-9810-d3d5a353019f.jsonl create mode 100644 dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/93153c4c-abc7-42d0-a6c8-ddaf556cfb10.jsonl create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/copilot.cli.workspaceSessions.c5981b2c-1e8f-4ec9-99a0-923d51711de8.json create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.js create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.ps1 create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/executable_copilot create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/copilotDebugCommand.js create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/executable_copilot-debug create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/plan-agent/Plan.agent.md create mode 100644 dot_config/private_Code/User/globalStorage/github.copilot-chat/toolEmbeddingsCache.bin create mode 100644 dot_config/private_Code/User/globalStorage/ms-python.python/pythonrc.py create mode 100644 dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/31f2aee4e71d21fb.4.json create mode 100644 dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/767d51c1340bd893.4.json create mode 100644 dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/c03c93ec8cafc307.4.json create mode 100644 dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/ca3ed784184f1b3b.4.json create mode 100644 dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/f0d7a494a3f77623.4.json create mode 100644 dot_config/private_Code/User/globalStorage/state.vscdb create mode 100644 dot_config/private_Code/User/globalStorage/state.vscdb.backup create mode 100644 dot_config/private_Code/User/globalStorage/storage.json create mode 100644 dot_config/private_Code/User/globalStorage/tailscale.vscode-tailscale/config.json create mode 100644 dot_config/private_Code/User/settings.json create mode 100644 dot_config/private_Code/User/workspaceStorage/1775815287792/state.vscdb create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/8b91d7a6-ae77-42bc-b66f-8d95a086715a.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/c7465b2a-7199-40ce-9951-b6795d0a3a84.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/dc74fbcd-b41d-47af-90f7-d0a978ef802b.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/eab52d46-dfac-4e20-a099-6b67cabfb460.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/ms-python.python/pythonrc.py create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/state.vscdb create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/state.vscdb.backup create mode 100644 dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/workspace.json create mode 100644 dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/chatSessions/2324c150-9e6f-47e2-8f4a-20af82ec2af1.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/chatSessions/e8ce1288-ab4d-4fa7-83ee-d054c746a71b.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/state.vscdb create mode 100644 dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/state.vscdb.backup create mode 100644 dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/workspace.json create mode 100644 dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/chatSessions/6f526eae-b27b-49cd-9817-e72d6480f23f.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/ms-python.python/pythonrc.py create mode 100644 dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/state.vscdb create mode 100644 dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/state.vscdb.backup create mode 100644 dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/workspace.json create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/11f2de30-ec2b-4879-a78f-e06b4c2b0bad.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/123907f6-8dde-436d-91a1-9b20eef75377.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/232d35f4-1b7a-4e62-aa92-a4adfa72f21c.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/3c426d55-429e-4167-afb1-8c4ff89be4b7.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/63779320-deba-4d03-8619-47e146708f20.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/782648e0-18b2-4e6c-a6c7-609c19b021df.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/809bdf57-f190-4e54-98f2-ea20e1c04007.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/c6f9ede1-602d-4967-a697-8f3f963b9e59.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/cfad25bb-6655-45fb-84e8-21d567d83b3e.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/f85b2f7c-7ec0-4989-b6d9-8884cf2da8ca.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/fc173837-a45e-47a1-88ac-13e2ce965177.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/chatSessions/fde32f5e-d620-48a9-b4be-6e17e9f78358.jsonl create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/ms-python.python/pythonrc.py create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/state.vscdb create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/state.vscdb.backup create mode 100644 dot_config/private_Code/User/workspaceStorage/e387457d3a4ae35149094541b5b1bc98/workspace.json create mode 100644 dot_config/private_fish/completions/fisher.fish create mode 100644 dot_config/private_fish/completions/tide.fish create mode 100644 dot_config/private_fish/conf.d/_tide_init.fish create mode 100644 dot_config/private_fish/config.fish create mode 100644 dot_config/private_fish/fish_plugins create mode 100644 dot_config/private_fish/functions/_tide_1_line_prompt.fish create mode 100644 dot_config/private_fish/functions/_tide_2_line_prompt.fish create mode 100644 dot_config/private_fish/functions/_tide_cache_variables.fish create mode 100644 dot_config/private_fish/functions/_tide_detect_os.fish create mode 100644 dot_config/private_fish/functions/_tide_find_and_remove.fish create mode 100644 dot_config/private_fish/functions/_tide_fish_colorize.fish create mode 100644 dot_config/private_fish/functions/_tide_item_aws.fish create mode 100644 dot_config/private_fish/functions/_tide_item_bun.fish create mode 100644 dot_config/private_fish/functions/_tide_item_character.fish create mode 100644 dot_config/private_fish/functions/_tide_item_cmd_duration.fish create mode 100644 dot_config/private_fish/functions/_tide_item_context.fish create mode 100644 dot_config/private_fish/functions/_tide_item_crystal.fish create mode 100644 dot_config/private_fish/functions/_tide_item_direnv.fish create mode 100644 dot_config/private_fish/functions/_tide_item_distrobox.fish create mode 100644 dot_config/private_fish/functions/_tide_item_docker.fish create mode 100644 dot_config/private_fish/functions/_tide_item_elixir.fish create mode 100644 dot_config/private_fish/functions/_tide_item_gcloud.fish create mode 100644 dot_config/private_fish/functions/_tide_item_git.fish create mode 100644 dot_config/private_fish/functions/_tide_item_go.fish create mode 100644 dot_config/private_fish/functions/_tide_item_java.fish create mode 100644 dot_config/private_fish/functions/_tide_item_jobs.fish create mode 100644 dot_config/private_fish/functions/_tide_item_kubectl.fish create mode 100644 dot_config/private_fish/functions/_tide_item_nix_shell.fish create mode 100644 dot_config/private_fish/functions/_tide_item_node.fish create mode 100644 dot_config/private_fish/functions/_tide_item_os.fish create mode 100644 dot_config/private_fish/functions/_tide_item_php.fish create mode 100644 dot_config/private_fish/functions/_tide_item_private_mode.fish create mode 100644 dot_config/private_fish/functions/_tide_item_pulumi.fish create mode 100644 dot_config/private_fish/functions/_tide_item_python.fish create mode 100644 dot_config/private_fish/functions/_tide_item_ruby.fish create mode 100644 dot_config/private_fish/functions/_tide_item_rustc.fish create mode 100644 dot_config/private_fish/functions/_tide_item_shlvl.fish create mode 100644 dot_config/private_fish/functions/_tide_item_status.fish create mode 100644 dot_config/private_fish/functions/_tide_item_terraform.fish create mode 100644 dot_config/private_fish/functions/_tide_item_time.fish create mode 100644 dot_config/private_fish/functions/_tide_item_toolbox.fish create mode 100644 dot_config/private_fish/functions/_tide_item_vi_mode.fish create mode 100644 dot_config/private_fish/functions/_tide_item_zig.fish create mode 100644 dot_config/private_fish/functions/_tide_parent_dirs.fish create mode 100644 dot_config/private_fish/functions/_tide_print_item.fish create mode 100644 dot_config/private_fish/functions/_tide_pwd.fish create mode 100644 dot_config/private_fish/functions/_tide_remove_unusable_items.fish create mode 100644 dot_config/private_fish/functions/_tide_sub_bug-report.fish create mode 100644 dot_config/private_fish/functions/_tide_sub_configure.fish create mode 100644 dot_config/private_fish/functions/_tide_sub_reload.fish create mode 100644 dot_config/private_fish/functions/bkp.fish create mode 100644 dot_config/private_fish/functions/fish_mode_prompt.fish create mode 100644 dot_config/private_fish/functions/fish_prompt.fish create mode 100644 dot_config/private_fish/functions/fisher.fish create mode 100644 dot_config/private_fish/functions/get_idf.fish create mode 100644 dot_config/private_fish/functions/tide.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/finish.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/icons.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/prompt_colors.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/prompt_connection.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/prompt_connection_andor_frame_color.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/prompt_spacing.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/show_time.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/style.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/all/transient.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/classic/classic_prompt_color.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/classic/classic_prompt_separators.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/lean/lean_prompt_height.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/powerline/powerline_prompt_heads.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/powerline/powerline_prompt_style.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/powerline/powerline_prompt_tails.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/powerline/powerline_right_prompt_frame.fish create mode 100644 dot_config/private_fish/functions/tide/configure/choices/rainbow/rainbow_prompt_separators.fish create mode 100644 dot_config/private_fish/functions/tide/configure/configs/classic.fish create mode 100644 dot_config/private_fish/functions/tide/configure/configs/classic_16color.fish create mode 100644 dot_config/private_fish/functions/tide/configure/configs/lean.fish create mode 100644 dot_config/private_fish/functions/tide/configure/configs/lean_16color.fish create mode 100644 dot_config/private_fish/functions/tide/configure/configs/rainbow.fish create mode 100644 dot_config/private_fish/functions/tide/configure/configs/rainbow_16color.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_cache_variables.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_item_character.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_item_cmd_duration.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_item_git.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_item_newline.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_item_os.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_item_time.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_print_item.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_prompt.fish create mode 100644 dot_config/private_fish/functions/tide/configure/functions/_fake_tide_pwd.fish create mode 100644 dot_config/private_fish/functions/tide/configure/icons.fish create mode 100644 dot_config/private_fish/private_fish_variables create mode 100644 dot_config/private_fish/private_fish_variables.6stNNw create mode 100644 dot_config/private_fish/private_fish_variables.P8CFom create mode 100644 dot_config/private_fish/private_fish_variables.QxGhnJ create mode 100644 dot_config/private_fish/private_fish_variables.ajVm5Y create mode 100644 dot_config/private_fish/private_fish_variables.w8NwWo create mode 100644 dot_config/private_fish/themes/.keep create mode 100644 dot_vscode/argv.json create mode 100644 dot_vscode/extensions/extensions.json delete mode 100644 install-apps.sh create mode 100644 private_dot_ssh/config create mode 100644 private_dot_ssh/id_ed221798.pub create mode 100644 private_dot_ssh/id_ed25519.pub create mode 100644 private_dot_ssh/private_known_hosts create mode 100644 qmk_firmware/dot_vscode/extensions.json create mode 100644 qmk_firmware/dot_vscode/settings.json create mode 100644 run_onchange_install-apps.sh.tmpl create mode 100644 vial-qmk/dot_vscode/extensions.json create mode 100644 vial-qmk/dot_vscode/settings.json diff --git a/Downloads/docker-compose.yml b/Downloads/docker-compose.yml new file mode 100644 index 0000000..4e803ab --- /dev/null +++ b/Downloads/docker-compose.yml @@ -0,0 +1,208 @@ +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + group_add: + - "993" # render group for VAAPI hardware acceleration + + ports: + - "8096:8096" # HTTP web UI + - "8920:8920" # HTTPS + - "7359:7359/udp" # Network discovery + - "1900:1900/udp" # DLNA + + expose: + - "8096" + + environment: + - PUID=1000 + - PGID=1000 + - TZ=Australia/Perth + + volumes: + # Config on NVMe (fast) + - ./config:/config + - ./cache:/cache + + # Media libraries (read-only for safety) + - "/mnt/media/Movies:/media/movies:ro" + - "/mnt/media/TV Shows:/media/tv-shows:ro" + - "/mnt/media/Anime:/media/anime:ro" + - "/mnt/media/Kids TV:/media/kids-tv:ro" + - "/mnt/media/Kids Movies:/media/kids-movies:ro" + - "/tank/home-videos:/media/home-videos:ro" + - "/tank/videos:/media/home-videos:ro" + - "/tank/photos:/media/home-photos:ro" + + devices: + # Hardware transcoding (Vega graphics) + - /dev/dri:/dev/dri + + networks: + - jellyfin-net + + qbittorrent: + image: linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + WEBUI_PORT: 8090 + volumes: + - ~/.docker_volumes/qbittorrent/config:/config + - /mnt/media/downloads:/downloads + - /mnt/media/anime:/animeq + ports: + - "8090:8090" + - "6881:6881" + - "6881:6881/udp" + expose: + - "8090" + restart: unless-stopped + deploy: + resources: + limits: + memory: 1G + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + sonarr: + image: linuxserver/sonarr:latest + container_name: sonarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + DOCKER_MODS: "linuxserver/mods:universal-package-install" + INSTALL_PACKAGES: "ffmpeg" + volumes: + - ~/.docker_volumes/sonarr/config:/config + - /mnt/media/Anime:/tv + - ~/media/downloads:/downloads + ports: + - "8989:8989" + expose: + - "8989" + restart: unless-stopped + depends_on: + - qbittorrent + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + prowlarr: + image: linuxserver/prowlarr:latest + container_name: prowlarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/prowlarr/config:/config + ports: + - "9696:9696" + expose: + - "9696" + restart: unless-stopped + depends_on: + - qbittorrent + - sonarr + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9696/ping"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/jellyseerr/config:/app/config + ports: + - "5055:5055" + expose: + - "5055" + restart: unless-stopped + depends_on: + - jellyfin + - sonarr + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + caddy: + build: + context: . + dockerfile_inline: | + FROM caddy:builder AS builder + RUN xcaddy build --with github.com/caddy-dns/namedotcom + FROM caddy:latest + COPY --from=builder /usr/bin/caddy /usr/bin/caddy + container_name: caddy + restart: unless-stopped + environment: + - NAMEDOTCOM_USERNAME= + - NAMEDOTCOM_TOKEN=your_api_token + ports: + - "443:443" + - "443:443/udp" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ./caddy_data:/data + - ./caddy_config:/config + networks: + - jellyfin-net + + crowdsec: + image: crowdsecurity/crowdsec:latest + container_name: crowdsec + restart: unless-stopped + environment: + - COLLECTIONS=crowdsecurity/linux crowdsecurity/caddy crowdsecurity/base-httping + volumes: + - /var/log:/var/log:ro + - ./crowdsec_data:/var/lib/crowdsec/data + - ./crowdsec_config:/etc/crowdsec + networks: + - jellyfin-net + +networks: + jellyfin-net: + driver: bridge diff --git a/apps-flatpak.txt b/apps-flatpak.txt index 2e69076..774293b 100644 --- a/apps-flatpak.txt +++ b/apps-flatpak.txt @@ -2,6 +2,7 @@ app.zen_browser.zen art.taunoerik.tauno-monitor cc.arduino.IDE2 cc.arduino.arduinoide +com.bitwarden.desktop com.getmailspring.Mailspring com.spotify.Client com.unity.UnityHub diff --git a/dot_config/JetBrains/CLion2025.3/app-internal-state.db b/dot_config/JetBrains/CLion2025.3/app-internal-state.db new file mode 100644 index 0000000000000000000000000000000000000000..6354468b0cd4fcaddf7306655a07e08cc4093d00 GIT binary patch literal 1323008 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

F3}-6;^`h1m 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 literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/clion64.vmoptions b/dot_config/JetBrains/CLion2025.3/clion64.vmoptions new file mode 100644 index 0000000..7f53e3a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/clion64.vmoptions @@ -0,0 +1,5 @@ +-Xmx1925m +-Dide.managed.by.toolbox=/home/breadway/Downloads/jetbrains-toolbox-3.2.0.65851/bin/jetbrains-toolbox +-Dtoolbox.notification.token=faf37c92-f1e7-4a46-b8c0-fdf6ffa8776d +-Dtoolbox.notification.portFile=/home/breadway/.cache/JetBrains/Toolbox/ports/1805ca97-ee47-4a11-9160-a1b382f7ebd7.port +-Didea.suppressed.plugins.set.selector=radler \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/codestyles/Default.xml b/dot_config/JetBrains/CLion2025.3/codestyles/Default.xml new file mode 100644 index 0000000..6c5e74b --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/codestyles/Default.xml @@ -0,0 +1,100 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/disabled_plugins.txt b/dot_config/JetBrains/CLion2025.3/disabled_plugins.txt new file mode 100644 index 0000000..b088ee3 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/disabled_plugins.txt @@ -0,0 +1 @@ +com.intellij.cidr.lang diff --git a/dot_config/JetBrains/CLion2025.3/early-access-registry.txt b/dot_config/JetBrains/CLion2025.3/early-access-registry.txt new file mode 100644 index 0000000..eaf6f21 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/early-access-registry.txt @@ -0,0 +1,10 @@ +i18n.locale + +ide.experimental.ui +true +ide.experimental.ui.inter.font +false +idea.plugins.compatible.build + +switched.from.classic.to.islands +false diff --git a/dot_config/JetBrains/CLion2025.3/empty_nova.txt b/dot_config/JetBrains/CLion2025.3/empty_nova.txt new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/JetBrains/CLion2025.3/empty_splash-subscription-mode.txt b/dot_config/JetBrains/CLion2025.3/empty_splash-subscription-mode.txt new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/JetBrains/CLion2025.3/options/Clang-Tidy.xml b/dot_config/JetBrains/CLion2025.3/options/Clang-Tidy.xml new file mode 100644 index 0000000..e0f1bd7 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/Clang-Tidy.xml @@ -0,0 +1,817 @@ + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/CommonFeedbackSurveyService.xml b/dot_config/JetBrains/CLion2025.3/options/CommonFeedbackSurveyService.xml new file mode 100644 index 0000000..e81b461 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/CommonFeedbackSurveyService.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/ConversationToolStoreService.xml b/dot_config/JetBrains/CLion2025.3/options/ConversationToolStoreService.xml new file mode 100644 index 0000000..d98f137 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/ConversationToolStoreService.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/DontShowAgainFeedbackService.xml b/dot_config/JetBrains/CLion2025.3/options/DontShowAgainFeedbackService.xml new file mode 100644 index 0000000..52bca8f --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/DontShowAgainFeedbackService.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/EventLogAllowedList.xml b/dot_config/JetBrains/CLion2025.3/options/EventLogAllowedList.xml new file mode 100644 index 0000000..ecac6ae --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/EventLogAllowedList.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/PerfProfiler.xml b/dot_config/JetBrains/CLion2025.3/options/PerfProfiler.xml new file mode 100644 index 0000000..4eda18a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/PerfProfiler.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/RadFeedbackService.xml b/dot_config/JetBrains/CLion2025.3/options/RadFeedbackService.xml new file mode 100644 index 0000000..326173a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/RadFeedbackService.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/actionSummary.xml b/dot_config/JetBrains/CLion2025.3/options/actionSummary.xml new file mode 100644 index 0000000..5c4b569 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/actionSummary.xml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/advancedSettings.xml b/dot_config/JetBrains/CLion2025.3/options/advancedSettings.xml new file mode 100644 index 0000000..5aa9b14 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/advancedSettings.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/baseRefactoring.xml b/dot_config/JetBrains/CLion2025.3/options/baseRefactoring.xml new file mode 100644 index 0000000..dd208be --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/baseRefactoring.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/colors.scheme.xml b/dot_config/JetBrains/CLion2025.3/options/colors.scheme.xml new file mode 100644 index 0000000..c1e0a9a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/colors.scheme.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/console-font.xml b/dot_config/JetBrains/CLion2025.3/options/console-font.xml new file mode 100644 index 0000000..2c67ad2 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/console-font.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/cppRuleManager.xml b/dot_config/JetBrains/CLion2025.3/options/cppRuleManager.xml new file mode 100644 index 0000000..d1b8288 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/cppRuleManager.xml @@ -0,0 +1,16 @@ + + + + std::* + + + boost::* + + + Catch::* + + + testing::* + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/csvSettings.xml b/dot_config/JetBrains/CLion2025.3/options/csvSettings.xml new file mode 100644 index 0000000..c0a15b2 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/csvSettings.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/dailyLocalStatistics.xml b/dot_config/JetBrains/CLion2025.3/options/dailyLocalStatistics.xml new file mode 100644 index 0000000..1d54330 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/dailyLocalStatistics.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/databaseDrivers.xml b/dot_config/JetBrains/CLion2025.3/options/databaseDrivers.xml new file mode 100644 index 0000000..18bb29e --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/databaseDrivers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/databaseSettings.xml b/dot_config/JetBrains/CLion2025.3/options/databaseSettings.xml new file mode 100644 index 0000000..7daa415 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/databaseSettings.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/debugger.xml b/dot_config/JetBrains/CLion2025.3/options/debugger.xml new file mode 100644 index 0000000..8fd0533 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/debugger.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/diff.xml b/dot_config/JetBrains/CLion2025.3/options/diff.xml new file mode 100644 index 0000000..c679db1 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/diff.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/editor-font.xml b/dot_config/JetBrains/CLion2025.3/options/editor-font.xml new file mode 100644 index 0000000..2a546c4 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/editor-font.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/editor.xml b/dot_config/JetBrains/CLion2025.3/options/editor.xml new file mode 100644 index 0000000..edee924 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/editor.xml @@ -0,0 +1,67 @@ + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/features.usage.statistics.xml b/dot_config/JetBrains/CLion2025.3/options/features.usage.statistics.xml new file mode 100644 index 0000000..a7df3bf --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/features.usage.statistics.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/filetypes.xml b/dot_config/JetBrains/CLion2025.3/options/filetypes.xml new file mode 100644 index 0000000..8c5264c --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/filetypes.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/find.xml b/dot_config/JetBrains/CLion2025.3/options/find.xml new file mode 100644 index 0000000..d2a6057 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/find.xml @@ -0,0 +1,9 @@ + + + *.css + *.html + *.xml + *.cmake + *..txt + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/github-copilot.local.xml b/dot_config/JetBrains/CLion2025.3/options/github-copilot.local.xml new file mode 100644 index 0000000..bc6ad0e --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/github-copilot.local.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/github-copilot.xml b/dot_config/JetBrains/CLion2025.3/options/github-copilot.xml new file mode 100644 index 0000000..bddae8c --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/github-copilot.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/github.xml b/dot_config/JetBrains/CLion2025.3/options/github.xml new file mode 100644 index 0000000..2f74c56 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/github.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/gitlab.xml b/dot_config/JetBrains/CLion2025.3/options/gitlab.xml new file mode 100644 index 0000000..1fa6ec9 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/gitlab.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/ide-features-trainer.xml b/dot_config/JetBrains/CLion2025.3/options/ide-features-trainer.xml new file mode 100644 index 0000000..4d93ed3 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/ide-features-trainer.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/ide.general.local.xml b/dot_config/JetBrains/CLion2025.3/options/ide.general.local.xml new file mode 100644 index 0000000..22930d0 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/ide.general.local.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/ide.general.xml b/dot_config/JetBrains/CLion2025.3/options/ide.general.xml new file mode 100644 index 0000000..169435c --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/ide.general.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/inline.factors.completion.xml b/dot_config/JetBrains/CLion2025.3/options/inline.factors.completion.xml new file mode 100644 index 0000000..72ef21a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/inline.factors.completion.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/log-categories.xml b/dot_config/JetBrains/CLion2025.3/options/log-categories.xml new file mode 100644 index 0000000..3ff0f01 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/log-categories.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/notifications.xml b/dot_config/JetBrains/CLion2025.3/options/notifications.xml new file mode 100644 index 0000000..a3ec03a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/notifications.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/other.xml b/dot_config/JetBrains/CLion2025.3/options/other.xml new file mode 100644 index 0000000..2234c08 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/other.xml @@ -0,0 +1,73 @@ + + {} + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/path.macros.xml b/dot_config/JetBrains/CLion2025.3/options/path.macros.xml new file mode 100644 index 0000000..244ff3a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/path.macros.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/profilerRunConfigurations.xml b/dot_config/JetBrains/CLion2025.3/options/profilerRunConfigurations.xml new file mode 100644 index 0000000..47515e7 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/profilerRunConfigurations.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/project.default.xml b/dot_config/JetBrains/CLion2025.3/options/project.default.xml new file mode 100644 index 0000000..cb95b73 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/project.default.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/proxy.settings.xml b/dot_config/JetBrains/CLion2025.3/options/proxy.settings.xml new file mode 100644 index 0000000..b98ef7c --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/proxy.settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/pycharm-job-survey-service.xml b/dot_config/JetBrains/CLion2025.3/options/pycharm-job-survey-service.xml new file mode 100644 index 0000000..b8da133 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/pycharm-job-survey-service.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/recentProjects.xml b/dot_config/JetBrains/CLion2025.3/options/recentProjects.xml new file mode 100644 index 0000000..9a53044 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/recentProjects.xml @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/runner.layout.xml b/dot_config/JetBrains/CLion2025.3/options/runner.layout.xml new file mode 100644 index 0000000..36f7b3e --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/runner.layout.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/rust.feedback.xml b/dot_config/JetBrains/CLion2025.3/options/rust.feedback.xml new file mode 100644 index 0000000..3a06d86 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/rust.feedback.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/settingsSync.xml b/dot_config/JetBrains/CLion2025.3/options/settingsSync.xml new file mode 100644 index 0000000..6c9eb82 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/settingsSync.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/sshRecentConnections.v2.xml b/dot_config/JetBrains/CLion2025.3/options/sshRecentConnections.v2.xml new file mode 100644 index 0000000..0ab9433 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/sshRecentConnections.v2.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/sshRecentConnectionsHost.xml b/dot_config/JetBrains/CLion2025.3/options/sshRecentConnectionsHost.xml new file mode 100644 index 0000000..d921474 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/sshRecentConnectionsHost.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/terminal-font.xml b/dot_config/JetBrains/CLion2025.3/options/terminal-font.xml new file mode 100644 index 0000000..f2d6543 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/terminal-font.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/terminal.xml b/dot_config/JetBrains/CLion2025.3/options/terminal.xml new file mode 100644 index 0000000..093f759 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/terminal.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/textmate.xml b/dot_config/JetBrains/CLion2025.3/options/textmate.xml new file mode 100644 index 0000000..32b9320 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/textmate.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/trace_license_storage.xml b/dot_config/JetBrains/CLion2025.3/options/trace_license_storage.xml new file mode 100644 index 0000000..b401f4a --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/trace_license_storage.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/trusted-paths.xml b/dot_config/JetBrains/CLion2025.3/options/trusted-paths.xml new file mode 100644 index 0000000..e0da57c --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/trusted-paths.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/ui.lnf.xml b/dot_config/JetBrains/CLion2025.3/options/ui.lnf.xml new file mode 100644 index 0000000..585ca57 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/ui.lnf.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/updates.xml b/dot_config/JetBrains/CLion2025.3/options/updates.xml new file mode 100644 index 0000000..bc3abb8 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/updates.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/usage.statistics.xml b/dot_config/JetBrains/CLion2025.3/options/usage.statistics.xml new file mode 100644 index 0000000..d440092 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/usage.statistics.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/web-types-npm-loader.xml b/dot_config/JetBrains/CLion2025.3/options/web-types-npm-loader.xml new file mode 100644 index 0000000..25c3b60 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/web-types-npm-loader.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/window.layouts.xml b/dot_config/JetBrains/CLion2025.3/options/window.layouts.xml new file mode 100644 index 0000000..593471c --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/window.layouts.xml @@ -0,0 +1,93 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/options/window.state.xml b/dot_config/JetBrains/CLion2025.3/options/window.state.xml new file mode 100644 index 0000000..16c1dab --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/options/window.state.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/plugin_PCWMP.license b/dot_config/JetBrains/CLion2025.3/plugin_PCWMP.license new file mode 100644 index 0000000000000000000000000000000000000000..a6166962b22ca417e8973c743ac13dd78f3bbcd2 GIT binary patch literal 27576 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 literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/resharper-host/CultureOptions b/dot_config/JetBrains/CLion2025.3/resharper-host/CultureOptions new file mode 100644 index 0000000..ce0dc71 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/resharper-host/CultureOptions @@ -0,0 +1 @@ +{Culture:} \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/tasks/Hazard_Pay.contexts.zip b/dot_config/JetBrains/CLion2025.3/tasks/Hazard_Pay.contexts.zip new file mode 100644 index 0000000000000000000000000000000000000000..568404d8f427d9138064627cc9767dd1e7f1aab2 GIT binary patch literal 139 zcmWIWW@h1H00I8CikKs|$1_-gY!DU#V*S+If|5$Tw9K4Tz1+m2?9?K#K!7(RlL!ND aZ9tt!0Mn2FZ&o&t0!AQo0Me!)4g&zj-Wk^b literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/tasks/Hazard_Pay.tasks.zip b/dot_config/JetBrains/CLion2025.3/tasks/Hazard_Pay.tasks.zip new file mode 100644 index 0000000000000000000000000000000000000000..568404d8f427d9138064627cc9767dd1e7f1aab2 GIT binary patch literal 139 zcmWIWW@h1H00I8CikKs|$1_-gY!DU#V*S+If|5$Tw9K4Tz1+m2?9?K#K!7(RlL!ND aZ9tt!0Mn2FZ&o&t0!AQo0Me!)4g&zj-Wk^b literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/tasks/Laser_Tag.contexts.zip b/dot_config/JetBrains/CLion2025.3/tasks/Laser_Tag.contexts.zip new file mode 100644 index 0000000000000000000000000000000000000000..3d00467142f014dd9f655263f622d9972493f63f GIT binary patch literal 139 zcmWIWW@h1H0D-8sikKs|$1_-gY!DU#V*S+If|5$Tw9K4Tz1+m2?9?K#K!7(RlL!ND aZ9tt!0Mn2FZ&o&t0!AQo0Me!)4g&xJW*Th( literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/tasks/Laser_Tag.tasks.zip b/dot_config/JetBrains/CLion2025.3/tasks/Laser_Tag.tasks.zip new file mode 100644 index 0000000000000000000000000000000000000000..e66095992c554ab2408562dfbf4d819a1e199be9 GIT binary patch literal 12839 zcmeHO%W~Vu6?G<=EV4{Z_6WQMh!^oobFL6%a-{PyV;V8dr48n*thF*HjQeJR8Y4q-Ix8MKuzyJByzttyC==(cr^z!In z|D~+rqcw6byKdYLqqd*KIlIj}Z5D)il4hND#JqtJ2JBfFU$S(RhH<_pYHsq*9|qp_ zIJ10FI6dt4`e*xJpY~4=zw7m19=%ZvzX-||jvC}5SATiF=70$d%WfXb&AW4T|(g@>F$^h zJMG-N=(KPk%u2NRbnzI0B-PWeT-YVj(XjZ?F# zUA5zjl8mP!J55Q3 zrm}&{=^yGil74=FevUVnzp_fPgR!W$<0UdnQLlw=_-4lH&o|4y5i3Q-sXRjg_)~@4{n8%4pV})yr`L8f%9T2IV z+d3$5HCI<{?ejp1ZCnKQ&j?CnzS6K1X&KS^GMrQ;grNj373u-W2xpoFjM4fhqyR_~ zJYse01P4?ZKvF?Naf<^el@g8>Nc2D>n}CCA7GT1`gL|-mQ0QFsN zVGBek{gQtKAN) z_?!Ouc+U>32nVP5wi(Rsz-nWItm1_!dp8bYXp+6w$Zzv`PH5Uc9#Ac5wgaip3{u?m zBU-`@tr_A1`=!|7$?~Bsy(9_c9?tngX@gG50pxHyubyC#DfieOh<<<&e4L>Su0XIa zgEY#p@@2=AWLz%VWm_f-L=*ZM%QDzJjVQTXScc9vmf;VYW@b}eFwNkODg7*qw%Poh zsc}Z-AgAZeJcuK*1utC9{ObXQ1@^Sdr`)KAA>LjwiRAlf`W{}tr^S|Y=jN7 z(^iKEJ6FpV@xY~xezn)uhPRrGeXs|6HB0txo{7VmCwBk1T2LiuG9Cg zafvcZ0J2{EoM6j3zYY;Nu#sF{a4@YwMOFawZrddoS1py(Vn-O5uo%N*8n!yyj3 zz^2K$S40czgw`{S^;~|-eG%&@NeYc)-Fz5Qj7Jxze2HR^Qw!vQ7$k2?go-#;F?fjL zMh;CVw;d2d<^@!(NcSL@Vv~qIj?Tvs{Y{Y}OMPX+rDw9NEZ5mememiVg1v|enqfkf zdg8HoZw4rMtJyq{B1KLJkXr%%J!kH!HL9x2tf-IimNBmQJkT|;ZZg2z;UQe`zuZ?-hsDCItK z=(^psotEzClwnAER`Qg`<@-z)Slwo`W2#$Zs)bLf0`0o3W}W?uw?jp(&NL>c(2BkB z5!=}6E`Kt+8AyXnK0Mg#@L$1cMfUsjZ>4iwq15AQpCIe8a0MeL86N6CBW3pu{Lr2D zsh^A(S(orAQR%T4BeZS*I>&Wp=a6$VftZh=6zpv(zJA6bu@I6ga@Gz`j0iI+W_QF6a<OktEl|NwDNzQJy_ZPbnw2(=HO!%Y{T)@1qPR+;cjqt1*$o*U((!fDOEH zgzOQX$X*41NRPQ{JTbniGnu!-0G#bsDOv$6<`q^ZD&SW2BZuP`zxd*-C#!!~fnQ0? ze3pM@G26cGCl=16wTZLZA6$4rAmDcmIr9F5@;Sluoq0Z-ie~~6kC6#I&A2&!@#U{c O`WN{3cO2hnboD=3;8!dF literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/tasks/laser_tag.contexts.zip b/dot_config/JetBrains/CLion2025.3/tasks/laser_tag.contexts.zip new file mode 100644 index 0000000000000000000000000000000000000000..b72de6e536f80347f36761ecbaf0d647fab2f481 GIT binary patch literal 139 zcmWIWW@h1H0D+2W6){I_k7uv~*&r+g#QLeZ1tpbwX_+~xdbx>3*{MZffdFqtCJ_eQ a+JHKd0Hz@U-mGjO1&l!G0HjSp90mX;z#7Q_ literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/tasks/laser_tag.tasks.zip b/dot_config/JetBrains/CLion2025.3/tasks/laser_tag.tasks.zip new file mode 100644 index 0000000000000000000000000000000000000000..b72de6e536f80347f36761ecbaf0d647fab2f481 GIT binary patch literal 139 zcmWIWW@h1H0D+2W6){I_k7uv~*&r+g#QLeZ1tpbwX_+~xdbx>3*{MZffdFqtCJ_eQ a+JHKd0Hz@U-mGjO1&l!G0HjSp90mX;z#7Q_ literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/tools/External Tools.xml b/dot_config/JetBrains/CLion2025.3/tools/External Tools.xml new file mode 100644 index 0000000..873d9f2 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/tools/External Tools.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/updatedBrokenPlugins.db b/dot_config/JetBrains/CLion2025.3/updatedBrokenPlugins.db new file mode 100644 index 0000000000000000000000000000000000000000..d6f70654c91957114b2e6c4b383d56b474167dfa GIT binary patch literal 224573 zcmb5XX_s8bajsjoBo5$Ailit}cFXpWrDIo}uA!%O?^^eQ07#K0B^V9K_9w30RlBFS*bAM&zz)0JP4*P&;?-oHH^qri}dC*8BIqZTAlPoql(}-|uw$gI4R# zomQ*$H?5!bj*h#>tvr}#`>l7r9M48y zY%W&qukSy&+xocm+J5JxbJA_Ssb{Y}s;@KZAfJQQ>rQfVk`et9ahwso)*Yqj?>o1{ z$5B#*`;K=7-EERygroja)KM0-`|YsxGdG}gAqtHY?p3$-_LD_td{r;zvvIX*{jBv9 zI@@}ipZ4h=?>;>J!=E0P%$dQDUhB%vW`1U9GNG zohQ|G)fvy$^<*-B(wSD*^^CT>?%ARfzg9KlQ8k^PjVE=dnvIt8@u;(&&nIW|XRSBY z!mi5K!|m;Mw(ae94%GH;d}bh(>L?!F*2gM)GOeC9^?yr4X!B3@m4zQ3@6VSPoy+>! zrgKrRhx1Y0`bi9j%jKsRof?g27thAk?4m&4>3T`jgV}I-vsllUWq^OOuB)hmrtNnQ zTd&=p53g!{f1`WU@AMA$4_Y6O=bZ{r?5sA^X}xR*Fp~{v=^j(1o+k{?&nK(%&1yWK zF-CQjRk!}X)@vHSF6sR2=W~!xK-=;A`RvAcce@8Aa99EWyOVZV1`#+Zfuj;QE`g?; zUWwVyK(7?oE4g~5z+S1eSIX&?Dte`yUTH?JDX<%D2NAe0{p?ep0aZKuNBPV?_DlL4 zlYW-i+t12+rH8#T3O&ZpeeQKjV(?7HG`X^4y>3=mI@s%G&81ttZZ?7LxruZtp4kNk zBHptL^flf~K0`TO%Q4;05$uuCYqN|f02Hlc)cv81@P6qKRr^DkmHpB|X2l=MEbSl1 zdzl(W%iqfk?U(MCZg=-{9J)=}Ic2?G_JffMP})y;=`qhPwIs+&3;33?E(3Cq19Xs8 z9e_PG=Lb2k2bu982lyZd_#g-PAP4rKz$+P}MU<3*=2HQ|l4;PSEu%_vGEY-vxb;iB`lSnHb!wl_ z#AQPIS;JwrfT8i^GcxhaF{Eqpo-IGjmNQHdpDk_%l1YiGni*!=GNyE*nGj|!Ka~bD z*BMi0rp)F^DF!OTRiBjNPO>j2*#}6BDB~m>*(AtLon)s@vQtgE(i}cy2~DMCCdiwg znp&E6Wc|lEhR0d_agNz>j`eX#mmN9I_8({SjKs1ta~Kxqz;l`*C5z)r@L zb^(nUQ@V9jy46&1T(VPnB&PKlC zS!u7qi2M7kJrNk|YH|f3Fsjy7XL{2)ude6I@w)DqmViF;t{RVCkULN6_1Ur-&sLpf zJ)N)X`}Or{y}UM!@OJN@$JT#*G|=|`D^o{>cv>w)ada-0)#CDp2?WLM#Q&_s&!63N z#!r$sep(MNt95%io{bmFIr*l&eYOV3jDF{!0|t-hQR_2h9j(vj%VABUR@15w*wm6e z_@~MEyzY!QvvEVE6&ifAUf0X38Q)3%t~$I!n0_n*Yc;GU)%kSYIaT1x>AKYx0oH?- z<1q*Vk|qUJ#(t-7ehftQf%_xLVM$`5*%TogW{GrRy~x1$MZWzgj6FxCWYKJMsuogF zkuIzkk3lr)FzOpbhJzC6w)7y($Y-)t?Q}(bBB9!ND^K$r3`YCWJ=T$`;}g8bpmVG& zG+yOE&c@@QJjfSA_~@RiBYiZ}kHbRWIR6BvX7C(HTSeBF9WnNFf{a6WoF z;_at2+{LO9A~X3HgeuhPkwVA%IdQ`M)_Y&iR*QNFfeYg>zrHEdvzdus3TzhRXZ2)J zFV9KU8IG5*2JPXvz)i39ceh~pZ0waH`hLX{SqfrqgYlcE(`vc?W;0z-*BbzAz()yn z16ZFf;fD$-UV0Act{x3&eLTTuem`oxd3QajR*$I`p5iAOw$}j^PabdJn0V{yn}0wl z5!D2MF20fW)@kdtK?g9V zX?}uw{RAQb5Y35S!L)vYdHn=L^%>amD`3pR5Tpa4O(sA>u{2b%Ou61liTUb>U@Zy) z5J{pedQgBK8A(#T^;>VzYZmocy{=puHD-_WW8(%yx=&RVo)qMcGi1kgC9aJJhOlb@A{p9BP>;(j$4O)vPy`IOs(^(}O0k zz+-5POBCs%y$bcsod+wZ^WxvK^VuK8WeN|E$aN=luNbaAf~$?Jrhb|sMVfqn&!cM@5key6nWfwOUX*YcfR?q24C+b z)A>fj{cAwX@bc4F$c(l*Yz9-Tb+>g#t9iZXJez6*`iXheYBHI_3|Ie4+u3!!SydOc z@Py#WsN`Ri>G^rtH*(upT~>>Fw5*<1XOsH-bv<27s&(CZBQ_icM=-~H>)}Q)hYGtb z!c~4_G8EZsy?uAHo}WG)uZNdkPg}1mT9Ziw+$*PJyk6|#ukWwt?f+m)1%z`rWi&&&uFL(KJ@Y!r;T-ljav>*mRqeh7AuNc)&XVtXs zTrKB|9sK=+#}<681^yQGiIf=5k=rohYRzZk=a)z#o?nhHt9eJH#M%5Ql*dxS4f+kF z#iQT)<+iyKFlIHIKb;_5SxAob(-^vDq)ogI&Vq>TpS3>G&Rv7$7D#iRt?Svyy;Z(m z>@0d1m<0!~0m?vG>t9E8XLTWY(dug4S>GTG8ZO6+b*E;7T0+B6T7tlM)cR0`DVra( zTZ`Xs+O2pyjyLa_&;${ASdwHuzyw+%BE6BSOt;JnREy4qu@2N}m)WK9`>lUaC$|(? zG;GzG%pp|9&#N^kURxBLN~e*veSEf=jVAS|y|`SgfRbtZk}Z%Kf2(`KV%Gov)biSO7I@9Y#sW3Of z&+e^OcPER>ih9S4=A*h=E&*HUTqKyyf+7T-@e7_Ymq8h`y1mK(4J|gW@ImXtFX{?` z-QMGRwcdNQVM#9q@+z67qKDHb`KRhWJ6$jk_bzJ*`r7x$!*%;~QO(9HHOa02M>Ut} znXfLdI!{*T?RwI#wWK85E8@Rg-5(a{GJO%C_1X@YAdlF>jP{!b&iJweGe{YB-e7wo zp`r7r^)7<)YO*(-kH+U?vmP|G+xqk#WYTKykD#U1-gvfmZ;pU+wicwhBmcwbXf~`D z>+yBn`C(HnuQsc8p}@k1U6#)d=bPoKzO0vXK@&*0^;*>AU6l<) zd-qTIfpisuiQTr_`kaQWW;a*F8)&H9q5N6At{$F9Avm7)0bQGH&CDQJJQ2h+GG zUCZ7P6ZJQqs^ivO4dD5BxmvHs(|SB3Q4NFJkim=5c}M@R$Mw^l=r(cfY!z!0kO`nk z*bylFQ~#ju9}o8r+b2hdy>_=-AGD80qkj8fQ0*V=v)Fq`O$@Ez)~|yndidy1UzWCi z_+U0#%mLWd-h*cg)FX_*&tuPnKJy+Z>Q;3lGLC1;OGJz+zL9i7*ZJME;hjdW4b9>X z+$L9Y5>gN&7Tgsz#7w+qs$T1ZZ%+R_8?TLuVrweh_?PX*evW?U?qV?k$!fb=HKUxX zF?agh`@9pXQZGjh=_i`3vVx6Hm*a~|Er#2i+26l$6Q~4a!|Y>MQ}vrbVU4cfP*9*?VZUpLjTRhaaHcm|L_G zArk^#Hl~_IFt8RxGyfxvxg1Zs$H$$k`I;)*qZ_EN@eq~Wq`ruzz1I2wZ9v;dzTG|K z*=7kjv^xf91QaHq#CV;m$6YzHxrf( z7-=+rI)g%jvVxHZ*!%?JQ(_0s80>c3x}%rw$x#RL!Ds>JQv!4j{qq?)>en?bo6Ou=-sTwLBTSw?_|t$z?yK{KMxn{NzN z-w!uSsD}0TppNnNcx_>VAi?W|y+=8&)%UH&uDyi*daZS*w=aDd;|&WEVKUOYCcGPe zuoFMn3HMt+R}~O;XVqENIjhFQ%S|Z#{!^=|EPeI=MtzW3R)%dJNT7eeSD!fXvu-1X(D+rAB+Y{16lu91> zXT==(_t-IfB_`4zDkZ8eYCS=_K?X30e#yoxxd?>pgpp)>k?}(T{5UI3B1}5ALJNcF zi;H0>$pn7mGg%2Ax@|~b6?QymRaH49(s+d(gF1#5B9$d2OufRu6>V0>JPdy6>qY&b zPUl9*s<3;BN-H*cA`W+`LFmF=nUwlX>piU1Vs%;1Krbc(MUXsM#prt@?6>x|7?Rcg zw1Q}vbyk=2r)_3ML{00H)+dZitR)@{K>zzL`)R-RDe*K#i;NGj3y0tD!&mILK8;s> zU?DIB{qOx*IlAnCnFIcW927Ee4qoF!m+U9sla`hU9uN-Jh)T&&Unnh;&d$s$>{g6Dy{m=(G2u3_~4my+{=;}Z@P?Rwu+qx;! zt%a~u726E#b<|BZcY{W$W!s^GF!306n~p0lBSOMMRk4lNC@LP^nW|`pkfG^z)u!%= zd%?GD6(`OSL)i3tAKJ;YK@}RpZ5`^dXM>TVq1zm&+TCx>I2AC@szXg;GSxrCPJcgM zcWjgZcV8qJtMz6yo;Mq^kwCZgOBp>Z$Iv=g&F0m4dWkYXXwl2jY>Q})8RiC-F$Dc3 zSVNL)bOEw~X|6jnj1r)%e`x(f>kR;gO@z@V#C*0{uW!)ZjFZ^PU*9B-f}GG|<_s|u z8KQ3)Vn=ZZ0BYj4d5_qdqB_U9I_4(hfJTK>9V1nO+Tma`+}Kh!DV)cWwG1)LB}=y3 zeQC;JCNd?Em?bg*j?>(g5FnN5GDozBNH=%;`KZH|&e$RFZ!%|=U!N}#hfIdpsa%eC z3{`S&Khj>Psqq8E3p|!L2s?c<#bJ4&-n^qSCi=#EBr$&u$)$hg->wfhxhzkC#+TBglw{Y|WGU@nt=|ZQYU?y(y+l ztEz6UtLHatiZ7YLG*S<#x-O9D1Z(=UUA}UcHAU*N!+)X#-g2#M6FXe%aqH(RF!a?8 zn0yJZo_Y+neQ#5_TQMlHY5CzD#v)&Y2J8`UuExj@>py?@tpte7!^tonBR`I-cstYf z#A0yRArx|HU2DkKe;^}YG*e0wpo`Q7A<@_0Lb}7c1$P8e%v{>!oE+zfPZ%Y4|xQ0^M*e44n#kxNxj}N zSz5o<0G!X~m@9SaXK>So2*p|xT4o@tsy%kuz(#am9iBgJv@O$Jkb zcwQ|gZy?2zJ|%&A_5*#3pRja(vWoT02Yi^`SkrnO1Z`fH23BfM=TFq~N~+Q+;vK}T z3_+w94)B77@2$a@vtHVDRPk_|Og-(Vfkt%{QrgopSh9<(Rw$Zsa~g_HcvNjwS4mrQ}biL-KH z=5Qs8;LW42l;&trNkpW-3CNtm>@CWf_~s;_Xuaj)G9Fba`>hXRukF+$wBATISJ!as z??Cn=UFm%B;PG8ruUEFScs;uPdVKr!;P&g`?brV8*TL=A7b@!cE5H}^Mp4acRMfmi zGn&_EWYdLS>)qWhFw3{!yDz-IQ1wacJr78>M8JM)NKRV6(b~ScnBJ@|A(+L8By1v; znXS(@tA3$Ses!@K{jfSJIu2;)(R|omRo7#*A(s3bGyw(8AH0D;N{_CXD@Yr3{n}_c z_v`cF20e(Eh_EFqg((fK!lXW%K#+ItA;JA4eA6GlQvKQ+EoH+1VYxmVua8lrEHN3K zoJz{R-5IQ0V!wpR2$PBtmYE9~N1&JeVY91WaMF~7y?g3SV($+YG$yxTMyVUN9M8s^ zo6S}IWSrOua;}=KSnkpSe@$0Yt@c7&R z8k`)qp)FsCJ9tIh(JSJPUyeIGaopP)!uH+i3{`W*AhN%ql>MY$b!L!)DB~Mb4&kAq zmD7B@{XlcScRELzA^EPDF%HX%#fd7}sk8jN(Y6~kKku!By8-ALLAXT&g*8dwwp;BD+q;=^se69qwe zWVWG2l;*VHARq}@o}0_Q8x_!l-O8FU6&|T#Hb)^%LM~t%$A+14#|qI~p}rDgW6g%R zNm2Q}S{K2lE9@uE#r7fuOfK!=bd?b8Jpz_JIw*)rj0eQu_7&%xs7NyXwzPxRyWftn zDO%oqSIyXiZH-K?Tkp!^;jCJ2qXAzqf9rRWa|qcTS*l}CRmWwmB#mkMHr2?ct&mS%o=dY*78meH;equ3=d50v zyQ;4@7>zd;Qei~Cu9jG5qtO{cV-z6HoE9T)GX!3fZ3)X_hIQ4d=p?*;cZuxx{_`P7 z2rjG;D(|YRwlNUo7-QMgz_6-sNk$M^X|70Go~Bif&P+HQoq=zde*KuBkTC+`?9Qc+oN$S&NWHx2XKpje{#UP6M=hyw zr~+EEXeMk#`*?G?x~wk6$zQNLEv1FyID^1_%JB*SKdMVOv81VfR*ARh+(R?5E(E^i zoFbh*x0d{RzS_v@FSpe)snHNdyui7EHVykG)lIz=+-Ih0boLZwocJEiM&>c;WN0Gt zg<{@%xUA1vr&s{^gol#3j~E|aUT$uB2gj(e&Ssk_B1nbW5iIL&KL}h2!ZixPdtoQ2 z{mxW^+OHX9E$9LLrbj;{6|jIS^g_*CJyEe@dy&2EOw--v8ZGDa-eu>T`}edTp$Hx& zm!=X0k21jO2XFm4cKK1Gfl1#@*(w?RH$=y#e?FOWYGl1CD5#A6sC7rOh zZwDy}M;C^=w{yWt7{A5WCN2e?Cz+ej^~0(V#>C&@uJ`eP=PFGrp;PIzs#=gYBbZ~Bff!|jYO{nlqvQnsa~Y(IoxpG+`sNXv-?>^otZ^(BYAz!HY_PjvvQ zMz1nkY1;$N=d+9Xh@I4CpOQ;L;TQ(QjVi=Q?8LDhm_^spVYWVJ1A_$Y4(RKf-2p@%=+iQmlg^<9DS#uA8d8B<`nHbmA(;_Z|FY}` z7_trgRxSgy_$UkF7@r7$N`*;4EW^z7SqzpK9r~O{N{m8=!=gzs5moLAku2*u^68V1 zCXpT@I|M}kdm=`7DWL(o`bA-5|Y zV_uW&d*2(t{QL&l5kKQ+piP@K586ErS2zgsQ-Zy1u)htWd@TuJib@b(h~O{SI5lf9 zUZ@B!(v*H>lN)e1n7P;bUpu?dXtML zFYY?SJ`d=;ByQ5s&j?c{l)VtO(-Yr>DPNS>+oNH9JuU6XjUDtZhQJT)W2@CCg7vt9tXDzhSh_kLTtCTJ4AeO!5Z%ExM~yK_r{K`6DCL1 zSp$cK^!vB!{Hj89Ec4NaK^t>k)EJL#wDms)a;df+PUag7F;htHld@MJ-xAT@=b579p{8 z+o@8WAHha6!&#OKKyI!oh`CCK36QsN{(Ow|43YL41aw|6Yn05Z*8kEPGzFwXp$cnH z?IWEpVae{dX>6n5G(B|YO}xYvr5qN;HtaPX* z0I}pZmbm@I@Xs<(93M0>#F1FUBL%PybWn#6d=+`g2fhk7@fG-&*$r`g&`kV92#Gkd z31)b8y`&Qj&a2arLo#1}qGy^r9j+qcp!H8$E!%B+RbxgryI4Kq1pG=eiW}C55f9)( zW!`M2v!~*4WP!efhht8g<&A0dR0mTdyY2mt@2QmK{qvBz3mwVB9nq`T$ zm>YyDT8(S|i}l*-Z+orZAPjsq8|I>3mA&BZaQ$tynIRUntsOH$n{6J06}N4w3mT|4 z%lWcu7ttHyR+2JGek6`IxC&Lf1Z>{1d*}{VM~rADgSThXAqRv0wTFS`N1J5Mq8uq`?#&8-v%J0416_p~eq zfw5YtEy1;R1LSApA+}@9BD37=F}liT-y{cA`vp*gbr9#^?sU<)9vlo*5TYzr_X+aq zx4OsREfLHTSa%OuA%~bu+erfqBnL{I09H;Mf%MgYvSbqwpKmGo(Gj{+a!@>Z2R-dB zuBv~Gu^-%_;`@gK@E-ynEYc@etLN+K@cETJm}tXZ!rx;Iw$&^cu?piFr9G|BR>RBj z6)Kp=z#K4;-@SBkX5;_z3Q#NpowWlbZp@nAfcB9Rf^?RotZLsu%4jR>W zA8*_8H{I6Xusf(dZUsfEF%aTSn}iNO8&0b6bk#YVbMT-LKAq}%Dbf{C5fxx?-Gy51 z2A^A81ypcEw^J`x;|budbFt`~l8{x`e<`8dtT*RSkRFzVCA`J49=FjW?onoYXl$$r zorG!Yrv72Qo3-;*TKqg*&KK+n(kbN<_~lA`%m$mp^D!%biVFUF&fr>-Z(^JsR1M>Y zS|M&)e>dG4$d(0Du^EI}_D$GMXbbZ=Soot|E!Po`W>xJ&@Ng_>%9fV!cma-}Wv?B< z^kWhBsg}B|a;J+Mq@YcRBxr_0&ej-OOJkIsdgF0*cDhF2e+$*TdH=zqzu4;gR`lEV zkpxtym({ZV&xhrUkzP0auQb!VFnO%A(;OgMg59t;m{vY4s)G=Sa}HUC3LPCCvkZTI z3sXHqI|w3@aqVP&fhi5Pr6LS_ZRwH&^c=C@L|B2t;*JRKV2O!dY7+}q!(=(~s`cwY z4gH?*0O2FZhrywitvUS@%szNimU{4{T_lLCjp-i0;Y0w0th1e{>>r;yG2vNdMvc<3WU})CE6^**T1YDYeNt) z3e?}arxSDaYVV6`siV=9Kp8xYEA-~VG)!hE{K!fieyOe(^iI}&pKo-yZa#U66Dl^c zu$Rf@;B&#S&@~>306e6;^C$TKIh&4kdOjA-aqGQ*+sq(SFZNQOM?APsWT+irrRHOD z^}{s9Whm#_QCTrw(_ZgF5_e8-X2S<4^!DgPpigi}Vsh_~+O6;7VhL{mjJn4EJwFF~ zzw>d9|NMRH7n`dNn*1mA`T2@7{@_a5jF?xta0W#if*&3y_P9qiBt}sK>R1R{T#BxR zy$BpRYR81yV$2G(1-!lW%ag&6yBBU3X;b!!aiF z0#>jm+?f7>#egA!Yr&o@eOrO1VKFD#t2E+H%}!-XGNM>toUpNoN&pc2s*Yae{4Y7` zu^jPTA{hh%!>jT6O(4dYniN17$*bHn3v3V;Tta7bUcsSMlN$(lYPo&Z!-RK}Jc^df zswD&`P{5%bsB)Ginig%%xnBbhdh-bakwAXiZsO`~ru5q5J(Bdp_>3XCSRv@hfs(_C z;SDAXWrKTxytNkOibF~hj5azxG@mx*S}q}k01N_EwF`V1N&)-HD2Vihpc#6_KnQW0D;j9d8rt~cCvbNuU< z9Oj(V^|&!KK@UA&hn)$BBQ;F#3K8vZv+Tl$p+#-_^c3ruy})hXjybRB)02oG-U)az zL73}QWCMjH!V}Z)A}!@KZ6NZ}d|H0->h_EU2$5W?b5{jhFHmdA;YbZQ4maY(E@=iF zdcdt9Pp5#+Zr1e~+EY~fFe6izjlR5ti9cw>ME1lcct&AdeQY!osPjsxNVcq&o>n*UOPp}FEwl87`nlE@I+IiVcrk!`2 zjNNwovik+`;`WQS?j{-A>&^@6p5_Z%>GlN^_U#L5CyWgsXl_+;tHHKr6!Ei@4e{ho z8StboW4FyPKHC&JvD`F9dZ6u#DWDuR8>v7w?Dh~BXowCnLGO4AvpZ$nO26AXBwIVl z@Qrs19M;3sZTdjJX4Fvg3eke6`;{QY7W8}!5`jIqBa)TY%OjWrC1+gW zI24JS0AyNx!YN36vPTyYQE9BriobZiv#e2PePZcjz`Ep+3WY>cp}u6CAcODJCW^a`L$JXDe z#Kg_Fb<$D+6xj%AY-uC3!zz`iJ$|7T6;{La%}|hNEfF^Z)L<+laRW@^a-;jqWI4YP zqGa~B@IKp@8o+2a;{2?z*V?)F}2L z_0TfykV3RaZ{S=#Jmi}3k7lwHz|Dq8uJ3bie>KJPrZ$?`j!i6RL_UL!TvYSP{@Jd! z203-Z=BE3q5$Du(7#*X7+5EXqK!}`a*G#qSJ>Pv{3+E78f_B`oTOaN>nEm` zc8;J5;EE6(VxgIR35osY!XzW+Elm+5C*}>+PR@5cO=f7>rP<12Gr6hiYrIS#4N6Z8 z3XDYU84O}6X}SGU)>fU%)$`bzXBx43$O%7AAzH-c{jiw`)nUGOE8j;l7S26_Zqrl+ z;p{Ebf<0!P)1v?R-M4rUnC&@}S0HWNw;-TSfF|v#qyA=l!uzST>AB>@5EJ>5ZExc?>3x&~uHO<{4 zKKkH77kdZNizVbxV<_Jb*m{Tqw;iG!e+^rXj@9U}hzD@?@7$A@g}v`?_WmM~&Fz7B z{qdv6UrTD3qiAt32mdafR}G&*CbcMQ+%`&dlFI3<%Oe_oxl z$)?5y?o%Wp5(TgD;cK&|9kjQL>I@4|+*Bv}TMrvC(ExGSyn;g=jaKbzSkPLd5U>Rd z{>NBKtS`ZCH5x=O%v_&_p$>gJwwjr`LK&3t*|41`10O=PA3czh69Y7Go~fnuqw_^pfyKxd`*PwGBqu> zdWGZ2F2tAa~_UO^E*-s5g@Jc1rRoP_cKUZ2X*No;1}#3wf*FEILp zTJGjYjoChu-v?y=%d^Ykx_HIrw}YA0R>%|oBqK0faSjaGC%oTkZSN#LCf=m9xg~7t z8hH*rrFtP)wv?F-3%u`f^sMv4XodedDF|Q_INH>38ckPz#$E(|eIJh~a{ly)iaCBz zWHRX=p{`apk|vy0tVFhb%Q=C89yx#e(wT`gtCr7;o2MuukYFs*C!Qd}$1$E_IwJ9C zXK}N-fp3zRoThaGFwNe6=>7qL&2SB+fhV9Q4R)_clkkRKEUH_-XuWB`Kj`9GGlBy& z5KRz#n+f)}u{}(iGA($x31U=M(!#W4P{P#+_6MBUE!j99oWVZ6aZ3<0j0_&ax4xg!WZJ<*^Q&39saM;gu)neHr7J~LZxU<9t_MQ{Pm zU?rtXF{2I<>u-N|Q#jYH#?xZO3cosqJjpV4NUAmJ%;C<~r=GkfuIbq(c0NRLSm~gX z#bgAT9rnCcXMMiG*@^wV6e`kdN^F4n2csSF=}?4N0zW}x+Iccshp=>K(=pz&&;aa% z2${9B->&56DNtgw2fefNN!x*6ktV$ z2vJy_*M4H(aKC?sxUUZlfE;`*e|g$3K-~gMQ4h(KY)3>S&|k*W_5)DXceq{I>Y41G z|BOSnm|IqyM6fDFh7l-JR`Y^HlX|kzQ4u&lJ(ov{{mjbmzNt)WW__0u4R|0PUDDw?6(t-puw+?Er7J zcbaFa($0|GS8LZRPjW0Fa zlt@;vU6vKl!h+Z7Ec0lzQ45$h#)HApa)$NSQskrwnuqF)1DoffMcxw*LSV-)JE+3` zMO3M{;sW?ZoT|yN3o4mjfw0oH_v&38b&&7Yvae;J!LVa|@p$eHznEnuf zXuT6^m+EW;c_M&k+3CNHrz}eHum){v#Ke#bKc%>3OJ;t|YOR-R1`D;r-gm|ITrzR2 z1J3Y7o17zw?&#d&?G^ z7k{Ia{N_TN{C*>2RKXiyQr^f&>za%REVrfbvi;(0O(C`v!@B(jg%So#fmjM)B-Sm6 zbd64$1Ohrqsgo6MgfHs`d`1mi9cizO&I+=k*92m=nFsjizX@ak#gDH5dc&7iH0 zNPYsc-CTeGF>we?zQVS5I_V)LT{JQx%&d)uQhdj0Tr8~@AThhjdlxjKwZIvQ{R8xe zKYIktAmb>Oh&D2>6jKV8C@K;qBMkt^+l?y3iA^-fMV$ns!Am-x<5g}Ji6T=_J zv5fFJ))=B2nxO8{`FMal1=3e&{~)|2&Qh1Qq5=(okGYnuslt;cXa5p~&^nD5f>o6Z zp$1s;@Q^B!S`_JTBI9^diSDiQ369g z>Qu;hr3ZoFqX6Kb+_!BlHsVD1=;8@`)HY!ba^gs=F4d7T$XK^wwzFDsR2zA5l*MuA zuSYfZFgn-y5Jt1e<0N}ZD$eB4E-fPW3TGNV+(?9`Fpf*&2NZjrH824~EFm#=77;LK ztQcH%j;`?Sx>|qF*#V4)Kx1QkaI*QYgp@tT&D?oV^`?dM{^`GeyZ7%h9@+Y!Zwp}`NfZB-K2kZ3|pw`4(ZnE|)wDE2LF z)RgO92@5%IDiyp)nhhaU3|=dWWHcJIWnqmgZEhoJ>i7cu7=9Z`Le!Iqo8ZSw5 z*L3Z&f^*SXn1?}n5F+i9Q~5k#ngk+^rBokN#hZR|ke$^el*YyF@Zms>*+I)I6da@F zg5r6F9g)#XN(6r;56Hl#eFINHir95wQ{`6yzN&iv9^P>4H8v7?K%}g$w@&fABKD#F z4hJ<&yWk6GsD1`7-XdYTUEWxsZE@R5LBgV-Y|94{vnx z%`Bvy=uZz1PC9rHm*;Pcw7xMzdN59UFj0D-JG2ex!$2v%dm#6x)b^Mx)3m$nl<=om z%6`i=MLE&dcS3+dMJkqM`w#Y$U0-1l+Z+uq+txXK<7lNYxc2PO6veNJ9H^t9k&Z*?rBq z;`(ATzQ$)G{4Z9l5Jj>!U$y>+TKB?Czc9s~TdfJEPY=2$q@QoJU6FJ)b^;HXMLBW|KgWv!7c}0znRS0znRS!a|O?6>uu^6_Al5o@4Aj2(S#08fsHd zxX(nJ1R*nP#O5~TINv-+%cgY#mES=+b0w5yPB(7*E7T;jfI$c}0*C7@rT8pxvX$#B ze8hOHe=try;a-fh85x?SvCsn+)8q^4V?W_c^@K@^XTF!hbdQ_AXQ7x~u(?s2ZkAI3 zz9=IyC5%=^7%!0`i$qi99J=01IkCQoXSo>&IJ?GE8b=$j_(nX1XA4Ly8Of|dPz7ev zLNh(*u@SqE9tb>#NO)MJgOcD_WRNhDP>}$Tb1ls3eW{@{qC^#tt)>Hik5{4Xlaxi+80C+k>DFeG7+MEnHHsV2E&-%oYMFP{8CZ^ zK*}IpUuS>s3;CmWge!69^x35w;emdlAUo*N8wf!UmJv;hH{%6Gx;d6`=*^`_iw{Qy zoLCaUlezMHCI$-p%FZf0$c0FhkYNjk{6%RDJ9Cpq*R#R4e zHp&l4H)ow|j;$Sumny^tsvSG#`hEtZg?DN+1U7-n{Xsjz3)NAY>gOTY_@#tTXpGLV z?dO>NGmIT9wjEC8d*g+yZYe(&NTLtWn&t;9qPv(cZk1|De_AN8CB(K@e8g6&1)iwc zC$JZb5&Cyz<2oMH@mm`f5YO@#FP*d8l?AnYFGloXcM zoqMqbqMUYNh7Yp7=`$UWKLRszLe$+H!pwu`Y(4M_3i=A1>k9LZga0XiK%6z+kRR3pg>w0!tb)^ zS9ry-H+q?hG;$*Y;bJc1`ODSD`UBZtL7i{mHR*lJkj}Yh0yg2Y9?NuoS+_%qB-#Y) z@56Rea91lf@d1S2d416-GxQY)QBg_R24zR{KoN9sKiT?oOaPy4eb7BwY!7sPhOr;R zcf^%&vir-RjyY!#k%fZV{D`B>k}`rju{sb<$^%_15%UIhq8N5MPa{;hON|HnfD4XX zhmlJN1I$j@+DY|he5r-+H?{&rqHa~*W7?8URWKW%ppm_1*mF|-@WV66>wtS0SzUlu zMra>*yGXYou90bOuPgu!gb)VUmn$b$OFJjCFtZw8&*KwT<@IvJskmlWFawC&P*$I* z;TS-_*}_$WC&AgR7aGlA39wl=S{=$|Xg6u8j%UBTR&u0v#wKlhmP3lr5c;8J`i%is z5lNF(>!$d>|<^Oc{1j(?ULPbG)nVsWw($omkYA1Gaa$R z_>eWQibEeJl0+W^ReCU-dH{HO0AqSETzYs?G?bsA8^mN=1{C89IhEvIh-$jV<5Wmm za+JHR-|AGvC0h$lELocz(v(2u>ZOgvMt&NgAo6qCF**^4f76(Ut=K%^Mz$(byKKwu z-Pa)$(1AprZQVjI6noR2Y_==hykyhIe(M8v^fRj)I`}8kF%V%nf!aaq!zZg%MC3wF4a(_o8mif2OqrBB-y(8*81gP0G8pHi1YY5z z2%{WQgPRX9GEErjx(UM&G+_wr2uJ3A^MSh!n=qv|Vfd?^@U~D^a1+n)HerM&O&AWT z39~$!FdRUHqYLOhFuOeu$b{H>HZ8ATTH0yiWldO;#v$|K``y|+NcIww86xf=;2t!*wpjey0;JT!z z60hWJ5uaVMsoT*3bs#7)ru=e=%RkV?czwSpd=ja>BhCa}6UIpFD);q^Xj zp`PBn9WWV6Vx7NIdgCyEuSkEpEnL2BMV>O|B+@Pa7l-8CIyZbRXRm742T-fN^a<{Z zaMTuWR2D#}T9f*z^pKFj4b1HRX2FG0Hk7u@G)Z-vRxk|`Oq=Zj=QmH_+;%ui21~@y z*_<SS=W|HjioKzSw2_h^G?CKCXHDHSa1k3xV+_F3Y}kV$G2abmyA*XW>xKjmAA zi7qo}9s&!Es09?^_bsWl8;T~15LDAOC-E%t7Ss7BTA)qF{CG4?uP}z{x>}=GCyvhO z)y&YYp2P5A&=s(Hk$-yEml*6lwmA#rT~Qg?VkL{rMv$Q&ERW7@%D&;LF4*~DvcRlh zx{}i#&`D}lQ(AGGuCX_XqDEWRcE}2YM5|+c>cf8_eAveoR z0JB5KsaKkSyaeKUj5UXESVwk%Gq@!j<_)I}IcbXcm|y&fC~V&{veqH&7-YtTks#~W zCsQ$LC5*YNe(jeA5w*h3i@gqE)|g_POV&VyBgUoeUay4l4_~p3HG`_43y=vAVM}?U zWpNFY%fj`VK1N%)OUKB5dBZ_rBuOx8tJrFSkQEDHwr_fKjwvNl9$W|Nw5Pd*G;{-( zP#~b`N3xveHMKN<{R9db(~@;Z8^(P0&8e>PB`m!_E!CvP+GwAS>div1hHc2jY@Du0 z?;&J~dJRU_f^`fX~DRg}Laux*DE$0VvKBV(rIOo+j3eNo;^o4to+5r~y=x^%p9_m8A)R_b++T=p7#GniVyhS0NLy>?ABcP=D>IX!dK0;FI!I;FGi-CmGl;MvgBApWW9)yE}aZ$QTlAKc2hMik^h7~1hVB^4MM;_DEGVhsGSJRSXO)OL^w66}MsK)-741Vb zl(Qb7Nj<2`Ez%O?Rpal6TBHGRA{HsJdR2+>%v3y>u_#H!>!aJEg7bJxHAapCp^AGQ zoB#{2;(|bg2qOlxMrcdbmQkL%T0*^`92y)K z`_`&+Ih?e<(eO9;jV@{&yyOzi<>2R5|Ds z&;HsVMq|vxpUIQmUH~A{0AE9KuApY;%EFRI%9PoGY=)~%gqj@M?vn7HV+xpQ@DT7U z!(_O13ipjK-an9zXbH#o3BxMF%6tWW9GgmE6S<6+mDq#NXzYh3XN=Sj`Sh&w!%~JN zjWpXLq6v5PAr*ydA6`y%y+sjFT0HmRDHl#Yn1wWKmw3Rf6};P(9r#V4s~RA^9FG=b zFxUKCG&po8(2Nghb-IMSP8`>7^*Jm$qa596EBTzHv@1Lx;*>ZJE9l&PXZ5s_;kjCm z2pZaiyYN^^?FAPsee;F9@-I0EQ^Z-&y1*tC+KAENbT?VywFr|p?9({`jOW3o)l;jh zP+);4^tbh^)eZ7kx_Dl5+d@ecJVsl0<XW%K+%sq$~*r(=#=Af9=(KK4@xrSTLWBKX4dqa038k}kYz;woy{#mRbS zw!p_uG1i60(d}iWrEa3;#SMl{+0tPDevfk`kh7!uo-Aq^P>)MI$e=g05t^?RlJy_P zd2$Oj=1jGxYT4c!om>JB>}H}*zi`bDkYm6Yg>$ZLq~vi2CJT?mExvg*Tj{5Y~A8v)moc=E$ui@ZW}B6866t=LPUJ zZuv$`&_K55jA45@Eb%t^$KiOS^4mdq3!~`f)gOH|lg8g~zLZICk@T?S{GFyXiSY@x z@+13rtwOiOM6}UD>WrQ7h?bdM)ZuC1y4p;d+dxK(tJtq@;ghhvUiv(NT$|c14GXne zdS3H*+p#yG#1z;t=wiO$3b3NjPX6R0fR@v=$g}iWabpiU^s?@mYTBi~?(H0^x+ON`i1A|1*@8$a@G<*yUgOj@1dO6C zz#lN+i447PLeUJ|eFoiA4#B+ht!0HkMlOgn@ zi1?UfII+886I0&i{GM=m^f^>C)`HDd16z%VZPuS+(T)WRla20(W6d|6Rm}rt@Di(Y zl%tpOYz%^kxuX>tM?JvIr&x>4kdZ#Rw}(+Ms<5(R?1Bk|e|5#x+5siaP;<8;EV}&Z zQmU`|?*9%a48M=?;CDC#%ivCRmhl8J>QnqBsGJq#~w!$ydg2${F4+JbD~S04>odKi%k+}O0WeVb8I zz&?2tC`Nk0mfa?t^qu*IgmTE6xI!>jiV_`{U5x3ko? ztGL0S%<1ro{da8~+Gt^e1~y`*NN_29+hM>Mwx2L;ZUfuiL^L0emC-#)tm)tw8MY2$-(rcRF>4>k}% z_H@))ayrT`37N&$x@ z-C+}VbW-B_P2BOI#O<_E_Y%0>x+FX~rIUX-I_MuC(4^ym8dN@D_4In!OA1%J2aTkyA8SQmEW#l-oN9Y|%Z8(- z_}fc6PPjs!-#i^l$&a6w_Y z*b72J%vpw*eHSKNYMBG?!aI7$w+yRxBs3<@+48%=J|tFtsa=}LLuZ0!+#jkC%@Ger zYsO@JWQ$LvnAm9H)%_@dc* z)0hW#rZ;D#UX}B0zIctcs4p})FtZV~`Q05njr8;jcJwQ&XWI|#4+O&QYikn<3&<2o zR$=vPl7rlOx*Q7WL9(@Bk93uA?NcRXXM9J)CMk@c9wbIaW0mqU4Y!+S@e+cRCaLFw z8H}tNSQRA>BA%WRj*aIH21z%du#x4T5HrOJThn8`v5gxYHz-_@o_~Re{jjWVCS0Es ziz|wgU*>BuGlsc-SO-C=lx@f!1USwLH+|a`jBo?PWkK(twa4W-_yXmC6&nRNrieb( zFySEHciD-5VL;T@&QRob0|q-ZrQrsq_tv#`B5LA(k$m>TruVGIeuyQ7Dq_nwxBf$# zkkH_~th-^|3s7|ORS)ZGWIL`G>sLf?@?y5An=kRfx|NbKiwUrcGeupAYgCRC?y7!X zsq|4&osQ7M6@ak(60Ok*a6Y*&c4`VbqFYu9?Pz=`fn>Ypzb+%12OZ7FEH>5zt!?emxcgmyNS8#klsrs^?O92*dq|@u0tci@IVYa5qDd3=zNFU!^c8m~afM ztKtqc#ki*jkuuUmv1qqctes8sa3P#Caa;^qXwh(TLoxXO_m^lHcSHCsTE?vr??7@R zZh`8VY@WTsJj-xxrzX$C^zpeC3n0vg;x=}BtnG4v?=QJmdjn+J+(KrbXa~MGX6G7t z9BO0O!*v7b4quno>;tSbw)c7AQ9JGfBe&p~IWmd`3!Tkxx_BVpUAvuc{tX`%G%Kim zNa_oGSR=f7ven|!ag%d;co?({rWrA#z1a z74He78b-%TtHSmRo0-&EpuDIcT6IXc&^vhAyEmV~7fI2)Mc&@lVr&`Un5=lHv^Va` zR}H@Dqfn|#pR{i zB@JOxz?_n0@#rQ%_}SGekz1xK!~)PN$s8_VuXwKrPp;k|`E!o-mP|cFT^$ETO@muP z1%Ko#tH5)Bn2Au+3f?H@14I7t#qhNKp?vJ9FHDIU7m z7Bpu!ILUby;=caOD8VgqjaUDrCSMvtsg-R+2uUp^X4IC|ejwd5_HC zm|TKUJnxy%AoAlwpuXEX@5xbWUlJ-^fW98P30$ktjEw=A>hv{NNw%|TaB0`E8tmSc zE*zGQpRig3{QXFZFa;YTew2+wi2yy(DZWs&TXUP2-;tI98|nE)7G|JY7P4C`+p>72 zfLNSJ2d8aLm-V^CItZfv6DoFW&weAW=O@OR)`46WOvimN7V1Nhpjc!ZS8T30Ww zAgF#p!kzo|HP^DP;~WOGy@18KE4lM(+<)QSQ5b=L6a*te-us;nh5r6ual&X>@5*;b zNQJd`)cTDR{kKW5W@JIVGW*_B7|XqH9zED&tHLB`?}EBTIJns3|F+ow$HjKK|GKAh zv-N0iKHF*7zaH-)yq+P){n0w423)Q=g17f?_04KeuKE*OD=$>_ZaY8zLYLEiS=Xa8InewP(c|OCr!>Y;_~w^bTiv&FJ;!hn z+Lz;Jdk?vrL`RSIzGJfnRd83rlEuohb}qN$wbQ@+QGSI|0g?@Kn}p!E2|XmdHqG^V zN}Po^be$TQtQO%tF>$naF~}tb(*=PBGy0_kXx88PAl2fYU zCTHXMtX+V5)y6As`|gA9%2+0X`{)l9xNs#WCymp*GD)9UD;XARoEUiuY%q%!2x_r$ z7IR07h7+`9^<<2PDh$q_jAMG5O*#ozZ^Kg6xb~!9y%&3PRH;35ktoX%E^^CV$bLGP z_yh$Cys2o8tzp9vpsukv=SokYSpuV*XX%_9Dau1U9BeN$>vG}DH75|OMRj$FlYE`F zWv|giHIi880zgL8#AyuFCM!l8A78n)s*!HJV|Q!_YmQlJuyBZp7##b-@miAer=tmq zi)$N-Ga%;KbV;?gDDIHccGbnIezGle`)gMt_4 z^V4!U(L<1#(B0h;hOgFmA@0!vwp3_KQAgiboZh;T-__sBqz^beJ|Q)RYRw&12rc5u zsF$zG@^x7K1KkWonj@I0zjiei*GYjC<>S*@Pc`xl@jZw zt+*-6H&*ozkfiAbt?hMLI~M|Cyz2(%Em>ToMO9r`1vX9Jzy+i3x}wATC#-5^$y)~L zOWfvlC}Tuj?L{qv-T-W`Yqr!&E@}sqT`)d%EzhM!0JO)EbluBEjeq5~EqX_q0j9(; zxW0;zKFf5mcgU{dTB){ks6nAtU&rMpBV30g)g0-j!#@7lWq#uVCGh$jHbV#CU~JGq z%X=4GdD$FbthEJ+0*(^^kRsM^0G&KVbM?dx&ZIKH2^ZS%bsL_XHOWodb-P%Rsk}U& z)*i|Zn4J&9c0oeyfx@dLE^K0S>G1ZeDI{OI{nwI}WdOI3whK!nky6Y#&Oj zP*%ly)4{5p8+~LfKC!OE_cdzyZkg*}fk7Zq*;Ejgu>3h52OYV7iiCL8`p|8}`ZZdn z;ci0NTH-V+>I=4=ps5Inh%0fi+hgY0e3iyMzUGK%WSg%{Sd%x7&IyKgB5|!8ld;V$ zz{*Hv$07ElzAMMDW6RVVqY+z=j)WIufeU#Gtt8TxVj8DcTdSYW2-&KxBm!lNF44ox zpStfic0NT~T9CH4JMt2~sgZtIoUuFh>=P3m5M{^Z%;+NoXZ1Dv4m^c6M=5nM(C}t6 znq+g?@ih{ZC&K2Jh;i`6hr{F|OX>`7mSc!c$-=xl_n+N7N5L?;9(QEKvJz^iP6P%% zx%n6qu!85Q2^G5Nilj!0aIBVpF1EOH+Jh1p=xggW?5*1`!KnNMv}# zk+KPeB0wc>)4^$E-kk!8DrHBFDjR8*Q%aImLJ%W#R3(;ll7Z>#=S-t6NoT;!jK!p3 z!iG_)ggxjeWM&?^B2a`4+{#Y#OoRGYZiM{kn^TeT_m@bs8jF6>qijo}__RCeVIXCV zNWi5xPViSq zosmI);iD^6ix^_=fS_}#vUCeD$u2WH@n`2-)<{!tjbqGe%p4b;vv>Q?Za)sPAA{b( z%O9gy!NV(xjY&tH@rn_MQt_qlaiicJKtT)I7TV7j z4sv9Z{J;^s&4OiD}$ZT1l&!7H9h}Y`yEumgWH<*}l=c!DYK}VGo zz&8IDdZ3XqjfS(p!W}fDr+ttkP*NgZ`}qW^M>4B1j0XG}bl_alT$7yZf&7%!kE+T- zCByM&FrA`ZNZMa<940>YmDi%IC{jhJ1^HQfoZnRj@m!kgGUkwg}}IpT!{y z|MLL<3+p)Vp{r6X0sytqDG=qwZb3Yg7+VHmv@0Tf`GL2hkE)3m=9cQBz@Bdk|NjryMVVL|3djLLX*HH*Yuk_u-jfD;T zr0Sh^mU+pF2c7|h5Rns;C6@qCKr1tkqP^#o`i7 zAxnEH5RC~~x9s;KolIp~TZYnH)a?fk?mzz1Y;v;|4i_Ttr}vSs28C-fpZ$cz!8H*m zXo3GDD0$s^rOT|)vU95ySW1SoeC(oP_Lm-v8Udu%|#X5d&4A zDDuM(xBd=7QZy&W2=x1sO%PqvqBlz7hnW_0!;fu`j)HB+Y!IRopB_&OE$h1;=7lW9 zw&&l46LH`E4Dogh7X47jV!Q+(Ueku)b!l`tJSj6k3z6cHiQn_}KxZ`+RgGJbwe+#H zQkYSXhTiuZ`@L}67Guc?y+|sq-CM2T4R=)K3=1M&WFS_ALnd)bs0(Ib%N4~5+`gno z=R4S}kMf*heotA-^jF>x4?O#>rS1(JvKUDkI6^ijW8e@A( zDPd62}dKtelR_TZt*Vb{oQxn1-<*O;{v9#f|K$$HUkjA2d)LDfNUOU8syuu@sf$ z?GARG`!Ow_Y_6WxXC3a{z@6j>8`vrB4t~fgp(oXpvw-roSK*sr5l;C=D2KH7XmYJ) zIm3W^2H&tmj)hwZyV2M>!u&ut&azn64b;IiTX4e~KW z)4S95?c*;uv#pl~f!^Dv$o0PcvMJB~{(Dqza0C~xZME#j^jU5NsG0>Tj4c@U1Ej9EUhC}# z=IXxEApl)rqP1<5AfroAN~~muca78o)x~KjtUyVLq+fZxM#9WpZb*nZY`v>HV>cYw z;Lh0LV)_y{yl-(`O}{xBiYXU$1^RAWl{0 zw>tXf1)+x(1^{~NJqhv-E#*5wtmIK*Y+`P^y}e9l9bn~LDyQ7R;E;_s%5g#69vgd>tLF6(Q#Kjk z1CKa^$0BpZXx1d(#5TEweWUfubJ`wwJcT`d!DwAxr*F^NOM8|GCyS|UyuX}WG zLV{@Z@%}M&9Rn7ngdVM?(#Swo7^L2SWSN1okt7e;IZH2&k&siX-;ehP48-vOjw;fV zpH2+=m`rB{+!?Cg!MTjOy8 zrpP0hK6=tb(2ir6>0I5Ur`!9x-KNZg!4dRNHi9l`B%)DAv>BOkpV`Up0*b@I$rgkt z3^bC%a3skqNlK@Vkc*!1_Yg$vgFDsP8JCpD_6rWfp}_W7Ikq%ta8({^+wOwj^%hi?bj5tXHqGq zOSs#z!_&zK`v(+jobQ{Q51!B#s1%qjuR~6+Hupciyu-iwfUWVNM2Old;39?R^gx3- z8$XK;&n}v6M=74shN9w65KRjmtU&f$8EjXF3 zi+-=a_q$W)#3+0ZkUQ9WaQFB62=?n@TK4LXhxSV#Dih(>nEi3&%fd4lPPXz)90i(W8>2d^&Hd0;({S|3PxIC^Ch5zH?{9wZ*(4e z*S~>gG558i`V<8Ut=#sND-v$3>NZy!wkP%Zx{ZI|%k{0ZK(}ce-uT;kn-k5~T-a6V zD$Lj+qy_x&-d|2J7DONcOzwRpfu86f$Zi-gq(J@^GX|XbSItM3%P#=u7*R$Hgu{%w z*Azb{c~hiiS6QNwJKtR|>^rtzLCK_jdRe&ZjYw!bZDQGoLDa*|Bu$0@>j2>g*sd=h z)p9v^x;evQpgFkk^4j(&yh!(1^DZZA&pOYvxpGxDA zBZQQoLEE4l40>W=T@)8ni|PuATaTkD7R|9SsP;Y*jD5C@s8ljJOm2#~jvIx(0H)t& zD>Cef5X%N+VgsNPY@L)3ew+waIczd*V4WUgo1VhgJ{yqi!CAUluSK#XDnRW>kn~D99SSWfB6+-2i1@5=ZPoHsgrMlR? zVFQL1*D*LRv<+JJM&hKOJpS^u^*H8KTb)*4*cH8Ow1s66f+$EK&05$qHC9{1by3H# z_H0`O!9kNSFBa5nt+nVmDrI?Qu$5AeBia(7`=x&%+0<>@toU$*Q9m+_koH1DL<7@E z>veW~>|+nI#5B+%EhYDX@Bhv^i>4j-5FWWVv~7SiM_WAEf%K%~8XgW;Kq(n)8NX)G%b!s80 zy(~8x%n-0@K^NH-rT5V^CBYp37NT%QsBp~^8N>K449b-F^a?6gg`|5V5CTcJYGN_43}=s zjV2`)bX^`t7bKt$yFChG3ZPG25YPq3!toc4R3BWpjV-`pxPZ9)-?8h9TKh3Xu>`}k zZ##Aj%G&}?NK_PmaQc)h@T7hzkTi=h4cQKH!|}pEoM>%&uygK_|GK#- z)g@B0n<_5u4mkwY&O5tjio^bz)QB8hFwr=968@zbfS(^0n@cj3B%~kR*6)5?7$^}T z=J>h|9^(c?D;$RhY34;wj5kGy*Ykrt!e2QLp{F$f#~5b-V<#xqU|ao}MeHXoO|)4Q zc~pn?-Mm=dG~3KEA7a2pH7muXpw5oF+_1d5W#yd)5H zSki`}o@*=FD7mDi1jtgSW&Lg2z>+E@fMA*g+gRwI5{qPBLAN2AE-D)`$-;qV2$HAa z0+}0Ma>hmM;$*b{{Q`l*Xtfz(pN26Y%Gau>XfP0E7ZaStQ%F+pC=UGOo_6yAn=!7b za4MXYm?4mYlk3|#!62ap>s~(xx6YszbMeR)E`E_Kc+z-Sz(0X+^g81xIZD zw7ft8W@(5wOK-}}{%b!g7EIPiahDu-Hwfq;4d)i+awDn14<*g`W>KkZ7(V+X*fk{4 zF8=0Mx)AqEmJ+#ci!dz~ftz%*M@wp*yLgzPI1~LrTJ?+YJJ(uUznp6D4t+9Ig!Z|-5$p_GONn5ig1!aAMjmfTo=M(PqUEIWY-{JUG zE3kF^mbk|R9faxWCFG7&{r_9qYfEg?7g;^I!DL_~dR@x(N$XcFPEN{vr059siX{ZE z7(OGJ1twqo*xmVvV6NmOX=DTq;~#}`A}0uhqvgCpBbKy!g``tKg>1(-@|sI-iCGaoz*E zgBN@}WAy_H_Ik6BV{^{;n_2zM4xLTs^(Hka4;!L1q&+QFB+ZWpDYcF85SBBm=5Oks zmr1H-1^Xls9PzMbm!h-@>dh(5JSY;z!o#YENq@aLyF6g|oAWhCiJYNngbNccBBi^o zG99U<=mkH$8ICb8XvQm%@r7MJ^3ojY_v-!Rn_7m{eH9u^(VyNm?zs6AG@ zVC#-sArG0!EnEQlX;qdklt+sN#i0TFl7`i-i_v(Oahn(Q#T!BnTfISrw^ zHRf0e6}Yph9eO%^XJTD*mB-@ZU>4_!WJ)ZQ$>;|t?XY=fO&8azxZoVp=neoTqFqd~ z!jR@iC&(-n7HPRJwy2~L!%G-G1My_KIhj=}9S&ztv8UcC;=!_L(7wejOFC3ff^)V6 zE@W@K} zbu2yhFtDk6$b)pO%V)(Unbj2rHv^0Kuh+gsLxCSjkDg|W_BHF5tD!VS6WWQo4tw&I zeb2Dbya36fIMpxDzJb4)3a?Im!*>>5-mW=vl~y)j7PbbRJZMfuc%HN2oVQ-iuP>-F zjB>caZd{GTp>KE7*z8mVAz;p%o%T61_xN&~R*Wk?+-6@;Raqi~*1xD*^=7tNm(mM; zRMed~;0WQA1!Y>;gVyH{$BVu6ps3>ut38=t?VWATu#=6c)#zIR+YHb-CuA`XI^Ezr zR<~;vIQ2*yJ!z=eY5uF?p5NlTBPpQY{y2>;l*{25t}KT_|F0mf5!Knp6f9Wl6QRk0 zP(DKY0}KvPK^y_Xrov?`qVJ^33`w4Iip?4OcFc(qNJe-lBG3k9!ldV+siP!BLn=v5 zb0UI6^$}tIK!@xd4?hd$_IZ7O&aWB!Vzp8(;_gR&f0PM)q(?TAn{`|yGB!U;uTWh? zJZ62a13_gZ0L~QwgPkAx+0DZkAI1i@b8rB=>x3oaN$DL7dz4fXl<}Zjk)x@zWI-@- zYbZG{raJzA#@=+jt?NqHMU@k`lHA*|6DLekl`8KP5EAUqkMnF?o2Ge{`k{7!(yu&2>&$nPK;4>)CU+B=yRw_ik1#E(%PG99SfNt4)Ih1af!FXjK3S zBm)-}B%?$W4Uj&PMnO78ewIOiIbz^R%As_TqoSkBXFe>8sp+rzC`!q0ZI*ruP^7P) z*-Pv53F9nVlZWG+8lVmg{liGP-x2kqzMlc>?4X+&z-aOp}=v(jorN6i-ad|}&6gcnva)#GChuiNiCO_a7 zfnDQX^ecOrT{oGg!yJ9?#t4{jRVdSPn*kg(EEd*FmC7TRX-UT+VX;LiDmTk1d+zhdU*5K`OA@}0R02Ztn{V zypcp6YeYG4%t!IpCbLpXN{B5m^2yP1@Z(~)_>5*f&EsI*L~c+3%<*PG(XgkM?hXXK0WoBQWfllRLABY1r z{XzzSu)NtH;kjv1(;e9Tex)QXS;8l#3hkn{N-Re=b`OxPfLasaoMd6?;8I76S)_yB zSVcNoQXt5gQh0%-$V7ROh#BWMj(kXQeF)`K*nNU%vcThWft&;xNEOIg0N$gLDM-vo zl}S!^BGMU0?aVHT+!9i&-K4VzI4h%$xq)N(Qo=s91j#kbLZ5ya1viD&#vThfrQ@jR z&%5*K!gdK_hWV~(wZ|wSk$@n}CjfWd>s!F$P`C9jC@jI#MO3vwz$ydGPym$@lit}{ z&g5v{*q)!V^9?m7tx$eLgoFVU1ekR^c(6IYG9~-Sr?O%O3Y8*ef zwVYW$@9b}F^)Z_3?{4OM!P5NMxVkwP(N~1)Yh~CM!KMXN(4t3Pvjp#;lIwA1@VA_=C7Y=LRK6ErBY?Ad+ zE)QhJrXEh!mOh7S4vb7Vj(Rfew`2xK%#z%ZaSL*>Vb5{9$p%7Q;OBOW4ZaX~A{D;D z^pVB1I1VTiJ_)`AMkiiz@i5dFBfxsQKR-Y2ExwtaKfUBSiGOPSk}^$lGkKf9!`T@+ zp4|WY!^6i9?>~LmdiMve-n{JL--kLvrI#xdye#xs-D|)Y5$R1|Ob2K2!p~bKZC9Z0 z&{4wI&e7qKfe>v98e^p8O(CIsg24q$hg2_2Eapcy4(vcZdYF$NJ$R^_pZd5x5imoL zaLFm_`rqZ<>vOe2j3ZX_M#lIK)b%<5Nm2*E9(4fA{S2_|IC-ByZbdCLoTD;69Eamd z+sSR?`k=pvUo!u4j(10nqD>dNf*CJ^JKy%^PiNOTW!d>v3!JP+KKRl_VVJR?2BtpA zJ*ywyspZ1r-OCq0(kv*<%6TK|#lm+i2J_IXV{nwsy+J*^d)kdbk`J214@D4cRa3qO ze^zM3vze(oFQvY#k2agpQO<5NigLDE&e?57SF}gtZZJk^H%i!UW_3&6c{)K;G{<#c@K}BYk#M-M|qf_oE zV2PjL_`B@bXzQBGlT@2a6Hf9jK{ zAks>_ZG5|f81nC-R)9hJm#8i<*izB4;F|NLbQz#9Dl0kXfFr}*V^WXE7ew*O!aCqY z>m(Fk^#XBZjO~*s`;orF`aE8`nDWpd$e&%bx14(e6(6*CI3Yo57^%yL?VTT{2WvP| z3vYP1`fCeQysBTGcRA|C2~gZvbgF~VrhPbgY+6>l6@ikZ%V1MDyj@_8H@isYa4W&| zy9;#7w+q)4Zsf~YJq!sQ_|3?4E`<^k0Zk#4K#e@A9pXyLOkV7V!L z{NR8CEE=lvXsT7-HfQ&z2$b-G0XvQv3SEv2G21A15ZKwFsnQoH`Ix@OM?ln@-?2wN zDIx)oq*mR#52)m?aB{yJ78F(R&Ha8j7g`iVWVNJ3zZ(6wmJ_heSkA#uIq~0x=7K>^ zvFJ(fHG}AMx7Ia}a5PyNEOasLYp*FJ;b;W{!NP=@o49DbD-7VJrUxSzCm0@t6>^#n z9>p9TJ7q`e!3PYBa*FEb!O+FSpKBF+HZoEN8L|jK>}nR9q{ToYT=~E6Jm63`J^S;c zXJ7)nB5<@7H$i0>1cb&+6*wx%owk;gjkd{8tlApWJ`?-P#vim#pvC{;otvc#X>m)j2lRnN`eU4k5gXPh9rTntQK0BS`<8U(JzGm@(fWht#Rv&w4;J_RL zNrE7ZaD+O#VQ|1Lg2z3sWC1($Uf2VnSF5*9vqeu)HN{AntEEnRc7}E~#XX8V9b#UU zt~yr;lSDeI;e#KZKK;XeaM#))E*_CW;iPMhzXfTN+bT6w%FR`?9V)~+Y0{1RinDg{ zoMO#f;UU^D6y%3@@jS6vU|%i1L!51i1!(!^s&>sMtIjmfM%-uxQ<}R=%NYJ1-6brY zSc&y&&OIUH8xG1j5@>fQ;uUbXf^52aq^t?JbFhe9=!H^~;m_XWV6x&xO(>Odi05{k zNM_U1({pBMg1WJUcqR%aON^cpGg)Pja3{MZR zu(t=8-e|ZTO3Eb%pR7vr_ND?nBP=^bRGm&#j-xOkV)uWm;hjN0s2U3TKJeA|k9ydG$?6=f+ z6s(R{QhGXk(YPez#16O<{Fo;}D_xrr0}Fxni6x^qGe`Z#=z*7FRhLwV`;4no9p^8Y zeyl_+TzE$e#!dIOy#ZdPS9m7SH0sf9IeopEUaBz1*u|MU>o-U|s@3kVBKVfMZGKA( za8t)@D-SKNW47X}82@Y$c>uaP4+x+0SjGs4%L;O{=L`g+=K{C#R>r`x1vLS}$O8}$ zCRCvqQL($+EO_G0D%I^^g*h`sj=qWcP`vAKju>af)v0ya@blE2#*jkIcur%Xy`^Hi z&ovh?`ZPORbu&CVfP6EC`<}H3{9xJ?0vPpxNRWf*$j!i%xzW;f$=l6xG+5emu!q)H zQELuoP=F-|ciw;_TJ0eM+%-~$C?K))$T_3EB`4=C+-2m}~u0~8wYXig$FJ4H77g}ErOPz*!q78so8qNWzbR#A#aYZak z54RR*U%(3QdmMFQyoTb#$vrbs5;ANcWmN zbi)^5#j5qEJ%}_8gd!R*k4I=w&5`d`JqZfW-^B2JHhO_D_vpp3Xgs`SjBsdsi9cy9 zONZx+*01sm08gVWna)pG2IZ8Xok4LrB}mXl4%vx0R78e~FPF0yA*15zGPYfYXlI5W z{;Gpfh*oxas|${GuR;RU$yHUMQ(EL#Y+mVQN&N9+4^x;{YI5$uW6V`Fh9-Ah*Z@k zF8OH&-@)kc@L;^GDm?*`(f2Hn|EjO-WY+?9Sm2^f_FcxEDE_1utRrKI0{J_a=#9)( zq8hpQ@Mc-$s>-_a-Sq=J!i~RKp5aO3r_DZUGo=IBv$YY@e0jOR>58rxFb~p)tTI9r8d3E~!bo9S?t?kkj%20~{z#3?o0BGbwQhHAPxJrz~vn z3dw*+opgVA6+Ne}#mZY**5r4?RO@=E6&xK8ErbLW<68w*8(O&>>2a)v)9}=W{b}e2 z*tw*zgS7=T0e%swnlY(fbv7KmSYo4a&03Z*Ylq8Oo=v4*RMhy;_W~ z1Dxa*D=5 zL5CXLHxL--p$(R&rp|Ji1DHGm$(=jn>&cZ);Q<#WLW;fGj7xJXmn>#?s6^*9h^jO~ z8el)zj-K>JbDXBgOCuA^vF;IlxPLY)yNppY?bAAV12=sA)5qeJqlm1+_(3j18nT;I zM#NP@h%ivev?v3ORkS$xM-B_5;D}DZT2_OYfHW)D6?dMVi?yD{fKAJxw{N)cDXpWu zKm;2x{qhS!^yT%43&^Kj2g03dx{M`z<|*sVPBCUeC)t|?E?KsUg!zVdL?c=nD$Rt$ zWn3Da(2X11njN4q`*?AUn%dFmsw&I+54!fyV;U<*%a=DC>8yC1e}wPK`2rGd4IiMo z$J%S<&Le5QS--=a4o{b-Qk1ndyx~=#GtsfrMzklTykfM)+zOW^+G0^)TX%mp`f}R8 z3T2gwvNJL=@)Il>o9jD1z%*gVjakc;olM$!u-Ev-oddrc!KdUF2d#D1z~Oo5{1>ib zfl?gO3uE}ghlMmCb%S63T&(O0rOL3>Axj*%r=azIKm+d1@I8rEo|XJzr-Vui4})=> z)d(3i>p{oSuoH;uu@Ocn6<4pZL_3RK$VPO>t349!`)-U^ar9|@Yd?d$q`S-<*H1u| zi@B!rh@Ya;GYs52-A_pwXa0}xDqAm{)Qx!_|Mx?UjCWF_vBY|Vpmhb-ZqAD3LljB?ln?O&WZz=UKi$y~`k za$0W>*ekfi3(W%5n-A*078m#thRBx|*KtUe8yKlGI5 z(4yb<#d3VQ_LvKU*5YOp?c~zSwT>>@xgQo0FWv*~>@Q@zuZN5cKS%UH_TiNvm&M?K zud0OtS1lF*Z{jz${kQg4Xri{>*BoHR z%`YRRcmJZ!uXoRleDjeSd8|u~DxYGUig_3B^4v#$y!8=}pFZB>*X3Z=pcwz6w`qdl zTm1O|0PO8TZW}u~N*cMLgSYJUed840l;wjv!@uN}z3p#w4xL|@ixur%5^ouA2<|U? zT#yx*<)!1^Z~8rqqw(#tnBr-BIvpHADl9tRT(gQM6$VSNwZM#h4o(IJPlrtG7}MzU z&KL32*0_p66zZ;At=>Pz9_xaA%*V2JxpEj06>t<+Kc6EhMyj)uGcJY-B$ZR_6>NgE{}2#JTcWP$2t5f--qn=CaLe}D$~^{?Uzyv ze}QS*9LO=n!R0~On*QXF_EH~b+DDQ0?UzFw4ItAv2fYR(S903I)RjavHW5x;jdKj^{T8Z4-+A?z z+{6-1G-Kx!<*-@ZZ8!sRhdCrprcl4P#{4;n3oS9=3**-XGj z`!2B@5%mra7%y!sp*?Pul~7KQ7gMHUuik-brzGe8JY}ITBSp{Wof;m>y+R{_F1c3=#787pXlhv z1cz%nG)^fgH(n=fq|Z8^_~PCB1f9gDu>&ilM!Qtv85N}{A9N^mFy96~m~4#N*K(P@ z_UDNVB+gJdtyPOWS)Q3+h|*yfKApfR4Q;?Scb%mv8sgTgc-KJ58)@}}-@P19@NN0Pu;Z2$&YEhh#u*In{VMBjRt z44j$IP{)+DKKa&;AaX z`VXBzX*wITp6r4%R8hd(#vneP}8f-n_7A&h&x~E4T z?0mkGmVqO)BB?biPnHMY-oett%v?H%ouWYLWwZ4%JMY{4-fRMh&L_bMX?jC3`0#^# z=0c`^ct@TtTEA?)?EzbFR~oVrv410?yKysOtB$y*GIr{)i|97gVV&V-ksEtAzj!I4 zp?Dk3+Pv|}Mx$0&(x^0A(XGF5hV9Ocp5FX|gF}_WU%b?+mm2ZX*ffTdS=AO7&2Kb@ zc%4Nf{$@YBjcz5B@Bmx{B!+LTZn+$V8UG_B^q1%%$vlUP7y}}3@>=$VwI|crQf3fr z2kDvjczWzx^G>gD;^iR1EFp(ka(ZF}70(jR{6ZE^&-|?F2(uI&U&1U7hgmavVwn}sEKk_O z=^2lmy2D!1ipRZDgtI=WO)Fj~!09DlrbFgOd`ZvxksL+*dh54r5mSURIs(fTJzg*8 zeYr3gbL_6YPBOsAqhn;H{(6e0No?v3$^}zV?&?5QNcY{2&KJ0HWe&}3!^@H|@9jSI zD-(UJlin8#f7jb?y8>#E0J}d+7ScsHDqMqdXl_6u34hP+z7dfqt@ff1>!D1)pa@oy z;6{vOP_RM(lS19rZ$#D1Vd?e8$B00J@c;>mD}gbtB0)A9ogKQwCLxGWyckBi%oKxa?G*dok_}7Gy`J!*TxT(d2$|$bT&eH&LqTFdilZ z;*}n$SAlp@&Xb{%$9n^Li4MAmhZIxT8Hj~ux1<3rdUgv;?kJ6STi@|2qpgV5NgTGb zGZ0&4&~eqV%3#vcn^+(cBLMF<=DSI7W2~T$NK283#W*V1X`Tl)(R)tHLI81nAT;tO zzF40@ntU-8f16%F|8B+^txPX-XRlNU`@X?7G3O)B;g&S$o;G&;S9EHJ)Sx)O2wC|> z6_^9u*VW8()bhlu|1Ld0J(Km{pC5$_P7^FK`m87n+~~Zv7B66eUU(kAdmfCo{rl}` z4^}pDD%1eOyBz*i0s76lrXh_u)B9>JUW&>`=A6`_)~*2PdNiIu^_FwqF|cZHLJWnO z5#_-BO`Q-VUQ?QC=#>^6=jxC{9QBrPtA3}JnNm;#-Cr@p90^IFNYhFJgr8|yYT>~_Y*E_&?H^OUR}2j; zV|;7%J8cda?v+b7y{hhH+npwmF(yTmEuM*KMMkO(qVxRxyFGy|6FG4Br{Zsp!j3ev z{$5Is@Gaj!>fSc?x|ithru?0GU?BEde?VZ3UmIXb_jWDM^49M5*=*LUB0@5ElVM%`DUF3PE6 zwW;dOdmMG1`rI{~KZM;QOJGaS80{!DPu59LyQ}J>Ip3FHlKCa~{SM&)a~K_Cub|Jh z>3O75;X*QC_5&0d1jasWoh?S3#D}Ni1kPlK%yrM!@k~q$N{D9Dc3C4ZzMJ%ZtrugR za>e?{CX3h;d`gYQki)ivuGJY+GT>4(65&)?Bl@MVw|ur2}it8ox*0_I^Ihgkc)i6K9OGH zBdk6vUid>#{`^Geu|Wo?e%MF?B7PdgPWVK3)|dQ(eJY}s1z0R;+9IU##17r1mDX*2 zT;C^c@!#`BUeET5fP?`H7Dv4<^-YZm>S~TR*=s+BUQn;W&aBhiC>A zUB=q0Er}(AfYKbPeU6-oTZI_j^2J4YD11+eVzWs$ukw(y<(sEbpkE?#|3#H6bJR)f z?h%I|EMDp~>;p4@dBI^%#K6{$msEq$Eh!m;!d)a`YVy~sgN6v9DU>3M7&FFq^i(8` z9_*ER&|p147kX^A-bYIhY&t}a3@01LE)S77MiJYgxz$+3J~l7#jLUFCjUsH+Sn8n? zd8m9INV~oU8$3Woh)219ZwTX?Tvx9#;0)A@@&vVxzNna}X7O zRZv5Z^ys#JCu|%Sz6#HdRs&T-g{m}E-b!=wwf>28gY`heKo=%%Y~ftX0GLO(86HjG z-31jEh+4K2=B948K0(J|_*6SkyAV7L?Wkz$uK`k2&*ahpLZ!p!D?AQ)0`r$k)&qd%ysDgA}Sap`m1!o=HoSx|-?$ZwRKV}i=5r95z-HOE+ zFPJvs!yDQaWkOXHwlVzg}`q3Gv_-i%>G^ zEAqkWdG#XBO?v9Y6i>Di!qR|`X8FT0hqdRipx2a5FK+kcoSS*2X{j2!4m}yod^?_!!a&tjW91p zXNw7}xdxSWpEDo?;>>sMOJ*H@-J3LIuIWDB{Ys7O>r`>&iyaXvE>EkXd@I#gwFT0!WGtOiqf5rpIWm$jG|8Dr2CRHt zy_O6vvu+0L8nObBf=M6m*;nP@To^}I-)G~>3mDoanz+lww2RZ(!Qj~9qktgWi{s+u zOvjO&b#_;r=MB%VXK2%LGfw3l#>WwUxHaq$8T9x-_Z#BD7B}|ZbG_QT!T35v;dunn zx$0}Lmhrx;CLvKc@5G(Lk6ebJKdAWkwQSIg8Fa4Mc-csGWhS*~=q#+Ybc@}2gc_`r zN+GoD_{@a&Ye$zIMENr9mmivt39^M5<+$hyU4SIUV_jN#x62&{_?ggs5V(|R1UEqc z%^*Z;Gq@+~Qw{aXh)j3G%b6|EL5e_02ao*V$e|$F3CjBk(SPf6g({kmfxWRl|LRZQui=jfPrg)ANO7HPCtO>VRy3SE9tQI+BB!YB^;tH%D} zOA7E1e9|i}HY-QOmG>o2<%eT#&I&W}?2k;;OIJT{>|R{Eh5M+6YlAueFudw@23NDhj@nKsN`t7UCQDCYc|A2;3;VnmwET``4f2GGNS&8U0hFg5Y!2ER5f4 z-F-Ga;*5-g9*$bMaJpgna5BXl{{?pS1r{oWr-i5;4ua>5ZXg#;A#a{JQOqDH^0Jk* z{*OE}!HB}#O`{DX*o;>(r3DgSEUZuSKUTjP5|b$PVr=D0FbE4f!|lZ|V$HqAq`wJJUA z+GAdK)SpIqc;s3ME4`Ut>CG@?%u0TxH|Ij%H)mS;t8{v|3Pl?0)v*9hS6atT*a&0O zw$fXLo3*LDDnGT|ToX5;5)@iWCpSms5@Md!^3{sMFHjU8%yRLk%(P;Kg_-%FcZAFjY#X`jNY z>jZdc)UWCdc{#P&8kKf4+-$u{yIFd(cBMC4uf1tCf3?zb zWx!r&^hU7NtPc!zBYbmm;A1tu*IKA1!z-mZRhr7?SZeoK9m`e7(#mP(*Zxth4ByRM z??uX6)$DP<*^=r@Qdu!8{br9{32RL?Tdp-yjf;V7ZxzT^he4>lISmT04igg0#;^&2 z-V8UJtM8kgQ}b5Ct3-lOP;+3ZeWiOEtkv$_M0hvB^kszI1RJ%d8Xgb+O%ka=GD2wD zai}`gY=j1(*(t$pvlD{NW|%J3oiePgrrz8SZ(_MsDpHVMtvqI!MpiTI!mC93Copf$ zj{v#Z6@^#Fr$Gu(+A79lqrTCxRfMY9Y(kG_uL&($7R_{_u&Om~`|2XPxgFiyY*)!` zfqvB&N^67|2_c+n(wd&Ix#wcIM8GyjBVQ+za)!u*ln-SBgjZ0G(qW~Gw){`I%$}&9 zvi3&+veu>)>~iywGH~iEeUu2 zC|V9hu%vVJ4uRD?<%1phF@Z(R2kh|q2C!D2?y5xCSCkFB)LHA|(5}i1d>3!3FS72S zeiU(PXI1JBA7xo9O^ZNQR#mZERk5>Oirb4ul2uhiS%{k&RmlHJ8GzmDyXdK(hpYu@_&|F1soRZd!Zj4>zrixwgcik)e z<>Ysu>8N?9S@2#p`g?o_U_`ffab*+VH9DsZo@b?2Rn&vKTX#4r%OPB810`e?D>WnR z)0{Tjp6yhZVu0%z$&SRNXLM8^fxW1*5eSHnUS)JMAZW|}Hb331N41_fD7C5+djSWU z*$Q6wzyQ%eUF=+!nsHi0(b-r|(V85)Y+40$n#`)Qdd=+7h8%-tw*|Rb9}SNTHC(G* zk*aoODif7)w5IU}Gw|UAp#ieaCl>D(rmR&GQl@w)lVmg?3U@JiVMe29#cAU}N<8hH zV+VFP?PI}LwCF-849bT!Ae7HpAlR2DU@u$%ouY=u#x`i5_YP3d<{n2_bCOYWFTiFR zX6cH6eDytyml$DL<;5CsV#nTs&zsni@qm#_b^Y^i*L)qEHOANpK&q?0JZ0cJ97@fO zaac9ryZb;_3#^sGe$Y3%$nz-kOtgf!gj8~MDhpyEiE(29re1|+TaS? zULR2$cWWRbDe_}+fKvw7Mwo|t?sk}(;j`3ooNO37X^eZ-un%!%iqO0g0aOHr3Dl48 zUyT-P&mKI%P@LN=qr=Tf9*^Yh|43I- zliZO7BX^Yo!S_6I?MhqewWpMY>#GoET3SW7wG#Ajvn{kj)D@8s{z{XS9)b*!3tj?v zayI+D4z{WD81LkR)^0p^I}1M|7IpmT0jsX_a4y#s z_#Tqe2O}P1U#btR@V9TB>y!BqpMox;MF6S+0$|fF~Ft07nQSpHnmG2f%T6VWc zg*97%|LrP4@5?LI0f_p1ipkeC4(Jz&wp=kIsjoGlJ~cub*o$ZD?Jp#%Ui*4jtez?y zY~ zKG$iT&lRG9dKd^b!VUopz@j2myU}}g1>lItY)dx6O;RcL{joTyoTHb)`}ewWXa7*% zT<^q&0ym)9VYTtjAMximE{C>M=QlXZqalFmWvcu6ShOO4e)|k62^S$u=sb3#P9r9E zpwiN{hujK2Ui<-%=*JJx>{vS-4aWnVw3wJl6#@<4uh@If*tF1eU5v4Iml{Y@9RY2X zdkh|gNrhc$4%DSuwTeA+P3B^h12|{lZYX2c+8*^?i%TslEgpn&iwe=Ne!HPVc#WP| zDyOu$?`J&bo&h{xjo^+9(GRv z3!)eFjva@}XN7lYWZZv}12%Mh!kFdHpcG#%&vov<1jhw33>Ar=K~Zyj3#`Tg~~1%ifEi^^gj>^CiavSzg45+Rdb@6|ng-Dl4R; zInQvXOKV`~WxHS(X8!6WTcAajN!d=8VD_80>;-Q*DZ;ESl&EYnlJ_bq%YdhneI;An z>l{1!pFQC%=Zv?kmA5R9w|YFYS5Qz{9&Z^(AM#t`vSi+}Hd5;^>U>!*so6)qs79cy zE#h)`L^^q#M7#M#1XIT3lp#hhNjX0V-m9Uh(&_=MT1bzxsH$0XJ)^Q>ptY2qbI19z z#8iE#`dK-!aoJK31!Z@zNe&x2x`0@cbA3dpH0e@UHu#e3H9HlaUyJk4 z&}qvSablI%K3+fj$0*3#ui|Xf`mIbaxE_sPhL&Gk3FzH1SfeP$Uch$zi@RB3n0Ni! z7Z||Idzf?Jxtw<#bt%<3Iri$^1|CeTaz=dk5pz5YNPUH^8#Jf$fC@|q@Z&IU7w!zy3Ss&O~?eSiQA-cO=?j{P`v6Y zS)h6KNXbO?FyY}37(rS^nLakrBz>SrQy`||6q%HY(`3O&7VxhgU^_j0T2?7O322!* z%~`ao`2(j(S=}FGnnOu0xhph1K2YO7|FU;DNq)svj`vCDw#cBU8)Q6#>Gm3Ed8fVM z#&&shQD2EuI8SaHJEYoHokY?CYjJXpk7H~SUSP0xG+W|wT$l1(_0G6|?dt48{)zc4 zXF3nwJ|YY^cHn=aDcJXoNm@GGCB&8HC;;QMRFrgD(~Gub6ojwhnHOmt_9n+N9XZ#9 z!KfOB*X&^OFi$IM(o2(rA2nW$IHZd6;Wg{KKnGa;K|YRpov&w$hq%nJ+G%0^Xv`Tg z*qK`X!L}9Sj+$)GS=?7?bZXnqYKZC8-)38nI9bBmI)VOPMKzxspP$bb|IZ)(kQfa# z_=hk5{QdWj{!?hh@GsE6m1BA`(~ZNc9Md&cL`ai)&c;Tv-Ua^y!cC>Mc%X>Z8A- zO>vCGG1c{}UF&yBfYYoyy_(lFbFC|=xU$RxMBOH@TsJepQUmyl{};Z^05#enU_J9D zD|a#HC@0T`Vdx^XBO7pf;z2zEvoth&KKPVgNT<%RU4dMaacC63$ z>kQlRN(Lq@-f{GSCV0tBLY+HHc5zuW#g&z=O0qm!Q5Uck1&}lR>BvJ1uA&0O%r5xa`@}Q7OFR(46_6DLyo=$C z`#^EcU1%-yP(FRi4&NV!_ZB#fvRo<>goIGLESO)O4|_O(;?%r6E3j+#3u#ad#|J?Z zRswz0X{_E=N*8B`Dnxm=du^Hg}^u)x4!+pfXc*G)?{J zVoDm#w5zuUS(1A7UUz*YPa0UD_U8$85yG0 z6xpn*B1LavRi!K%k}Zf^#Y-h=6TY~ zh$(kDw@58FUo;ESg?4rX?2 z@4YFjJj}DHvdewJZ^D*d8;szl>Y(;Ef&j4ob3HcJ0V*>jvm-}r0>?7OFPuFfftwHh z8LzhVMCH-;Hw9s!1HHdHnRbQ<#!e49Y(=7bL<@RRS37fJoll`NIo{zv^(9-C5Z-Bo zAT}8w6P-Lu7;P!XLlyfO5HlNHStNW2eJ9!w&pqva8gObNEp#3at~yV`I`7L7t~8G% zHSBZWHh0`$HS|)c=E81A z@29u8=33-~Uikd`q>$1l6+unwT`)8)LWBKSq}T_X$D?IZ+>_5V^QZwfWb$vcLNc*Djp^t+VA| z)HuaJH6ia4@VcZsfJc%!jN_K5zR48V7H6QB8SZzH%ggV!?E8+!$dB=kglBC|Py<{M z9Q7o_Dm}e9EI#ppj!c*$?P7!k43d}Fz?AFJpZ@9bT5!VGLjSSQlR`#j4TN6_Bo3yR z$JbcMT?{93Bw zrL4g!eYJ@gjn0|fG=bMy@V6jFA>3<>n-}a$BkowXpjpGl2^cSKbM5?W>@k_3Aqi&VaLtCd{IW8D3+V~65PFPkhf@%S&p~YP_q21U(a;M4@X>tpV+QcvP9_Aee zQ-*>ph@{L2G$V{w&HT~i)3KA`T7rZ+J?p7p=b$QgrgL}jx76y36 z!zr#JK*=&MuAL4B!qM6dX4l#B3IVn;11c6WIxe7m@5yj}hF(m47Nt%p7R9~-RssQ9 zl>@g>y$Q~ef`s~?jr)nTP^|{Rdh+p157X3o04ETp%AyBZbb2A=Q|8LuutXv@(g&h6 z$*GVLXThFYtMo0ILa%5c^FvMy93lxGx7WNP_{uzDB6xpQChTO=)6GE$MbO)uTV?z& zqZ2pPX}qg+ou%AjXHkeY`hca~k5)$Ccqrt;w4CUMFit=V9BIlhw7lvwvjb+W0{dEo z{E%7P@K>xPCVcG(GP%^a`w23aPP$Tch}xtNN!@xt^NLy2rLclKv~&Q(U%`tTzr-&59ec1s@Qhf z;Gi$EjSW$^GQszi4uMU^H66zR@M-Nzs7hU>GWIj)zJ z9#hZFGO3z=gSPuXqnu-IETP#!GN=cDt%oPV_)4L|dGjWu2+v_otfnN`afXnb&742x zWM%#g1u>1xrgj-mDz!fTuLt-4OXw0Rnd1$J+SnNp_kUr(7KS_cVbd0cjfD>S6 zTxUJhxy9czezwp>%716Wa73>AG}RXAqJsWWhY+ab3(brey`cOMNq$l0&2Wu^F^7~) z8&Z&2v;)at%0*g?Ed!zfs!jq)zU6^HqvJS%iAA7 zJ0AGBL1NmUPJ>7^Q~*7K5k1@x+7Ka*^=R|iSqq#kWc$@wCMvysLxkvKNuCH!VY}v7 zA_3(}B&23DymB|lJXguUsY(`!`mPY;sYe1Z zR}e*72fSHh0ir?7etuGaH@!Qa$shG(0uS&E_CXe#3bV z5tk&ro%`{$@p>LT+gc@sN0RDDI9tT11Bc9v*99m3X}@|Ave3Z2Ef8x69n7s;EW5Va(Uy?R7wePb>mOv9~Eq%s~e$Q z@A!hoF6J&9P^NMB;*R`?12I+7E`r%A09orhDPR1Uqgp!fE2{}SM_TY4Yvm{0f`z~J z@i314;!M~OC-?JJ3}o0BA~HVmxkf9Cac3n7?PS++u`5P<4Ou`P(w_C_zI@YyqI~CW zOKzzV#8~yCQHn ziAqF!OS|_N_dP&iA4%=Y$y^Swx7B4*cacZGoV>lif&3Qr>s^#>ZmXNS5OKO}*{k4; zny#ZsS^@tTK)q`TU5sE3oGp1L(2PEy18fvDJwN?Jx zDpRW>4nm{>&#xT}^@0lj1(6Kb_QBWfCz1qL7Uj7MNZZL(e&5I!Q7Xty3j>H)2$hpFi#MocLwk`GK+>S2;iAx8qJ ziZnH-G)I~mWF17B88d2&bBa&K2O?p3fOYhcL4ZS!bjxULq`B3q52YRvvB9|OFewl) z+_KAV@ua%K>LoQZ<}=+~yzJ9D7@LgfstQ|hs?ix4E*DfIZt)k_U-U+UWtpjv(!oH4 zf;boz(I+|sy1I8z@d-UgkOR}_)n!{Y_Jyx036%v+8eKZZ7%cVS z1QCAHA33p{)=&-MBYQeMKyWdD0gDUApy-2-Y^AIfS!|PTvD=T)QMu6z8%{R7i(++R zGD{j2tylj1AiyI^(+||DBRXHS4QC9e4<+UFH`WSMY>?8!=Rbp+^G2cG zz0-J#O%V`yn@0AvZ-!UWt`fEC`PN$ViuoBgdygJ4pi|jge55(77yhu{Ei5Hi8rq>vDSC(%q6*QCluZ|D znjen5c}~3r{a1i`_bEHdQ&igw9|dPvLS5J#)8!=w)Z)By<@*s<_8uDzq6fvL>wr<+ zqz=#L8o}x?$niIt6gVncHJuI9Ap*Ke9qDfbM4NLDcpcc@k3ihT4mYtP)Y&=fY&umd z#h0w_hB-0H9^u;kWHL(So?4?M)PEnapyXm-mU?1hn?r)A+0Gs0 z#9GcM3K*`g`!}9`QT#8&HS>JS-0pC*B$Hbfj{Q6jg;G~nmLZ@icC_-zA?j3jV!z9U z%8&~cGl`I=0i50hc^3fckr>O6=Pgk=bJnZL_ttI+c6sQQlBFHJFd4@F7ALCCR?-WCB(wcOnM9}Un+9-)=xHLgq z!X@=JVLo1yCboEcqkYsHZueT70-9WgFownlL+CA(G|-R>?F@jlT}H4B^?NE`#<8d{ zFe`45E>m=DvO^uYimWw(WVw|OnzkCr4o&L}o4>0HgIa>2@R9jh^X2Gz3HO)Z*6&3G z7*k1HNZks7%oGBYMIeAn6v?nF(rISoDbi_fY>*Pp>F(ev)4kINCYsqo)PCfH})EDT^e z<+|k!&`1peR5Pjv#p*$^dZa%$*b5G(n>TQ`gO)KcoarEqGdtWl!q!ye$qleULCprJ zo0i3vEgbAm!85z3G${25f0;-IlcxU7r z)PF_14Mx|4>mQN5!|eoPdvUzHy`wg{s%q&~Kq*=b+L3>Ee$hF<9FDm?oU5Nwait98 zB-HG5hW@vJHG!%Ju{bnL7=%;`UA2sd2NB_n*R9R|F0GG>%R+h+@ma2vcb%`mc7BJh zfaB2?h-XR9`eF^xp{&;cLkHOqBY)Ndt0=-5kGgz>GalKh2PUzEHx(~+H7eN@*#wrG zKZWA+6TpseiQkVEA?=945jsY2obAoPXoyqJWU=i0=V%VRpfU9Q2r98x$T?=y*u5Kb zoz{6l>8EFqL|J}#I}>s<#`9jKg_>E6{~C*(`n|cSOW9rLBpfI*zsuutFD?cNHPM1w z@=SR{9MSL?a<#;3(aNPqi%!sUzO^&~_U;$q)o88ojYXy&1QtG+B5vX41@w+)$o7Wt z6gU!z&@-%CKkJH(9fhN3D5gEN|A&VtKXWz2yg>a{>jRC;y3d>1E?7l5OpQfg3I|f{ zNTnfAwN|t*1*^A$?6I|qed21$Veb5qjp8APHdqVZ+j1-$b=Ybzx6Df8A1=gsFcQ3% zaUmY`co;$ODf1!pKzs8I6vd<}PH%uTZ(773u(#TbQ${@tP|u=wwtB2q?$^%P&ITve zAyvcf#a=T)ZJ^UTIMd!hMP$4|)+-XUp$G64ZE%SDc)rpNe&w!Lp!ZD>9Cfw1X14VP z1OQ|t8%OJ2z9I|R)y;md%CE_(6xHt0JLO8szxB~0UFYKC^YiA_%V<78g<+@s0BUYA zELY|*3EGf#K0?OwC*2qO1H^79!D*nRt+X4&#bns$vhZ`Xw=v!r99&XKsWo9LcHe;a z@42t<)|+rDd}=T>w(x?{==e@DiC#_aa68G6YgxG0xju8%3+L0;r{edqTA9T4&F(J$ z_u4-^e2jGJVWg2t8vNJIb*{>5rim&ejay#V_trNzx2rV3ovmZ--}!7GFxgw*Uf=j! zrAZGizS!7fzusE?V#8nTZFE&+ck^>C8(J2z*z0ev?|0W-j;K)=zSG^=*uYkK`=O{K>Q+JFlocbnya z0ka3|jM!fG02G+98(eb0pTcy417Y{XCdRGXF55v++$X1Iz6Wrw2zE zNlXVi=!vn1=?PRe`p}T)c{0cQ+D(jM5?GNs^6AMjNDp>WJ=iOq$coW3(F(h*LU5hY zH61LLgXtOWE>r4StI6fcOA;ox=xS3o>CTnPNFK)5u!bcQFV~TlP2-LGlOt@!=ifeU z!R!}`#V-ajvd%VgSclmx6-^y_K(tAbc4K{C>giiV?3?oBK(&r|-+5#cCo&ax!1w`i z6e=_-bYp!-7KXT#*j~34pD0{=J5^kFixOP{~C>Ty6o7K`yD4uxRLTKj7w^%?KXE&z+8DH$U-N4vBI8sAO@6t#hcPZ#W z={)aXu+=^6wR=lUS3u1=c}c&Fo>ESn@Q&dg_mAhx#j#PQUf9N7V_7hWv^!oH>v%!w zKVD#a#|s+7kmz#MjDpIdgH23-fziYTHN7GegN=3(<0{l$39Z*53(R}zh;vR8jH5Ye zLe+~%@&$J&AyHt<$o^u<;q~~U+qsyXRVLNf+}am-`j!$TMzBWkJ-Ek`_v^GOy5zs_ zpc8>3`g?HCQPe~6Jhpz==ICg1J(URvuZMakW=o~o&9ngS^iVQ~Z7V?rd^(&V>f+rn zRWGD_A=F?V#u%u}@8soy>YQt>{CsHf#V~2U;%E+;s5gQYSAn-$O{U37umFhTf*7t^ zw~GZ@GBDZBDthhrIVV0i^$nTbg4ft9Ss(AbzyaJ+m`kLZEJ5Y%O!KaD0Ov<~^%=?&vl+aELBA*e z1!AW{%;W$v^8mPeFDQq~fc6ne@TzCYweEfUXAD8=HhcaxdZzDhVLCLl6YqW3lQP>{ z`nN0S>GdbJ>Vc~MsC5VY0jGc^y@PcAF6dsW-SU=+S??W!QVjP!yUI$-ga@Q!5Lxvt zmp!0r5{beaJFR<-Vm3H4y-~iza;Lm*Z0znfLhD#)N0F2-rg)X8rpeyAQ~+I9SH`@N z5Uprt!czLKKAl8}>A|+|iQi-V{1r&ShaGx3|Ln ztZE<$RyXQ98A7dtoe`jQ+B&RHv=l ztRh?gp9Hb^E!YN80HwnA@q}UEFbo4fAqdDw<54b+FXDw5_U?#@7h*VkIWry53riP5 zh!<99iC}Y#6!Q#8DHXtHh~jYSl%-f&tWqE#;v-9xX*TL8ieYs{3>;fFTVhBmb!Ypu z0!!woTnoI!MAM0JbKqOKJRB>;M|yEpdWo;8AzBJdM&)47Xdo|DOf(QOF=BX$JiJ5$ z$y{0?ZVvz=j&nRc3DUcAGf{zvLU^fS;#*?MNHF-CF*(-LF)_?XTp$!rIXaSq5S$x7 zJvpNGa_HpD&11;;s3DxN^ps9ihNFStDVIQ&v^!CGWOOJ-o2HZwXUpVePQ^2l(E!oK z@nL}^=_|Vd6)=GA@|!4)k7EePR>i~+kW|JR_LkZ$0dYLtAHo5S-1wqWwcKKIweB)! z^w^FLBS(SHoPO|TRL4tH$4hCF*l>J>uqvOiinw1U!>-@F4CNC$J)TZyqwuWqeSjld zVGKB3Q%2}xj~LJBko?GEp`mpw?F;pZx}(z~Yce7-3x{Sz41-Sv@kxxA;3RXnKI*SN zaYMiZo;vN(Zji-4)E@1_sYyi3*`C_VRXX|f!~$wDczTHfbz-7QMMPGeozw>U<55*g zG)Aa`LWyu|dB*rtdAzV`Z*D)<1#Zhjt9 zCem6F*22rYRZIW`Uq?I069p3!Nt~nNMdV2q%&{eE$jl^FnWJ)IsyxvyVydJnCb~sZ zU{qc_=8|`44kSm6r@;WX7SRG0b?Lx%R6|U302qoS+FfN15S6fv(!|TkXMnn(E#f^% zOkWJC&V<=dPG`|!YEgqkbjC9pCQYvhd&nXDAjySdOqB8inVu+vmBZ;o%ZDEuz(J(z zNX`#?`vZyjey|m^gjoOzrSM4paq@_T#R{FG!6F04#K>pjN$AgC`3P=NCEccGml)2_ z2baB5hy@h!n%iuis?4=>C$?H|{xA$~!tZ|{XO(1p{}S7DSPtSgRJ$}b>KuDU5LF8t zWQ*LFn50;wsF4w;Wmi%;1UsKlMZ9TzOKOQz*CS57f74%ZNI=q6zOKtDIkna!Rg)fX z8qoI(#q z5;!G)=kF*#_+y4hgW{qR{#b&F)Qp%Rgjc=Mix-_|)$Qp|LMJQ7di99iEJ!8T3}7}r znIhtb`GJ*a=lopaW&91mvK}LsFk%g7U%+w|4fk8`Iz}{JftL~+=`N!2*;cD961A2( z__zTrD_;TVlY}};=c0!qCrX^wdeH>pTM`ifMD5~vZ}A-PsFqAjHPXU3jbpVNtQ!rv z1*aJEp8}9LS?x&=Fl0=(JCyj9Su~d?#oKEK^ZWUeyoLLV;&s31{c~F2Sa3XDo-Sd6 z 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駉pQX=8o#4epFbgRLh+D1(E=7LM-&7rp)A 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 z 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 DS?3e& literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/CLion2025.3/workspace/3BOE7pLB3btMHvDTrKDW53uXjfo.xml b/dot_config/JetBrains/CLion2025.3/workspace/3BOE7pLB3btMHvDTrKDW53uXjfo.xml new file mode 100644 index 0000000..2d7e5da --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/workspace/3BOE7pLB3btMHvDTrKDW53uXjfo.xml @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + + + setup( + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Project + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/CLion2025.3/workspace/3BOreagVTgIQtFhZt0F9hFMY2Kf.xml b/dot_config/JetBrains/CLion2025.3/workspace/3BOreagVTgIQtFhZt0F9hFMY2Kf.xml new file mode 100644 index 0000000..8a84525 --- /dev/null +++ b/dot_config/JetBrains/CLion2025.3/workspace/3BOreagVTgIQtFhZt0F9hFMY2Kf.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "changedPaths": [ + "/home/breadway/Documents/Laser Tag/CMakeLists.txt", + "/home/breadway/Documents/Laser Tag/main/CMakeLists.txt" + ] +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Project + Run + Messages + CMake + ESP-IDF + Problems View + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/app-internal-state.db b/dot_config/JetBrains/Rider2025.3/app-internal-state.db new file mode 100644 index 0000000000000000000000000000000000000000..eeb7e2efa751c9cda3a2f6fc57e382873171b06d GIT binary patch literal 49152 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 + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/actionSummary.xml b/dot_config/JetBrains/Rider2025.3/options/actionSummary.xml new file mode 100644 index 0000000..0c37343 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/actionSummary.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/advancedSettings.xml b/dot_config/JetBrains/Rider2025.3/options/advancedSettings.xml new file mode 100644 index 0000000..01dfed3 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/advancedSettings.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/codeLens.xml b/dot_config/JetBrains/Rider2025.3/options/codeLens.xml new file mode 100644 index 0000000..6054592 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/codeLens.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/colors.scheme.xml b/dot_config/JetBrains/Rider2025.3/options/colors.scheme.xml new file mode 100644 index 0000000..b27a1c0 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/colors.scheme.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/console-font.xml b/dot_config/JetBrains/Rider2025.3/options/console-font.xml new file mode 100644 index 0000000..2c67ad2 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/console-font.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/debugger.xml b/dot_config/JetBrains/Rider2025.3/options/debugger.xml new file mode 100644 index 0000000..8fd0533 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/debugger.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/editor-font.xml b/dot_config/JetBrains/Rider2025.3/options/editor-font.xml new file mode 100644 index 0000000..2a546c4 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/editor-font.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/editor.codeinsight.xml b/dot_config/JetBrains/Rider2025.3/options/editor.codeinsight.xml new file mode 100644 index 0000000..0381806 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/editor.codeinsight.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/editor.xml b/dot_config/JetBrains/Rider2025.3/options/editor.xml new file mode 100644 index 0000000..2e45dc8 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/editor.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/features.usage.statistics.xml b/dot_config/JetBrains/Rider2025.3/options/features.usage.statistics.xml new file mode 100644 index 0000000..3f4e946 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/features.usage.statistics.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/filetypes.xml b/dot_config/JetBrains/Rider2025.3/options/filetypes.xml new file mode 100644 index 0000000..08ab028 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/filetypes.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/find.xml b/dot_config/JetBrains/Rider2025.3/options/find.xml new file mode 100644 index 0000000..8c26ec5 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/find.xml @@ -0,0 +1,8 @@ + + + *.css + *.html + *.xml + *.cs + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/ide.general.xml b/dot_config/JetBrains/Rider2025.3/options/ide.general.xml new file mode 100644 index 0000000..df331ff --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/ide.general.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/log-categories.xml b/dot_config/JetBrains/Rider2025.3/options/log-categories.xml new file mode 100644 index 0000000..3ff0f01 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/log-categories.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/notifications.xml b/dot_config/JetBrains/Rider2025.3/options/notifications.xml new file mode 100644 index 0000000..a3ec03a --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/notifications.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/other.xml b/dot_config/JetBrains/Rider2025.3/options/other.xml new file mode 100644 index 0000000..1828e8f --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/other.xml @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/path.macros.xml b/dot_config/JetBrains/Rider2025.3/options/path.macros.xml new file mode 100644 index 0000000..244ff3a --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/path.macros.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/profilerRunConfigurations.xml b/dot_config/JetBrains/Rider2025.3/options/profilerRunConfigurations.xml new file mode 100644 index 0000000..47515e7 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/profilerRunConfigurations.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/project.default.xml b/dot_config/JetBrains/Rider2025.3/options/project.default.xml new file mode 100644 index 0000000..0510a84 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/project.default.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/proxy.settings.xml b/dot_config/JetBrains/Rider2025.3/options/proxy.settings.xml new file mode 100644 index 0000000..b98ef7c --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/proxy.settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/rider.perapp.window.state.v2.xml b/dot_config/JetBrains/Rider2025.3/options/rider.perapp.window.state.v2.xml new file mode 100644 index 0000000..ac8fe65 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/rider.perapp.window.state.v2.xml @@ -0,0 +1,84 @@ + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/riderVersions.xml b/dot_config/JetBrains/Rider2025.3/options/riderVersions.xml new file mode 100644 index 0000000..3f18c28 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/riderVersions.xml @@ -0,0 +1,53 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/runner.layout.xml b/dot_config/JetBrains/Rider2025.3/options/runner.layout.xml new file mode 100644 index 0000000..88261ad --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/runner.layout.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/settingsSync.xml b/dot_config/JetBrains/Rider2025.3/options/settingsSync.xml new file mode 100644 index 0000000..6c9eb82 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/settingsSync.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/sshRecentConnections.v2.xml b/dot_config/JetBrains/Rider2025.3/options/sshRecentConnections.v2.xml new file mode 100644 index 0000000..0ab9433 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/sshRecentConnections.v2.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/sshRecentConnectionsHost.xml b/dot_config/JetBrains/Rider2025.3/options/sshRecentConnectionsHost.xml new file mode 100644 index 0000000..d921474 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/sshRecentConnectionsHost.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/ui.lnf.xml b/dot_config/JetBrains/Rider2025.3/options/ui.lnf.xml new file mode 100644 index 0000000..585ca57 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/ui.lnf.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/updates.xml b/dot_config/JetBrains/Rider2025.3/options/updates.xml new file mode 100644 index 0000000..2a338a3 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/updates.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/usage.statistics.xml b/dot_config/JetBrains/Rider2025.3/options/usage.statistics.xml new file mode 100644 index 0000000..72f2ae7 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/usage.statistics.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/options/window.state.xml b/dot_config/JetBrains/Rider2025.3/options/window.state.xml new file mode 100644 index 0000000..1b2c56a --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/options/window.state.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/plugin_PCWMP.license b/dot_config/JetBrains/Rider2025.3/plugin_PCWMP.license new file mode 100644 index 0000000000000000000000000000000000000000..49c54e9ebf2ff4c333f2047c02b3a4f24b4372e1 GIT binary patch literal 5546 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 literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/Rider2025.3/resharper-host/CultureOptions b/dot_config/JetBrains/Rider2025.3/resharper-host/CultureOptions new file mode 100644 index 0000000..ce0dc71 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/resharper-host/CultureOptions @@ -0,0 +1 @@ +{Culture:} \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/resharper-host/GlobalSettingsStorage.DotSettings b/dot_config/JetBrains/Rider2025.3/resharper-host/GlobalSettingsStorage.DotSettings new file mode 100644 index 0000000..7d101f3 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/resharper-host/GlobalSettingsStorage.DotSettings @@ -0,0 +1,6 @@ + + False + True + System.*||Microsoft.*||JetBrains.* + System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute||System.CodeDom.Compiler.GeneratedCodeAttribute||System.Runtime.CompilerServices.CompilerGeneratedAttribute + 1 \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/rider.key b/dot_config/JetBrains/Rider2025.3/rider.key new file mode 100644 index 0000000000000000000000000000000000000000..49c54e9ebf2ff4c333f2047c02b3a4f24b4372e1 GIT binary patch literal 5546 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 literal 0 HcmV?d00001 diff --git a/dot_config/JetBrains/Rider2025.3/rider64.vmoptions b/dot_config/JetBrains/Rider2025.3/rider64.vmoptions new file mode 100644 index 0000000..f4c8315 --- /dev/null +++ b/dot_config/JetBrains/Rider2025.3/rider64.vmoptions @@ -0,0 +1,4 @@ +-Xmx1925m +-Dide.managed.by.toolbox=/home/breadway/Downloads/jetbrains-toolbox-3.2.0.65851/bin/jetbrains-toolbox +-Dtoolbox.notification.token=c7847899-6090-4740-bae4-7325718db299 +-Dtoolbox.notification.portFile=/home/breadway/.cache/JetBrains/Toolbox/ports/30730423-fc05-4782-a1f4-256b72350d6e.port \ No newline at end of file diff --git a/dot_config/JetBrains/Rider2025.3/updatedBrokenPlugins.db b/dot_config/JetBrains/Rider2025.3/updatedBrokenPlugins.db new file mode 100644 index 0000000000000000000000000000000000000000..0fea987d54a42df4b3cda8d48cd8124d1cab8340 GIT binary patch literal 217824 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

K=7_{gb2ZlU-Nc*oHeh$AjK* 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 wnoy@n1R9R@(`YG@P%pAxZS#L;Yv 20] + +print(f"Days 1-10 (Early):") +print(f" Mean Happiness: {early_month['Happiness'].mean():.2f}") +print(f" Mean Habits Completed: {early_month['Habits_Count'].mean():.2f}") +print(f"\nDays 21-30 (Late):") +print(f" Mean Happiness: {late_month['Happiness'].mean():.2f}") +print(f" Mean Habits Completed: {late_month['Habits_Count'].mean():.2f}") +print(f"\nGrowth: {late_month['Happiness'].mean() - early_month['Happiness'].mean():.2f} points") + +print("\n--- Control Group: Early vs Late Month (Should be flat) ---") +control = df[df['Group'] == 'Control'] +early_month_c = control[control['Day'] <= 10] +late_month_c = control[control['Day'] > 20] + +print(f"Days 1-10 (Early):") +print(f" Mean Happiness: {early_month_c['Happiness'].mean():.2f}") +print(f"\nDays 21-30 (Late):") +print(f" Mean Happiness: {late_month_c['Happiness'].mean():.2f}") +print(f"\nChange: {late_month_c['Happiness'].mean() - early_month_c['Happiness'].mean():.2f} points (should be ~0)") + +print("\n--- Direct Correlation: Intervention Group by Habits Completed ---") +for habit_count in [0, 1, 2, 3]: + subset = intervention[intervention['Habits_Count'] == habit_count] + if len(subset) > 0: + print(f"{habit_count} habits completed: Happiness = {subset['Happiness'].mean():.2f} (n={len(subset)})") + +print("\n--- Trend Over 30 Days (Intervention Group) ---") +weekly_avg = intervention.groupby('Day')['Happiness'].mean() +print(f"Week 1 (Days 1-7): Average Happiness = {weekly_avg[1:8].mean():.2f}") +print(f"Week 2 (Days 8-14): Average Happiness = {weekly_avg[8:15].mean():.2f}") +print(f"Week 3 (Days 15-21): Average Happiness = {weekly_avg[15:22].mean():.2f}") +print(f"Week 4 (Days 22-30): Average Happiness = {weekly_avg[22:31].mean():.2f}") + +print("\n--- Trend Over 30 Days (Control Group) ---") +weekly_avg_c = control.groupby('Day')['Happiness'].mean() +print(f"Week 1 (Days 1-7): Average Happiness = {weekly_avg_c[1:8].mean():.2f}") +print(f"Week 2 (Days 8-14): Average Happiness = {weekly_avg_c[8:15].mean():.2f}") +print(f"Week 3 (Days 15-21): Average Happiness = {weekly_avg_c[15:22].mean():.2f}") +print(f"Week 4 (Days 22-30): Average Happiness = {weekly_avg_c[22:31].mean():.2f}") + +print("\n--- Participant Examples (Intervention Group) ---") +for pid in [1, 5, 10]: + p_data = intervention[intervention['Participant_ID'] == pid] + early = p_data[p_data['Day'] <= 10]['Happiness'].mean() + late = p_data[p_data['Day'] > 20]['Happiness'].mean() + early_habits = p_data[p_data['Day'] <= 10]['Habits_Count'].mean() + late_habits = p_data[p_data['Day'] > 20]['Habits_Count'].mean() + print(f"\nParticipant {pid}:") + print(f" Early (Days 1-10): Happiness {early:.1f}, Habits {early_habits:.1f}/day") + print(f" Late (Days 21-30): Happiness {late:.1f}, Habits {late_habits:.1f}/day") + print(f" Growth: {late - early:.1f} points") + +print("\n✓ Data shows:") +print(" • Intervention group has upward trend over study period") +print(" • Happy days strongly correlated with habit completion") +print(" • Control group stays stable with natural random variation") diff --git a/dot_config/private_Code/User/History/-2e6bd5d9/entries.json b/dot_config/private_Code/User/History/-2e6bd5d9/entries.json new file mode 100644 index 0000000..adeb0f8 --- /dev/null +++ b/dot_config/private_Code/User/History/-2e6bd5d9/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/verify_trend.py","entries":[{"id":"DwLj.py","source":"Chat Edit: 'can you ensure the data shows an upward trend in happiness as the study goes on, and in direct correlation with the habits completed by that participant? at the moment, the intervention group is happier after a single day.'","timestamp":1774347397523}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/-393f507a/entries.json b/dot_config/private_Code/User/History/-393f507a/entries.json new file mode 100644 index 0000000..bf027f0 --- /dev/null +++ b/dot_config/private_Code/User/History/-393f507a/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"vscode-userdata:/home/breadway/.config/Code/User/settings.json","entries":[{"id":"jeJQ.json","timestamp":1774363216206}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/-393f507a/jeJQ.json b/dot_config/private_Code/User/History/-393f507a/jeJQ.json new file mode 100644 index 0000000..2f58918 --- /dev/null +++ b/dot_config/private_Code/User/History/-393f507a/jeJQ.json @@ -0,0 +1,3 @@ +{ + "explorer.confirmDelete": false +} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/-3a2e7e8b/UHTA.yml b/dot_config/private_Code/User/History/-3a2e7e8b/UHTA.yml new file mode 100644 index 0000000..8aca589 --- /dev/null +++ b/dot_config/private_Code/User/History/-3a2e7e8b/UHTA.yml @@ -0,0 +1,198 @@ +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + group_add: + - "993" # render group for VAAPI hardware acceleration + + ports: + - "8096:8096" # HTTP web UI + - "8920:8920" # HTTPS + - "7359:7359/udp" # Network discovery + - "1900:1900/udp" # DLNA + + expose: + - "8096" + + environment: + - PUID=1000 + - PGID=1000 + - TZ=Australia/Perth + + volumes: + # Config on NVMe (fast) + - ./config:/config + - ./cache:/cache + + # Media libraries (read-only for safety) + - "/mnt/media/Movies:/media/movies:ro" + - "/mnt/media/TV Shows:/media/tv-shows:ro" + - "/mnt/media/Anime:/media/anime:ro" + - "/mnt/media/Kids TV:/media/kids-tv:ro" + - "/mnt/media/Kids Movies:/media/kids-movies:ro" + - "/tank/home-videos:/media/home-videos:ro" + - "/tank/videos:/media/home-videos:ro" + - "/tank/photos:/media/home-photos:ro" + + devices: + # Hardware transcoding (Vega graphics) + - /dev/dri:/dev/dri + + networks: + - jellyfin-net + + qbittorrent: + image: linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + WEBUI_PORT: 8090 + volumes: + - ~/.docker_volumes/qbittorrent/config:/config + - /mnt/media/downloads:/downloads + - /mnt/media/anime:/animeq + ports: + - "8090:8090" + - "6881:6881" + - "6881:6881/udp" + expose: + - "8090" + restart: unless-stopped + deploy: + resources: + limits: + memory: 1G + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + sonarr: + image: linuxserver/sonarr:latest + container_name: sonarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + DOCKER_MODS: "linuxserver/mods:universal-package-install" + INSTALL_PACKAGES: "ffmpeg" + volumes: + - ~/.docker_volumes/sonarr/config:/config + - /mnt/media/Anime:/tv + - ~/media/downloads:/downloads + ports: + - "8989:8989" + expose: + - "8989" + restart: unless-stopped + depends_on: + - qbittorrent + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + prowlarr: + image: linuxserver/prowlarr:latest + container_name: prowlarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/prowlarr/config:/config + ports: + - "9696:9696" + expose: + - "9696" + restart: unless-stopped + depends_on: + - qbittorrent + - sonarr + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9696/ping"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/jellyseerr/config:/app/config + ports: + - "5055:5055" + expose: + - "5055" + restart: unless-stopped + depends_on: + - jellyfin + - sonarr + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "443:443" + - "443:443/udp" # For HTTP/3 support + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ./caddy_data:/data + - ./caddy_config:/config + networks: + - jellyfin-net + + crowdsec: + image: crowdsecurity/crowdsec:latest + container_name: crowdsec + restart: unless-stopped + environment: + - COLLECTIONS=crowdsecurity/linux crowdsecurity/caddy crowdsecurity/base-httping + volumes: + - /var/log:/var/log:ro + - ./crowdsec_data:/var/lib/crowdsec/data + - ./crowdsec_config:/etc/crowdsec + networks: + - jellyfin-net + +networks: + jellyfin-net: + driver: bridge diff --git a/dot_config/private_Code/User/History/-3a2e7e8b/ebbC.yml b/dot_config/private_Code/User/History/-3a2e7e8b/ebbC.yml new file mode 100644 index 0000000..ca96f1b --- /dev/null +++ b/dot_config/private_Code/User/History/-3a2e7e8b/ebbC.yml @@ -0,0 +1,174 @@ +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + group_add: + - "993" # render group for VAAPI hardware acceleration + + ports: + - "8096:8096" # HTTP web UI + - "8920:8920" # HTTPS + - "7359:7359/udp" # Network discovery + - "1900:1900/udp" # DLNA + + expose: + - "8096" + + environment: + - PUID=1000 + - PGID=1000 + - TZ=Australia/Perth + + volumes: + # Config on NVMe (fast) + - ./config:/config + - ./cache:/cache + + # Media libraries (read-only for safety) + - "/mnt/media/Movies:/media/movies:ro" + - "/mnt/media/TV Shows:/media/tv-shows:ro" + - "/mnt/media/Anime:/media/anime:ro" + - "/mnt/media/Kids TV:/media/kids-tv:ro" + - "/mnt/media/Kids Movies:/media/kids-movies:ro" + - "/tank/home-videos:/media/home-videos:ro" + - "/tank/videos:/media/home-videos:ro" + - "/tank/photos:/media/home-photos:ro" + + devices: + # Hardware transcoding (Vega graphics) + - /dev/dri:/dev/dri + + networks: + - jellyfin-net + + qbittorrent: + image: linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + WEBUI_PORT: 8090 + volumes: + - ~/.docker_volumes/qbittorrent/config:/config + - /mnt/media/downloads:/downloads + - /mnt/media/anime:/animeq + ports: + - "8090:8090" + - "6881:6881" + - "6881:6881/udp" + expose: + - "8090" + restart: unless-stopped + deploy: + resources: + limits: + memory: 1G + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + sonarr: + image: linuxserver/sonarr:latest + container_name: sonarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + DOCKER_MODS: "linuxserver/mods:universal-package-install" + INSTALL_PACKAGES: "ffmpeg" + volumes: + - ~/.docker_volumes/sonarr/config:/config + - /mnt/media/Anime:/tv + - ~/media/downloads:/downloads + ports: + - "8989:8989" + expose: + - "8989" + restart: unless-stopped + depends_on: + - qbittorrent + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + prowlarr: + image: linuxserver/prowlarr:latest + container_name: prowlarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/prowlarr/config:/config + ports: + - "9696:9696" + expose: + - "9696" + restart: unless-stopped + depends_on: + - qbittorrent + - sonarr + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9696/ping"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/jellyseerr/config:/app/config + ports: + - "5055:5055" + expose: + - "5055" + restart: unless-stopped + depends_on: + - jellyfin + - sonarr + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + + +networks: + jellyfin-net: + driver: bridge diff --git a/dot_config/private_Code/User/History/-3a2e7e8b/entries.json b/dot_config/private_Code/User/History/-3a2e7e8b/entries.json new file mode 100644 index 0000000..fa9b09d --- /dev/null +++ b/dot_config/private_Code/User/History/-3a2e7e8b/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Downloads/docker-compose.yml","entries":[{"id":"ebbC.yml","source":"textFileCreate.source","timestamp":1775500296675},{"id":"UHTA.yml","timestamp":1775500565545},{"id":"xBDr.yml","timestamp":1775500662427},{"id":"i7DI.yml","timestamp":1775502657849}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/-3a2e7e8b/i7DI.yml b/dot_config/private_Code/User/History/-3a2e7e8b/i7DI.yml new file mode 100644 index 0000000..4e803ab --- /dev/null +++ b/dot_config/private_Code/User/History/-3a2e7e8b/i7DI.yml @@ -0,0 +1,208 @@ +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + group_add: + - "993" # render group for VAAPI hardware acceleration + + ports: + - "8096:8096" # HTTP web UI + - "8920:8920" # HTTPS + - "7359:7359/udp" # Network discovery + - "1900:1900/udp" # DLNA + + expose: + - "8096" + + environment: + - PUID=1000 + - PGID=1000 + - TZ=Australia/Perth + + volumes: + # Config on NVMe (fast) + - ./config:/config + - ./cache:/cache + + # Media libraries (read-only for safety) + - "/mnt/media/Movies:/media/movies:ro" + - "/mnt/media/TV Shows:/media/tv-shows:ro" + - "/mnt/media/Anime:/media/anime:ro" + - "/mnt/media/Kids TV:/media/kids-tv:ro" + - "/mnt/media/Kids Movies:/media/kids-movies:ro" + - "/tank/home-videos:/media/home-videos:ro" + - "/tank/videos:/media/home-videos:ro" + - "/tank/photos:/media/home-photos:ro" + + devices: + # Hardware transcoding (Vega graphics) + - /dev/dri:/dev/dri + + networks: + - jellyfin-net + + qbittorrent: + image: linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + WEBUI_PORT: 8090 + volumes: + - ~/.docker_volumes/qbittorrent/config:/config + - /mnt/media/downloads:/downloads + - /mnt/media/anime:/animeq + ports: + - "8090:8090" + - "6881:6881" + - "6881:6881/udp" + expose: + - "8090" + restart: unless-stopped + deploy: + resources: + limits: + memory: 1G + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + sonarr: + image: linuxserver/sonarr:latest + container_name: sonarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + DOCKER_MODS: "linuxserver/mods:universal-package-install" + INSTALL_PACKAGES: "ffmpeg" + volumes: + - ~/.docker_volumes/sonarr/config:/config + - /mnt/media/Anime:/tv + - ~/media/downloads:/downloads + ports: + - "8989:8989" + expose: + - "8989" + restart: unless-stopped + depends_on: + - qbittorrent + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + prowlarr: + image: linuxserver/prowlarr:latest + container_name: prowlarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/prowlarr/config:/config + ports: + - "9696:9696" + expose: + - "9696" + restart: unless-stopped + depends_on: + - qbittorrent + - sonarr + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9696/ping"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/jellyseerr/config:/app/config + ports: + - "5055:5055" + expose: + - "5055" + restart: unless-stopped + depends_on: + - jellyfin + - sonarr + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + caddy: + build: + context: . + dockerfile_inline: | + FROM caddy:builder AS builder + RUN xcaddy build --with github.com/caddy-dns/namedotcom + FROM caddy:latest + COPY --from=builder /usr/bin/caddy /usr/bin/caddy + container_name: caddy + restart: unless-stopped + environment: + - NAMEDOTCOM_USERNAME= + - NAMEDOTCOM_TOKEN=your_api_token + ports: + - "443:443" + - "443:443/udp" + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ./caddy_data:/data + - ./caddy_config:/config + networks: + - jellyfin-net + + crowdsec: + image: crowdsecurity/crowdsec:latest + container_name: crowdsec + restart: unless-stopped + environment: + - COLLECTIONS=crowdsecurity/linux crowdsecurity/caddy crowdsecurity/base-httping + volumes: + - /var/log:/var/log:ro + - ./crowdsec_data:/var/lib/crowdsec/data + - ./crowdsec_config:/etc/crowdsec + networks: + - jellyfin-net + +networks: + jellyfin-net: + driver: bridge diff --git a/dot_config/private_Code/User/History/-3a2e7e8b/xBDr.yml b/dot_config/private_Code/User/History/-3a2e7e8b/xBDr.yml new file mode 100644 index 0000000..cc30867 --- /dev/null +++ b/dot_config/private_Code/User/History/-3a2e7e8b/xBDr.yml @@ -0,0 +1,199 @@ +services: + jellyfin: + image: jellyfin/jellyfin:latest + container_name: jellyfin + restart: unless-stopped + group_add: + - "993" # render group for VAAPI hardware acceleration + + ports: + - "8096:8096" # HTTP web UI + - "8920:8920" # HTTPS + - "7359:7359/udp" # Network discovery + - "1900:1900/udp" # DLNA + + expose: + - "8096" + + environment: + - PUID=1000 + - PGID=1000 + - TZ=Australia/Perth + + volumes: + # Config on NVMe (fast) + - ./config:/config + - ./cache:/cache + + # Media libraries (read-only for safety) + - "/mnt/media/Movies:/media/movies:ro" + - "/mnt/media/TV Shows:/media/tv-shows:ro" + - "/mnt/media/Anime:/media/anime:ro" + - "/mnt/media/Kids TV:/media/kids-tv:ro" + - "/mnt/media/Kids Movies:/media/kids-movies:ro" + - "/tank/home-videos:/media/home-videos:ro" + - "/tank/videos:/media/home-videos:ro" + - "/tank/photos:/media/home-photos:ro" + + devices: + # Hardware transcoding (Vega graphics) + - /dev/dri:/dev/dri + + networks: + - jellyfin-net + + qbittorrent: + image: linuxserver/qbittorrent:latest + container_name: qbittorrent + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + WEBUI_PORT: 8090 + volumes: + - ~/.docker_volumes/qbittorrent/config:/config + - /mnt/media/downloads:/downloads + - /mnt/media/anime:/animeq + ports: + - "8090:8090" + - "6881:6881" + - "6881:6881/udp" + expose: + - "8090" + restart: unless-stopped + deploy: + resources: + limits: + memory: 1G + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + sonarr: + image: linuxserver/sonarr:latest + container_name: sonarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + DOCKER_MODS: "linuxserver/mods:universal-package-install" + INSTALL_PACKAGES: "ffmpeg" + volumes: + - ~/.docker_volumes/sonarr/config:/config + - /mnt/media/Anime:/tv + - ~/media/downloads:/downloads + ports: + - "8989:8989" + expose: + - "8989" + restart: unless-stopped + depends_on: + - qbittorrent + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + prowlarr: + image: linuxserver/prowlarr:latest + container_name: prowlarr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/prowlarr/config:/config + ports: + - "9696:9696" + expose: + - "9696" + restart: unless-stopped + depends_on: + - qbittorrent + - sonarr + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9696/ping"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + environment: + PUID: 1000 + PGID: 1000 + TZ: "${TZ}" + volumes: + - ~/.docker_volumes/jellyseerr/config:/app/config + ports: + - "5055:5055" + expose: + - "5055" + restart: unless-stopped + depends_on: + - jellyfin + - sonarr + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + deploy: + resources: + limits: + memory: 512M + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + caddy: + image: caddy:latest + container_name: caddy + restart: unless-stopped + ports: + - "443:443" + - "443:443/udp" # For HTTP/3 support + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - ./caddy_data:/data + - ./caddy_config:/config + networks: + - jellyfin-net + + crowdsec: + image: crowdsecurity/crowdsec:latest + container_name: crowdsec + restart: unless-stopped + environment: + - COLLECTIONS=crowdsecurity/linux crowdsecurity/caddy crowdsecurity/base-httping + volumes: + - /var/log:/var/log:ro + - ./crowdsec_data:/var/lib/crowdsec/data + - ./crowdsec_config:/etc/crowdsec + networks: + - jellyfin-net + +networks: + jellyfin-net: + driver: bridge diff --git a/dot_config/private_Code/User/History/-6123ca19/Xb2Q.py b/dot_config/private_Code/User/History/-6123ca19/Xb2Q.py new file mode 100644 index 0000000..a6ec872 --- /dev/null +++ b/dot_config/private_Code/User/History/-6123ca19/Xb2Q.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +"""Quick test to verify Data Analysis.py works correctly.""" +import subprocess +import sys + +result = subprocess.run([sys.executable, 'Data Analysis.py'], capture_output=True, text=True, timeout=30) +print("STDOUT:") +print(result.stdout[-2000:] if len(result.stdout) > 2000 else result.stdout) +print("\nSTDERR:") +print(result.stderr[-1000:] if len(result.stderr) > 1000 else result.stderr) +print(f"\nExit code: {result.returncode}") + +# Check for plot files +import os +plot_files = sorted([f for f in os.listdir('plots') if f.endswith('.png')]) +print(f"\nGenerated {len(plot_files)} plot files:") +for f in plot_files: + print(f" - {f}") diff --git a/dot_config/private_Code/User/History/-6123ca19/entries.json b/dot_config/private_Code/User/History/-6123ca19/entries.json new file mode 100644 index 0000000..f9496ce --- /dev/null +++ b/dot_config/private_Code/User/History/-6123ca19/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/test_analysis.py","entries":[{"id":"Xb2Q.py","source":"Chat Edit: 'ensure the graphs being used are appropriate for the study'","timestamp":1774346851499}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/-7d2a273a/bWGM.py b/dot_config/private_Code/User/History/-7d2a273a/bWGM.py new file mode 100644 index 0000000..e25c8e3 --- /dev/null +++ b/dot_config/private_Code/User/History/-7d2a273a/bWGM.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +import pandas as pd +import numpy as np + +# Load the data +df = pd.read_csv('organization_happiness_study_data.csv') + +print("=" * 70) +print("DATA GENERATION IMPROVEMENTS VERIFICATION") +print("=" * 70) +print(f"\n✓ Dataset shape: {df.shape}") +print(f"✓ Total rows: {len(df)} (20 participants × 30 days × 2 groups = 1200 expected)") + +print("\n--- Intervention Group Statistics ---") +intervention = df[df['Group'] == 'Intervention'] +print(f"Participants: {intervention['Participant_ID'].nunique()}") +print(f"Mean Happiness: {intervention['Happiness'].mean():.2f}") +print(f"Happiness Std Dev: {intervention['Happiness'].std():.2f}") +print(f"Calendar Adherence Rate: {(intervention['Calendar_Adherence'] == 'Yes').mean():.1%}") +print(f"Cleanliness Adherence Rate: {(intervention['Cleanliness_Adherence'] == 'Yes').mean():.1%}") +print(f"Punctuality Adherence Rate: {(intervention['Punctuality_Adherence'] == 'Yes').mean():.1%}") + +print("\n--- Control Group Statistics ---") +control = df[df['Group'] == 'Control'] +print(f"Participants: {control['Participant_ID'].nunique()}") +print(f"Mean Happiness: {control['Happiness'].mean():.2f}") +print(f"Happiness Std Dev: {control['Happiness'].std():.2f}") +print(f"Reported Calendar: {(control['Calendar_Adherence'] == 'Yes').mean():.1%} (should be ~0%)") +print(f"Reported Cleanliness: {(control['Cleanliness_Adherence'] == 'Yes').mean():.1%} (should be ~0%)") +print(f"Reported Punctuality: {(control['Punctuality_Adherence'] == 'Yes').mean():.1%} (should be ~0%)") + +print("\n--- Natural Data Patterns ---") +# Check for habit momentum (persistence) +intervention['Habits_Count'] = ( + (intervention['Calendar_Adherence'] == 'Yes').astype(int) + + (intervention['Cleanliness_Adherence'] == 'Yes').astype(int) + + (intervention['Punctuality_Adherence'] == 'Yes').astype(int) +) + +print(f"Habit completion rates by number completed:") +for count in [0, 1, 2, 3]: + subset = intervention[intervention['Habits_Count'] == count] + happiness = subset['Happiness'].mean() + print(f" {count} habits: Happiness = {happiness:.2f} (n={len(subset)})") + +# Weekend effect +intervention['DayOfWeek'] = intervention['Day'] % 7 +weekend = intervention[intervention['DayOfWeek'].isin([0, 6])] +weekday = intervention[~intervention['DayOfWeek'].isin([0, 6])] +print(f"\nWeekend vs Weekday Adherence:") +print(f" Weekday avg habits: {((weekday['Calendar_Adherence']=='Yes').astype(int) + (weekday['Cleanliness_Adherence']=='Yes').astype(int) + (weekday['Punctuality_Adherence']=='Yes').astype(int)).mean():.2f}") +print(f" Weekend avg habits: {((weekend['Calendar_Adherence']=='Yes').astype(int) + (weekend['Cleanliness_Adherence']=='Yes').astype(int) + (weekend['Punctuality_Adherence']=='Yes').astype(int)).mean():.2f}") + +# Habit formation over time +first_week = intervention[intervention['Day'] <= 7] +mid_month = intervention[(intervention['Day'] > 14) & (intervention['Day'] <= 21)] +last_week = intervention[intervention['Day'] > 23] +print(f"\nHabit Formation Over Time:") +print(f" Days 1-7 (Starting): Avg habits = {((first_week['Calendar_Adherence']=='Yes').astype(int) + (first_week['Cleanliness_Adherence']=='Yes').astype(int) + (first_week['Punctuality_Adherence']=='Yes').astype(int)).mean():.2f}") +print(f" Days 15-21 (Momentum): Avg habits = {((mid_month['Calendar_Adherence']=='Yes').astype(int) + (mid_month['Cleanliness_Adherence']=='Yes').astype(int) + (mid_month['Punctuality_Adherence']=='Yes').astype(int)).mean():.2f}") +print(f" Days 24-30 (Late): Avg habits = {((last_week['Calendar_Adherence']=='Yes').astype(int) + (last_week['Cleanliness_Adherence']=='Yes').astype(int) + (last_week['Punctuality_Adherence']=='Yes').astype(int)).mean():.2f}") + +print(f"\nHappiness Persistence (day-to-day correlation):") +intervention_sorted = intervention.sort_values(['Participant_ID', 'Day']) +intervention_sorted['Happiness_prev'] = intervention_sorted.groupby('Participant_ID')['Happiness'].shift(1) +valid = intervention_sorted[intervention_sorted['Happiness_prev'].notna()] +corr = valid[['Happiness', 'Happiness_prev']].corr().iloc[0, 1] +print(f" Correlation between today and yesterday's happiness: {corr:.3f}") + +print("\n✓ Data generation complete with natural patterns!") +print("\nKey improvements:") +print(" • Habit momentum: doing it yesterday makes it more likely today") +print(" • Weekly patterns: lower adherence weekends vs weekdays") +print(" • Habit formation: initial difficulty, momentum building, slight fatigue") +print(" • Individual variation: each person has unique habit profiles") +print(" • Happiness persistence: today's mood influenced by yesterday's") +print(" • Control group realism: still report 'No' but data shows natural variation") diff --git a/dot_config/private_Code/User/History/-7d2a273a/entries.json b/dot_config/private_Code/User/History/-7d2a273a/entries.json new file mode 100644 index 0000000..df77d6f --- /dev/null +++ b/dot_config/private_Code/User/History/-7d2a273a/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/test_improvements.py","entries":[{"id":"bWGM.py","source":"Chat Edit: 'improve data gen to create more natural data'","timestamp":1774347099618}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6b1c27e9/entries.json b/dot_config/private_Code/User/History/6b1c27e9/entries.json new file mode 100644 index 0000000..bbc4d03 --- /dev/null +++ b/dot_config/private_Code/User/History/6b1c27e9/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/run_and_verify.py","entries":[{"id":"qMUb.py","source":"Chat Edit: 'can you ensure the data shows an upward trend in happiness as the study goes on, and in direct correlation with the habits completed by that participant? at the moment, the intervention group is happier after a single day.'","timestamp":1774347459417}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6b1c27e9/qMUb.py b/dot_config/private_Code/User/History/6b1c27e9/qMUb.py new file mode 100644 index 0000000..1c44871 --- /dev/null +++ b/dot_config/private_Code/User/History/6b1c27e9/qMUb.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +"""Generate new data and display sample showing upward trend""" +import subprocess +import pandas as pd + +# Run data generator +result = subprocess.run(['python3', 'Data Gen.py'], capture_output=True, text=True) +print(result.stdout) +if result.stderr: + print("Errors:", result.stderr) + +# Load and display trend analysis +df = pd.read_csv('organization_happiness_study_data.csv') +df['Habits_Count'] = ( + (df['Calendar_Adherence'] == 'Yes').astype(int) + + (df['Cleanliness_Adherence'] == 'Yes').astype(int) + + (df['Punctuality_Adherence'] == 'Yes').astype(int) +) + +intervention = df[df['Group'] == 'Intervention'] +control = df[df['Group'] == 'Control'] + +print("\n" + "="*70) +print("UPWARD TREND ANALYSIS") +print("="*70) + +print("\n[INTERVENTION GROUP] - Should show upward trend") +early_int = intervention[intervention['Day'] <= 7] +late_int = intervention[intervention['Day'] >= 24] +print(f"Days 1-7: Avg Happiness = {early_int['Happiness'].mean():.2f}") +print(f"Days 24-30: Avg Happiness = {late_int['Happiness'].mean():.2f}") +print(f"GROWTH: +{late_int['Happiness'].mean() - early_int['Happiness'].mean():.2f} points\n") + +print("[CONTROL GROUP] - Should show flat/random pattern") +early_ctl = control[control['Day'] <= 7] +late_ctl = control[control['Day'] >= 24] +print(f"Days 1-7: Avg Happiness = {early_ctl['Happiness'].mean():.2f}") +print(f"Days 24-30: Avg Happiness = {late_ctl['Happiness'].mean():.2f}") +print(f"CHANGE: {late_ctl['Happiness'].mean() - early_ctl['Happiness'].mean():+.2f} points\n") + +print("[HABIT CORRELATION] - More habits = Higher happiness") +for habits in range(4): + subset = intervention[intervention['Habits_Count'] == habits] + if len(subset) > 0: + print(f"{habits} habits/day: Avg Happiness = {subset['Happiness'].mean():.2f} ({len(subset)} observations)") diff --git a/dot_config/private_Code/User/History/6c11eec7/3jGE.py b/dot_config/private_Code/User/History/6c11eec7/3jGE.py new file mode 100644 index 0000000..b23d2e3 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/3jGE.py @@ -0,0 +1,196 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.8, 1.1) # Lower starting point for growth + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 4) + habit_strength = np.clip(habit_strength, 0, 4) + + # Happiness is baseline + growth from habit_strength over time + # As study progresses and habit_strength builds, happiness increases more + study_progress = day / 30.0 # 0.033 to 1.0 over 30 days + + # Daily random noise (small) + daily_noise = np.random.normal(0, 0.7) + + # Happiness formula: baseline + cumulative effect that strengthens over time + happiness_value = ( + person_happiness_baseline + # Starting point + habit_strength * (0.5 + study_progress) + # Habit benefits grow over time + daily_noise # Day-to-day variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(4.8, 1.3) # Same baseline as intervention (no advantage) + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.2) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/46oA.py b/dot_config/private_Code/User/History/6c11eec7/46oA.py new file mode 100644 index 0000000..f642c42 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/46oA.py @@ -0,0 +1,200 @@ +import pandas as pd +import numpy as np + + +np.random.seed(3) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness combines DAILY habits effect + cumulative habit strength + study_progress = day / 30.0 # 0.033 to 1.0 + daily_noise = np.random.normal(0, 0.35) + + # Immediate bonus for today's habits (strong, clear dose-response) + daily_habit_bonus = adherence_count * 0.6 # 0-1.8 based on today's habits + + # Cumulative bonus grows as study progresses + cumulative_bonus = habit_strength * (0.4 + study_progress * 0.2) # max ~2.7 + + # Happiness formula: baseline + daily effect + cumulative effect + noise + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + daily_habit_bonus + # Today's habits (0-1.8) + cumulative_bonus + # Study progress bonus (0-2.7) + daily_noise # Variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.1, 0.9) # Center control around ~5 + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.0) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/54EK.py b/dot_config/private_Code/User/History/6c11eec7/54EK.py new file mode 100644 index 0000000..95cc2bb --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/54EK.py @@ -0,0 +1,93 @@ +df = pd.DataFrame(data, columns=['Participant_ID', 'Day', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence', 'Happiness']) +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.7, 0.15) # each person has their own organization tendency + + for day in DAYS: + calendar = np.random.choice(['Yes', 'No'], p=[clip_yes_prob(org_bias + 0.1, 0.95), 1 - clip_yes_prob(org_bias + 0.1, 0.95)]) + clean = np.random.choice(['Yes', 'No'], p=[clip_yes_prob(org_bias, 0.90), 1 - clip_yes_prob(org_bias, 0.90)]) + ontime = np.random.choice(['Yes', 'No'], p=[clip_yes_prob(org_bias + 0.05, 0.92), 1 - clip_yes_prob(org_bias + 0.05, 0.92)]) + + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + baseline_happiness = np.random.normal(5.5, 1.0) + happiness = int(np.clip(np.random.normal(baseline_happiness + adherence_count * 1.1, 1.2), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + for day in DAYS: + # Control group only records happiness; all habit columns are No. + calendar = 'No' + clean = 'No' + ontime = 'No' + + baseline_happiness = np.random.normal(5.5, 1.0) + control_noise = np.random.normal(0.0, 1.1) + happiness = int(np.clip(baseline_happiness + control_noise, 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + calendar, + clean, + ontime, + happiness, + ]) + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/9dqp.py b/dot_config/private_Code/User/History/6c11eec7/9dqp.py new file mode 100644 index 0000000..19b0633 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/9dqp.py @@ -0,0 +1,180 @@ +import pandas as pd +import numpy as np + + +np.random.seed(64) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness for this participant + person_happiness_baseline = np.random.normal(5.5, 1.2) + current_happiness = person_happiness_baseline + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Habit stacking: completing one habit makes the next easier + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + habit_boost = adherence_count * 1.2 if adherence_count > 0 else 0 + + # Happiness has persistence but is also affected by habits + happiness_noise = np.random.normal(0, 1.3) + current_happiness = np.clip( + current_happiness * 0.4 + # Previous day influences today + person_happiness_baseline * 0.4 + + habit_boost * 0.9 + # Habits have strong effect + happiness_noise, + 1, 10 + ) + happiness = int(np.round(current_happiness)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.0, 1.3) # Slightly lower baseline for control + current_happiness = person_happiness_baseline + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but it still affects their happiness sublimely + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.5 # Smaller effect since unaware/untracked + + # Control group happiness is less affected by daily habits and more random + happiness_noise = np.random.normal(0, 1.6) # Higher variability since no tracking + current_happiness = np.clip( + current_happiness * 0.5 + + person_happiness_baseline * 0.5 + + subtle_boost + + happiness_noise, + 1, 10 + ) + happiness = int(np.round(current_happiness)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/EkUx.py b/dot_config/private_Code/User/History/6c11eec7/EkUx.py new file mode 100644 index 0000000..0d6a8dd --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/EkUx.py @@ -0,0 +1,200 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness combines DAILY habits effect + cumulative habit strength + study_progress = day / 30.0 # 0.033 to 1.0 + daily_noise = np.random.normal(0, 0.35) + + # Immediate bonus for today's habits (strong, clear dose-response) + daily_habit_bonus = adherence_count * 0.6 # 0-1.8 based on today's habits + + # Cumulative bonus grows as study progresses + cumulative_bonus = habit_strength * (0.4 + study_progress * 0.2) # max ~2.7 + + # Happiness formula: baseline + daily effect + cumulative effect + noise + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + daily_habit_bonus + # Today's habits (0-1.8) + cumulative_bonus + # Study progress bonus (0-2.7) + daily_noise # Variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(4.9, 0.9) # Center control around ~5 + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.0) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/MJ5p.py b/dot_config/private_Code/User/History/6c11eec7/MJ5p.py new file mode 100644 index 0000000..b546cb4 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/MJ5p.py @@ -0,0 +1,200 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness combines DAILY habits effect + cumulative habit strength + study_progress = day / 30.0 # 0.033 to 1.0 + daily_noise = np.random.normal(0, 0.35) + + # Immediate bonus for today's habits (strong, clear dose-response) + daily_habit_bonus = adherence_count * 0.6 # 0-1.8 based on today's habits + + # Cumulative bonus grows as study progresses + cumulative_bonus = habit_strength * (0.4 + study_progress * 0.2) # max ~2.7 + + # Happiness formula: baseline + daily effect + cumulative effect + noise + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + daily_habit_bonus + # Today's habits (0-1.8) + cumulative_bonus + # Study progress bonus (0-2.7) + daily_noise # Variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(4.0, 1.0) # Same baseline as intervention (no advantage) + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.2) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/PpFf.py b/dot_config/private_Code/User/History/6c11eec7/PpFf.py new file mode 100644 index 0000000..b3ee492 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/PpFf.py @@ -0,0 +1,92 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.7, 0.15) # each person has their own organization tendency + + for day in DAYS: + calendar = np.random.choice(['Yes', 'No'], p=[clip_yes_prob(org_bias + 0.1, 0.95), 1 - clip_yes_prob(org_bias + 0.1, 0.95)]) + clean = np.random.choice(['Yes', 'No'], p=[clip_yes_prob(org_bias, 0.90), 1 - clip_yes_prob(org_bias, 0.90)]) + ontime = np.random.choice(['Yes', 'No'], p=[clip_yes_prob(org_bias + 0.05, 0.92), 1 - clip_yes_prob(org_bias + 0.05, 0.92)]) + + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + baseline_happiness = np.random.normal(5.5, 1.0) + happiness = int(np.clip(np.random.normal(baseline_happiness + adherence_count * 1.1, 1.2), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + for day in DAYS: + # Control group only records happiness; all habit columns are No. + calendar = 'No' + clean = 'No' + ontime = 'No' + + baseline_happiness = np.random.normal(5.5, 1.0) + control_noise = np.random.normal(0.0, 1.1) + happiness = int(np.clip(baseline_happiness + control_noise, 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + calendar, + clean, + ontime, + happiness, + ]) + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/QTk6.py b/dot_config/private_Code/User/History/6c11eec7/QTk6.py new file mode 100644 index 0000000..cd0ef02 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/QTk6.py @@ -0,0 +1,200 @@ +import pandas as pd +import numpy as np + + +np.random.seed(43) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness combines DAILY habits effect + cumulative habit strength + study_progress = day / 30.0 # 0.033 to 1.0 + daily_noise = np.random.normal(0, 0.35) + + # Immediate bonus for today's habits (strong, clear dose-response) + daily_habit_bonus = adherence_count * 0.6 # 0-1.8 based on today's habits + + # Cumulative bonus grows as study progresses + cumulative_bonus = habit_strength * (0.4 + study_progress * 0.2) # max ~2.7 + + # Happiness formula: baseline + daily effect + cumulative effect + noise + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + daily_habit_bonus + # Today's habits (0-1.8) + cumulative_bonus + # Study progress bonus (0-2.7) + daily_noise # Variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.1, 0.9) # Center control around ~5 + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.0) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/WSl3.py b/dot_config/private_Code/User/History/6c11eec7/WSl3.py new file mode 100644 index 0000000..78cf0cc --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/WSl3.py @@ -0,0 +1,180 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness for this participant + person_happiness_baseline = np.random.normal(5.5, 1.2) + current_happiness = person_happiness_baseline + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Habit stacking: completing one habit makes the next easier + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + habit_boost = adherence_count * 1.2 if adherence_count > 0 else 0 + + # Happiness has persistence but is also affected by habits + happiness_noise = np.random.normal(0, 1.3) + current_happiness = np.clip( + current_happiness * 0.4 + # Previous day influences today + person_happiness_baseline * 0.4 + + habit_boost * 0.9 + # Habits have strong effect + happiness_noise, + 1, 10 + ) + happiness = int(np.round(current_happiness)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.0, 1.3) # Slightly lower baseline for control + current_happiness = person_happiness_baseline + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but it still affects their happiness sublimely + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.5 # Smaller effect since unaware/untracked + + # Control group happiness is less affected by daily habits and more random + happiness_noise = np.random.normal(0, 1.6) # Higher variability since no tracking + current_happiness = np.clip( + current_happiness * 0.5 + + person_happiness_baseline * 0.5 + + subtle_boost + + happiness_noise, + 1, 10 + ) + happiness = int(np.round(current_happiness)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/bLJN.py b/dot_config/private_Code/User/History/6c11eec7/bLJN.py new file mode 100644 index 0000000..c6af3cd --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/bLJN.py @@ -0,0 +1,197 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness is baseline + growth from habit_strength over time + # As study progresses and habit_strength builds, happiness increases more + study_progress = day / 30.0 # 0.033 to 1.0 over 30 days + + # Daily random noise (small) + daily_noise = np.random.normal(0, 0.4) + + # Happiness formula: baseline + cumulative effect that strengthens over time + # Stronger multiplier to make dose-response clear (each habit matters 1-1.5 points) + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + habit_strength * (0.9 + study_progress * 0.3) + # Habit benefits clear, final max ~2.1 + daily_noise # Day-to-day variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(4.0, 1.0) # Same baseline as intervention (no advantage) + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.2) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/blt8.py b/dot_config/private_Code/User/History/6c11eec7/blt8.py new file mode 100644 index 0000000..740ae14 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/blt8.py @@ -0,0 +1,197 @@ +import pandas as pd +import numpy as np + + +np.random.seed(64) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.8, 1.1) # Lower starting point for growth + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 4) + habit_strength = np.clip(habit_strength, 0, 4) + + # Happiness is baseline + growth from habit_strength over time + # As study progresses and habit_strength builds, happiness increases more + study_progress = day / 30.0 # 0.033 to 1.0 over 30 days + + # Daily random noise (small) + daily_noise = np.random.normal(0, 0.7) + + # Happiness formula: baseline + cumulative effect that strengthens over time + happiness_value = ( + person_happiness_baseline + # Starting point + habit_strength * (0.5 + study_progress) + # Habit benefits grow over time + daily_noise # Day-to-day variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.0, 1.3) # Slightly lower baseline for control + current_happiness = person_happiness_baseline + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but it still affects their happiness sublimely + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.5 # Smaller effect since unaware/untracked + + # Control group happiness is less affected by daily habits and more random + happiness_noise = np.random.normal(0, 1.6) # Higher variability since no tracking + current_happiness = np.clip( + current_happiness * 0.5 + + person_happiness_baseline * 0.5 + + subtle_boost + + happiness_noise, + 1, 10 + ) + happiness = int(np.round(current_happiness)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/cTNf.py b/dot_config/private_Code/User/History/6c11eec7/cTNf.py new file mode 100644 index 0000000..60dd581 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/cTNf.py @@ -0,0 +1,144 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness for this participant + person_happiness_baseline = np.random.normal(5.5, 1.2) + current_happiness = person_happiness_baseline + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Habit stacking: completing one habit makes the next easier + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + habit_boost = adherence_count * 1.2 if adherence_count > 0 else 0 + + # Happiness has persistence but is also affected by habits + happiness_noise = np.random.normal(0, 1.3) + current_happiness = np.clip( + current_happiness * 0.4 + # Previous day influences today + person_happiness_baseline * 0.4 + + habit_boost * 0.9 + # Habits have strong effect + happiness_noise, + 1, 10 + ) + happiness = int(np.round(current_happiness)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + for day in DAYS: + # Control group only records happiness; all habit columns are No. + calendar = 'No' + clean = 'No' + ontime = 'No' + + baseline_happiness = np.random.normal(5.5, 1.0) + control_noise = np.random.normal(0.0, 1.1) + happiness = int(np.clip(baseline_happiness + control_noise, 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + calendar, + clean, + ontime, + happiness, + ]) + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/entries.json b/dot_config/private_Code/User/History/6c11eec7/entries.json new file mode 100644 index 0000000..216b8f8 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/Data%20Gen.py","entries":[{"id":"54EK.py","source":"Chat Edit: 'improve data gen.py to add a second dataset as a control. for context, the study tracks the affects of being organised on how happy participants feel. there needs to be a control group that is only recording their happiness daily. the main group will try to record their happiness, will add all events to their calendar, be on time to every event, and clean their bedroom everyday. they report if they do any of these in the study data as a yes or no. the control group will not do any of these.'","timestamp":1774345349390},{"id":"PpFf.py","source":"Chat Edit: 'improve data gen.py to add a second dataset as a control. for context, the study tracks the affects of being organised on how happy participants feel. there needs to be a control group that is only recording their happiness daily. the main group will try to record their happiness, will add all events to their calendar, be on time to every event, and clean their bedroom everyday. they report if they do any of these in the study data as a yes or no. the control group will not do any of these.'","timestamp":1774345378739},{"id":"cTNf.py","source":"Chat Edit: 'improve data gen to create more natural data'","timestamp":1774347044805},{"id":"WSl3.py","source":"Chat Edit: 'improve data gen to create more natural data'","timestamp":1774347057825},{"id":"9dqp.py","timestamp":1774347206509},{"id":"blt8.py","source":"Chat Edit: 'can you ensure the data shows an upward trend in happiness as the study goes on, and in direct correlation with the habits completed by that participant? at the moment, the intervention group is happier after a single day.'","timestamp":1774347345483},{"id":"3jGE.py","source":"Chat Edit: 'can you ensure the data shows an upward trend in happiness as the study goes on, and in direct correlation with the habits completed by that participant? at the moment, the intervention group is happier after a single day.'","timestamp":1774347365731},{"id":"sBVR.py","source":"Chat Edit: 'can you ensure the data shows an upward trend in happiness as the study goes on, and in direct correlation with the habits completed by that participant? at the moment, the intervention group is happier after a single day.'","timestamp":1774347432858},{"id":"j9Wc.py","source":"Chat Edit: 'the happiness results after 30 days seem a little too high, and this dose-response graph shows low happiness with all 3 completed. unusual. you could also increase participants to 40 control 40 intervention'","timestamp":1774347711480},{"id":"bLJN.py","source":"Chat Edit: 'the happiness results after 30 days seem a little too high, and this dose-response graph shows low happiness with all 3 completed. unusual. you could also increase participants to 40 control 40 intervention'","timestamp":1774347763541},{"id":"MJ5p.py","source":"Chat Edit: 'the happiness results after 30 days seem a little too high, and this dose-response graph shows low happiness with all 3 completed. unusual. you could also increase participants to 40 control 40 intervention'","timestamp":1774347783690},{"id":"EkUx.py","source":"Chat Edit: 'control mean is too low. realistically the control group should be around an average of 5.'","timestamp":1774347933805},{"id":"u91r.py","source":"Chat Edit: 'control mean is too low. realistically the control group should be around an average of 5.'","timestamp":1774347955983},{"id":"QTk6.py","timestamp":1774348022105},{"id":"o2Y7.py","timestamp":1774348397371},{"id":"46oA.py","timestamp":1774352345991}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/j9Wc.py b/dot_config/private_Code/User/History/6c11eec7/j9Wc.py new file mode 100644 index 0000000..78bfbd1 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/j9Wc.py @@ -0,0 +1,197 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 3) + habit_strength = np.clip(habit_strength, 0, 3) + + # Happiness is baseline + growth from habit_strength over time + # As study progresses and habit_strength builds, happiness increases more + study_progress = day / 30.0 # 0.033 to 1.0 over 30 days + + # Daily random noise (small) + daily_noise = np.random.normal(0, 0.5) + + # Happiness formula: baseline + cumulative effect that strengthens over time + # More conservative multiplier to keep final happiness reasonable (6-8 range) + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + habit_strength * (0.4 + study_progress * 0.5) + # Habit benefits grow over time, max ~2.7 + daily_noise # Day-to-day variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(4.0, 1.0) # Same baseline as intervention (no advantage) + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.2) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/o2Y7.py b/dot_config/private_Code/User/History/6c11eec7/o2Y7.py new file mode 100644 index 0000000..f5a5628 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/o2Y7.py @@ -0,0 +1,200 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness combines DAILY habits effect + cumulative habit strength + study_progress = day / 30.0 # 0.033 to 1.0 + daily_noise = np.random.normal(0, 0.35) + + # Immediate bonus for today's habits (strong, clear dose-response) + daily_habit_bonus = adherence_count * 0.6 # 0-1.8 based on today's habits + + # Cumulative bonus grows as study progresses + cumulative_bonus = habit_strength * (0.4 + study_progress * 0.2) # max ~2.7 + + # Happiness formula: baseline + daily effect + cumulative effect + noise + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + daily_habit_bonus + # Today's habits (0-1.8) + cumulative_bonus + # Study progress bonus (0-2.7) + daily_noise # Variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.1, 0.9) # Center control around ~5 + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.0) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/sBVR.py b/dot_config/private_Code/User/History/6c11eec7/sBVR.py new file mode 100644 index 0000000..cf09d1b --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/sBVR.py @@ -0,0 +1,196 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 20 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.8, 1.1) # Lower starting point for growth + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 4) + habit_strength = np.clip(habit_strength, 0, 4) + + # Happiness is baseline + growth from habit_strength over time + # As study progresses and habit_strength builds, happiness increases more + study_progress = day / 30.0 # 0.033 to 1.0 over 30 days + + # Daily random noise (small) + daily_noise = np.random.normal(0, 0.5) + + # Happiness formula: baseline + cumulative effect that strengthens over time + happiness_value = ( + person_happiness_baseline + # Starting point + habit_strength * (0.5 + study_progress) + # Habit benefits grow over time + daily_noise # Day-to-day variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(4.8, 1.3) # Same baseline as intervention (no advantage) + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.2) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/6c11eec7/u91r.py b/dot_config/private_Code/User/History/6c11eec7/u91r.py new file mode 100644 index 0000000..f5a5628 --- /dev/null +++ b/dot_config/private_Code/User/History/6c11eec7/u91r.py @@ -0,0 +1,200 @@ +import pandas as pd +import numpy as np + + +np.random.seed(42) # ensures you get exactly the same data every time + + +N_PARTICIPANTS_PER_GROUP = 40 +DAYS = list(range(1, 31)) + + +def clip_yes_prob(prob, ceiling): + return min(ceiling, max(0.05, prob)) + + +def generate_intervention_group(start_participant_id=1): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + org_bias = np.random.normal(0.65, 0.18) # each person has their own organization tendency (persistent) + org_bias = np.clip(org_bias, 0.1, 0.95) + + # Personal baselines for each habit (people are naturally better/worse at specific habits) + calendar_ease = org_bias + np.random.normal(0.05, 0.08) + clean_ease = org_bias + np.random.normal(-0.02, 0.08) + ontime_ease = org_bias + np.random.normal(0.02, 0.08) + + # Baseline happiness and habit strength for this participant + person_happiness_baseline = np.random.normal(4.0, 1.0) # Starting point (4-5 range) + habit_strength = 0.0 # Cumulative measure of consistent habit completion + + # Track previous day's habits for momentum/habit stacking + prev_calendar, prev_clean, prev_ontime = 'No', 'No', 'No' + + for day in DAYS: + # Week effect: Sunday (day % 7 == 0) and Saturday (day % 7 == 6) have lower adherence + week_difficulty = 1.0 if (day % 7) not in [0, 6] else 0.75 # weekends are harder + + # Habit formation/fatigue: early days harder, then easier, slight decline late + if day < 7: + time_factor = 0.85 # Getting started is harder + elif day < 20: + time_factor = 1.1 # Momentum builds + else: + time_factor = 0.98 # Slight fatigue + + # Momentum effect: If you did a habit yesterday, you're more likely to do it today + calendar_prob = clip_yes_prob( + calendar_ease * week_difficulty * time_factor + + (0.15 if prev_calendar == 'Yes' else 0), 0.95 + ) + clean_prob = clip_yes_prob( + clean_ease * week_difficulty * time_factor + + (0.15 if prev_clean == 'Yes' else 0), 0.90 + ) + ontime_prob = clip_yes_prob( + ontime_ease * week_difficulty * time_factor + + (0.12 if prev_ontime == 'Yes' else 0), 0.93 + ) + + calendar = np.random.choice(['Yes', 'No'], p=[calendar_prob, 1 - calendar_prob]) + clean = np.random.choice(['Yes', 'No'], p=[clean_prob, 1 - clean_prob]) + ontime = np.random.choice(['Yes', 'No'], p=[ontime_prob, 1 - ontime_prob]) + + # Count habits completed today + adherence_count = sum(x == 'Yes' for x in [calendar, clean, ontime]) + + # Habit strength: accumulates with consistent completion, decays with non-completion + # This creates a cumulative effect that drives upward trend + if adherence_count == 3: + habit_strength += 0.6 # Strong boost for completing all habits + elif adherence_count == 2: + habit_strength += 0.35 # Moderate boost + elif adherence_count == 1: + habit_strength += 0.15 # Small boost + else: + habit_strength -= 0.2 # Small decay for missing all habits + + # Clip habit_strength to reasonable range (0 to 5) + habit_strength = np.clip(habit_strength, 0, 5) + + # Happiness combines DAILY habits effect + cumulative habit strength + study_progress = day / 30.0 # 0.033 to 1.0 + daily_noise = np.random.normal(0, 0.35) + + # Immediate bonus for today's habits (strong, clear dose-response) + daily_habit_bonus = adherence_count * 0.6 # 0-1.8 based on today's habits + + # Cumulative bonus grows as study progresses + cumulative_bonus = habit_strength * (0.4 + study_progress * 0.2) # max ~2.7 + + # Happiness formula: baseline + daily effect + cumulative effect + noise + happiness_value = ( + person_happiness_baseline + # Starting point (4.0) + daily_habit_bonus + # Today's habits (0-1.8) + cumulative_bonus + # Study progress bonus (0-2.7) + daily_noise # Variability + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Intervention', + day, + calendar, + clean, + ontime, + happiness, + ]) + + # Update for next iteration + prev_calendar, prev_clean, prev_ontime = calendar, clean, ontime + + return rows + + +def generate_control_group(start_participant_id): + rows = [] + for offset in range(N_PARTICIPANTS_PER_GROUP): + participant_id = start_participant_id + offset + + # Even without tracking, some people are naturally more organized + natural_org = np.random.normal(0.3, 0.15) # Lower baseline than intervention + natural_org = np.clip(natural_org, 0.05, 0.7) + + # Personal tendencies (but not tracked/reported as habits) + person_happiness_baseline = np.random.normal(5.1, 0.9) # Center control around ~5 + + # Since they're not tracking, habits happen at random intervals (not streaky) + prev_untracked_habits = 0 + + for day in DAYS: + # Week effect: sans the awareness/tracking effect + week_factor = 1.0 if (day % 7) not in [0, 6] else 0.9 + + # Without tracking, unaware of patterns, so less habit formation + time_factor = 1.0 + (day / 100) * 0.1 # Tiny habituation, but weak + + # Untracked habits - they happen but aren't reported + calendar_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4), + 1 - clip_yes_prob(natural_org * 0.8 * week_factor * time_factor, 0.4)]) + clean_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35), + 1 - clip_yes_prob(natural_org * 0.75 * week_factor * time_factor, 0.35)]) + ontime_untracked = np.random.choice(['Yes', 'No'], + p=[clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45), + 1 - clip_yes_prob(natural_org * 0.85 * week_factor * time_factor, 0.45)]) + + # They report habits as "No" (not tracking), but untracked habits have minimal effect + untracked_count = sum(x == 'Yes' for x in [calendar_untracked, clean_untracked, ontime_untracked]) + subtle_boost = untracked_count * 0.1 # Tiny effect since unaware/untracked + + # Control group happiness has day-to-day variability but no systematic growth + # Without awareness and tracking, there's no cumulative benefit + daily_noise = np.random.normal(0, 1.0) + + happiness_value = ( + person_happiness_baseline + # Same baseline + subtle_boost + # Minimal benefit from occasional habits + daily_noise # Higher variability, no systematic trend + ) + happiness = int(np.clip(np.round(happiness_value), 1, 10)) + + rows.append([ + participant_id, + 'Control', + day, + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + 'No', # Reported as "No" - not tracking + happiness, + ]) + + prev_untracked_habits = untracked_count + + return rows + + +data = [] +data.extend(generate_intervention_group(start_participant_id=1)) +data.extend(generate_control_group(start_participant_id=N_PARTICIPANTS_PER_GROUP + 1)) + +df = pd.DataFrame( + data, + columns=[ + 'Participant_ID', + 'Group', + 'Day', + 'Calendar_Adherence', + 'Cleanliness_Adherence', + 'Punctuality_Adherence', + 'Happiness', + ], +) + +# Save the combined dataset +df.to_csv('organization_happiness_study_data.csv', index=False) +print("✅ Full dataset saved as 'organization_happiness_study_data.csv' — open it in Excel!") +print(df.head(10)) # shows first 10 rows \ No newline at end of file diff --git a/dot_config/private_Code/User/History/785723cb/1nKM.txt b/dot_config/private_Code/User/History/785723cb/1nKM.txt new file mode 100644 index 0000000..2fe6247 --- /dev/null +++ b/dot_config/private_Code/User/History/785723cb/1nKM.txt @@ -0,0 +1,6 @@ +pandas +numpy +matplotlib +seaborn +scipy +statsmodels diff --git a/dot_config/private_Code/User/History/785723cb/entries.json b/dot_config/private_Code/User/History/785723cb/entries.json new file mode 100644 index 0000000..ac3cfa6 --- /dev/null +++ b/dot_config/private_Code/User/History/785723cb/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/requirements.txt","entries":[{"id":"1nKM.txt","source":"Chat Edit: 'improve on this analysis script'","timestamp":1774345121245}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/9KVj.py b/dot_config/private_Code/User/History/7da6e0fb/9KVj.py new file mode 100644 index 0000000..a834fa8 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/9KVj.py @@ -0,0 +1,284 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_theme(style='whitegrid', context='talk') + + def finish_plot(filename): + plt.tight_layout() + plt.savefig(outdir / filename, dpi=200, bbox_inches='tight') + if show_plots: + plt.show() + plt.close() + + # 1) PRIMARY OUTCOME: Mean happiness by group with error bars and value labels + if 'Group' in df.columns: + plt.figure(figsize=(8, 6)) + summary = df.groupby('Group')['Happiness'].agg(['mean', 'std', 'count']).reindex(['Control', 'Intervention']) + ci95 = 1.96 * (summary['std'] / np.sqrt(summary['count'])) + bars = plt.bar( + np.arange(len(summary)), + summary['mean'].values, + yerr=ci95.values, + color=['#A9B2C3', '#4E79A7'], + capsize=8, + edgecolor='black', + linewidth=1.2, + alpha=0.9 + ) + plt.xticks(np.arange(len(summary)), ['Control Group\n(No habits tracked)', 'Intervention Group\n(Daily habits tracked)']) + plt.title('Effect of Tracked Organization Habits on Happiness', pad=15, fontsize=14, fontweight='bold') + plt.ylabel('Mean Daily Happiness Score (1-10)', fontsize=12) + plt.ylim(1, 10) + for bar in bars: + yval = bar.get_height() + plt.text(bar.get_x() + bar.get_width()/2, yval - 0.8, f'{yval:.1f}', ha='center', va='center', color='white', fontweight='bold', fontsize=11) + finish_plot('01_primary_outcome_group_comparison.png') + + # 2) DISTRIBUTIONS: Show overlap and variability in happiness scores + if 'Group' in df.columns: + plt.figure(figsize=(9, 6)) + order = ['Control', 'Intervention'] + sns.violinplot( + data=df, x='Group', y='Happiness', order=order, + inner='quartile', palette={'Control': '#E0E0E0', 'Intervention': '#B3CDE3'}, cut=0 + ) + sns.stripplot( + data=df, x='Group', y='Happiness', order=order, + color='black', alpha=0.12, jitter=0.25, size=3 + ) + plt.title('Distribution of Happiness Reports Over 30 Days', pad=15, fontsize=14, fontweight='bold') + plt.xlabel('Study Group', fontsize=12) + plt.ylabel('Happiness Score', fontsize=12) + plt.ylim(1, 10) + finish_plot('02_happiness_distribution_by_group.png') + + # 3) LONGITUDINAL: Daily happiness trend across 30 days + if 'Group' in df.columns and 'Day' in df.columns: + plt.figure(figsize=(10, 6)) + daily_mean = df.groupby(['Group', 'Day'])['Happiness'].mean().reset_index() + sns.lineplot( + data=daily_mean, x='Day', y='Happiness', hue='Group', + hue_order=['Control', 'Intervention'], + palette={'Control': '#7F7F7F', 'Intervention': '#D62728'}, + marker='o', linewidth=2.5, markersize=6 + ) + plt.title('Longitudinal Daily Happiness Throughout the Study', pad=15, fontsize=14, fontweight='bold') + plt.xlabel('Day of Study (1-30)', fontsize=12) + plt.ylabel('Average Happiness', fontsize=12) + plt.ylim(1, 10) + plt.xticks(range(1, 31, 2)) + plt.legend(title='', frameon=True, facecolor='white', fontsize=10) + finish_plot('03_longitudinal_trends.png') + + # 4) DOSE-RESPONSE: In intervention group, does MORE habits = MORE happiness? + intervention_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + plt.figure(figsize=(9, 6)) + sns.boxplot( + data=intervention_df, x='Habits_Count', y='Happiness', + color='#9ECAE1', width=0.6, fliersize=0 + ) + sns.stripplot( + data=intervention_df, x='Habits_Count', y='Happiness', + color='#2B5B84', alpha=0.3, jitter=0.2, size=4 + ) + plt.title('Dose-Response: Happiness by Number of Habits Completed', pad=15, fontsize=14, fontweight='bold') + plt.xlabel('Number of Requested Habits Completed That Day\n(Calendar + Clean Room + Punctual)', fontsize=11) + plt.ylabel('Happiness Score', fontsize=12) + plt.ylim(1, 10) + finish_plot('04_habit_dose_response.png') + + # 5) HABIT COMPLETION RATES: Which habits were easiest to maintain? + habit_cols = ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'] + adherence_rates = intervention_df[habit_cols].mean().sort_values(ascending=False).reset_index() + adherence_rates.columns = ['Habit', 'Rate'] + adherence_rates['Habit'] = adherence_rates['Habit'].str.replace('_Adherence', '', regex=False) + plt.figure(figsize=(8, 6)) + bars = sns.barplot(data=adherence_rates, x='Habit', y='Rate', color='#E76F51') + plt.title('Which Habits Were Easiest to Keep?', pad=15, fontsize=14, fontweight='bold') + plt.xlabel('', fontsize=12) + plt.ylabel('Percentage of Days Completed', fontsize=12) + plt.ylim(0, 1.05) + plt.gca().yaxis.set_major_formatter(plt.matplotlib.ticker.PercentFormatter(1.0)) + for bar in bars.patches: + plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 0.02, + f"{bar.get_height()*100:.0f}%", ha='center', va='bottom', fontweight='bold', fontsize=10) + finish_plot('05_habit_completion_rates.png') + + # 6) INDIVIDUAL VARIATION: Participant-level averages show broad effect + if 'Group' in df.columns: + plt.figure(figsize=(12, 6)) + participant_avg = df.groupby(['Group', 'Participant_ID'])['Happiness'].mean().reset_index() + participant_avg = participant_avg.sort_values(['Group', 'Happiness']) + participant_avg['Order_Index'] = range(len(participant_avg)) + + for group, color in zip(['Control', 'Intervention'], ['#BDBDBD', '#4E79A7']): + group_data = participant_avg[participant_avg['Group'] == group] + plt.bar(group_data['Order_Index'], group_data['Happiness'], color=color, label=group, alpha=0.85, width=0.8) + + plt.axhline(df[df['Group']=='Control']['Happiness'].mean(), color='#7F7F7F', linestyle='--', linewidth=2, label='Control Mean') + plt.axhline(df[df['Group']=='Intervention']['Happiness'].mean(), color='#2B5B84', linestyle='--', linewidth=2, label='Intervention Mean') + plt.title('Individual Average Happiness Across Study Participants', pad=15, fontsize=14, fontweight='bold') + plt.xlabel('Individual Participants (Sorted by Happiness Level)', fontsize=12) + plt.ylabel('Average Happiness Score', fontsize=12) + plt.xticks([]) + plt.ylim(1, 10) + plt.legend(frameon=True, facecolor='white', fontsize=10, loc='upper left') + finish_plot('06_individual_participant_avgs.png') + + logging.info('Saved study plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/FOyN.py b/dot_config/private_Code/User/History/7da6e0fb/FOyN.py new file mode 100644 index 0000000..aa298e4 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/FOyN.py @@ -0,0 +1,227 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_style('whitegrid') + + # Boxplot by Habits_Count + plt.figure(figsize=(9, 6)) + sns.boxplot(data=df, x='Habits_Count', y='Happiness', color='#4C72B0') + plt.title('Daily Happiness by Number of Habits Completed') + plt.xlabel('Number of habits followed (0–3)') + plt.ylabel('Happiness (1–10)') + f1 = outdir / 'happiness_by_habits_box.png' + plt.tight_layout() + plt.savefig(f1) + if show_plots: + plt.show() + plt.close() + + # Violin / jitter + regression + plt.figure(figsize=(9, 6)) + sns.violinplot(data=df, x='Habits_Count', y='Happiness', inner=None, color='#55A868') + sns.stripplot(x='Habits_Count', y='Happiness', data=df, color='k', alpha=0.3, jitter=0.15) + plt.title('Happiness distribution by Habits Completed') + f2 = outdir / 'happiness_by_habits_violin.png' + plt.tight_layout() + plt.savefig(f2) + if show_plots: + plt.show() + plt.close() + + # Participant average bar + participant_avg = df.groupby('Participant_ID')['Happiness'].mean().sort_values() + plt.figure(figsize=(12, 5)) + sns.barplot(x=range(len(participant_avg)), y=participant_avg.values, color='#C44E52') + plt.axhline(df['Happiness'].mean(), color='black', linestyle='--', alpha=0.6) + plt.xticks(range(len(participant_avg)), participant_avg.index, rotation=45) + plt.title('Average Happiness per Participant (sorted)') + f3 = outdir / 'participant_avg_happiness.png' + plt.tight_layout() + plt.savefig(f3) + if show_plots: + plt.show() + plt.close() + + if 'Group' in df.columns: + plt.figure(figsize=(7, 5)) + sns.barplot(data=df, x='Group', y='Happiness', estimator='mean', errorbar='sd', color='#8172B2') + plt.title('Mean Happiness by Group') + plt.ylabel('Average happiness') + f_group = outdir / 'happiness_by_group.png' + plt.tight_layout() + plt.savefig(f_group) + if show_plots: + plt.show() + plt.close() + + # Scatter with linear fit + plt.figure(figsize=(9, 6)) + if 'Group' in df.columns: + sns.scatterplot(data=df, x='Habits_Count', y='Happiness', hue='Group', alpha=0.35) + else: + sns.regplot(x='Habits_Count', y='Happiness', data=df, x_jitter=0.18, scatter_kws={'alpha': 0.4}) + plt.title('Happiness vs Number of Habits Completed (with linear fit)') + f4 = outdir / 'happiness_vs_habits_regression.png' + plt.tight_layout() + plt.savefig(f4) + if show_plots: + plt.show() + plt.close() + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/Gx76.py b/dot_config/private_Code/User/History/7da6e0fb/Gx76.py new file mode 100644 index 0000000..8541b6d --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/Gx76.py @@ -0,0 +1,227 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_style('whitegrid') + + # Boxplot by Habits_Count + plt.figure(figsize=(9, 6)) + sns.boxplot(data=df, x='Habits_Count', y='Happiness', color='#4C72B0') + plt.title('Daily Happiness by Number of Habits Completed') + plt.xlabel('Number of habits followed (0–3)') + plt.ylabel('Happiness (1–10)') + f1 = outdir / 'happiness_by_habits_box.png' + plt.tight_layout() + plt.savefig(f1) + if show_plots: + plt.show() + plt.close() + + # Violin / jitter + regression + plt.figure(figsize=(9, 6)) + sns.violinplot(data=df, x='Habits_Count', y='Happiness', inner=None, color='#55A868') + sns.stripplot(x='Habits_Count', y='Happiness', data=df, color='k', alpha=0.3, jitter=0.15) + plt.title('Happiness distribution by Habits Completed') + f2 = outdir / 'happiness_by_habits_violin.png' + plt.tight_layout() + plt.savefig(f2) + if show_plots: + plt.show() + plt.close() + + # Participant average bar + participant_avg = df.groupby('Participant_ID')['Happiness'].mean().sort_values() + plt.figure(figsize=(12, 5)) + sns.barplot(x=range(len(participant_avg)), y=participant_avg.values, color='#C44E52') + plt.axhline(df['Happiness'].mean(), color='black', linestyle='--', alpha=0.6) + plt.xticks(range(len(participant_avg)), participant_avg.index.astype(str), rotation=45) + plt.title('Average Happiness per Participant (sorted)') + f3 = outdir / 'participant_avg_happiness.png' + plt.tight_layout() + plt.savefig(f3) + if show_plots: + plt.show() + plt.close() + + if 'Group' in df.columns: + plt.figure(figsize=(7, 5)) + sns.barplot(data=df, x='Group', y='Happiness', estimator='mean', errorbar='sd', color='#8172B2') + plt.title('Mean Happiness by Group') + plt.ylabel('Average happiness') + f_group = outdir / 'happiness_by_group.png' + plt.tight_layout() + plt.savefig(f_group) + if show_plots: + plt.show() + plt.close() + + # Scatter with linear fit + plt.figure(figsize=(9, 6)) + if 'Group' in df.columns: + sns.scatterplot(data=df, x='Habits_Count', y='Happiness', hue='Group', alpha=0.35) + else: + sns.regplot(x='Habits_Count', y='Happiness', data=df, x_jitter=0.18, scatter_kws={'alpha': 0.4}) + plt.title('Happiness vs Number of Habits Completed (with linear fit)') + f4 = outdir / 'happiness_vs_habits_regression.png' + plt.tight_layout() + plt.savefig(f4) + if show_plots: + plt.show() + plt.close() + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/Ldgu.py b/dot_config/private_Code/User/History/7da6e0fb/Ldgu.py new file mode 100644 index 0000000..7134899 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/Ldgu.py @@ -0,0 +1,253 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_theme(style='whitegrid', context='talk') + + def finish_plot(filename): + plt.tight_layout() + plt.savefig(outdir / filename, dpi=200, bbox_inches='tight') + if show_plots: + plt.show() + plt.close() + + # 1) Mean happiness by group with error bars + if 'Group' in df.columns: + summary = df.groupby('Group')['Happiness'].agg(['mean', 'std', 'count']).reindex(['Control', 'Intervention']) + ci95 = 1.96 * (summary['std'] / np.sqrt(summary['count'])) + plt.figure(figsize=(8, 6)) + plt.bar(summary.index, summary['mean'], color=['#7A7A7A', '#2A9D8F'], yerr=ci95, capsize=6) + plt.title('Average Happiness by Group') + plt.xlabel('Study group') + plt.ylabel('Mean happiness score') + plt.ylim(0, 10) + finish_plot('01_mean_happiness_by_group.png') + + # 2) Distribution of happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(9, 6)) + order = ['Control', 'Intervention'] + sns.boxplot(data=df, x='Group', y='Happiness', order=order, color='#C9D1D9') + sns.stripplot(data=df, x='Group', y='Happiness', order=order, color='black', alpha=0.18, jitter=0.22, size=2) + plt.title('Happiness Distribution by Group') + plt.xlabel('Study group') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('02_happiness_distribution_by_group.png') + + # 3) Daily happiness trend by group + if 'Group' in df.columns and 'Day' in df.columns: + daily = df.groupby(['Group', 'Day'], as_index=False)['Happiness'].mean() + plt.figure(figsize=(10, 6)) + sns.lineplot(data=daily, x='Day', y='Happiness', hue='Group', hue_order=['Control', 'Intervention'], marker='o') + plt.title('Mean Daily Happiness Across the Study') + plt.xlabel('Day of study') + plt.ylabel('Average happiness') + plt.ylim(0, 10) + plt.xticks(range(1, 31, 2)) + finish_plot('03_daily_happiness_trend.png') + + # 4) Happiness by number of habits in intervention group only + intervention_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + plt.figure(figsize=(9, 6)) + sns.boxplot(data=intervention_df, x='Habits_Count', y='Happiness', color='#4C72B0') + sns.stripplot(data=intervention_df, x='Habits_Count', y='Happiness', color='black', alpha=0.20, jitter=0.18, size=2) + plt.title('Intervention Group: Happiness by Number of Habits Completed') + plt.xlabel('Habits completed that day') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('04_happiness_by_habits_intervention.png') + + # 5) Mean happiness by habits count in intervention group + habits_mean = intervention_df.groupby('Habits_Count', as_index=False)['Happiness'].mean() + plt.figure(figsize=(8, 6)) + sns.lineplot(data=habits_mean, x='Habits_Count', y='Happiness', marker='o', color='#1F77B4') + plt.title('Intervention Group: Mean Happiness vs Habits Completed') + plt.xlabel('Number of habits completed') + plt.ylabel('Mean happiness') + plt.xticks([0, 1, 2, 3]) + plt.ylim(0, 10) + finish_plot('05_mean_happiness_by_habits.png') + + # 6) Habit adherence rates in the intervention group + habit_cols = ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'] + adherence_rates = intervention_df[habit_cols].mean().sort_values(ascending=False).reset_index() + adherence_rates.columns = ['Habit', 'Rate'] + adherence_rates['Habit'] = adherence_rates['Habit'].str.replace('_Adherence', '', regex=False) + plt.figure(figsize=(9, 6)) + sns.barplot(data=adherence_rates, x='Habit', y='Rate', color='#E76F51') + plt.title('Intervention Group: Habit Completion Rate') + plt.xlabel('Habit') + plt.ylabel('Proportion completed') + plt.ylim(0, 1) + plt.gca().yaxis.set_major_formatter(plt.matplotlib.ticker.PercentFormatter(1.0)) + finish_plot('06_habit_completion_rate.png') + + # 7) Participant average happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(12, 6)) + participant_avg = df.groupby(['Group', 'Participant_ID'], as_index=False)['Happiness'].mean() + sns.boxplot(data=participant_avg, x='Group', y='Happiness', order=['Control', 'Intervention'], color='#D6D6D6') + sns.stripplot(data=participant_avg, x='Group', y='Happiness', order=['Control', 'Intervention'], color='black', alpha=0.45, jitter=0.12, size=5) + plt.title('Average Happiness per Participant') + plt.xlabel('Study group') + plt.ylabel('Participant mean happiness') + plt.ylim(0, 10) + finish_plot('07_participant_average_happiness.png') + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/MtI5.py b/dot_config/private_Code/User/History/7da6e0fb/MtI5.py new file mode 100644 index 0000000..b790f32 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/MtI5.py @@ -0,0 +1,272 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_theme(style='whitegrid', context='talk') + + def finish_plot(filename): + plt.tight_layout() + plt.savefig(outdir / filename, dpi=200, bbox_inches='tight') + if show_plots: + plt.show() + plt.close() + + # 1) Mean happiness by group with error bars + if 'Group' in df.columns: + plt.figure(figsize=(8, 6)) + order = ['Control', 'Intervention'] + sns.barplot( + data=df, + x='Group', + y='Happiness', + order=order, + estimator='mean', + errorbar=('ci', 95), + palette=['#7A7A7A', '#2A9D8F'], + ) + plt.title('Average Happiness by Group') + plt.xlabel('Study group') + plt.ylabel('Mean happiness score') + plt.ylim(0, 10) + finish_plot('01_mean_happiness_by_group.png') + + # 2) Distribution of happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(9, 6)) + order = ['Control', 'Intervention'] + sns.boxplot(data=df, x='Group', y='Happiness', order=order, palette=['#B0B0B0', '#73C6B6']) + sns.stripplot(data=df, x='Group', y='Happiness', order=order, color='black', alpha=0.18, jitter=0.22, size=2) + plt.title('Happiness Distribution by Group') + plt.xlabel('Study group') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('02_happiness_distribution_by_group.png') + + # 3) Daily happiness trend by group + if 'Group' in df.columns and 'Day' in df.columns: + daily = df.groupby(['Group', 'Day'], as_index=False)['Happiness'].mean() + plt.figure(figsize=(10, 6)) + sns.lineplot(data=daily, x='Day', y='Happiness', hue='Group', hue_order=['Control', 'Intervention'], marker='o') + plt.title('Mean Daily Happiness Across the Study') + plt.xlabel('Day of study') + plt.ylabel('Average happiness') + plt.ylim(0, 10) + plt.xticks(range(1, 31, 2)) + finish_plot('03_daily_happiness_trend.png') + + # 4) Happiness by number of habits in intervention group only + intervention_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + plt.figure(figsize=(9, 6)) + sns.boxplot(data=intervention_df, x='Habits_Count', y='Happiness', color='#4C72B0') + sns.stripplot(data=intervention_df, x='Habits_Count', y='Happiness', color='black', alpha=0.20, jitter=0.18, size=2) + plt.title('Intervention Group: Happiness by Number of Habits Completed') + plt.xlabel('Habits completed that day') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('04_happiness_by_habits_intervention.png') + + # 5) Mean happiness by habits count in intervention group + habits_mean = intervention_df.groupby('Habits_Count', as_index=False)['Happiness'].mean() + plt.figure(figsize=(8, 6)) + sns.lineplot(data=habits_mean, x='Habits_Count', y='Happiness', marker='o', color='#1F77B4') + plt.title('Intervention Group: Mean Happiness vs Habits Completed') + plt.xlabel('Number of habits completed') + plt.ylabel('Mean happiness') + plt.xticks([0, 1, 2, 3]) + plt.ylim(0, 10) + finish_plot('05_mean_happiness_by_habits.png') + + # 6) Habit adherence rates in the intervention group + habit_cols = ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'] + adherence_rates = ( + intervention_df[habit_cols] + .mean() + .sort_values(ascending=False) + .reset_index() + .rename(columns={'index': 'Habit', 0: 'Rate'}) + ) + adherence_rates['Habit'] = adherence_rates['Habit'].str.replace('_Adherence', '', regex=False) + plt.figure(figsize=(9, 6)) + sns.barplot(data=adherence_rates, x='Habit', y=0, color='#E76F51') + plt.title('Intervention Group: Habit Completion Rate') + plt.xlabel('Habit') + plt.ylabel('Proportion completed') + plt.ylim(0, 1) + plt.gca().yaxis.set_major_formatter(plt.matplotlib.ticker.PercentFormatter(1.0)) + finish_plot('06_habit_completion_rate.png') + + # 7) Participant averages, grouped by study group + if 'Group' in df.columns: + participant_avg = df.groupby(['Group', 'Participant_ID'])['Happiness'].mean().reset_index() + plt.figure(figsize=(12, 6)) + sns.barplot( + data=participant_avg, + x='Participant_ID', + y='Happiness', + hue='Group', + dodge=True, + palette=['#7A7A7A', '#2A9D8F'], + ) + plt.title('Average Happiness per Participant') + plt.xlabel('Participant ID') + plt.ylabel('Mean happiness') + plt.ylim(0, 10) + plt.xticks(rotation=45) + finish_plot('07_participant_average_happiness.png') + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/NtsI.py b/dot_config/private_Code/User/History/7da6e0fb/NtsI.py new file mode 100644 index 0000000..51f1664 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/NtsI.py @@ -0,0 +1,270 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_theme(style='whitegrid', context='talk') + + def finish_plot(filename): + plt.tight_layout() + plt.savefig(outdir / filename, dpi=200, bbox_inches='tight') + if show_plots: + plt.show() + plt.close() + + # 1) Mean happiness by group with error bars + if 'Group' in df.columns: + summary = df.groupby('Group')['Happiness'].agg(['mean', 'std', 'count']).reindex(['Control', 'Intervention']) + ci95 = 1.96 * (summary['std'] / np.sqrt(summary['count'])) + plt.figure(figsize=(8, 6)) + xpos = np.arange(len(summary)) + plt.bar(xpos, summary['mean'].values, color=['#7A7A7A', '#2A9D8F'], yerr=ci95.values, capsize=6) + plt.xticks(xpos, summary.index) + plt.title('Average Happiness by Group') + plt.xlabel('Study group') + plt.ylabel('Mean happiness score') + plt.ylim(0, 10) + finish_plot('01_mean_happiness_by_group.png') + + # 2) Distribution of happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(9, 6)) + order = ['Control', 'Intervention'] + grouped = [df.loc[df['Group'] == group, 'Happiness'].values for group in order] + plt.boxplot(grouped, labels=order, patch_artist=True, + boxprops=dict(facecolor='#C9D1D9', color='#4C4C4C'), + medianprops=dict(color='#2A9D8F', linewidth=2), + whiskerprops=dict(color='#4C4C4C'), capprops=dict(color='#4C4C4C')) + for i, group in enumerate(order, start=1): + y = df.loc[df['Group'] == group, 'Happiness'].values + x = np.random.normal(i, 0.06, size=len(y)) + plt.scatter(x, y, color='black', alpha=0.15, s=10) + plt.title('Happiness Distribution by Group') + plt.xlabel('Study group') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('02_happiness_distribution_by_group.png') + + # 3) Daily happiness trend by group + if 'Group' in df.columns and 'Day' in df.columns: + daily = df.groupby(['Group', 'Day'], as_index=False)['Happiness'].mean() + plt.figure(figsize=(10, 6)) + sns.lineplot(data=daily, x='Day', y='Happiness', hue='Group', hue_order=['Control', 'Intervention'], marker='o') + plt.title('Mean Daily Happiness Across the Study') + plt.xlabel('Day of study') + plt.ylabel('Average happiness') + plt.ylim(0, 10) + plt.xticks(range(1, 31, 2)) + finish_plot('03_daily_happiness_trend.png') + + # 4) Happiness by number of habits in intervention group only + intervention_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + plt.figure(figsize=(9, 6)) + sns.boxplot(data=intervention_df, x='Habits_Count', y='Happiness', color='#4C72B0') + sns.stripplot(data=intervention_df, x='Habits_Count', y='Happiness', color='black', alpha=0.20, jitter=0.18, size=2) + plt.title('Intervention Group: Happiness by Number of Habits Completed') + plt.xlabel('Habits completed that day') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('04_happiness_by_habits_intervention.png') + + # 5) Mean happiness by habits count in intervention group + habits_mean = intervention_df.groupby('Habits_Count', as_index=False)['Happiness'].mean() + plt.figure(figsize=(8, 6)) + sns.lineplot(data=habits_mean, x='Habits_Count', y='Happiness', marker='o', color='#1F77B4') + plt.title('Intervention Group: Mean Happiness vs Habits Completed') + plt.xlabel('Number of habits completed') + plt.ylabel('Mean happiness') + plt.xticks([0, 1, 2, 3]) + plt.ylim(0, 10) + finish_plot('05_mean_happiness_by_habits.png') + + # 6) Habit adherence rates in the intervention group + habit_cols = ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'] + adherence_rates = intervention_df[habit_cols].mean().sort_values(ascending=False).reset_index() + adherence_rates.columns = ['Habit', 'Rate'] + adherence_rates['Habit'] = adherence_rates['Habit'].str.replace('_Adherence', '', regex=False) + plt.figure(figsize=(9, 6)) + sns.barplot(data=adherence_rates, x='Habit', y='Rate', color='#E76F51') + plt.title('Intervention Group: Habit Completion Rate') + plt.xlabel('Habit') + plt.ylabel('Proportion completed') + plt.ylim(0, 1) + plt.gca().yaxis.set_major_formatter(plt.matplotlib.ticker.PercentFormatter(1.0)) + finish_plot('06_habit_completion_rate.png') + + # 7) Participant average happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(12, 6)) + participant_avg = df.groupby(['Group', 'Participant_ID'], as_index=False)['Happiness'].mean() + group_order = ['Control', 'Intervention'] + grouped_avgs = [participant_avg.loc[participant_avg['Group'] == group, 'Happiness'].values for group in group_order] + plt.boxplot(grouped_avgs, labels=group_order, patch_artist=True, + boxprops=dict(facecolor='#D6D6D6', color='#4C4C4C'), + medianprops=dict(color='#2A9D8F', linewidth=2), + whiskerprops=dict(color='#4C4C4C'), capprops=dict(color='#4C4C4C')) + for i, group in enumerate(group_order, start=1): + y = participant_avg.loc[participant_avg['Group'] == group, 'Happiness'].values + x = np.random.normal(i, 0.06, size=len(y)) + plt.scatter(x, y, color='black', alpha=0.45, s=22) + plt.title('Average Happiness per Participant') + plt.xlabel('Study group') + plt.ylabel('Participant mean happiness') + plt.ylim(0, 10) + finish_plot('07_participant_average_happiness.png') + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/SA9R.py b/dot_config/private_Code/User/History/7da6e0fb/SA9R.py new file mode 100644 index 0000000..1e4e5b0 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/SA9R.py @@ -0,0 +1,189 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness):') + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(df.loc[mask, habit].astype(int), df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_style('whitegrid') + + # Boxplot by Habits_Count + plt.figure(figsize=(9, 6)) + sns.boxplot(x='Habits_Count', y='Happiness', data=df, palette='viridis') + plt.title('Daily Happiness by Number of Habits Completed') + plt.xlabel('Number of habits followed (0–3)') + plt.ylabel('Happiness (1–10)') + f1 = outdir / 'happiness_by_habits_box.png' + plt.tight_layout() + plt.savefig(f1) + if show_plots: + plt.show() + plt.close() + + # Violin / jitter + regression + plt.figure(figsize=(9, 6)) + sns.violinplot(x='Habits_Count', y='Happiness', data=df, inner=None, palette='muted') + sns.stripplot(x='Habits_Count', y='Happiness', data=df, color='k', alpha=0.3, jitter=0.15) + plt.title('Happiness distribution by Habits Completed') + f2 = outdir / 'happiness_by_habits_violin.png' + plt.tight_layout() + plt.savefig(f2) + if show_plots: + plt.show() + plt.close() + + # Participant average bar + participant_avg = df.groupby('Participant_ID')['Happiness'].mean().sort_values() + plt.figure(figsize=(12, 5)) + sns.barplot(x=participant_avg.index.astype(str), y=participant_avg.values, palette='coolwarm') + plt.axhline(df['Happiness'].mean(), color='black', linestyle='--', alpha=0.6) + plt.xticks(rotation=45) + plt.title('Average Happiness per Participant (sorted)') + f3 = outdir / 'participant_avg_happiness.png' + plt.tight_layout() + plt.savefig(f3) + if show_plots: + plt.show() + plt.close() + + # Scatter with linear fit + plt.figure(figsize=(9, 6)) + sns.regplot(x='Habits_Count', y='Happiness', data=df, x_jitter=0.18, scatter_kws={'alpha': 0.4}) + plt.title('Happiness vs Number of Habits Completed (with linear fit)') + f4 = outdir / 'happiness_vs_habits_regression.png' + plt.tight_layout() + plt.savefig(f4) + if show_plots: + plt.show() + plt.close() + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect size example: compare 0 vs 3 + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/bwYb.py b/dot_config/private_Code/User/History/7da6e0fb/bwYb.py new file mode 100644 index 0000000..e3d85fd --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/bwYb.py @@ -0,0 +1,231 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_style('whitegrid') + + # Boxplot by Habits_Count + plt.figure(figsize=(9, 6)) + sns.boxplot(data=df, x='Habits_Count', y='Happiness', hue='Habits_Count', palette='viridis', dodge=False) + plt.legend([], [], frameon=False) + plt.title('Daily Happiness by Number of Habits Completed') + plt.xlabel('Number of habits followed (0–3)') + plt.ylabel('Happiness (1–10)') + f1 = outdir / 'happiness_by_habits_box.png' + plt.tight_layout() + plt.savefig(f1) + if show_plots: + plt.show() + plt.close() + + # Violin / jitter + regression + plt.figure(figsize=(9, 6)) + sns.violinplot(data=df, x='Habits_Count', y='Happiness', hue='Habits_Count', inner=None, palette='muted', dodge=False) + plt.legend([], [], frameon=False) + sns.stripplot(x='Habits_Count', y='Happiness', data=df, color='k', alpha=0.3, jitter=0.15) + plt.title('Happiness distribution by Habits Completed') + f2 = outdir / 'happiness_by_habits_violin.png' + plt.tight_layout() + plt.savefig(f2) + if show_plots: + plt.show() + plt.close() + + # Participant average bar + participant_avg = df.groupby('Participant_ID')['Happiness'].mean().sort_values() + plt.figure(figsize=(12, 5)) + sns.barplot(x=range(len(participant_avg)), y=participant_avg.values, hue=range(len(participant_avg)), palette='coolwarm', dodge=False) + plt.legend([], [], frameon=False) + plt.axhline(df['Happiness'].mean(), color='black', linestyle='--', alpha=0.6) + plt.xticks(range(len(participant_avg)), participant_avg.index.astype(str), rotation=45) + plt.title('Average Happiness per Participant (sorted)') + f3 = outdir / 'participant_avg_happiness.png' + plt.tight_layout() + plt.savefig(f3) + if show_plots: + plt.show() + plt.close() + + if 'Group' in df.columns: + plt.figure(figsize=(7, 5)) + sns.barplot(data=df, x='Group', y='Happiness', hue='Group', estimator='mean', errorbar='sd', palette='Set2', dodge=False) + plt.legend([], [], frameon=False) + plt.title('Mean Happiness by Group') + plt.ylabel('Average happiness') + f_group = outdir / 'happiness_by_group.png' + plt.tight_layout() + plt.savefig(f_group) + if show_plots: + plt.show() + plt.close() + + # Scatter with linear fit + plt.figure(figsize=(9, 6)) + if 'Group' in df.columns: + sns.scatterplot(data=df, x='Habits_Count', y='Happiness', hue='Group', alpha=0.35) + else: + sns.regplot(x='Habits_Count', y='Happiness', data=df, x_jitter=0.18, scatter_kws={'alpha': 0.4}) + plt.title('Happiness vs Number of Habits Completed (with linear fit)') + f4 = outdir / 'happiness_vs_habits_regression.png' + plt.tight_layout() + plt.savefig(f4) + if show_plots: + plt.show() + plt.close() + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/enQE.py b/dot_config/private_Code/User/History/7da6e0fb/enQE.py new file mode 100644 index 0000000..68c3ef8 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/enQE.py @@ -0,0 +1,270 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_theme(style='whitegrid', context='talk') + + def finish_plot(filename): + plt.tight_layout() + plt.savefig(outdir / filename, dpi=200, bbox_inches='tight') + if show_plots: + plt.show() + plt.close() + + # 1) Mean happiness by group with error bars + if 'Group' in df.columns: + summary = df.groupby('Group')['Happiness'].agg(['mean', 'std', 'count']).reindex(['Control', 'Intervention']) + ci95 = 1.96 * (summary['std'] / np.sqrt(summary['count'])) + plt.figure(figsize=(8, 6)) + xpos = np.arange(len(summary)) + plt.bar(xpos, summary['mean'].values, color=['#7A7A7A', '#2A9D8F'], yerr=ci95.values, capsize=6) + plt.xticks(xpos, summary.index) + plt.title('Average Happiness by Group') + plt.xlabel('Study group') + plt.ylabel('Mean happiness score') + plt.ylim(0, 10) + finish_plot('01_mean_happiness_by_group.png') + + # 2) Distribution of happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(9, 6)) + order = ['Control', 'Intervention'] + grouped = [df.loc[df['Group'] == group, 'Happiness'].values for group in order] + plt.boxplot(grouped, tick_labels=order, patch_artist=True, + boxprops=dict(facecolor='#C9D1D9', color='#4C4C4C'), + medianprops=dict(color='#2A9D8F', linewidth=2), + whiskerprops=dict(color='#4C4C4C'), capprops=dict(color='#4C4C4C')) + for i, group in enumerate(order, start=1): + y = df.loc[df['Group'] == group, 'Happiness'].values + x = np.random.normal(i, 0.06, size=len(y)) + plt.scatter(x, y, color='black', alpha=0.15, s=10) + plt.title('Happiness Distribution by Group') + plt.xlabel('Study group') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('02_happiness_distribution_by_group.png') + + # 3) Daily happiness trend by group + if 'Group' in df.columns and 'Day' in df.columns: + daily = df.groupby(['Group', 'Day'], as_index=False)['Happiness'].mean() + plt.figure(figsize=(10, 6)) + sns.lineplot(data=daily, x='Day', y='Happiness', hue='Group', hue_order=['Control', 'Intervention'], marker='o') + plt.title('Mean Daily Happiness Across the Study') + plt.xlabel('Day of study') + plt.ylabel('Average happiness') + plt.ylim(0, 10) + plt.xticks(range(1, 31, 2)) + finish_plot('03_daily_happiness_trend.png') + + # 4) Happiness by number of habits in intervention group only + intervention_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + plt.figure(figsize=(9, 6)) + sns.boxplot(data=intervention_df, x='Habits_Count', y='Happiness', color='#4C72B0') + sns.stripplot(data=intervention_df, x='Habits_Count', y='Happiness', color='black', alpha=0.20, jitter=0.18, size=2) + plt.title('Intervention Group: Happiness by Number of Habits Completed') + plt.xlabel('Habits completed that day') + plt.ylabel('Happiness score') + plt.ylim(0, 10) + finish_plot('04_happiness_by_habits_intervention.png') + + # 5) Mean happiness by habits count in intervention group + habits_mean = intervention_df.groupby('Habits_Count', as_index=False)['Happiness'].mean() + plt.figure(figsize=(8, 6)) + sns.lineplot(data=habits_mean, x='Habits_Count', y='Happiness', marker='o', color='#1F77B4') + plt.title('Intervention Group: Mean Happiness vs Habits Completed') + plt.xlabel('Number of habits completed') + plt.ylabel('Mean happiness') + plt.xticks([0, 1, 2, 3]) + plt.ylim(0, 10) + finish_plot('05_mean_happiness_by_habits.png') + + # 6) Habit adherence rates in the intervention group + habit_cols = ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'] + adherence_rates = intervention_df[habit_cols].mean().sort_values(ascending=False).reset_index() + adherence_rates.columns = ['Habit', 'Rate'] + adherence_rates['Habit'] = adherence_rates['Habit'].str.replace('_Adherence', '', regex=False) + plt.figure(figsize=(9, 6)) + sns.barplot(data=adherence_rates, x='Habit', y='Rate', color='#E76F51') + plt.title('Intervention Group: Habit Completion Rate') + plt.xlabel('Habit') + plt.ylabel('Proportion completed') + plt.ylim(0, 1) + plt.gca().yaxis.set_major_formatter(plt.matplotlib.ticker.PercentFormatter(1.0)) + finish_plot('06_habit_completion_rate.png') + + # 7) Participant average happiness by group + if 'Group' in df.columns: + plt.figure(figsize=(12, 6)) + participant_avg = df.groupby(['Group', 'Participant_ID'], as_index=False)['Happiness'].mean() + group_order = ['Control', 'Intervention'] + grouped_avgs = [participant_avg.loc[participant_avg['Group'] == group, 'Happiness'].values for group in group_order] + plt.boxplot(grouped_avgs, tick_labels=group_order, patch_artist=True, + boxprops=dict(facecolor='#D6D6D6', color='#4C4C4C'), + medianprops=dict(color='#2A9D8F', linewidth=2), + whiskerprops=dict(color='#4C4C4C'), capprops=dict(color='#4C4C4C')) + for i, group in enumerate(group_order, start=1): + y = participant_avg.loc[participant_avg['Group'] == group, 'Happiness'].values + x = np.random.normal(i, 0.06, size=len(y)) + plt.scatter(x, y, color='black', alpha=0.45, s=22) + plt.title('Average Happiness per Participant') + plt.xlabel('Study group') + plt.ylabel('Participant mean happiness') + plt.ylim(0, 10) + finish_plot('07_participant_average_happiness.png') + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/entries.json b/dot_config/private_Code/User/History/7da6e0fb/entries.json new file mode 100644 index 0000000..430c3dd --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/entries.json @@ -0,0 +1 @@ +{"version":1,"resource":"file:///home/breadway/Documents/Year%2010/Year%2010/Psychology/Data%20Analysis.py","entries":[{"id":"SA9R.py","source":"Chat Edit: 'improve on this analysis script'","timestamp":1774345116327},{"id":"ycv3.py","source":"Chat Edit: 'improve data gen.py to add a second dataset as a control. for context, the study tracks the affects of being organised on how happy participants feel. there needs to be a control group that is only recording their happiness daily. the main group will try to record their happiness, will add all events to their calendar, be on time to every event, and clean their bedroom everyday. they report if they do any of these in the study data as a yes or no. the control group will not do any of these.'","timestamp":1774345356264},{"id":"bwYb.py","source":"Chat Edit: 'improve data gen.py to add a second dataset as a control. for context, the study tracks the affects of being organised on how happy participants feel. there needs to be a control group that is only recording their happiness daily. the main group will try to record their happiness, will add all events to their calendar, be on time to every event, and clean their bedroom everyday. they report if they do any of these in the study data as a yes or no. the control group will not do any of these.'","timestamp":1774345411358},{"id":"Gx76.py","source":"Chat Edit: 'improve data gen.py to add a second dataset as a control. for context, the study tracks the affects of being organised on how happy participants feel. there needs to be a control group that is only recording their happiness daily. the main group will try to record their happiness, will add all events to their calendar, be on time to every event, and clean their bedroom everyday. they report if they do any of these in the study data as a yes or no. the control group will not do any of these.'","timestamp":1774345436946},{"id":"FOyN.py","source":"Chat Edit: 'improve data gen.py to add a second dataset as a control. for context, the study tracks the affects of being organised on how happy participants feel. there needs to be a control group that is only recording their happiness daily. the main group will try to record their happiness, will add all events to their calendar, be on time to every event, and clean their bedroom everyday. they report if they do any of these in the study data as a yes or no. the control group will not do any of these.'","timestamp":1774345501736},{"id":"MtI5.py","source":"Chat Edit: 'make the graphs better suited to the study, easier to read, and more graphs.'","timestamp":1774346145201},{"id":"Ldgu.py","source":"Chat Edit: 'make the graphs better suited to the study, easier to read, and more graphs.'","timestamp":1774346200970},{"id":"NtsI.py","source":"Chat Edit: 'make the graphs better suited to the study, easier to read, and more graphs.'","timestamp":1774346222014},{"id":"enQE.py","source":"Chat Edit: 'make the graphs better suited to the study, easier to read, and more graphs.'","timestamp":1774346258056},{"id":"yfjL.py","timestamp":1774346751804},{"id":"9KVj.py","source":"Chat Edit: 'ensure the graphs being used are appropriate for the study'","timestamp":1774346803522}]} \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/ycv3.py b/dot_config/private_Code/User/History/7da6e0fb/ycv3.py new file mode 100644 index 0000000..6415abb --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/ycv3.py @@ -0,0 +1,227 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_style('whitegrid') + + # Boxplot by Habits_Count + plt.figure(figsize=(9, 6)) + sns.boxplot(x='Habits_Count', y='Happiness', data=df, palette='viridis') + plt.title('Daily Happiness by Number of Habits Completed') + plt.xlabel('Number of habits followed (0–3)') + plt.ylabel('Happiness (1–10)') + f1 = outdir / 'happiness_by_habits_box.png' + plt.tight_layout() + plt.savefig(f1) + if show_plots: + plt.show() + plt.close() + + # Violin / jitter + regression + plt.figure(figsize=(9, 6)) + sns.violinplot(x='Habits_Count', y='Happiness', data=df, inner=None, palette='muted') + sns.stripplot(x='Habits_Count', y='Happiness', data=df, color='k', alpha=0.3, jitter=0.15) + plt.title('Happiness distribution by Habits Completed') + f2 = outdir / 'happiness_by_habits_violin.png' + plt.tight_layout() + plt.savefig(f2) + if show_plots: + plt.show() + plt.close() + + # Participant average bar + participant_avg = df.groupby('Participant_ID')['Happiness'].mean().sort_values() + plt.figure(figsize=(12, 5)) + sns.barplot(x=participant_avg.index.astype(str), y=participant_avg.values, palette='coolwarm') + plt.axhline(df['Happiness'].mean(), color='black', linestyle='--', alpha=0.6) + plt.xticks(rotation=45) + plt.title('Average Happiness per Participant (sorted)') + f3 = outdir / 'participant_avg_happiness.png' + plt.tight_layout() + plt.savefig(f3) + if show_plots: + plt.show() + plt.close() + + if 'Group' in df.columns: + plt.figure(figsize=(7, 5)) + sns.barplot(data=df, x='Group', y='Happiness', estimator='mean', errorbar='sd', palette='Set2') + plt.title('Mean Happiness by Group') + plt.ylabel('Average happiness') + f_group = outdir / 'happiness_by_group.png' + plt.tight_layout() + plt.savefig(f_group) + if show_plots: + plt.show() + plt.close() + + # Scatter with linear fit + plt.figure(figsize=(9, 6)) + if 'Group' in df.columns: + sns.scatterplot(data=df, x='Habits_Count', y='Happiness', hue='Group', alpha=0.35) + else: + sns.regplot(x='Habits_Count', y='Happiness', data=df, x_jitter=0.18, scatter_kws={'alpha': 0.4}) + plt.title('Happiness vs Number of Habits Completed (with linear fit)') + f4 = outdir / 'happiness_vs_habits_regression.png' + plt.tight_layout() + plt.savefig(f4) + if show_plots: + plt.show() + plt.close() + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/History/7da6e0fb/yfjL.py b/dot_config/private_Code/User/History/7da6e0fb/yfjL.py new file mode 100644 index 0000000..aa298e4 --- /dev/null +++ b/dot_config/private_Code/User/History/7da6e0fb/yfjL.py @@ -0,0 +1,227 @@ +import argparse +import os +from pathlib import Path +import logging + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from scipy import stats +import statsmodels.api as sm +import statsmodels.formula.api as smf + + +logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + + +def load_data(path): + df = pd.read_csv(path) + logging.info("Loaded %d rows from %s", len(df), path) + return df + + +def prepare_data(df): + # Ensure required columns exist + required = {'Participant_ID', 'Happiness', 'Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence'} + missing = required - set(df.columns) + if missing: + raise KeyError(f"Missing required columns: {missing}") + + if 'Group' not in df.columns: + df['Group'] = 'Intervention' + df['Group'] = df['Group'].astype(str).str.strip().str.title() + + # Normalize adherence to boolean (Yes/No or True/False) + for col in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + df[col] = df[col].astype(str).str.strip().str.lower().map({'yes': True, 'no': False, 'true': True, 'false': False}) + + # Count habits per row + df['Habits_Count'] = ( + df[['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']].fillna(False).astype(int).sum(axis=1) + ) + + # Coerce Happiness to numeric and drop rows without Happiness + df['Happiness'] = pd.to_numeric(df['Happiness'], errors='coerce') + before = len(df) + df = df.dropna(subset=['Happiness']) + logging.info('Dropped %d rows without numeric Happiness', before - len(df)) + + return df + + +def descriptive_stats(df): + print('Dataset shape:', df.shape) + print('\nOverall summary:') + print(df['Happiness'].describe()) + + if 'Group' in df.columns: + print('\nRows by group:') + print(df['Group'].value_counts()) + + print('\nAverage happiness by group:') + print(df.groupby('Group')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nAverage happiness by number of habits completed:') + print(df.groupby('Habits_Count')['Happiness'].agg(['mean', 'count', 'std']).round(3)) + + print('\nMedian happiness by habits:') + print(df.groupby('Habits_Count')['Happiness'].median()) + + # Correlations + print('\nPearson correlation between Habits_Count and Happiness:') + print(df[['Habits_Count', 'Happiness']].corr().round(3)) + + print('\nPoint-biserial correlation (each habit vs happiness, intervention group only):') + habit_df = df[df['Group'] == 'Intervention'] if 'Group' in df.columns else df + for habit in ['Calendar_Adherence', 'Cleanliness_Adherence', 'Punctuality_Adherence']: + mask = ~habit_df[habit].isna() + if mask.sum() == 0: + print(f'{habit:22} (no data)') + continue + r, p = stats.pointbiserialr(habit_df.loc[mask, habit].astype(int), habit_df.loc[mask, 'Happiness']) + print(f"{habit:22} r = {r:.3f} p = {p:.4f}") + + +def cohen_d(x, y): + # Cohen's d for two independent samples + nx, ny = len(x), len(y) + dof = nx + ny - 2 + pooled_sd = np.sqrt(((nx - 1) * x.std(ddof=1) ** 2 + (ny - 1) * y.std(ddof=1) ** 2) / dof) + return (x.mean() - y.mean()) / pooled_sd + + +def run_ols(df): + if 'Group' in df.columns: + model = smf.ols('Happiness ~ Habits_Count + C(Group)', data=df).fit() + print('\nOLS regression: Happiness ~ Habits_Count + Group') + else: + X = sm.add_constant(df['Habits_Count']) + y = df['Happiness'] + model = sm.OLS(y, X).fit() + print('\nSimple OLS regression: Happiness ~ Habits_Count') + print(model.summary()) + return model + + +def run_mixedlm(df): + # Random intercept for Participant_ID + try: + md = smf.mixedlm('Happiness ~ Habits_Count', data=df, groups=df['Participant_ID']) + mdf = md.fit(reml=False) + print('\nMixed-effects model (random intercept by Participant_ID):') + print(mdf.summary()) + return mdf + except Exception as e: + logging.warning('MixedLM failed: %s', e) + return None + + +def make_plots(df, outdir, show_plots=False): + outdir = Path(outdir) + outdir.mkdir(parents=True, exist_ok=True) + sns.set_style('whitegrid') + + # Boxplot by Habits_Count + plt.figure(figsize=(9, 6)) + sns.boxplot(data=df, x='Habits_Count', y='Happiness', color='#4C72B0') + plt.title('Daily Happiness by Number of Habits Completed') + plt.xlabel('Number of habits followed (0–3)') + plt.ylabel('Happiness (1–10)') + f1 = outdir / 'happiness_by_habits_box.png' + plt.tight_layout() + plt.savefig(f1) + if show_plots: + plt.show() + plt.close() + + # Violin / jitter + regression + plt.figure(figsize=(9, 6)) + sns.violinplot(data=df, x='Habits_Count', y='Happiness', inner=None, color='#55A868') + sns.stripplot(x='Habits_Count', y='Happiness', data=df, color='k', alpha=0.3, jitter=0.15) + plt.title('Happiness distribution by Habits Completed') + f2 = outdir / 'happiness_by_habits_violin.png' + plt.tight_layout() + plt.savefig(f2) + if show_plots: + plt.show() + plt.close() + + # Participant average bar + participant_avg = df.groupby('Participant_ID')['Happiness'].mean().sort_values() + plt.figure(figsize=(12, 5)) + sns.barplot(x=range(len(participant_avg)), y=participant_avg.values, color='#C44E52') + plt.axhline(df['Happiness'].mean(), color='black', linestyle='--', alpha=0.6) + plt.xticks(range(len(participant_avg)), participant_avg.index, rotation=45) + plt.title('Average Happiness per Participant (sorted)') + f3 = outdir / 'participant_avg_happiness.png' + plt.tight_layout() + plt.savefig(f3) + if show_plots: + plt.show() + plt.close() + + if 'Group' in df.columns: + plt.figure(figsize=(7, 5)) + sns.barplot(data=df, x='Group', y='Happiness', estimator='mean', errorbar='sd', color='#8172B2') + plt.title('Mean Happiness by Group') + plt.ylabel('Average happiness') + f_group = outdir / 'happiness_by_group.png' + plt.tight_layout() + plt.savefig(f_group) + if show_plots: + plt.show() + plt.close() + + # Scatter with linear fit + plt.figure(figsize=(9, 6)) + if 'Group' in df.columns: + sns.scatterplot(data=df, x='Habits_Count', y='Happiness', hue='Group', alpha=0.35) + else: + sns.regplot(x='Habits_Count', y='Happiness', data=df, x_jitter=0.18, scatter_kws={'alpha': 0.4}) + plt.title('Happiness vs Number of Habits Completed (with linear fit)') + f4 = outdir / 'happiness_vs_habits_regression.png' + plt.tight_layout() + plt.savefig(f4) + if show_plots: + plt.show() + plt.close() + + logging.info('Saved plots to %s', outdir) + + +def main(args): + df = load_data(args.data) + df = prepare_data(df) + + descriptive_stats(df) + + # Effect sizes + group0 = df[df['Habits_Count'] == 0]['Happiness'] + group3 = df[df['Habits_Count'] == 3]['Happiness'] + if len(group0) > 1 and len(group3) > 1: + d = cohen_d(group3, group0) + print(f"\nCohen's d (3 habits vs 0 habits) = {d:.3f}") + + if 'Group' in df.columns: + control = df[df['Group'] == 'Control']['Happiness'] + intervention = df[df['Group'] == 'Intervention']['Happiness'] + if len(control) > 1 and len(intervention) > 1: + d_group = cohen_d(intervention, control) + print(f"Cohen's d (Intervention vs Control happiness) = {d_group:.3f}") + + # Models + run_ols(df) + run_mixedlm(df) + + # Plots + make_plots(df, args.outdir, show_plots=args.show) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Improved data analysis for organization_happiness_study_data.csv') + parser.add_argument('--data', type=str, default='organization_happiness_study_data.csv', help='CSV data path') + parser.add_argument('--outdir', type=str, default='plots', help='Directory to save plots') + parser.add_argument('--show', action='store_true', help='Show plots interactively') + args = parser.parse_args() + main(args) \ No newline at end of file diff --git a/dot_config/private_Code/User/chatLanguageModels.json b/dot_config/private_Code/User/chatLanguageModels.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/dot_config/private_Code/User/chatLanguageModels.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/15f13b33-3dc7-40aa-8a44-bc553620d024.jsonl b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/15f13b33-3dc7-40aa-8a44-bc553620d024.jsonl new file mode 100644 index 0000000..01d4cad --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/15f13b33-3dc7-40aa-8a44-bc553620d024.jsonl @@ -0,0 +1,3 @@ +{"kind":0,"v":{"version":3,"creationDate":1771726602463,"initialLocation":"panel","responderUsername":"","sessionId":"15f13b33-3dc7-40aa-8a44-bc553620d024","hasPendingEdits":false,"requests":[],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}}} +{"kind":1,"k":["responderUsername"],"v":"GitHub Copilot"} +{"kind":1,"k":["inputState","selectedModel"],"v":{"identifier":"copilot/gpt-5-mini","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5-mini","vendor":"copilot","name":"GPT-5 mini","family":"gpt-5-mini","tooltip":"Rate is counted at 0x.","version":"gpt-5-mini","multiplier":"0x","maxInputTokens":127805,"maxOutputTokens":64000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":true,"terminal":true,"notebook":true,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Standard Models","order":0},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}}} diff --git a/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/5ac4e9c8-7d0c-4bfc-99ab-f2186f80b5f1.jsonl b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/5ac4e9c8-7d0c-4bfc-99ab-f2186f80b5f1.jsonl new file mode 100644 index 0000000..7a1f422 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/5ac4e9c8-7d0c-4bfc-99ab-f2186f80b5f1.jsonl @@ -0,0 +1 @@ +{"kind":0,"v":{"version":3,"creationDate":1774939316365,"customTitle":"Connection error diagnosis request","initialLocation":"panel","responderUsername":"GitHub Copilot","sessionId":"5ac4e9c8-7d0c-4bfc-99ab-f2186f80b5f1","hasPendingEdits":false,"requests":[{"requestId":"request_c7830057-d8e9-42c9-aa1b-c368110ebef9","timestamp":1774939316703,"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_dcbb0c20-6bcb-41c7-adbd-63716ac3d0b6","modelState":{"value":0},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774939316703,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]}],"message":{"text":"@remote-ssh diagnose my last connection error","parts":[{"range":{"start":0,"endExclusive":11},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":12},"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"kind":"agent"},{"range":{"start":11,"endExclusive":45},"editorRange":{"startLineNumber":1,"startColumn":12,"endLineNumber":1,"endColumn":46},"text":" diagnose my last connection error","kind":"text"}]},"variableData":{"variables":[]}}],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"ask","kind":"ask"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"@remote-ssh ","selections":[{"startLineNumber":1,"startColumn":13,"endLineNumber":1,"endColumn":13,"selectionStartLineNumber":1,"selectionStartColumn":13,"positionLineNumber":1,"positionColumn":13}],"contrib":{"chatDynamicVariableModel":[]}}}} diff --git a/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/774290be-a51d-442b-9810-d3d5a353019f.jsonl b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/774290be-a51d-442b-9810-d3d5a353019f.jsonl new file mode 100644 index 0000000..bde94d1 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/774290be-a51d-442b-9810-d3d5a353019f.jsonl @@ -0,0 +1,13 @@ +{"kind":0,"v":{"version":3,"creationDate":1774941619995,"customTitle":"Connection error diagnosis request","initialLocation":"panel","responderUsername":"GitHub Copilot","sessionId":"774290be-a51d-442b-9810-d3d5a353019f","hasPendingEdits":false,"requests":[{"requestId":"request_1d9a9457-0f2d-4b72-9e27-8c60518aaf47","timestamp":1774941620318,"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_2b480d92-2c63-46ee-9a22-c99cb6342e8d","result":{"timings":{"firstProgress":30255,"totalElapsed":33402},"metadata":{"toolCallsMetadata":{"toolCallResults":{},"toolCallRounds":[]}}},"responseMarkdownInfo":[{"suggestionId":"sgt-0b1ba470-d41e-4a9d-a591-684f6d459f0b"},{"suggestionId":"sgt-a8e8025f-5aec-4d00-b2f7-8ccc45de8270"}],"followups":[],"modelState":{"value":1,"completedAt":1774941655216},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774941620319,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]},{"value":"### Diagnosis\n\nYour last failure is **not** an SSH reachability/auth problem. \nThe SSH connection succeeds, then the remote bootstrap fails and times out.\n\nKey evidence from your log:\n\n- `Connection established.`\n- `Authenticated ... using \"none\".`\n- then: `unknown option: --fish`\n- then: `Resolver error: ... timed out`\n\nSo the likely root cause is a **remote shell/config command** being invoked with an invalid `--fish` argument (often from remote shell init or SSH host config), which prevents the VS Code server startup script from running.\n\n---\n\n### What to check first\n\n1. **Inspect `~/.ssh/config` host entry** (`line 14` in your log) for `atlas.tail...` \n Remove/fix anything that injects shell commands/options (especially `RemoteCommand`, custom wrappers, or anything passing `--fish`).\n\n2. **Test the exact SSH command outside VS Code**:\n```bash\nssh -v -T -D 46201 -o ConnectTimeout=15 atlas.tail4806cb.ts.net\n```\n\n3. **Test non-interactive remote command execution**:\n```bash\necho 'echo hello' | ssh -v -T atlas.tail4806cb.ts.net\n```\n\nIf this fails similarly, the issue is in remote shell startup/config.\n\n4. In VS Code settings, try:\n- `\"remote.SSH.useExecServer\": false`\n- `\"remote.SSH.useLocalServer\": false`\n- `\"remote.SSH.showLoginTerminal\": true`\n\nThen retry connection to reveal hidden prompts/errors.\n\n---\n\n### Why timeout happened\n\nThe extension waited for server bootstrap output, but the remote side errored (`unknown option: --fish`) before startup completed, so it ended as **Timeout**.","supportThemeIcons":false,"supportHtml":false}],"message":{"text":"@remote-ssh diagnose my last connection error","parts":[{"range":{"start":0,"endExclusive":11},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":12},"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"kind":"agent"},{"range":{"start":11,"endExclusive":45},"editorRange":{"startLineNumber":1,"startColumn":12,"endLineNumber":1,"endColumn":46},"text":" diagnose my last connection error","kind":"text"}]},"variableData":{"variables":[]}}],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"ask","kind":"ask"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"@remote-ssh ","selections":[{"startLineNumber":1,"startColumn":13,"endLineNumber":1,"endColumn":13,"selectionStartLineNumber":1,"selectionStartColumn":13,"positionLineNumber":1,"positionColumn":13}],"contrib":{"chatDynamicVariableModel":[]}}}} +{"kind":1,"k":["inputState","inputText"],"v":"@remote-ssh the --fish is likf"} +{"kind":1,"k":["inputState","selections"],"v":[{"startLineNumber":1,"startColumn":31,"endLineNumber":1,"endColumn":31,"selectionStartLineNumber":1,"selectionStartColumn":31,"positionLineNumber":1,"positionColumn":31}]} +{"kind":2,"k":["requests"],"v":[{"requestId":"request_c5391d92-7f8b-481f-a32d-c5a4f81f6197","timestamp":1774941787113,"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_bb6f96bf-3763-455d-8348-575cb25ee29b","modelState":{"value":0},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774941787113,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]}],"message":{"text":"@remote-ssh the --fish is likely due to both my server and current device using fish","parts":[{"range":{"start":0,"endExclusive":11},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":12},"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"kind":"agent"},{"range":{"start":11,"endExclusive":84},"editorRange":{"startLineNumber":1,"startColumn":12,"endLineNumber":1,"endColumn":85},"text":" the --fish is likely due to both my server and current device using fish","kind":"text"}]},"variableData":{"variables":[]}}]} +{"kind":1,"k":["inputState","inputText"],"v":"@remote-ssh "} +{"kind":1,"k":["inputState","selections"],"v":[{"startLineNumber":1,"startColumn":13,"endLineNumber":1,"endColumn":13,"selectionStartLineNumber":1,"selectionStartColumn":13,"positionLineNumber":1,"positionColumn":13}]} +{"kind":2,"k":["requests"],"v":[{"requestId":"request_65a711dc-1b17-43d9-8d67-f10e984425d0","timestamp":1774941810602,"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_ae81d980-5ba6-4a3b-8db0-3d8851429644","result":{"errorDetails":{"message":"Server error: 500","responseIsIncomplete":true,"isQuotaExceeded":false,"isRateLimited":false}},"followups":[],"modelState":{"value":3,"completedAt":1774941821867},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774941810602,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]}],"message":{"text":"@remote-ssh the --fish is likely due to both my server and current device using fish","parts":[{"range":{"start":0,"endExclusive":11},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":12},"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"kind":"agent"},{"range":{"start":11,"endExclusive":84},"editorRange":{"startLineNumber":1,"startColumn":12,"endLineNumber":1,"endColumn":85},"text":" the --fish is likely due to both my server and current device using fish","kind":"text"}]},"variableData":{"variables":[]}}],"i":1} +{"kind":2,"k":["requests"],"v":[{"requestId":"request_88935538-c600-4def-9d30-3fdab4831480","timestamp":1774941869708,"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_5aa510e4-5966-466e-a5c1-0dd89ffefb0b","result":{"timings":{"firstProgress":11640,"totalElapsed":15698},"metadata":{"toolCallsMetadata":{"toolCallResults":{},"toolCallRounds":[]}}},"followups":[],"modelState":{"value":1,"completedAt":1774941885481},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774941869708,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]},{"value":"Yes — **fish can be involved**, but not simply because both sides use fish.\n\nThe key issue is likely that something in your SSH path is passing a literal `--fish` argument to a command that does not support it.\n\nFrom your log:\n- SSH auth succeeds.\n- Then remote bootstrap prints `unknown option: --fish`.\n- Then it times out.\n\n### Most likely sources\n- `~/.ssh/config` host entry (line 14 in your log), especially `RemoteCommand`, `ProxyCommand`, or wrapper scripts.\n- Remote shell startup files (`~/.config/fish/config.fish`, `/etc/fish/config.fish`) running commands during non-interactive SSH sessions.\n\n### Quick checks\n1. Inspect host config:\n```ssh-config\nHost atlas.tail4806cb.ts.net\n # remove/test any RemoteCommand/ProxyCommand wrappers\n```\n\n2. Test raw SSH command outside VS Code:\n```bash\nssh -v -T atlas.tail4806cb.ts.net\n```\n\n3. Test piped command (matches VS Code bootstrap style):\n```bash\necho 'echo hello' | ssh -v -T atlas.tail4806cb.ts.net\n```\n\n4. In VS Code, try:\n- `remote.SSH.useExecServer: false`\n- `remote.SSH.useLocalServer: false`\n- `remote.SSH.showLoginTerminal: true`\n\nIf you share your `Host atlas.tail...` SSH config block, I can point to the exact problematic line.","supportThemeIcons":false,"supportHtml":false}],"message":{"text":"@remote-ssh the --fish is likely due to both my server and current device using fish","parts":[{"range":{"start":0,"endExclusive":11},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":12},"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"kind":"agent"},{"range":{"start":11,"endExclusive":84},"editorRange":{"startLineNumber":1,"startColumn":12,"endLineNumber":1,"endColumn":85},"text":" the --fish is likely due to both my server and current device using fish","kind":"text"}]},"variableData":{"variables":[]}}],"i":1} +{"kind":2,"k":["requests"],"v":[{"requestId":"request_a0ca68fc-678a-4dd2-b385-17db55878ab0","timestamp":1774941961943,"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_441a6a6c-22bc-461e-92e9-afc6d97f5f54","modelState":{"value":0},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774941961944,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]}],"message":{"text":"@remote-ssh you can have a look","parts":[{"range":{"start":0,"endExclusive":11},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":12},"agent":{"extensionId":{"value":"ms-vscode-remote.remote-ssh","_lower":"ms-vscode-remote.remote-ssh"},"extensionVersion":"0.122.0","publisherDisplayName":"Microsoft","extensionPublisherId":"ms-vscode-remote","extensionDisplayName":"Remote - SSH","id":"remote-ssh","description":"Learn about Remote - SSH and diagnose connection issues","when":"config.remote.SSH.experimental.chat","metadata":{"isSticky":true,"themeIcon":{"id":"remote"},"hasFollowups":false},"name":"remote-ssh","fullName":"Remote - SSH","locations":["panel"],"modes":["agent","ask","edit"],"slashCommands":[],"disambiguation":[]},"kind":"agent"},{"range":{"start":11,"endExclusive":31},"editorRange":{"startLineNumber":1,"startColumn":12,"endLineNumber":1,"endColumn":32},"text":" you can have a look","kind":"text"}]},"variableData":{"variables":[]}}]} +{"kind":1,"k":["inputState","mode"],"v":{"id":"agent","kind":"agent"}} +{"kind":1,"k":["requests",2,"result"],"v":{"errorDetails":{"message":"Server error: 504","responseIsIncomplete":true,"isQuotaExceeded":false,"isRateLimited":false}}} +{"kind":1,"k":["requests",2,"followups"],"v":[]} +{"kind":1,"k":["requests",2,"modelState"],"v":{"value":3,"completedAt":1774942624649}} diff --git a/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/93153c4c-abc7-42d0-a6c8-ddaf556cfb10.jsonl b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/93153c4c-abc7-42d0-a6c8-ddaf556cfb10.jsonl new file mode 100644 index 0000000..8262b3e --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/emptyWindowChatSessions/93153c4c-abc7-42d0-a6c8-ddaf556cfb10.jsonl @@ -0,0 +1,3 @@ +{"kind":0,"v":{"version":3,"creationDate":1775014837233,"initialLocation":"panel","responderUsername":"","sessionId":"93153c4c-abc7-42d0-a6c8-ddaf556cfb10","hasPendingEdits":false,"requests":[],"pendingRequests":[]}} +{"kind":1,"k":["responderUsername"],"v":"GitHub Copilot"} +{"kind":1,"k":["inputState"],"v":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"GPT-5.3-Codex is currently experiencing degraded performance due to issues with the model upstream provider. We are actively working to resolve the issue. In the meantime, you might want to use Auto or a different model. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"statusIcon":{"id":"warning"},"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}} diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilot.cli.workspaceSessions.c5981b2c-1e8f-4ec9-99a0-923d51711de8.json b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilot.cli.workspaceSessions.c5981b2c-1e8f-4ec9-99a0-923d51711de8.json new file mode 100644 index 0000000..c376bd9 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilot.cli.workspaceSessions.c5981b2c-1e8f-4ec9-99a0-923d51711de8.json @@ -0,0 +1 @@ +11cce4da-1080-468f-b2b6-e1415670b45b \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.js b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.js new file mode 100644 index 0000000..d789400 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.js @@ -0,0 +1,4 @@ +"use strict";var Ce=Object.create;var te=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var we=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of xe(t))!ve.call(e,r)&&r!==n&&te(e,r,{get:()=>t[r],enumerable:!(i=Ae(t,r))||i.enumerable});return e};var Le=(e,t,n)=>(n=e!=null?Ce(be(e)):{},we(t||!e||!e.__esModule?te(n,"default",{value:e,enumerable:!0}):n,e));var V=require("child_process"),ue=Le(require("readline"));function B(){return globalThis._VSCODE_NLS_LANGUAGE}var Je=B()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0;var R="en",G=!1,H=!1,M=!1,Ie=!1,Se=!1,re=!1,ye=!1,$e=!1,_e=!1,Ee=!1,z,F=R,ne=R,Ne,L,P=globalThis,A;typeof P.vscode<"u"&&typeof P.vscode.process<"u"?A=P.vscode.process:typeof process<"u"&&typeof process?.versions?.node=="string"&&(A=process);var ie=typeof A?.versions?.electron=="string",ke=ie&&A?.type==="renderer";if(typeof A=="object"){G=A.platform==="win32",H=A.platform==="darwin",M=A.platform==="linux",Ie=M&&!!A.env.SNAP&&!!A.env.SNAP_REVISION,ye=ie,_e=!!A.env.CI||!!A.env.BUILD_ARTIFACTSTAGINGDIRECTORY||!!A.env.GITHUB_WORKSPACE,z=R,F=R;let e=A.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);z=t.userLocale,ne=t.osLocale,F=t.resolvedLanguage||R,Ne=t.languagePack?.translationsConfigFile}catch{}Se=!0}else typeof navigator=="object"&&!ke?(L=navigator.userAgent,G=L.indexOf("Windows")>=0,H=L.indexOf("Macintosh")>=0,$e=(L.indexOf("Macintosh")>=0||L.indexOf("iPad")>=0||L.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,M=L.indexOf("Linux")>=0,Ee=L?.indexOf("Mobi")>=0,re=!0,F=B()||R,z=navigator.language.toLowerCase(),ne=z):console.error("Unable to resolve platform.");var Q=0;H?Q=1:G?Q=3:M&&(Q=2);var oe=G,se=H;var Re=re&&typeof P.importScripts=="function",Xe=Re?P.origin:void 0;var w=L,$=F,Oe;(i=>{function e(){return $}i.value=e;function t(){return $.length===2?$==="en":$.length>=3?$[0]==="e"&&$[1]==="n"&&$[2]==="-":!1}i.isDefaultVariant=t;function n(){return $==="en"}i.isDefault=n})(Oe||={});var We=typeof P.postMessage=="function"&&!P.importScripts,et=(()=>{if(We){let e=[];P.addEventListener("message",n=>{if(n.data&&n.data.vscodeScheduleAsyncWork)for(let i=0,r=e.length;i{let i=++t;e.push({id:i,callback:n}),P.postMessage({vscodeScheduleAsyncWork:i},"*")}}return e=>setTimeout(e)})();var Te=!!(w&&w.indexOf("Chrome")>=0),tt=!!(w&&w.indexOf("Firefox")>=0),nt=!!(!Te&&w&&w.indexOf("Safari")>=0),rt=!!(w&&w.indexOf("Edg/")>=0),it=!!(w&&w.indexOf("Android")>=0);var E,Y=globalThis.vscode;if(typeof Y<"u"&&typeof Y.process<"u"){let e=Y.process;E={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else typeof process<"u"&&typeof process?.versions?.node=="string"?E={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:E={get platform(){return oe?"win32":se?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};var W=E.cwd,le=E.env,ae=E.platform,at=E.arch;var ze=65,Me=97,Fe=90,Ge=122,N=46,C=47,x=92,I=58,He=63,U=class extends Error{constructor(t,n,i){let r;typeof n=="string"&&n.indexOf("not ")===0?(r="must not be",n=n.replace(/^not /,"")):r="must be";let s=t.indexOf(".")!==-1?"property":"argument",l=`The "${t}" ${s} ${r} of type ${n}`;l+=`. Received type ${typeof i}`,super(l),this.code="ERR_INVALID_ARG_TYPE"}};function Ue(e,t){if(e===null||typeof e!="object")throw new U(t,"Object",e)}function h(e,t){if(typeof e!="string")throw new U(t,"string",e)}var b=ae==="win32";function d(e){return e===C||e===x}function q(e){return e===C}function S(e){return e>=ze&&e<=Fe||e>=Me&&e<=Ge}function j(e,t,n,i){let r="",s=0,l=-1,o=0,a=0;for(let c=0;c<=e.length;++c){if(c2){let g=r.lastIndexOf(n);g===-1?(r="",s=0):(r=r.slice(0,g),s=r.length-1-r.lastIndexOf(n)),l=c,o=0;continue}else if(r.length!==0){r="",s=0,l=c,o=0;continue}}t&&(r+=r.length>0?`${n}..`:"..",s=2)}else r.length>0?r+=`${n}${e.slice(l+1,c)}`:r=e.slice(l+1,c),s=c-l-1;l=c,o=0}else a===N&&o!==-1?++o:o=-1}return r}function je(e){return e?`${e[0]==="."?"":"."}${e}`:""}function ce(e,t){Ue(t,"pathObject");let n=t.dir||t.root,i=t.base||`${t.name||""}${je(t.ext)}`;return n?n===t.root?`${n}${i}`:`${n}${e}${i}`:i}var m={resolve(...e){let t="",n="",i=!1;for(let r=e.length-1;r>=-1;r--){let s;if(r>=0){if(s=e[r],h(s,`paths[${r}]`),s.length===0)continue}else t.length===0?s=W():(s=le[`=${t}`]||W(),(s===void 0||s.slice(0,2).toLowerCase()!==t.toLowerCase()&&s.charCodeAt(2)===x)&&(s=`${t}\\`));let l=s.length,o=0,a="",c=!1,g=s.charCodeAt(0);if(l===1)d(g)&&(o=1,c=!0);else if(d(g))if(c=!0,d(s.charCodeAt(1))){let f=2,u=f;for(;f2&&d(s.charCodeAt(2))&&(c=!0,o=3));if(a.length>0)if(t.length>0){if(a.toLowerCase()!==t.toLowerCase())continue}else t=a;if(i){if(t.length>0)break}else if(n=`${s.slice(o)}\\${n}`,i=c,c&&t.length>0)break}return n=j(n,!i,"\\",d),i?`${t}\\${n}`:`${t}${n}`||"."},normalize(e){h(e,"path");let t=e.length;if(t===0)return".";let n=0,i,r=!1,s=e.charCodeAt(0);if(t===1)return q(s)?"\\":e;if(d(s))if(r=!0,d(e.charCodeAt(1))){let o=2,a=o;for(;o2&&d(e.charCodeAt(2))&&(r=!0,n=3));let l=n0&&d(e.charCodeAt(t-1))&&(l+="\\"),!r&&i===void 0&&e.includes(":")){if(l.length>=2&&S(l.charCodeAt(0))&&l.charCodeAt(1)===I)return`.\\${l}`;let o=e.indexOf(":");do if(o===t-1||d(e.charCodeAt(o+1)))return`.\\${l}`;while((o=e.indexOf(":",o+1))!==-1)}return i===void 0?r?`\\${l}`:l:r?`${i}\\${l}`:`${i}${l}`},isAbsolute(e){h(e,"path");let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return d(n)||t>2&&S(n)&&e.charCodeAt(1)===I&&d(e.charCodeAt(2))},join(...e){if(e.length===0)return".";let t,n;for(let s=0;s0&&(t===void 0?t=n=l:t+=`\\${l}`)}if(t===void 0)return".";let i=!0,r=0;if(typeof n=="string"&&d(n.charCodeAt(0))){++r;let s=n.length;s>1&&d(n.charCodeAt(1))&&(++r,s>2&&(d(n.charCodeAt(2))?++r:i=!1))}if(i){for(;r=2&&(t=`\\${t.slice(r)}`)}return m.normalize(t)},relative(e,t){if(h(e,"from"),h(t,"to"),e===t)return"";let n=m.resolve(e),i=m.resolve(t);if(n===i||(e=n.toLowerCase(),t=i.toLowerCase(),e===t))return"";if(n.length!==e.length||i.length!==t.length){let y=n.split("\\"),_=i.split("\\");y[y.length-1]===""&&y.pop(),_[_.length-1]===""&&_.pop();let O=y.length,K=_.length,D=OD?_.slice(v).join("\\"):O>D?"..\\".repeat(O-1-v)+"..":"":"..\\".repeat(O-v)+_.slice(v).join("\\")}let r=0;for(;rr&&e.charCodeAt(s-1)===x;)s--;let l=s-r,o=0;for(;oo&&t.charCodeAt(a-1)===x;)a--;let c=a-o,g=lg){if(t.charCodeAt(o+u)===x)return i.slice(o+u+1);if(u===2)return i.slice(o+u)}l>g&&(e.charCodeAt(r+u)===x?f=u:u===2&&(f=3)),f===-1&&(f=0)}let k="";for(u=r+f+1;u<=s;++u)(u===s||e.charCodeAt(u)===x)&&(k+=k.length===0?"..":"\\..");return o+=f,k.length>0?`${k}${i.slice(o,a)}`:(i.charCodeAt(o)===x&&++o,i.slice(o,a))},toNamespacedPath(e){if(typeof e!="string"||e.length===0)return e;let t=m.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===x){if(t.charCodeAt(1)===x){let n=t.charCodeAt(2);if(n!==He&&n!==N)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(S(t.charCodeAt(0))&&t.charCodeAt(1)===I&&t.charCodeAt(2)===x)return`\\\\?\\${t}`;return t},dirname(e){h(e,"path");let t=e.length;if(t===0)return".";let n=-1,i=0,r=e.charCodeAt(0);if(t===1)return d(r)?e:".";if(d(r)){if(n=i=1,d(e.charCodeAt(1))){let o=2,a=o;for(;o2&&d(e.charCodeAt(2))?3:2,i=n);let s=-1,l=!0;for(let o=t-1;o>=i;--o)if(d(e.charCodeAt(o))){if(!l){s=o;break}}else l=!1;if(s===-1){if(n===-1)return".";s=n}return e.slice(0,s)},basename(e,t){t!==void 0&&h(t,"suffix"),h(e,"path");let n=0,i=-1,r=!0,s;if(e.length>=2&&S(e.charCodeAt(0))&&e.charCodeAt(1)===I&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return"";let l=t.length-1,o=-1;for(s=e.length-1;s>=n;--s){let a=e.charCodeAt(s);if(d(a)){if(!r){n=s+1;break}}else o===-1&&(r=!1,o=s+1),l>=0&&(a===t.charCodeAt(l)?--l===-1&&(i=s):(l=-1,i=o))}return n===i?i=o:i===-1&&(i=e.length),e.slice(n,i)}for(s=e.length-1;s>=n;--s)if(d(e.charCodeAt(s))){if(!r){n=s+1;break}}else i===-1&&(r=!1,i=s+1);return i===-1?"":e.slice(n,i)},extname(e){h(e,"path");let t=0,n=-1,i=0,r=-1,s=!0,l=0;e.length>=2&&e.charCodeAt(1)===I&&S(e.charCodeAt(0))&&(t=i=2);for(let o=e.length-1;o>=t;--o){let a=e.charCodeAt(o);if(d(a)){if(!s){i=o+1;break}continue}r===-1&&(s=!1,r=o+1),a===N?n===-1?n=o:l!==1&&(l=1):n!==-1&&(l=-1)}return n===-1||r===-1||l===0||l===1&&n===r-1&&n===i+1?"":e.slice(n,r)},format:ce.bind(null,"\\"),parse(e){h(e,"path");let t={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return t;let n=e.length,i=0,r=e.charCodeAt(0);if(n===1)return d(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(d(r)){if(i=1,d(e.charCodeAt(1))){let f=2,u=f;for(;f0&&(t.root=e.slice(0,i));let s=-1,l=i,o=-1,a=!0,c=e.length-1,g=0;for(;c>=i;--c){if(r=e.charCodeAt(c),d(r)){if(!a){l=c+1;break}continue}o===-1&&(a=!1,o=c+1),r===N?s===-1?s=c:g!==1&&(g=1):s!==-1&&(g=-1)}return o!==-1&&(s===-1||g===0||g===1&&s===o-1&&s===l+1?t.base=t.name=e.slice(l,o):(t.name=e.slice(l,s),t.base=e.slice(l,o),t.ext=e.slice(s,o))),l>0&&l!==i?t.dir=e.slice(0,l-1):t.dir=t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},Ve=(()=>{if(b){let e=/\\/g;return()=>{let t=W().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>W()})(),p={resolve(...e){let t="",n=!1;for(let i=e.length-1;i>=0&&!n;i--){let r=e[i];h(r,`paths[${i}]`),r.length!==0&&(t=`${r}/${t}`,n=r.charCodeAt(0)===C)}if(!n){let i=Ve();t=`${i}/${t}`,n=i.charCodeAt(0)===C}return t=j(t,!n,"/",q),n?`/${t}`:t.length>0?t:"."},normalize(e){if(h(e,"path"),e.length===0)return".";let t=e.charCodeAt(0)===C,n=e.charCodeAt(e.length-1)===C;return e=j(e,!t,"/",q),e.length===0?t?"/":n?"./":".":(n&&(e+="/"),t?`/${e}`:e)},isAbsolute(e){return h(e,"path"),e.length>0&&e.charCodeAt(0)===C},join(...e){if(e.length===0)return".";let t=[];for(let n=0;n0&&t.push(i)}return t.length===0?".":p.normalize(t.join("/"))},relative(e,t){if(h(e,"from"),h(t,"to"),e===t||(e=p.resolve(e),t=p.resolve(t),e===t))return"";let n=1,i=e.length,r=i-n,s=1,l=t.length-s,o=ro){if(t.charCodeAt(s+c)===C)return t.slice(s+c+1);if(c===0)return t.slice(s+c)}else r>o&&(e.charCodeAt(n+c)===C?a=c:c===0&&(a=0));let g="";for(c=n+a+1;c<=i;++c)(c===i||e.charCodeAt(c)===C)&&(g+=g.length===0?"..":"/..");return`${g}${t.slice(s+a)}`},toNamespacedPath(e){return e},dirname(e){if(h(e,"path"),e.length===0)return".";let t=e.charCodeAt(0)===C,n=-1,i=!0;for(let r=e.length-1;r>=1;--r)if(e.charCodeAt(r)===C){if(!i){n=r;break}}else i=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)},basename(e,t){t!==void 0&&h(t,"suffix"),h(e,"path");let n=0,i=-1,r=!0,s;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return"";let l=t.length-1,o=-1;for(s=e.length-1;s>=0;--s){let a=e.charCodeAt(s);if(a===C){if(!r){n=s+1;break}}else o===-1&&(r=!1,o=s+1),l>=0&&(a===t.charCodeAt(l)?--l===-1&&(i=s):(l=-1,i=o))}return n===i?i=o:i===-1&&(i=e.length),e.slice(n,i)}for(s=e.length-1;s>=0;--s)if(e.charCodeAt(s)===C){if(!r){n=s+1;break}}else i===-1&&(r=!1,i=s+1);return i===-1?"":e.slice(n,i)},extname(e){h(e,"path");let t=-1,n=0,i=-1,r=!0,s=0;for(let l=e.length-1;l>=0;--l){let o=e[l];if(o==="/"){if(!r){n=l+1;break}continue}i===-1&&(r=!1,i=l+1),o==="."?t===-1?t=l:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||i===-1||s===0||s===1&&t===i-1&&t===n+1?"":e.slice(t,i)},format:ce.bind(null,"/"),parse(e){h(e,"path");let t={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return t;let n=e.charCodeAt(0)===C,i;n?(t.root="/",i=1):i=0;let r=-1,s=0,l=-1,o=!0,a=e.length-1,c=0;for(;a>=i;--a){let g=e.charCodeAt(a);if(g===C){if(!o){s=a+1;break}continue}l===-1&&(o=!1,l=a+1),g===N?r===-1?r=a:c!==1&&(c=1):r!==-1&&(c=-1)}if(l!==-1){let g=s===0&&n?1:s;r===-1||c===0||c===1&&r===l-1&&r===s+1?t.base=t.name=e.slice(g,l):(t.name=e.slice(g,r),t.base=e.slice(g,l),t.ext=e.slice(r,l))}return s>0?t.dir=e.slice(0,s-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};p.win32=m.win32=m;p.posix=m.posix=p;var ct=b?m.normalize:p.normalize,ft=b?m.isAbsolute:p.isAbsolute,dt=b?m.join:p.join,ut=b?m.resolve:p.resolve,gt=b?m.relative:p.relative,ht=b?m.dirname:p.dirname,mt=b?m.basename:p.basename,pt=b?m.extname:p.extname,Ct=b?m.format:p.format,At=b?m.parse:p.parse,xt=b?m.toNamespacedPath:p.toNamespacedPath,bt=b?m.sep:p.sep,Z=b?m.delimiter:p.delimiter;var fe="0.0.394",J="@github/copilot",X={...process.env,PATH:(process.env.PATH||"").replaceAll(`${__dirname}${Z}`,"").replaceAll(`${Z}${__dirname}`,"")},ge=ue.createInterface({input:process.stdin,output:process.stdout});function Be(e){process.stdout.write(e+` +`)}function T(e){process.stderr.write(e+` +`)}function he(e){return new Promise(t=>{ge.question(`${e} ['y/N'] `,n=>{t(n.toLowerCase()[0]==="y")})})}function de(e){let t=e.replace(/^v/,"").split(".");return[0,1,2].map(n=>parseInt((t[n]||"0").replace(/[^0-9].*$/,""),10)||0)}function Qe(e,t){let n=de(e),i=de(t);for(let r=0;r<3;r++){if(n[r]>i[r])return!0;if(n[r]{ge.question(`${e}`,()=>{t()})}),process.exit(0)}(async function(){let t=await pe();t?.version&&await qe(t.version),t||(T("Error: Could not locate Copilot CLI after update."),await ee(`Try manually reinstalling with: npm install -g ${J} (https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli)`));let n=process.argv.slice(2);n[0]==="--clear"&&(console.clear(),n.shift()),(0,V.spawnSync)("copilot",n,{stdio:"inherit",env:X}),process.exit(0)})(); +//!!! DO NOT modify, this file was COPIED from 'microsoft/vscode' diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.ps1 b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.ps1 new file mode 100644 index 0000000..04d2c03 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.ps1 @@ -0,0 +1,219 @@ +#--------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +#--------------------------------------------------------------------------------------------- + +# Windows GitHub Copilot CLI bootstrapper +# +# Responsibilities: +# 1. Locate the real Copilot CLI binary (avoid recursion if this file shadows it). +# 2. Offer to install if missing (npm -g @github/copilot). +# 3. Enforce minimum version (>= REQUIRED_VERSION) with interactive update. +# 4. Execute the real binary with original arguments and exit with its status. +# +# NOTE: This file intentionally keeps logic self‑contained (no external deps) so it can be dropped into PATH directly. + +# Minimum required Copilot CLI version +$RequiredVersion = "0.0.394" +$PackageName = "@github/copilot" + +function Invoke-NpmGlobalCommand { + param( + [Parameter(Mandatory = $true)][ValidateSet('install', 'update')][string]$Command, + [Parameter(Mandatory = $true)][string]$Package + ) + + $npmArgs = @($Command, '-g', $Package) + + $npmCmd = Get-Command npm.cmd -ErrorAction SilentlyContinue + if ($npmCmd) { + & npm.cmd @npmArgs + } else { + & npm @npmArgs + } +} + +function Find-RealCopilot { + # Find the real copilot binary, avoiding this script if it's in PATH + $CurrentScript = $MyInvocation.PSCommandPath + if (-not $CurrentScript) { $CurrentScript = $PSCommandPath } + $CopilotPath = (Get-Command copilot -ErrorAction SilentlyContinue).Source + + # Check if the copilot command would point to this script + $CurrentScriptResolved = if ($CurrentScript) { (Resolve-Path $CurrentScript -ErrorAction SilentlyContinue).Path } else { $null } + $CopilotPathResolved = if ($CopilotPath) { (Resolve-Path $CopilotPath -ErrorAction SilentlyContinue).Path } else { $null } + + if ($CurrentScript -eq $CopilotPath -or (Split-Path $CurrentScript -Parent) -eq (Split-Path $CopilotPath -Parent) -or ($CurrentScriptResolved -and $CopilotPathResolved -and $CurrentScriptResolved -eq $CopilotPathResolved)) { + # The copilot in PATH is this script, find the real one by temporarily removing this script's directory from PATH + $ScriptDir = Split-Path $CurrentScript -Parent + $OldPath = $env:PATH + # Use appropriate path delimiter based on OS + $PathDelimiter = if ($IsWindows -or $env:OS -eq "Windows_NT") { ';' } else { ':' } + $env:PATH = ($env:PATH -split $PathDelimiter | Where-Object { $_ -ne $ScriptDir }) -join $PathDelimiter + $RealCopilot = (Get-Command copilot -ErrorAction SilentlyContinue).Source + $env:PATH = $OldPath + + if ($RealCopilot -and (Test-Path $RealCopilot)) { + return $RealCopilot + } else { + return $null + } + } else { + # The copilot in PATH is different from this script, use it + if ($CopilotPath -and (Test-Path $CopilotPath)) { + return $CopilotPath + } else { + return $null + } + } +} + +function Test-VersionCompatibility { + param([string]$Version) + $cleanInstalled = $Version -replace '^v','' + $cleanRequired = $RequiredVersion -replace '^v','' + try { + $installedVer = [version]$cleanInstalled + $requiredVer = [version]$cleanRequired + } catch { + return $false + } + return ($installedVer -ge $requiredVer) +} + +function Test-AndLaunchCopilot { + param([string[]]$Arguments) + + # Check if real copilot command exists + $realCopilot = Find-RealCopilot + if (-not $realCopilot) { + Write-Host "Cannot find GitHub Copilot CLI (https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli)" + $answer = Read-Host "Install GitHub Copilot CLI? (y/N)" + if ($answer -eq "y" -or $answer -eq "Y") { + try { + Invoke-NpmGlobalCommand -Command 'install' -Package $PackageName + if ($LASTEXITCODE -eq 0) { + Test-AndLaunchCopilot $Arguments + return + } else { + Read-Host "Installation failed. Please check your npm configuration and try again (or run: npm install -g @github/copilot)." + return + } + } catch { + Read-Host "Installation failed. Please check your npm configuration and try again (or run: npm install -g @github/copilot)." + return + } + } else { + exit 0 + } + } + + # Check version compatibility + $realCopilot = Find-RealCopilot + if (-not $realCopilot) { + Write-Host "Error: Unable to find copilot binary." + $answer = Read-Host "Would you like to reinstall GitHub Copilot CLI? (y/N)" + if ($answer -eq "y" -or $answer -eq "Y") { + Write-Host "Reinstalling GitHub Copilot CLI..." + try { + Invoke-NpmGlobalCommand -Command 'install' -Package $PackageName + if ($LASTEXITCODE -eq 0) { + Test-AndLaunchCopilot $Arguments + return + } else { + Read-Host "Reinstallation failed. Please check your npm configuration and try again (or run: npm install -g @github/copilot)." + return + } + } catch { + Read-Host "Reinstallation failed. Please check your npm configuration and try again (or run: npm install -g @github/copilot)." + return + } + } else { + exit 0 + } + } + + try { + $versionOutput = & $realCopilot --version 2>$null + if ($LASTEXITCODE -ne 0) { + throw "Command failed" + } + } catch { + # Write-Host "Error: Unable to check copilot version." + $answer = Read-Host "Would you like to reinstall GitHub Copilot CLI? (y/N)" + if ($answer -eq "y" -or $answer -eq "Y") { + try { + Invoke-NpmGlobalCommand -Command 'install' -Package $PackageName + if ($LASTEXITCODE -eq 0) { + Test-AndLaunchCopilot $Arguments + return + } else { + Read-Host "Reinstallation failed. Please check your npm configuration and try again (or run: npm install -g @github/copilot)." + return + } + } catch { + Read-Host "Reinstallation failed. Please check your npm configuration and try again (or run: npm install -g @github/copilot)." + return + } + } else { + exit 0 + } + } + + # Extract version number from output (search through all lines) + $version = $null + if ($versionOutput) { + foreach ($line in ($versionOutput -split "`n")) { + $trimmedLine = $line.Trim() + if ($trimmedLine -match '[0-9]+\.[0-9]+\.[0-9]+') { + $version = $matches[0] + break + } + } + } + + # Command succeeded - assume CLI is installed even if we can't parse the version + + # Only check version compatibility if we have a valid version + if ($version -and -not (Test-VersionCompatibility $version)) { + Write-Host "GitHub Copilot CLI version $version is not compatible." + Write-Host "Version $RequiredVersion or later is required." + $answer = Read-Host "Update GitHub Copilot CLI? (y/N)" + if ($answer -eq "y" -or $answer -eq "Y") { + try { + Invoke-NpmGlobalCommand -Command 'update' -Package $PackageName + if ($LASTEXITCODE -eq 0) { + Test-AndLaunchCopilot $Arguments + return + } else { + Read-Host "Update failed. Please check your npm configuration and try again (or run: npm update -g @github/copilot)." + return + } + } catch { + Read-Host "Update failed. Please check your npm configuration and try again (or run: npm update -g @github/copilot)." + return + } + } else { + exit 0 + } + } + + # All checks passed, execute the real copilot binary + $realCopilot = Find-RealCopilot + if ($realCopilot -and (Test-Path $realCopilot)) { + & $realCopilot @Arguments + } else { + Write-Host "Error: Could not find the real GitHub Copilot CLI binary" + Read-Host "Please ensure it's properly installed with: npm install -g @github/copilot" + return + } +} + +# Start the check and launch process +$finalArgs = $args +# Handle --clear argument +if ($args.Length -gt 0 -and $args[0] -eq '--clear') { + Clear-Host + $finalArgs = $args[1..($args.Length - 1)] +} + +Test-AndLaunchCopilot $finalArgs \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/executable_copilot b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/executable_copilot new file mode 100644 index 0000000..80c1cc2 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/copilotCli/executable_copilot @@ -0,0 +1,3 @@ +#!/bin/sh +unset NODE_OPTIONS +ELECTRON_RUN_AS_NODE=1 "/usr/share/code/code" "/home/breadway/.config/Code/User/globalStorage/github.copilot-chat/copilotCli/copilotCLIShim.js" "$@" \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/copilotDebugCommand.js b/dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/copilotDebugCommand.js new file mode 100644 index 0000000..a8e58e1 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/copilotDebugCommand.js @@ -0,0 +1,6 @@ +"use strict";var be=Object.create;var ee=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,Pe=Object.prototype.hasOwnProperty;var Se=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of we(t))!Pe.call(e,o)&&o!==n&&ee(e,o,{get:()=>t[o],enumerable:!(i=ve(t,o))||i.enumerable});return e};var Le=(e,t,n)=>(n=e!=null?be(ye(e)):{},Se(t||!e||!e.__esModule?ee(n,"default",{value:e,enumerable:!0}):n,e));var me=require("crypto"),xe=require("node:net"),Ce=require("os"),K=Le(require("readline"));function Y(){return globalThis._VSCODE_NLS_LANGUAGE}var tt=Y()==="pseudo"||typeof document<"u"&&document.location&&typeof document.location.hash=="string"&&document.location.hash.indexOf("pseudo=true")>=0;var k="en",U=!1,H=!1,z=!1,Ee=!1,_e=!1,ne=!1,$e=!1,Ne=!1,Re=!1,Oe=!1,T,j=k,te=k,ke,y,P=globalThis,C;typeof P.vscode<"u"&&typeof P.vscode.process<"u"?C=P.vscode.process:typeof process<"u"&&typeof process?.versions?.node=="string"&&(C=process);var re=typeof C?.versions?.electron=="string",Me=re&&C?.type==="renderer";if(typeof C=="object"){U=C.platform==="win32",H=C.platform==="darwin",z=C.platform==="linux",Ee=z&&!!C.env.SNAP&&!!C.env.SNAP_REVISION,$e=re,Re=!!C.env.CI||!!C.env.BUILD_ARTIFACTSTAGINGDIRECTORY||!!C.env.GITHUB_WORKSPACE,T=k,j=k;let e=C.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);T=t.userLocale,te=t.osLocale,j=t.resolvedLanguage||k,ke=t.languagePack?.translationsConfigFile}catch{}_e=!0}else typeof navigator=="object"&&!Me?(y=navigator.userAgent,U=y.indexOf("Windows")>=0,H=y.indexOf("Macintosh")>=0,Ne=(y.indexOf("Macintosh")>=0||y.indexOf("iPad")>=0||y.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,z=y.indexOf("Linux")>=0,Oe=y?.indexOf("Mobi")>=0,ne=!0,j=Y()||k,T=navigator.language.toLowerCase(),te=T):console.error("Unable to resolve platform.");var Q=0;H?Q=1:U?Q=3:z&&(Q=2);var se=U,ie=H;var De=ne&&typeof P.importScripts=="function",nt=De?P.origin:void 0;var w=y,_=j,We;(i=>{function e(){return _}i.value=e;function t(){return _.length===2?_==="en":_.length>=3?_[0]==="e"&&_[1]==="n"&&_[2]==="-":!1}i.isDefaultVariant=t;function n(){return _==="en"}i.isDefault=n})(We||={});var Fe=typeof P.postMessage=="function"&&!P.importScripts,rt=(()=>{if(Fe){let e=[];P.addEventListener("message",n=>{if(n.data&&n.data.vscodeScheduleAsyncWork)for(let i=0,o=e.length;i{let i=++t;e.push({id:i,callback:n}),P.postMessage({vscodeScheduleAsyncWork:i},"*")}}return e=>setTimeout(e)})();var Te=!!(w&&w.indexOf("Chrome")>=0),st=!!(w&&w.indexOf("Firefox")>=0),it=!!(!Te&&w&&w.indexOf("Safari")>=0),ot=!!(w&&w.indexOf("Edg/")>=0),lt=!!(w&&w.indexOf("Android")>=0);var N,Z=globalThis.vscode;if(typeof Z<"u"&&typeof Z.process<"u"){let e=Z.process;N={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else typeof process<"u"&&typeof process?.versions?.node=="string"?N={get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:N={get platform(){return se?"win32":ie?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};var D=N.cwd,oe=N.env,le=N.platform,dt=N.arch;var je=65,Ue=97,He=90,Ve=122,R=46,x=47,A=92,S=58,Ge=63,V=class extends Error{constructor(t,n,i){let o;typeof n=="string"&&n.indexOf("not ")===0?(o="must not be",n=n.replace(/^not /,"")):o="must be";let r=t.indexOf(".")!==-1?"property":"argument",l=`The "${t}" ${r} ${o} of type ${n}`;l+=`. Received type ${typeof i}`,super(l),this.code="ERR_INVALID_ARG_TYPE"}};function qe(e,t){if(e===null||typeof e!="object")throw new V(t,"Object",e)}function h(e,t){if(typeof e!="string")throw new V(t,"string",e)}var b=le==="win32";function d(e){return e===x||e===A}function X(e){return e===x}function L(e){return e>=je&&e<=He||e>=Ue&&e<=Ve}function G(e,t,n,i){let o="",r=0,l=-1,s=0,a=0;for(let c=0;c<=e.length;++c){if(c2){let u=o.lastIndexOf(n);u===-1?(o="",r=0):(o=o.slice(0,u),r=o.length-1-o.lastIndexOf(n)),l=c,s=0;continue}else if(o.length!==0){o="",r=0,l=c,s=0;continue}}t&&(o+=o.length>0?`${n}..`:"..",r=2)}else o.length>0?o+=`${n}${e.slice(l+1,c)}`:o=e.slice(l+1,c),r=c-l-1;l=c,s=0}else a===R&&s!==-1?++s:s=-1}return o}function Be(e){return e?`${e[0]==="."?"":"."}${e}`:""}function ae(e,t){qe(t,"pathObject");let n=t.dir||t.root,i=t.base||`${t.name||""}${Be(t.ext)}`;return n?n===t.root?`${n}${i}`:`${n}${e}${i}`:i}var p={resolve(...e){let t="",n="",i=!1;for(let o=e.length-1;o>=-1;o--){let r;if(o>=0){if(r=e[o],h(r,`paths[${o}]`),r.length===0)continue}else t.length===0?r=D():(r=oe[`=${t}`]||D(),(r===void 0||r.slice(0,2).toLowerCase()!==t.toLowerCase()&&r.charCodeAt(2)===A)&&(r=`${t}\\`));let l=r.length,s=0,a="",c=!1,u=r.charCodeAt(0);if(l===1)d(u)&&(s=1,c=!0);else if(d(u))if(c=!0,d(r.charCodeAt(1))){let f=2,g=f;for(;f2&&d(r.charCodeAt(2))&&(c=!0,s=3));if(a.length>0)if(t.length>0){if(a.toLowerCase()!==t.toLowerCase())continue}else t=a;if(i){if(t.length>0)break}else if(n=`${r.slice(s)}\\${n}`,i=c,c&&t.length>0)break}return n=G(n,!i,"\\",d),i?`${t}\\${n}`:`${t}${n}`||"."},normalize(e){h(e,"path");let t=e.length;if(t===0)return".";let n=0,i,o=!1,r=e.charCodeAt(0);if(t===1)return X(r)?"\\":e;if(d(r))if(o=!0,d(e.charCodeAt(1))){let s=2,a=s;for(;s2&&d(e.charCodeAt(2))&&(o=!0,n=3));let l=n0&&d(e.charCodeAt(t-1))&&(l+="\\"),!o&&i===void 0&&e.includes(":")){if(l.length>=2&&L(l.charCodeAt(0))&&l.charCodeAt(1)===S)return`.\\${l}`;let s=e.indexOf(":");do if(s===t-1||d(e.charCodeAt(s+1)))return`.\\${l}`;while((s=e.indexOf(":",s+1))!==-1)}return i===void 0?o?`\\${l}`:l:o?`${i}\\${l}`:`${i}${l}`},isAbsolute(e){h(e,"path");let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return d(n)||t>2&&L(n)&&e.charCodeAt(1)===S&&d(e.charCodeAt(2))},join(...e){if(e.length===0)return".";let t,n;for(let r=0;r0&&(t===void 0?t=n=l:t+=`\\${l}`)}if(t===void 0)return".";let i=!0,o=0;if(typeof n=="string"&&d(n.charCodeAt(0))){++o;let r=n.length;r>1&&d(n.charCodeAt(1))&&(++o,r>2&&(d(n.charCodeAt(2))?++o:i=!1))}if(i){for(;o=2&&(t=`\\${t.slice(o)}`)}return p.normalize(t)},relative(e,t){if(h(e,"from"),h(t,"to"),e===t)return"";let n=p.resolve(e),i=p.resolve(t);if(n===i||(e=n.toLowerCase(),t=i.toLowerCase(),e===t))return"";if(n.length!==e.length||i.length!==t.length){let E=n.split("\\"),$=i.split("\\");E[E.length-1]===""&&E.pop(),$[$.length-1]===""&&$.pop();let M=E.length,J=$.length,F=MF?$.slice(v).join("\\"):M>F?"..\\".repeat(M-1-v)+"..":"":"..\\".repeat(M-v)+$.slice(v).join("\\")}let o=0;for(;oo&&e.charCodeAt(r-1)===A;)r--;let l=r-o,s=0;for(;ss&&t.charCodeAt(a-1)===A;)a--;let c=a-s,u=lu){if(t.charCodeAt(s+g)===A)return i.slice(s+g+1);if(g===2)return i.slice(s+g)}l>u&&(e.charCodeAt(o+g)===A?f=g:g===2&&(f=3)),f===-1&&(f=0)}let O="";for(g=o+f+1;g<=r;++g)(g===r||e.charCodeAt(g)===A)&&(O+=O.length===0?"..":"\\..");return s+=f,O.length>0?`${O}${i.slice(s,a)}`:(i.charCodeAt(s)===A&&++s,i.slice(s,a))},toNamespacedPath(e){if(typeof e!="string"||e.length===0)return e;let t=p.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===A){if(t.charCodeAt(1)===A){let n=t.charCodeAt(2);if(n!==Ge&&n!==R)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(L(t.charCodeAt(0))&&t.charCodeAt(1)===S&&t.charCodeAt(2)===A)return`\\\\?\\${t}`;return t},dirname(e){h(e,"path");let t=e.length;if(t===0)return".";let n=-1,i=0,o=e.charCodeAt(0);if(t===1)return d(o)?e:".";if(d(o)){if(n=i=1,d(e.charCodeAt(1))){let s=2,a=s;for(;s2&&d(e.charCodeAt(2))?3:2,i=n);let r=-1,l=!0;for(let s=t-1;s>=i;--s)if(d(e.charCodeAt(s))){if(!l){r=s;break}}else l=!1;if(r===-1){if(n===-1)return".";r=n}return e.slice(0,r)},basename(e,t){t!==void 0&&h(t,"suffix"),h(e,"path");let n=0,i=-1,o=!0,r;if(e.length>=2&&L(e.charCodeAt(0))&&e.charCodeAt(1)===S&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return"";let l=t.length-1,s=-1;for(r=e.length-1;r>=n;--r){let a=e.charCodeAt(r);if(d(a)){if(!o){n=r+1;break}}else s===-1&&(o=!1,s=r+1),l>=0&&(a===t.charCodeAt(l)?--l===-1&&(i=r):(l=-1,i=s))}return n===i?i=s:i===-1&&(i=e.length),e.slice(n,i)}for(r=e.length-1;r>=n;--r)if(d(e.charCodeAt(r))){if(!o){n=r+1;break}}else i===-1&&(o=!1,i=r+1);return i===-1?"":e.slice(n,i)},extname(e){h(e,"path");let t=0,n=-1,i=0,o=-1,r=!0,l=0;e.length>=2&&e.charCodeAt(1)===S&&L(e.charCodeAt(0))&&(t=i=2);for(let s=e.length-1;s>=t;--s){let a=e.charCodeAt(s);if(d(a)){if(!r){i=s+1;break}continue}o===-1&&(r=!1,o=s+1),a===R?n===-1?n=s:l!==1&&(l=1):n!==-1&&(l=-1)}return n===-1||o===-1||l===0||l===1&&n===o-1&&n===i+1?"":e.slice(n,o)},format:ae.bind(null,"\\"),parse(e){h(e,"path");let t={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return t;let n=e.length,i=0,o=e.charCodeAt(0);if(n===1)return d(o)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(d(o)){if(i=1,d(e.charCodeAt(1))){let f=2,g=f;for(;f0&&(t.root=e.slice(0,i));let r=-1,l=i,s=-1,a=!0,c=e.length-1,u=0;for(;c>=i;--c){if(o=e.charCodeAt(c),d(o)){if(!a){l=c+1;break}continue}s===-1&&(a=!1,s=c+1),o===R?r===-1?r=c:u!==1&&(u=1):r!==-1&&(u=-1)}return s!==-1&&(r===-1||u===0||u===1&&r===s-1&&r===l+1?t.base=t.name=e.slice(l,s):(t.name=e.slice(l,r),t.base=e.slice(l,s),t.ext=e.slice(r,s))),l>0&&l!==i?t.dir=e.slice(0,l-1):t.dir=t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},Ke=(()=>{if(b){let e=/\\/g;return()=>{let t=D().replace(e,"/");return t.slice(t.indexOf("/"))}}return()=>D()})(),m={resolve(...e){let t="",n=!1;for(let i=e.length-1;i>=0&&!n;i--){let o=e[i];h(o,`paths[${i}]`),o.length!==0&&(t=`${o}/${t}`,n=o.charCodeAt(0)===x)}if(!n){let i=Ke();t=`${i}/${t}`,n=i.charCodeAt(0)===x}return t=G(t,!n,"/",X),n?`/${t}`:t.length>0?t:"."},normalize(e){if(h(e,"path"),e.length===0)return".";let t=e.charCodeAt(0)===x,n=e.charCodeAt(e.length-1)===x;return e=G(e,!t,"/",X),e.length===0?t?"/":n?"./":".":(n&&(e+="/"),t?`/${e}`:e)},isAbsolute(e){return h(e,"path"),e.length>0&&e.charCodeAt(0)===x},join(...e){if(e.length===0)return".";let t=[];for(let n=0;n0&&t.push(i)}return t.length===0?".":m.normalize(t.join("/"))},relative(e,t){if(h(e,"from"),h(t,"to"),e===t||(e=m.resolve(e),t=m.resolve(t),e===t))return"";let n=1,i=e.length,o=i-n,r=1,l=t.length-r,s=os){if(t.charCodeAt(r+c)===x)return t.slice(r+c+1);if(c===0)return t.slice(r+c)}else o>s&&(e.charCodeAt(n+c)===x?a=c:c===0&&(a=0));let u="";for(c=n+a+1;c<=i;++c)(c===i||e.charCodeAt(c)===x)&&(u+=u.length===0?"..":"/..");return`${u}${t.slice(r+a)}`},toNamespacedPath(e){return e},dirname(e){if(h(e,"path"),e.length===0)return".";let t=e.charCodeAt(0)===x,n=-1,i=!0;for(let o=e.length-1;o>=1;--o)if(e.charCodeAt(o)===x){if(!i){n=o;break}}else i=!1;return n===-1?t?"/":".":t&&n===1?"//":e.slice(0,n)},basename(e,t){t!==void 0&&h(t,"suffix"),h(e,"path");let n=0,i=-1,o=!0,r;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return"";let l=t.length-1,s=-1;for(r=e.length-1;r>=0;--r){let a=e.charCodeAt(r);if(a===x){if(!o){n=r+1;break}}else s===-1&&(o=!1,s=r+1),l>=0&&(a===t.charCodeAt(l)?--l===-1&&(i=r):(l=-1,i=s))}return n===i?i=s:i===-1&&(i=e.length),e.slice(n,i)}for(r=e.length-1;r>=0;--r)if(e.charCodeAt(r)===x){if(!o){n=r+1;break}}else i===-1&&(o=!1,i=r+1);return i===-1?"":e.slice(n,i)},extname(e){h(e,"path");let t=-1,n=0,i=-1,o=!0,r=0;for(let l=e.length-1;l>=0;--l){let s=e[l];if(s==="/"){if(!o){n=l+1;break}continue}i===-1&&(o=!1,i=l+1),s==="."?t===-1?t=l:r!==1&&(r=1):t!==-1&&(r=-1)}return t===-1||i===-1||r===0||r===1&&t===i-1&&t===n+1?"":e.slice(t,i)},format:ae.bind(null,"/"),parse(e){h(e,"path");let t={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return t;let n=e.charCodeAt(0)===x,i;n?(t.root="/",i=1):i=0;let o=-1,r=0,l=-1,s=!0,a=e.length-1,c=0;for(;a>=i;--a){let u=e.charCodeAt(a);if(u===x){if(!s){r=a+1;break}continue}l===-1&&(s=!1,l=a+1),u===R?o===-1?o=a:c!==1&&(c=1):o!==-1&&(c=-1)}if(l!==-1){let u=r===0&&n?1:r;o===-1||c===0||c===1&&o===l-1&&o===r+1?t.base=t.name=e.slice(u,l):(t.name=e.slice(u,o),t.base=e.slice(u,l),t.ext=e.slice(o,l))}return r>0?t.dir=e.slice(0,r-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};m.win32=p.win32=p;m.posix=p.posix=m;var gt=b?p.normalize:m.normalize,ut=b?p.isAbsolute:m.isAbsolute,ce=b?p.join:m.join,ht=b?p.resolve:m.resolve,pt=b?p.relative:m.relative,mt=b?p.dirname:m.dirname,xt=b?p.basename:m.basename,Ct=b?p.extname:m.extname,At=b?p.format:m.format,bt=b?p.parse:m.parse,vt=b?p.toNamespacedPath:m.toNamespacedPath,wt=b?p.sep:m.sep,yt=b?p.delimiter:m.delimiter;var fe=require("child_process"),de=(e,t)=>{let n,i=!1,o=[t];if(e){let[r,...l]=e.split(" ");n=r,o=[...l,t]}else switch(process.platform){case"win32":n="cmd",i=!0,o=["/c","start",'""',`"${t}"`];break;case"darwin":n="open";break;case"linux":default:n="xdg-open";break}return new Promise((r,l)=>{let s="",a=(0,fe.spawn)(n,o,{stdio:"pipe",shell:i,env:{...process.env,ELECTRON_RUN_AS_NODE:void 0}});a.stdout.setEncoding("utf8").on("data",c=>s+=c),a.stderr.setEncoding("utf8").on("data",c=>s+=c),a.on("error",l),a.on("exit",c=>{c!==0?l(new Error(`Failed to open: ${s}`)):r()})})};var ge=require("stream"),q=class extends ge.Transform{constructor(n){super();this.prefix=[];this.splitSuffix=Buffer.alloc(0);if(typeof n=="string"&&n.length===1)this.splitter=n.charCodeAt(0);else if(typeof n=="number")this.splitter=n;else throw new Error("not implemented here")}_transform(n,i,o){let r=0;for(;rthis.handleData(n)),this.ended=new Promise(n=>this.stream.on("end",()=>{this.didEnd=!0,n()}))}registerMethod(t,n){this.methods.set(t,n)}async callMethod(t,n){let i=this.idCounter++,o={id:i,method:t,params:n},r=new Promise((l,s)=>{this.pendingRequests.set(i,{resolve:l,reject:s})});return this.stream.write(JSON.stringify(o)+ue),Promise.race([r,this.ended])}dispose(){this.didEnd=!0,this.stream.end();for(let{reject:t}of this.pendingRequests.values())t(new Error("RPC connection closed"));this.pendingRequests.clear()}async handleData(t){let n=JSON.parse(t.toString());if("method"in n){let{id:i,method:o,params:r}=n,l={id:i};try{if(this.methods.has(o)){let s=await this.methods.get(o)(r);l.result=s}else throw new Error(`Method not found: ${o}`)}catch(s){l.error={code:-1,message:String(s.stack||s)}}this.didEnd||this.stream.write(JSON.stringify(l)+ue)}else{let{id:i,result:o,error:r}=n,l=this.pendingRequests.get(i);this.pendingRequests.delete(i),r!==void 0?l?.reject(new Error(r.message)):l?.resolve(o)}}};var[$t,Nt,Ye,Qe,...W]=process.argv;var I={"--print":!1,"--no-cache":!1,"--help":!1,"--save":!1,"--once":!1};for(;W.length&&I.hasOwnProperty(W[0]);)I[W.shift()]=!0;(!W.length||I["--help"])&&(console.log(`Usage: copilot-debug [${Object.keys(I).join("] [")}] `),console.log(""),console.log("Options:"),console.log(" --print Print the generated configuration without running it"),console.log(" --no-cache Generate a new configuration without checking the cache."),console.log(" --save Save the configuration to your launch.json."),console.log(" --once Exit after the debug session ends."),console.log(" --help Print this help."),process.exit(I["--help"]?0:1));var he=K.createInterface({input:process.stdin,output:process.stdout});K.emitKeypressEvents(process.stdin);process.stdin.setRawMode(!0);var Ze=(0,xe.createServer)(e=>{clearInterval(Xe);let t=new B(e);t.registerMethod("output",({category:r,output:l})=>(r==="stderr"?process.stderr.write(l):r==="stdout"?process.stdout.write(l):r!=="telemetry"&&l&&console.log(l),Promise.resolve())),t.registerMethod("exit",async({code:r,error:l})=>{l&&!n&&console.error(l),await Promise.all([new Promise(s=>process.stdout.end(s)),new Promise(s=>process.stderr.end(s))]).then(()=>process.exit(r))});let n=!1;function i(){n?process.exit(1):(n=!0,e.end(()=>{process.exit(1)}))}process.on("SIGINT",i),process.stdin.on("keypress",(r,l)=>{(l.sequence===""||l.name==="c"&&(l.ctrl||l.meta))&&i()}),t.registerMethod("question",r=>new Promise(l=>{if(r.singleKey){console.log(r.message);let s=a=>{a&&(process.stdout.write("\b"),process.stdin.off("keypress",s),l(a===` +`||a==="\r"?"Enter":a?.toUpperCase()||""))};process.stdin.on("keypress",s)}else he.question(`${r.message} [${r.defaultValue}] `,l)})),t.registerMethod("confirm",r=>new Promise(l=>{he.question(`${r.message} [${r.defaultValue?"Y/n":"y/N"}] `,s=>{l(s===""?r.defaultValue:s.toLowerCase()[0]==="y")})}));let o={cwd:process.cwd(),args:W,forceNew:I["--no-cache"],printOnly:I["--print"],save:I["--save"],once:I["--once"]};t.callMethod("start",o)}),Xe=setInterval(()=>{console.log("> Waiting for VS Code to connect...")},2e3),Ae=`copilot-dbg.${process.pid}-${(0,me.randomBytes)(4).toString("hex")}.sock`,pe=ce(process.platform==="win32"?"\\\\.\\pipe\\":(0,Ce.tmpdir)(),Ae);Ze.listen(pe,()=>{de(Qe,Ye+(process.platform==="win32"?`/${Ae}`:pe)).then(()=>{},e=>{console.error("Failed to open the activation URI:",e),process.exit(1)})}); +//!!! DO NOT modify, this file was COPIED from 'microsoft/vscode' diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/executable_copilot-debug b/dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/executable_copilot-debug new file mode 100644 index 0000000..e29633e --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/debugCommand/executable_copilot-debug @@ -0,0 +1,3 @@ +#!/bin/sh +unset NODE_OPTIONS +ELECTRON_RUN_AS_NODE=1 "/usr/share/code/code" "/home/breadway/.config/Code/User/globalStorage/github.copilot-chat/debugCommand/copilotDebugCommand.js" "vscode://github.copilot-chat" "" "$@" \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/plan-agent/Plan.agent.md b/dot_config/private_Code/User/globalStorage/github.copilot-chat/plan-agent/Plan.agent.md new file mode 100644 index 0000000..ee2a1f3 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/github.copilot-chat/plan-agent/Plan.agent.md @@ -0,0 +1,108 @@ +--- +name: Plan +description: Researches and outlines multi-step plans +argument-hint: Outline the goal or problem to research +target: vscode +disable-model-invocation: true +tools: ['agent', 'search', 'read', 'execute/getTerminalOutput', 'execute/testFailure', 'web', 'github/issue_read', 'github.vscode-pull-request-github/issue_fetch', 'github.vscode-pull-request-github/activePullRequest', 'vscode/askQuestions'] +agents: [] +handoffs: + - label: Start Implementation + agent: agent + prompt: 'Start implementation' + send: true + - label: Open in Editor + agent: agent + prompt: '#createFile the plan as is into an untitled file (`untitled:plan-${camelCaseName}.prompt.md` without frontmatter) for further refinement.' + send: true + showContinueOn: false +--- +You are a PLANNING AGENT, pairing with the user to create a detailed, actionable plan. + +Your job: research the codebase → clarify with the user → produce a comprehensive plan. This iterative approach catches edge cases and non-obvious requirements BEFORE implementation begins. + +Your SOLE responsibility is planning. NEVER start implementation. + + +- STOP if you consider running file editing tools — plans are for others to execute +- Use #tool:vscode/askQuestions freely to clarify requirements — don't make large assumptions +- Present a well-researched plan with loose ends tied BEFORE implementation + + + +Cycle through these phases based on user input. This is iterative, not linear. + +## 1. Discovery + +Run #tool:agent/runSubagent to gather context and discover potential blockers or ambiguities. + +MANDATORY: Instruct the subagent to work autonomously following . + + +- Research the user's task comprehensively using read-only tools. +- Start with high-level code searches before reading specific files. +- Pay special attention to instructions and skills made available by the developers to understand best practices and intended usage. +- Identify missing information, conflicting requirements, or technical unknowns. +- DO NOT draft a full plan yet — focus on discovery and feasibility. + + +After the subagent returns, analyze the results. + +## 2. Alignment + +If research reveals major ambiguities or if you need to validate assumptions: +- Use #tool:vscode/askQuestions to clarify intent with the user. +- Surface discovered technical constraints or alternative approaches. +- If answers significantly change the scope, loop back to **Discovery**. + +## 3. Design + +Once context is clear, draft a comprehensive implementation plan per . + +The plan should reflect: +- Critical file paths discovered during research. +- Code patterns and conventions found. +- A step-by-step implementation approach. + +Present the plan as a **DRAFT** for review. + +## 4. Refinement + +On user input after showing a draft: +- Changes requested → revise and present updated plan. +- Questions asked → clarify, or use #tool:vscode/askQuestions for follow-ups. +- Alternatives wanted → loop back to **Discovery** with new subagent. +- Approval given → acknowledge, the user can now use handoff buttons. + +The final plan should: +- Be scannable yet detailed enough to execute. +- Include critical file paths and symbol references. +- Reference decisions from the discussion. +- Leave no ambiguity. + +Keep iterating until explicit approval or handoff. + + + +```markdown +## Plan: {Title (2-10 words)} + +{TL;DR — what, how, why. Reference key decisions. (30-200 words, depending on complexity)} + +**Steps** +1. {Action with [file](path) links and `symbol` refs} +2. {Next step} +3. {…} + +**Verification** +{How to test: commands, tests, manual checks} + +**Decisions** (if applicable) +- {Decision: chose X over Y} +``` + +Rules: +- NO code blocks — describe changes, link to files/symbols +- NO questions at the end — ask during workflow via #tool:vscode/askQuestions +- Keep scannable + \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/github.copilot-chat/toolEmbeddingsCache.bin b/dot_config/private_Code/User/globalStorage/github.copilot-chat/toolEmbeddingsCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..594682fe02990f46ea35ce94a4fba0196b37b0d9 GIT binary patch literal 10379 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 Cx)O8% literal 0 HcmV?d00001 diff --git a/dot_config/private_Code/User/globalStorage/ms-python.python/pythonrc.py b/dot_config/private_Code/User/globalStorage/ms-python.python/pythonrc.py new file mode 100644 index 0000000..3042ffb --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/ms-python.python/pythonrc.py @@ -0,0 +1,88 @@ +import platform +import sys + +if sys.platform != "win32": + import readline + +original_ps1 = ">>> " +is_wsl = "microsoft-standard-WSL" in platform.release() + + +class REPLHooks: + def __init__(self): + self.global_exit = None + self.failure_flag = False + self.original_excepthook = sys.excepthook + self.original_displayhook = sys.displayhook + sys.excepthook = self.my_excepthook + sys.displayhook = self.my_displayhook + + def my_displayhook(self, value): + if value is None: + self.failure_flag = False + + self.original_displayhook(value) + + def my_excepthook(self, type_, value, traceback): + self.global_exit = value + self.failure_flag = True + + self.original_excepthook(type_, value, traceback) + + +def get_last_command(): + # Get the last history item + last_command = "" + if sys.platform != "win32": + last_command = readline.get_history_item(readline.get_current_history_length()) + + return last_command + + +class PS1: + hooks = REPLHooks() + sys.excepthook = hooks.my_excepthook + sys.displayhook = hooks.my_displayhook + + # str will get called for every prompt with exit code to show success/failure + def __str__(self): + exit_code = int(bool(self.hooks.failure_flag)) + self.hooks.failure_flag = False + # Guide following official VS Code doc for shell integration sequence: + result = "" + # For non-windows allow recent_command history. + if sys.platform != "win32": + result = "{soh}{command_executed}{command_line}{command_finished}{prompt_started}{stx}{prompt}{soh}{command_start}{stx}".format( + soh="\001", + stx="\002", + command_executed="\x1b]633;C\x07", + command_line="\x1b]633;E;" + str(get_last_command()) + "\x07", + command_finished="\x1b]633;D;" + str(exit_code) + "\x07", + prompt_started="\x1b]633;A\x07", + prompt=original_ps1, + command_start="\x1b]633;B\x07", + ) + else: + result = "{command_finished}{prompt_started}{prompt}{command_start}{command_executed}".format( + command_finished="\x1b]633;D;" + str(exit_code) + "\x07", + prompt_started="\x1b]633;A\x07", + prompt=original_ps1, + command_start="\x1b]633;B\x07", + command_executed="\x1b]633;C\x07", + ) + + # result = f"{chr(27)}]633;D;{exit_code}{chr(7)}{chr(27)}]633;A{chr(7)}{original_ps1}{chr(27)}]633;B{chr(7)}{chr(27)}]633;C{chr(7)}" + + return result + + def __repr__(self): + return "" + + +if sys.platform != "win32" and (not is_wsl): + sys.ps1 = PS1() + +if sys.platform == "darwin": + print("Cmd click to launch VS Code Native REPL") +else: + print("Ctrl click to launch VS Code Native REPL") diff --git a/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/31f2aee4e71d21fb.4.json b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/31f2aee4e71d21fb.4.json new file mode 100644 index 0000000..717a988 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/31f2aee4e71d21fb.4.json @@ -0,0 +1,21 @@ +{ + "environment": { + "executable": "/usr/bin/python3", + "prefix": "/usr", + "version": "3.14.3.final.0", + "is64Bit": true, + "symlinks": [ + "/usr/bin/python3" + ] + }, + "symlinks": [ + [ + "/usr/bin/python3", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ] + ] +} \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/767d51c1340bd893.4.json b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/767d51c1340bd893.4.json new file mode 100644 index 0000000..631add2 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/767d51c1340bd893.4.json @@ -0,0 +1,39 @@ +{ + "environment": { + "executable": "/usr/bin/python", + "prefix": "/usr", + "version": "3.14.3.final.0", + "is64Bit": true, + "symlinks": [ + "/usr/bin/python", + "/usr/bin/python3", + "/usr/bin/python3.14" + ] + }, + "symlinks": [ + [ + "/usr/bin/python", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ], + [ + "/usr/bin/python3", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ], + [ + "/usr/bin/python3.14", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ] + ] +} \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/c03c93ec8cafc307.4.json b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/c03c93ec8cafc307.4.json new file mode 100644 index 0000000..42f6f7b --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/c03c93ec8cafc307.4.json @@ -0,0 +1,21 @@ +{ + "environment": { + "executable": "/usr/bin/python3.14", + "prefix": "/usr", + "version": "3.14.3.final.0", + "is64Bit": true, + "symlinks": [ + "/usr/bin/python3.14" + ] + }, + "symlinks": [ + [ + "/usr/bin/python3.14", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ] + ] +} \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/ca3ed784184f1b3b.4.json b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/ca3ed784184f1b3b.4.json new file mode 100644 index 0000000..0729549 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/ca3ed784184f1b3b.4.json @@ -0,0 +1,21 @@ +{ + "environment": { + "executable": "/usr/bin/python3.11", + "prefix": "/usr", + "version": "3.11.15.final.0", + "is64Bit": true, + "symlinks": [ + "/usr/bin/python3.11" + ] + }, + "symlinks": [ + [ + "/usr/bin/python3.11", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ] + ] +} \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/f0d7a494a3f77623.4.json b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/f0d7a494a3f77623.4.json new file mode 100644 index 0000000..2d20741 --- /dev/null +++ b/dot_config/private_Code/User/globalStorage/ms-python.vscode-python-envs/pythonLocator/f0d7a494a3f77623.4.json @@ -0,0 +1,21 @@ +{ + "environment": { + "executable": "/usr/bin/python3.12", + "prefix": "/usr", + "version": "3.12.13.final.0", + "is64Bit": true, + "symlinks": [ + "/usr/bin/python3.12" + ] + }, + "symlinks": [ + [ + "/usr/bin/python3.12", + { + "secs_since_epoch": 1774483200, + "nanos_since_epoch": 0 + }, + null + ] + ] +} \ No newline at end of file diff --git a/dot_config/private_Code/User/globalStorage/state.vscdb b/dot_config/private_Code/User/globalStorage/state.vscdb new file mode 100644 index 0000000000000000000000000000000000000000..de695e1ed4c7d0d4a8f2cc8aba83c62d05a19e35 GIT binary patch literal 733184 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 Vudke07t7~TZIQHhoZZ&u{}0ZsgxdfB literal 0 HcmV?d00001 diff --git a/dot_config/private_Code/User/globalStorage/state.vscdb.backup b/dot_config/private_Code/User/globalStorage/state.vscdb.backup new file mode 100644 index 0000000000000000000000000000000000000000..887dc1098e65dfd1aa2f44b83c812e7c741a3b31 GIT binary patch literal 733184 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 literal 0 HcmV?d00001 diff --git a/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/8b91d7a6-ae77-42bc-b66f-8d95a086715a.jsonl b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/8b91d7a6-ae77-42bc-b66f-8d95a086715a.jsonl new file mode 100644 index 0000000..570ced9 --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/8b91d7a6-ae77-42bc-b66f-8d95a086715a.jsonl @@ -0,0 +1 @@ +{"kind":0,"v":{"version":3,"creationDate":1774600123963,"initialLocation":"panel","responderUsername":"","sessionId":"8b91d7a6-ae77-42bc-b66f-8d95a086715a","hasPendingEdits":false,"requests":[],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}}} diff --git a/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/c7465b2a-7199-40ce-9951-b6795d0a3a84.jsonl b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/c7465b2a-7199-40ce-9951-b6795d0a3a84.jsonl new file mode 100644 index 0000000..d1378d9 --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/c7465b2a-7199-40ce-9951-b6795d0a3a84.jsonl @@ -0,0 +1 @@ +{"kind":0,"v":{"version":3,"creationDate":1774365051893,"initialLocation":"panel","responderUsername":"GitHub Copilot","sessionId":"c7465b2a-7199-40ce-9951-b6795d0a3a84","hasPendingEdits":false,"requests":[],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}}} diff --git a/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/dc74fbcd-b41d-47af-90f7-d0a978ef802b.jsonl b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/dc74fbcd-b41d-47af-90f7-d0a978ef802b.jsonl new file mode 100644 index 0000000..40cac90 --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/dc74fbcd-b41d-47af-90f7-d0a978ef802b.jsonl @@ -0,0 +1 @@ +{"kind":0,"v":{"version":3,"creationDate":1774939152252,"initialLocation":"panel","responderUsername":"GitHub Copilot","sessionId":"dc74fbcd-b41d-47af-90f7-d0a978ef802b","hasPendingEdits":false,"requests":[],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}}} diff --git a/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/eab52d46-dfac-4e20-a099-6b67cabfb460.jsonl b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/eab52d46-dfac-4e20-a099-6b67cabfb460.jsonl new file mode 100644 index 0000000..44bd5c1 --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/chatSessions/eab52d46-dfac-4e20-a099-6b67cabfb460.jsonl @@ -0,0 +1,2 @@ +{"kind":0,"v":{"version":3,"creationDate":1774600218109,"initialLocation":"panel","responderUsername":"","sessionId":"eab52d46-dfac-4e20-a099-6b67cabfb460","hasPendingEdits":false,"requests":[],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}}} +{"kind":1,"k":["responderUsername"],"v":"GitHub Copilot"} diff --git a/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/ms-python.python/pythonrc.py b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/ms-python.python/pythonrc.py new file mode 100644 index 0000000..3042ffb --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/ms-python.python/pythonrc.py @@ -0,0 +1,88 @@ +import platform +import sys + +if sys.platform != "win32": + import readline + +original_ps1 = ">>> " +is_wsl = "microsoft-standard-WSL" in platform.release() + + +class REPLHooks: + def __init__(self): + self.global_exit = None + self.failure_flag = False + self.original_excepthook = sys.excepthook + self.original_displayhook = sys.displayhook + sys.excepthook = self.my_excepthook + sys.displayhook = self.my_displayhook + + def my_displayhook(self, value): + if value is None: + self.failure_flag = False + + self.original_displayhook(value) + + def my_excepthook(self, type_, value, traceback): + self.global_exit = value + self.failure_flag = True + + self.original_excepthook(type_, value, traceback) + + +def get_last_command(): + # Get the last history item + last_command = "" + if sys.platform != "win32": + last_command = readline.get_history_item(readline.get_current_history_length()) + + return last_command + + +class PS1: + hooks = REPLHooks() + sys.excepthook = hooks.my_excepthook + sys.displayhook = hooks.my_displayhook + + # str will get called for every prompt with exit code to show success/failure + def __str__(self): + exit_code = int(bool(self.hooks.failure_flag)) + self.hooks.failure_flag = False + # Guide following official VS Code doc for shell integration sequence: + result = "" + # For non-windows allow recent_command history. + if sys.platform != "win32": + result = "{soh}{command_executed}{command_line}{command_finished}{prompt_started}{stx}{prompt}{soh}{command_start}{stx}".format( + soh="\001", + stx="\002", + command_executed="\x1b]633;C\x07", + command_line="\x1b]633;E;" + str(get_last_command()) + "\x07", + command_finished="\x1b]633;D;" + str(exit_code) + "\x07", + prompt_started="\x1b]633;A\x07", + prompt=original_ps1, + command_start="\x1b]633;B\x07", + ) + else: + result = "{command_finished}{prompt_started}{prompt}{command_start}{command_executed}".format( + command_finished="\x1b]633;D;" + str(exit_code) + "\x07", + prompt_started="\x1b]633;A\x07", + prompt=original_ps1, + command_start="\x1b]633;B\x07", + command_executed="\x1b]633;C\x07", + ) + + # result = f"{chr(27)}]633;D;{exit_code}{chr(7)}{chr(27)}]633;A{chr(7)}{original_ps1}{chr(27)}]633;B{chr(7)}{chr(27)}]633;C{chr(7)}" + + return result + + def __repr__(self): + return "" + + +if sys.platform != "win32" and (not is_wsl): + sys.ps1 = PS1() + +if sys.platform == "darwin": + print("Cmd click to launch VS Code Native REPL") +else: + print("Ctrl click to launch VS Code Native REPL") diff --git a/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/state.vscdb b/dot_config/private_Code/User/workspaceStorage/9781d15abb972bcb41fa234c3afe65ff/state.vscdb new file mode 100644 index 0000000000000000000000000000000000000000..94a0429ce8b8843532eb8711a5a6068826664cd3 GIT binary patch literal 49152 zcmeHwZ)_uHdY`nUt^d;5XP5 zku$uRp|rA&!D(#=cj>jgB!@I;a0ObV?S~*J@}Wq9d?^}S5j1GfwE1x8KeR@Z0*8L- zhqh_*q5VD2J2M=PNQv5AJHCKxm?G!>|GdxpywCqxeQ!av6se>e71@#|dcM@t+uQT5 zB=z+4B=P?+{&)WM;!Du^fxq;d{y*tovM2J3&yS4#SMrkA2}L%ZRq;&zwf^^Fgjf7`@zua&|eIvhkj>dr|w`ZWHHTgw`2C^1kx$3IKlV@h|I5H{jU~oj8VrrZMt^hgpN}mL z{I|jD1LcwVfomiGZ1}m6U+eq7W96aX;GYctIi}S8*M&eA0$m7nA<%`u&o~6W9C)+0 zpcj?0qM6ZxT-Z?(bLRuIy@egwip=6;RWVIf*H$gvP$I0XzmW*2y%nXRXqFz`*Nxr0 zq7`-`N>N1}Gg4B^iW#w#ht^Ge%ktAqC@|k^7Alc#L$2=JSC##Up_CK@4HXmBEX8>D z`M?#fvWL=DOSY86^)~}+y^R5=AVQsJwMt$wmP+?kQ-#rjx-;K-IgskD6si%7J4?$b zt}4c!Vwi7Bfh_eqL(TEQO;(huZqjsB#e8claDfNjQB6EKxW>!ZE3`f{QqVO^)oRL; zHfukcc_9!M;3?G5pmG<`Gt;jIuJ_8@Xkx?5jF_~B2!nL`cxi=TE=s4uflbdctFlHV z1pihGog5ErxX@QMKu#`L>Yfrd#YTl`o#BFBRm-}SiUkx;*9<}BVYQ6CG+Oqad@Ydi zG@v!q%p0;1*-?u{MVoj%aLZFH*B+{6RW=S9H4wez|#t zPO;efHwe8N@Ua0~05al)6~948+{Wz)o)OMpqVstC2v=nTC@+fOopKR8=&kxL`jvBQy`QDi@Rsv}+YJTs^RMbS<)H5}C1og%xej4ACSo#fqxQ zWsnw20d=sHVx%k|=rvyU>n{ePo<537zP4RGklqNadS+&0wFL@>`GE46mN7+Jh zASUwKOM!{rTdH-tmdD}dQxc}b_Ufg;k_!?|x0JlD??$Na+(A`YHuOCpj`7N9;Pqay zl*qPfeSJDmYq#&wPr;GVgW81h|vpQ3B>IoOk5NN?2)1C)|YAa zjd8d;d#>Ey^H&1z`^!O{?QOErf@?n4d_r6bWf=-n_f;aLUn26sWU&U4Y?YPbyoRZA z*%%#1F5_A3$mXhI%_$|hR<`II-8jfTtSW{|`!PyDZ6?)*A{XZ{#0?qi15gtqQvuU6 zb@zDZK?!LD7y9P=4!ZL^hMVcF0R2e~hMH-=L)v(dvSRtV9~=(6>Z02~D@rT2ufLhn zifL42V;A>fUo)|w`;;bV-&fDJ*i%!H4cza%Q_s+uZS1+bQ=Tq@t>rH&n^ArA z#gU&3y!@BMe*Mz9bHTU&{)2X_ISe&mB%n_K2+hRDJq4|R=c__sjd?o$&v@-2jSsx@_M zRnto+x!k719`eeMTan{d{dvf^uUKpek$=xP_D#W0PPt#Wj)NTDTl%ysjvF?vO8)7v z9BuDcuGQjp7Oh=oLR=pFuyN3QThQPGe2p1a)dPOoYGDob!`H9{3*$S{EbQPS@03Rp z0~`~jynGlVqmO;#W{rjW7(QQVGq2dD(BU(E#R7T!ysEE~dxnW)KTF;A?6q$MM;vf? zc3-iWWt&2WfHlMkUu&mxA*A>Un}if!nHaWZvnG(VtUhes+Rr zfb#k$KQ|cM{Kf6YBph6C!#=JZhSXwc#>0X%p;>4=WUEI)GnP?P>f^2J3x1^I+J#D| zRhck%T3Otnoz`}5X7kJ~SfKQ_D#>NDEpXg{JPIyW$vj36Uh(v?nnR?1XoXeHtU_qh zjmPN2zGyqej03IE`5?F~9c9_^MjPcoFm;q_;C6#%wPvmv=N*YYG;-9(P1%vY+?>2^O#hf38z>bl8=?g_lyR_V_>cR4IPxFHJ{WtU@4xo_-ZMWJ z{C}f=KKge?Hv_*K=%fGsk~9L{VY?9cD-MB2)=*ISBrc z-urD>PA^^WxH_vl+A%HeJ=3m2gN}*8Nt3Xmn9wCRagTg4xlHnDYLs?^!43+xT{o5u zg#hVYq8MP~!B@Zujrk`xn?>!`1@7cx>^Zw&7FZK*%tFQxoz99^rPtsLEE|($s6?UIsI%QpkQD(JZs8y@g zTv{?m$03u45n^{4;czWGX$RjA%o~QjZz{$OYF_2$zDu>u_#c?rhlO$tQ=bJ8U>NAM z*&G?+78Q$-CIy$k@5{mX(U90(uZ4+t)R|~Bx&wrZ5`c>P z@#HkE_;1$i51TDE{?J3Q;q%-Y6yh!iRWITpxS*MeHR@UK99@e`c30}C=?L48ZL zVZc&Ls$!s;EgnXXe);LKdxvFxRjPI2HNuo7MaI=8d0~w#kB}STURofnyWUVNfddY&7RKfE-rL0#8 z;u7OnL|TD`Pf|_vfek}{$R!nj7{QFmO$42_m|F!jU#*q}yyFa9`5~JfbNVinHKCcr zRD3#?0?_4$OKduI3gU_BSPXUq#JKJd@T;~3c|p$8UfP?0#j*)nBFzw{A{TgeP9-|k zg!2r4(>7?{)Qttb!0YFZ$zQ~kaox+!5qcd}yIVtOs_dV%ujW0RqE)s$ke%9*j(G!? z)dGx$vw++-Tw`dsvORy?R~5BZkr+4WUesZm1}4POWkIgWdGeEhs{tb(ylx1-f)vq) z6V1VTIdWH z#>~taDo0JD5TcmTmtPLvIT|>H?>h{&uD}>_iiWCQ|H?~&H@+(FMcZU& zs+DS4>FLQmADBI8fQ^yJYg9Z8iC;N3weu+~oG_eVHS0%TelGa_k?iZ&y+k5jrwx!a z_Us9RvV8#k;;Ca08sl8UZWyk}8gTg-&(WI8sgwP`_uNN4=RWG+?>qm@kDvK^@JGQP z5!#8*Cqck&+b#q;fWY7V@N2=^KYh-*UC&|%2SIfY(7cy_Yj~#d35P|R?hnUF4CHJr zwESQ$dw*_oZhn>0Z*1P2$H)E5!u(t&H@~zPf`P^nsK8O2R@vqM;uy$+QybrzdX*R{ zKD=_ZT0Y2F@O6V%t~rbQg^JueT9mHtDCP1z7$|bq<6@h3Y>cmk?yt@+&1E;|vN!JC zT7IyZnaeEavMZa}#ku9B`NiC-Z^oxrcjxSr0UU1Mg{&Dp2F`E-S79VR9f^g(Yt$Zw zA5JEt5lx4#qNHxmkr>S}eJB z6&D0g8vM*U&Vc5Ff&)#v-1IDz)rjdfrJAWodP!Q-bO>^UpbgPx zX)*KOVhDS>6k$KFylQ5OjpLG zEqnRWTVj^D-{099msCx%b`;4acA@&l2I;xn!`6n3xyHg{R4jLUX>m1|S;^g7_T%}3 zrn0uXEnpHQ*)U4-3I`srpRw&K7)?)2$BXfloX@AH68S+C#l&;G&D-+KalVZPFQw77+>(g=VTMo3P34d}i2TUx1z& zZ!Y2j_2Ed{T5T6cEBrhsjXYp0na#|~E&pD$n7X&FyMWJgvUfA{e%7hQG(|0Uf{%?p zkabiI>d4Pyh4ag^o3}G`(YD7RZ=J^KjGBfOf~>}&v~q3~oP=;9l}yJAlZjM5V(Nw6 z&t?^8qDXW#mB1$J`$T6-U{Y&1%QF&YE0MBIax`rx)0SJuLqM=N|IKwOW9H{dj@?t+ zWj!y$$iV*WjSIXHcp`WZiY|j1;~1a!82#CL;n}h}<8If))4bNsv|Tn|vt`dJ%q)j} zAK1^fppxa)n|{`Vw{T-*_}}#m27k9_>?dQNjE4Iz4qqAi&7o_98zX-Z{N3RBk$*Vy z(Yc?FJQ%rrZgr%8_^0Q>=Z1QJ+WQB+ztQ`h-o*}NyKa>(1iBFDLg2H2z{jPF!TImK zc-&vu>*5c|iaq-1nFzBY?J#a*+wyhGAln->x(K?Xzd}?EhF3Z*qeyoRl_oB~cE0M((I`t?sM}=y2J%r}Ogd2zj02;CH_Gm0}(i)0|2o}L~L?I`N@4z`$@ku8wox^EeJjm!;XGA1_^3hT`@O2{S> zgFWdNCSMDNzyDrC2`1#WLuds_z}|d+Y30u9GLrIcuI83jGPkmucd`#w85xkt7urK} zN8ew>wDy!744b-fLr1VFRDqQ$>Ai{~mhwL3^R;b1PzZ>Yl*Lz=5258C&7c8D;M07s z1{79`;nQ&eAa;7Q=L;zzySNG^XSHDv25Laf>>qzLB)(4XSm3AN~KJO!K+K@LZ2 zpP_D_2B%`C0BU^@1o;D_QJ=Db!qe1w9sjaG$00&g%jby_U7R{wG9$Qjw{&S zZ%e`G(OP5jwt}&9GV}z;f1`f%#`)mtqmjnN#%57hw*w`XlN!M5*T$8o2;`l%>?Av> zZNv19K#ga0oE8{0JL;hhUgOU`3x4B^-sjc@WR+NIfKPB9XNZ_wTML0*2#wQ5ki`k4 zgpityGyG`d(Y;rL6Q2yU5bqB|P!V`Mn<9m>+DKPnhoamB@xd9eCDWEw%*bSZB9)(% z^WnTwD20>hiFi0)EEK|tq+FaVO{5g)pxFZrN5wxT+$bV^Dk7kY>=5PzrP$W*_6^8! z#tmUPwYH|1E6TTOK+VqEZ0|6S(V|uTy;lND+YTS=I2Ez0Dcw?F6gWQyot}njBTVk7 z@LqDfot*F-PPh@Of8**OgriaP&Oo|XThcc|vFdh}{w&AW7O zUORu14j%aOmB3w30|AAWHIE)#4rV?IG*;}S7;&xyTE*al0<&>%!p> zT7pJ?Lbp3!nET7#1N(Qqj@)uyoN`tsba6b$>)!}m_rS?UODEeNS2_CXrQn;7zUs@` zLXLo}RwWV9(W8Pleq2o_gbRd36ciz{(1~d>@{v3W#W6`Uw)QRrzxs{vWMI>S&SIO{ z5xrH8jQIC@Q^Ad2nsOL_lC@4sI7w=2&KJs>gkoVTS;`lRVL0Oy!^tVR6i&xVQ{iGv zhLS-kO~(>>tfCt$(~Xts#>#YKW!lBc5TCTJy=BzkC;8607M5VbSeDe1gfyXW9l%9{ z$Ri0ZEE;=+K!YO@p`{$O8;E3@8RMhE&3(R6d|4g)*X8O9zqx^@@rx3*2rdk5SaMH!P_l?1$$KP&cz z@K^+;H?Rpn0`gCR9b<=5mm;k201zbPq5!P0t}#+TGl$-RniN?kc5(;Cyl|P~5YZlC zi}q$?BNU*Z!p*50j&THQBM~DYdRdkaoX|&vDKf;cZvd@#IU?Y3S1p%K;2Z{!_h339 zXH0U%Byib5kT#}6M~`n7g-Pat)bNuct_B{E+!5XE6h?)$VIz4hwwo{9I#t~1n5l|P z#72cNaGbWcR94XgL!xmK#%V)gRocfKq z0iWaf(HmoUA|hqV>NY3rrAPB6s=*0N@MTXy$|t}WHZL!#(n4)2q$z+L_6L@773TP+ zlRtAhZSfEl-Ul0lXrhFMm?bc)W*}1lHq|~#G@uJ*qJm(g(O8@(%BZgKd6wYbYUl_) zwowZ!10h7DuPK>WF!R)!1snzssDWhhF@q8pgaD+d3aU}qrIlU1>XLw~R~@iTfG{Z3 z4Z&;)$=uyTPjR-e`WcAOwKu!z4EgApKmugwmEIysxM^BQh`b4kP*mRGv2uU}(@2=9 zYvm&Lq(q5`8MLzo2nV4Wogay;ou(H^#hM{dRBR`@3v-Au)g&kh^alVD%WPA6GG}qU zj0DqOHJm>P(_jCj9mw(w9okOtuicgh41SWyo|`1BWknb1@Pv8Uq=TE+KFtxC8kZWmrp<2D0T zv)kFX86R69+etSd@LkZ@aIGp1bf$r5rnE1EhKR|uM;$>MHD%u=<^s}$r8qrsI&Qt=br7dY;jSO>kr zE12e|*k4fmGXkMw)Bo1>6*XCB3DDT5& zH7)@W$EE$91IAi=iS!a^cbO6C@ZAxRI=9I&Q7R)}R~#?~-jt$C#W{UF+ zf{V4%9GMY_isdrnh}L}6nGr?a0y+%8=FTYQo(4jnV+ccL ze(=IBK9j-!(8=!5fu`D5n}B-ie+ikZ%vJI^gz6H_=&7 z352x!drBl?sk8SKPfd_BT+^K5sZ`9{(=o2L#oDHhcQciIjFlym@SJI$PI58{MGc%l zaC4Eah&=2>egoS<&IMbTxC3(kdm4V@gaKi(bRrEA{u-$iv3NR)7}V#?0&^|}s(FI4 zPIq=cVG!YWcYJM>{DKJGQmG_xkSB(E;_tYdl0xv_^F(J{Nr@&eoY-bUqP$s>LOHHV zfS2@VgqH0(r{pB$o-TBl-fk~IU5RV z*jzgeMz}h!?diKjLEWfgdS{O3DeF(s8E*so7}Yn({vYW1qn_YVQ11Do{(t!eu$w&D z6#nru>0tO@>#TM4q)B!ha|KEKyw0{whv~>;%bJ5zS8N%`mJxx7q!@rGM0s%pPfQq0 z!A(uMix5b|??%dz#|rKZ_oxaU9Mws7#vfbz5(VPq>H>NvD6AP_RCI64lx-sz-(u9D1;ejY%> zMLH{4T3*O3F3vCBlHj|$m>Y-mqOx4W921cpI$qSbphhGx*shcie3`jo%>Zpzgjf^w zY)BvI`5AXIJXvB=NKwQbxTEN59)pAptfg3kxF<7T=c-1S=XR7zf`J8t>&Qvq-2r)^ z53%(4K}soNq&2*xNzd=8(Bfb+4NXF8-4~P>2wxV=J}+W*X(3CCr~-O6xgm`ft&|jk z5os}dKf3}hku)>S)E|(*NgjA@I&l3trZ~12Skv3P);50i+f%{ozjdd%25p@E1}_|3 zhY;E>yRH{hS+5nvr3&0}Dmm$$W~mgI~<#rP%4U^+ok9~j$ zQniSQ1rzGBz7ozXm|dau-155IZ=q9S@HqEYBRSaG4LVMgXDz$BJdp@5CzivUXDtk$ z{g#pFCpEZ2tbZaY-IWaq=@=#@XwV+0N?L(L%iI0CT=}A%5nWMd`pt z<5y@#^uMhL1wDb*mSkg66BBy30c!~&0|GnYjL6(Jl$n4$>7e^ebeUQDJU)22vD-Bj_hXQjMfYYoYW=QFJu(KITUI} zI!uvBgqDNNHEY!>UKN$2Xoh*z1!)mRLc8F$RYBgcrbihh0<=~Spk;<5x@}Sg6Us!X zMGk_KcD{*mb@;~<8(_u&8w&+I7M1|@?hXPbEY2I}IB!;%Av~TD;iS&(-9GcAoOWlJ z8w3eTRtB#K=Gl?^8$^hyI(}5>F zNX+7saL_GnK^@$RRYN3c6P4qlHHqBF_`V~%UBvULSYoPFl1q6xo}ZkYi06~A2*>5g zcp^Q4TnGrGQRfMJ@+B0^Fo&~hsZaE17OebzL5~qo=c58T6PS2+1fNBnk zddlbwIT+ah9G+sYC>dS|(N7FA4hnL>#i2|DDt_7mOkBYM5h_vSlnWeg)G1)NCjk_+ z6X$i^Mn3My0R>ldz`!M*WpX4F2PWZOmCN_q3!M!hd;zcrnLVatC7vv%lar}J0t)y9 zQZ5!t#Yr5BbTVC1kojYJBJHAq7kh~6{S`%?PT|swJbVp2Htslh_OpUJogT23xYMOP z)054}^MsTK+&tJ0A^gOVc#2+xWB-gn561F;|1*J}vHv{!Z%1zr|Eu924ebrRhX;Sy z^M}1}Kba`rZQX@H7Xn=fe8C~`{X3bU`fJx6H%v10r3A$sOh_da&NR#PVjkRFC-&s4JExQ_+0G$M8HYGy zbd4`OcP!y3Oa>N8CyjSMm&uOmj513Z%#kyop;3Y`g52?>GbE?rGW>X82BG&vJ8FNZ zTG{v5?UGErx8b1#ua_NY>YREoJRz#GWBj14bW<-p1q7k~x)}1*Fa+`Wj?VEZV+aY8 zoxYmEOGGF!+0XRBo}L0wy~L!64m5TyJOx7Y1cy65orcBxv)H|j`h|A`^Ut09n#;9~ zM;EULuY4SL-c81&DbYy89&(h{GpG@Z67_i)JquPekq%C-?vQXY7(Mmgy=mf|&N;V= zm_Oa9ps@TxlZHaxQ-K%g%K@L9o~*z5PGHRwPr(sX1hZDr6p2TNZwFJKthRb{Y0D%N zFkuuFWC`KFcMHe^Lje{Bbi^R+j=8XrZNV{piTX}E3B$qplv?3-a0~}_r_F^(bi9K| z8w?6^LHhbgJVM3?@lq8UUD$mgr1_PMj{Xd8h>A?fN?g?$DRc4LtIK6=ImMdKq|(zV z*5|_LAXWuqq0st%$d0CH8BZn?sp)irG&*^um@XFL6LLbHD5R44SaK>=h|BV1shCXV zW2NcoLLrfmr()0@rW3_b@e^+yBOf)_sSB|Nc%gus+xIHHcOw};54gpKgI zUAXL(;M6FW5`aWTdrF>!`e&IlNK8xLj@E;?drCuK+bE%NC{rxLLIE}i1`yCIdKZB3 zU}E!!$Se#WIG9sd8A?tOZu0PrjSXogF#8gcAru-@AMxIQz@z*#~tNjz_lV z8zm}N@OmRi^Y96SM8?WZezzVpk>YiJg(+Cv^9eaT6;G$b$yh-Nr_(9qK%1OOrx4pe zAx|fTq}oUY&`}#Wq){*mM3_ay2hpq`UJ$76BB=np@8(#4ZM(k2@S3|cbTRE6Y(x#H zVQlH7@zz8LJ@nE<@+&u&;r5 zku$uRp|rA&!D(#=cj>jgB!@I;a0ObV?S~*J@}Wq9d?^}S5j1GfwE1x8KeR@Z0*8L- zhqh_*q5VD2J2M=PNQv5AJHCKxm?G!>|GdxpywCqxeQ!av6se>e71@#|dcM@t+uQT5 zB=z+4B=P?+{&)WM;!Du^fxq;d{y*tovM2J3&yS4#SMrkA2}L%ZRq;&zwf^^Fgjf7`@zua&|eIvhkj>dr|w`ZWHHTgw`2C^1kx$3IKlV@h|I5H{jU~oj8VrrZMt^hgpN}mL z{I|jD1LcwVfomiGZ1}m6U+eq7W96aX;GYctIi}S8*M&eA0$m7nA<%`u&o~6W9C)+0 zpcj?0qM6ZxT-Z?(bLRuIy@egwip=6;RWVIf*H$gvP$I0XzmW*2y%nXRXqFz`*Nxr0 zq7`-`N>N1}Gg4B^iW#w#ht^Ge%ktAqC@|k^7Alc#L$2=JSC##Up_CK@4HXmBEX8>D z`M?#fvWL=DOSY86^)~}+y^R5=AVQsJwMt$wmP+?kQ-#rjx-;K-IgskD6si%7J4?$b zt}4c!Vwi7Bfh_eqL(TEQO;(huZqjsB#e8claDfNjQB6EKxW>!ZE3`f{QqVO^)oRL; zHfukcc_9!M;3?G5pmG<`Gt;jIuJ_8@Xkx?5jF_~B2!nL`cxi=TE=s4uflbdctFlHV z1pihGog5ErxX@QMKu#`L>Yfrd#YTl`o#BFBRm-}SiUkx;*9<}BVYQ6CG+Oqad@Ydi zG@v!q%p0;1*-?u{MVoj%aLZFH*B+{6RW=S9H4wez|#t zPO;efHwe8N@Ua0~05al)6~948+{Wz)o)OMpqVstC2v=nTC@+fOopKR8=&kxL`jvBQy`QDi@Rsv}+YJTs^RMbS<)H5}C1og%xej4ACSo#fqxQ zWsnw20d=sHVx%k|=rvyU>n{ePo<537zP4RGklqNadS+&0wFL@>`GE46mN7+Jh zASUwKOM!{rTdH-tmdD}dQxc}b_Ufg;k_!?|x0JlD??$Na+(A`YHuOCpj`7N9;Pqay zl*qPfeSJDmYq#&wPr;GVgW81h|vpQ3B>IoOk5NN?2)1C)|YAa zjd8d;d#>Ey^H&1z`^!O{?QOErf@?n4d_r6bWf=-n_f;aLUn26sWU&U4Y?YPbyoRZA z*%%#1F5_A3$mXhI%_$|hR<`II-8jfTtSW{|`!PyDZ6?)*A{XZ{#0?qi15gtqQvuU6 zb@zDZK?!LD7y9P=4!ZL^hMVcF0R2e~hMH-=L)v(dvSRtV9~=(6>Z02~D@rT2ufLhn zifL42V;A>fUo)|w`;;bV-&fDJ*i%!H4cza%Q_s+uZS1+bQ=Tq@t>rH&n^ArA z#gU&3y!@BMe*Mz9bHTU&{)2X_ISe&mB%n_K2+hRDJq4|R=c__sjd?o$&v@-2jSsx@_M zRnto+x!k719`eeMTan{d{dvf^uUKpek$=xP_D#W0PPt#Wj)NTDTl%ysjvF?vO8)7v z9BuDcuGQjp7Oh=oLR=pFuyN3QThQPGe2p1a)dPOoYGDob!`H9{3*$S{EbQPS@03Rp z0~`~jynGlVqmO;#W{rjW7(QQVGq2dD(BU(E#R7T!ysEE~dxnW)KTF;A?6q$MM;vf? zc3-iWWt&2WfHlMkUu&mxA*A>Un}if!nHaWZvnG(VtUhes+Rr zfb#k$KQ|cM{Kf6YBph6C!#=JZhSXwc#>0X%p;>4=WUEI)GnP?P>f^2J3x1^I+J#D| zRhck%T3Otnoz`}5X7kJ~SfKQ_D#>NDEpXg{JPIyW$vj36Uh(v?nnR?1XoXeHtU_qh zjmPN2zGyqej03IE`5?F~9c9_^MjPcoFm;q_;C6#%wPvmv=N*YYG;-9(P1%vY+?>2^O#hf38z>bl8=?g_lyR_V_>cR4IPxFHJ{WtU@4xo_-ZMWJ z{C}f=KKge?Hv_*K=%fGsk~9L{VY?9cD-MB2)=*ISBrc z-urD>PA^^WxH_vl+A%HeJ=3m2gN}*8Nt3Xmn9wCRagTg4xlHnDYLs?^!43+xT{o5u zg#hVYq8MP~!B@Zujrk`xn?>!`1@7cx>^Zw&7FZK*%tFQxoz99^rPtsLEE|($s6?UIsI%QpkQD(JZs8y@g zTv{?m$03u45n^{4;czWGX$RjA%o~QjZz{$OYF_2$zDu>u_#c?rhlO$tQ=bJ8U>NAM z*&G?+78Q$-CIy$k@5{mX(U90(uZ4+t)R|~Bx&wrZ5`c>P z@#HkE_;1$i51TDE{?J3Q;q%-Y6yh!iRWITpxS*MeHR@UK99@e`c30}C=?L48ZL zVZc&Ls$!s;EgnXXe);LKdxvFxRjPI2HNuo7MaI=8d0~w#kB}STURofnyWUVNfddY&7RKfE-rL0#8 z;u7OnL|TD`Pf|_vfek}{$R!nj7{QFmO$42_m|F!jU#*q}yyFa9`5~JfbNVinHKCcr zRD3#?0?_4$OKduI3gU_BSPXUq#JKJd@T;~3c|p$8UfP?0#j*)nBFzw{A{TgeP9-|k zg!2r4(>7?{)Qttb!0YFZ$zQ~kaox+!5qcd}yIVtOs_dV%ujW0RqE)s$ke%9*j(G!? z)dGx$vw++-Tw`dsvORy?R~5BZkr+4WUesZm1}4POWkIgWdGeEhs{tb(ylx1-f)vq) z6V1VTIdWH z#>~taDo0JD5TcmTmtPLvIT|>H?>h{&uD}>_iiWCQ|H?~&H@+(FMcZU& zs+DS4>FLQmADBI8fQ^yJYg9Z8iC;N3weu+~oG_eVHS0%TelGa_k?iZ&y+k5jrwx!a z_Us9RvV8#k;;Ca08sl8UZWyk}8gTg-&(WI8sgwP`_uNN4=RWG+?>qm@kDvK^@JGQP z5!#8*Cqck&+b#q;fWY7V@N2=^KYh-*UC&|%2SIfY(7cy_Yj~#d35P|R?hnUF4CHJr zwESQ$dw*_oZhn>0Z*1P2$H)E5!u(t&H@~zPf`P^nsK8O2R@vqM;uy$+QybrzdX*R{ zKD=_ZT0Y2F@O6V%t~rbQg^JueT9mHtDCP1z7$|bq<6@h3Y>cmk?yt@+&1E;|vN!JC zT7IyZnaeEavMZa}#ku9B`NiC-Z^oxrcjxSr0UU1Mg{&Dp2F`E-S79VR9f^g(Yt$Zw zA5JEt5lx4#qNHxmkr>S}eJB z6&D0g8vM*U&Vc5Ff&)#v-1IDz)rjdfrJAWodP!Q-bO>^UpbgPx zX)*KOVhDS>6k$KFylQ5OjpLG zEqnRWTVj^D-{099msCx%b`;4acA@&l2I;xn!`6n3xyHg{R4jLUX>m1|S;^g7_T%}3 zrn0uXEnpHQ*)U4-3I`srpRw&K7)?)2$BXfloX@AH68S+C#l&;G&D-+KalVZPFQw77+>(g=VTMo3P34d}i2TUx1z& zZ!Y2j_2Ed{T5T6cEBrhsjXYp0na#|~E&pD$n7X&FyMWJgvUfA{e%7hQG(|0Uf{%?p zkabiI>d4Pyh4ag^o3}G`(YD7RZ=J^KjGBfOf~>}&v~q3~oP=;9l}yJAlZjM5V(Nw6 z&t?^8qDXW#mB1$J`$T6-U{Y&1%QF&YE0MBIax`rx)0SJuLqM=N|IKwOW9H{dj@?t+ zWj!y$$iV*WjSIXHcp`WZiY|j1;~1a!82#CL;n}h}<8If))4bNsv|Tn|vt`dJ%q)j} zAK1^fppxa)n|{`Vw{T-*_}}#m27k9_>?dQNjE4Iz4qqAi&7o_98zX-Z{N3RBk$*Vy z(Yc?FJQ%rrZgr%8_^0Q>=Z1QJ+WQB+ztQ`h-o*}NyKa>(1iBFDLg2H2z{jPF!TImK zc-&vu>*5c|iaq-1nFzBY?J#a*+wyhGAln->x(K?Xzd}?EhF3Z*qeyoRl_oB~cE0M((I`t?sM}=y2J%r}Ogd2zj02;CH_Gm0}(i)0|2o}L~L?I`N@4z`$@ku8wox^EeJjm!;XGA1_^3hT`@O2{S> zgFWdNCSMDNzyDrC2`1#WLuds_z}|d+Y30u9GLrIcuI83jGPkmucd`#w85xkt7urK} zN8ew>wDy!744b-fLr1VFRDqQ$>Ai{~mhwL3^R;b1PzZ>Yl*Lz=5258C&7c8D;M07s z1{79`;nQ&eAa;7Q=L;zzySNG^XSHDv25Laf>>qzLB)(4XSm3AN~KJO!K+K@LZ2 zpP_D_2B%`C0BU^@1o;D_QJ=Db!qe1w9sjaG$00&g%jby_U7R{wG9$Qjw{&S zZ%e`G(OP5jwt}&9GV}z;f1`f%#`)mtqmjnN#%57hw*w`XlN!M5*T$8o2;`l%>?Av> zZNv19K#ga0oE8{0JL;hhUgOU`3x4B^-sjc@WR+NIfKPB9XNZ_wTML0*2#wQ5ki`k4 zgpityGyG`d(Y;rL6Q2yU5bqB|P!V`Mn<9m>+DKPnhoamB@xd9eCDWEw%*bSZB9)(% z^WnTwD20>hiFi0)EEK|tq+FaVO{5g)pxFZrN5wxT+$bV^Dk7kY>=5PzrP$W*_6^8! z#tmUPwYH|1E6TTOK+VqEZ0|6S(V|uTy;lND+YTS=I2Ez0Dcw?F6gWQyot}njBTVk7 z@LqDfot*F-PPh@Of8**OgriaP&Oo|XThcc|vFdh}{w&AW7O zUORu14j%aOmB3w30|AAWHIE)#4rV?IG*;}S7;&xyTE*al0<&>%!p> zT7pJ?Lbp3!nET7#1N(Qqj@)uyoN`tsba6b$>)!}m_rS?UODEeNS2_CXrQn;7zUs@` zLXLo}RwWV9(W8Pleq2o_gbRd36ciz{(1~d>@{v3W#W6`Uw)QRrzxs{vWMI>S&SIO{ z5xrH8jQIC@Q^Ad2nsOL_lC@4sI7w=2&KJs>gkoVTS;`lRVL0Oy!^tVR6i&xVQ{iGv zhLS-kO~(>>tfCt$(~Xts#>#YKW!lBc5TCTJy=BzkC;8607M5VbSeDe1gfyXW9l%9{ z$Ri0ZEE;=+K!YO@p`{$O8;E3@8RMhE&3(R6d|4g)*X8O9zqx^@@rx3*2rdk5SaMH!P_l?1$$KP&cz z@K^+;H?Rpn0`gCR9b<=5mm;k201zbPq5!P0t}#+TGl$-RniN?kc5(;Cyl|P~5YZlC zi}q$?BNU*Z!p*50j&THQBM~DYdRdkaoX|&vDKf;cZvd@#IU?Y3S1p%K;2Z{!_h339 zXH0U%Byib5kT#}6M~`n7g-Pat)bNuct_B{E+!5XE6h?)$VIz4hwwo{9I#t~1n5l|P z#72cNaGbWcR94XgL!xmK#%V)gRocfKq z0iWaf(HmoUA|hqV>NY3rrAPB6s=*0N@MTXy$|t}WHZL!#(n4)2q$z+L_6L@773TP+ zlRtAhZSfEl-Ul0lXrhFMm?bc)W*}1lHq|~#G@uJ*qJm(g(O8@(%BZgKd6wYbYUl_) zwowZ!10h7DuPK>WF!R)!1snzssDWhhF@q8pgaD+d3aU}qrIlU1>XLw~R~@iTfG{Z3 z4Z&;)$=uyTPjR-e`WcAOwKu!z4EgApKmugwmEIysxM^BQh`b4kP*mRGv2uU}(@2=9 zYvm&Lq(q5`8MLzo2nV4Wogay;ou(H^#hM{dRBR`@3v-Au)g&kh^alVD%WPA6GG}qU zj0DqOHJm>P(_jCj9mw(w9okOtuicgh41SWyo|`1BWknb1@Pv8Uq=TE+KFtxC8kZWmrp<2D0T zv)kFX86R69+etSd@LkZ@aIGp1bf$r5rnE1EhKR|uM;$>MHD%u=<^s}$r8qrsI&Qt=br7dY;jSO>kr zE12e|*k4fmGXkMw)Bo1>6*XCB3DDT5& zH7)@W$EE$91IAi=iS!a^cbO6C@ZAxRI=9I&Q7R)}R~#?~-jt$C#W{UF+ zf{V4%9GMY_isdrnh}L}6nGr?a0y+%8=FTYQo(4jnV+ccL ze(=IBK9j-!(8=!5fu`D5n}B-ie+ikZ%vJI^gz6H_=&7 z352x!drBl?sk8SKPfd_BT+^K5sZ`9{(=o2L#oDHhcQciIjFlym@SJI$PI58{MGc%l zaC4Eah&=2>egoS<&IMbTxC3(kdm4V@gaKi(bRrEA{u-$iv3NR)7}V#?0&^|}s(FI4 zPIq=cVG!YWcYJM>{DKJGQmG_xkSB(E;_tYdl0xv_^F(J{Nr@&eoY-bUqP$s>LOHHV zfS2@VgqH0(r{pB$o-TBl-fk~IU5RV z*jzgeMz}h!?diKjLEWfgdS{O3DeF(s8E*so7}Yn({vYW1qn_YVQ11Do{(t!eu$w&D z6#nru>0tO@>#TM4q)B!ha|KEKyw0{whv~>;%bJ5zS8N%`mJxx7q!@rGM0s%pPfQq0 z!A(uMix5b|??%dz#|rKZ_oxaU9Mws7#vfbz5(VPq>H>NvD6AP_RCI64lx-sz-(u9D1;ejY%> zMLH{4T3*O3F3vCBlHj|$m>Y-mqOx4W921cpI$qSbphhGx*shcie3`jo%>Zpzgjf^w zY)BvI`5AXIJXvB=NKwQbxTEN59)pAptfg3kxF<7T=c-1S=XR7zf`J8t>&Qvq-2r)^ z53%(4K}soNq&2*xNzd=8(Bfb+4NXF8-4~P>2wxV=J}+W*X(3CCr~-O6xgm`ft&|jk z5os}dKf3}hku)>S)E|(*NgjA@I&l3trZ~12Skv3P);50i+f%{ozjdd%25p@E1}_|3 zhY;E>yRH{hS+5nvr3&0}Dmm$$W~mgI~<#rP%4U^+ok9~j$ zQniSQ1rzGBz7ozXm|dau-155IZ=q9S@HqEYBRSaG4LVMgXDz$BJdp@5CzivUXDtk$ z{g#pFCpEZ2tbZaY-IWaq=@=#@XwV+0N?L(L%iI0CT=}A%5nWMd`pt z<5y@#^uMhL1wDb*mSkg66BBy30c!~&0|GnYjL6(Jl$n4$>7e^ebeUQDJU)22vD-Bj_hXQjMfYYoYW=QFJu(KITUI} zI!uvBgqDNNHEY!>UKN$2Xoh*z1!)mRLc8F$RYBgcrbihh0<=~Spk;<5x@}Sg6Us!X zMGk_KcD{*mb@;~<8(_u&8w&+I7M1|@?hXPbEY2I}IB!;%Av~TD;iS&(-9GcAoOWlJ z8w3eTRtB#K=Gl?^8$^hyI(}5>F zNX+7saL_GnK^@$RRYN3c6P4qlHHqBF_`V~%UBvULSYoPFl1q6xo}ZkYi06~A2*>5g zcp^Q4TnGrGQRfMJ@+B0^Fo&~hsZaE17OebzL5~qo=c58T6PS2+1fNBnk zddlbwIT+ah9G+sYC>dS|(N7FA4hnL>#i2|DDt_7mOkBYM5h_vSlnWeg)G1)NCjk_+ z6X$i^Mn3My0R>ldz`!M*WpX4F2PWZOmCN_q3!M!hd;zcrnLVatC7vv%lar}J0t)y9 zQZ5!t#Yr5BbTVC1kojYJBJHAq7kh~6{S`%?PT|swJbVp2Htslh_OpUJogT23xYMOP z)054}^MsTK+&tJ0A^gOVc#2+xWB-gn561F;|1*J}vHv{!Z%1zr|Eu924ebrRhX;Sy z^M}1}Kba`rZQX@H7Xn=fe8C~`{X3bU`fJx6H%v10r3A$sOh_da&NR#PVjkRFC-&s4JExQ_+0G$M8HYGy zbd4`OcP!y3Oa>N8CyjSMm&uOmj513Z%#kyop;3Y`g52?>GbE?rGW>X82BG&vJ8FNZ zTG{v5?UGErx8b1#ua_NY>YREoJRz#GWBj14bW<-p1q7k~x)}1*Fa+`Wj?VEZV+aY8 zoxYmEOGGF!+0XRBo}L0wy~L!64m5TyJOx7Y1cy65orcBxv)H|j`h|A`^Ut09n#;9~ zM;EULuY4SL-c81&DbYy89&(h{GpG@Z67_i)JquPekq%C-?vQXY7(Mmgy=mf|&N;V= zm_Oa9ps@TxlZHaxQ-K%g%K@L9o~*z5PGHRwPr(sX1hZDr6p2TNZwFJKthRb{Y0D%N zFkuuFWC`KFcMHe^Lje{Bbi^R+j=8XrZNV{piTX}E3B$qplv?3-a0~}_r_F^(bi9K| z8w?6^LHhbgJVM3?@lq8UUD$mgr1_PMj{Xd8h>A?fN?g?$DRc4LtIK6=ImMdKq|(zV z*5|_LAXWuqq0st%$d0CH8BZn?sp)irG&*^um@XFL6LLbHD5R44SaK>=h|BV1shCXV zW2NcoLLrfmr()0@rW3_b@e^+yBOf)_sSB|Nc%gus+xIHHcOw};54gpKgI zUAXL(;M6FW5`aWTdrF>!`e&IlNK8xLj@E;?drCuK+bE%NC{rxLLIE}i1`yCIdKZB3 zU}E!!$Se#WIG9sd8A?tOZu0PrjSXogF#8gcAru-@AMxIQz@z*#~tNjz_lV z8zm}N@OmRi^Y96SM8?WZezzVpk>YiJg(+Cv^9eaT6;G$b$yh-Nr_(9qK%1OOrx4pe zAx|fTq}oUY&`}#Wq){*mM3_ay2hpq`UJ$76BB=np@8(#4ZM(k2@S3|cbTRE6Y(x#H zVQlH7@zz8LJ@nE<@+&u&;r_%Y-RX7HKIBO%TJqIo_6g zyXW0K{)D{-lnkS38=wVR6iDCNhoWeKAP+@Rpsy*40tJe`v?%i6mn5%69t@*tfP6Ev zKeNj{>dXW|lCFT0Zuk4YND^FmK5)$?1D)YH>*2|oSs z@&2UXOWJ#Yf9W&*oc8BZkMajE=JH?k^yWY6$$ymp-f74QEa5=HfrJAI2NDh>97s5j za3JA8!hwVX2?r7m{5o=ACw1=f$Vlq=s)M(6vgDA)dgx1U<uxY$Bb_!rxN^KkUi>ApbAf{~lh={!?}# z``5Y8bN`wd%5LYroqZwmkD31&d?WK`nT5>1<-R-oVm_OZhQB{_W$>?t_J;m$*v`!k zewKZj|D*hOvR@2-FJI1I&XA$G;lCaFuYn)tR|fxY=*i$Gxue0gten?#uMPb)_vAN# zd&w3O4kR2%IFN84;XuNHUwIDPM60QN)7sr8hFVve*dTfnTaJQNN82OpS*uQ6K(|w> zStU9#>@gLqbyA*u9og^lofk2-eG<6tj zDUL-LgV*RH-nxhid=j+U) z3)oWXTD3|HnTlX=0JwFa=^C~U1B};SL9+q|-wYoty^8J#AT9(h;gQ$ST>)lmRT9v= zCZR?dHc?IuO7$J{J}WTWzq(T)WgCV@Yj-E$~R} z#QUiE7DURkgmjNCi8MX^0EJIZ4-!#X-P*dbwdG)Ihrm&q7M#Na<}7+&L3c6?sM#xI zKLpEx@6Ps~>&buCdoJG|{&@I8Zhq*qOeSMw{^3{NttSioMRDL;-{?)>{fo6u5_BZT z37tGw8WjM(lM@6sfGdAuy zmXhI|)fBVA9c;WjR~(hQ^c9RwoWo%N*I@|`ioFh`g`K$I))@FXo-slq;#(uouv_i` z^jvxb%#Sx37DSNzBc;L7m%;5E$wX%GA}=pIih%hlI{-a-4kEY6XpguXOh#0eB?Vrf z8HVv`V~2%U5{p3{S}2GO(`HiP+l#oMnC-$#tDYBfN4CsY&g8oz>9FbvnE|5}hBEKW z^9BZGl!ZhjGQGdAPzu9GcFuzWovg&>QISa)2gN*$!9$rFd*iV%&`6s2dg&mWG?GPj z90ozA;s!dA#c+nZMxrCjDl8Ekxjwc zPP#vD%}26o>N;-Pq$}N@a$pNr0hdO?HZXz2VVW>m4xb518?xwhwLU%58$o(ldbEwsGrT1xSIG_8Q+(B+`;D7V~-ussWANPN^f2IF+ zf2Oa{htmI%zLS0x{S^Ht`g`=Jy-(2!db{_FUsURu(E0z(0jM<3UJg`=OFK_0nBuLU z2PNrqgG(0X5YP}>^7I{UfkO)o@V7RN5ZyAR+o&ke!sYc+;SpQ~ z5D~LhgWE>)182U`=v%g`=u2^`Fswax1#O617n=*w^qq0x&6m*wVF2esEavfVUrx_I zL&1){;)7RTfQa705Ny&O2&t}{6}KP2eakXF1VQz;8%BM%rR!@dG`$QT0i?XDlNHm^ zYMP2EP5Yh+kN3cvx2$bi)%S5>y*?j~WRX2S3fq|f9efO=&5&4N z2bf-GU2J)7V{=rdH6tprEU#t-Bf#2)o;Tq0M-V1&hg4T}jtwRO^qE+I=0f#9wlhnLl2!=v{8wP!j5L_j7nhdB-^Yx&@LtLevjy8lX6^gu)S+5 z(j(|2N}3Hc;J|<${Eta7M4hi(!G zV*~@<2ym`XKoU&gNn(rx9#9zNg)9-$-fJJTy$L&q{=B7a({rJw;oc!=gQh-qoq(&y z8=LL+SB6nLf7b5I_*f3Te=A&OKG7*JO;1mZk55e%XQxZE)gfeSfd%$G{PWu8Co6wE zz@eL?niDGfZ9cm@m?odz3g+R+)W>$}%XgZiu!wY~S_tkJA6#*_$Sigaf}G9C-G@czWs6-P5~Kv^8_! z@U-nQs2aE%2VC361}#iNTsY_Ja5uGwo8@t@`f#&cEWigU5HeV{B6Bk>%Qh`<1{!#B zR}PMhJ5;9IUM%UkH#!m=u;@%x&yRxd^?ci@Xw=_PGvUq+E?TvqowZDA5cERiQ`0Ql zdFbBhi&C1Lpw80u+{H4?8A88DbO*1S5ET|mQvh`RYKx_@{)Ao<$(^oJGxaJ9Dvn@8 z1O`U5`kuB^*Wm-^-3x!(?aj^h$TX_tPigR#=BCiYdY@5zeu6DSh~6m5qGi!MfJb-`oYHuaMSn0!`(hDz5NQ-|Y(9N5 zmR|Z~KW@E2j~P-JR#|84wz(dGq`_50o)z4;XkKz8)7y>oU+1t1dy%)HkfPRMZk`B1 zl;Hw&f@}V3o_>L-@;P{*8R>MoAO)_)!QJB>kUa~M2bKc>9WSLiYRgm|8deL`ya?YQ zS!Ygmt_ZTod$^OuS&9=hbZN}2L4v|k8KyG(T9sxC(Crx7D`JV%E?8o}_e7txI0NBWioa^is zAW%EKugs%{_9xBT>B=|9SlCd3xbWmHZb&`76pKaa?7lgrULG$`sHMqbVU|qQ3KP?$ zT$rg%;6k~GYcpk{mT|2_@!XrzOEf#~Y7Fh_z|B-ZhbxO-az%@Z51@tufit~R3Mm7G z$g>lriQ??c)GTWRaq}TVB@GZ@wh#s!gJwWdgY_W)lD(h{Vx@L);U*4f&8FZW`6G;gf&!HR24t>{IizCy(wnGoo{76~jb~%?+AZ|X z`EXLk3>Lrp1MoLaz#G&rc<{nav~|MZvuWZw3Z-wRZlpK=WZE;I&%5OmR-!HiC8=U1 PRjj0nl~l1hRk3~sq%BzE literal 0 HcmV?d00001 diff --git a/dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/state.vscdb.backup b/dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/state.vscdb.backup new file mode 100644 index 0000000000000000000000000000000000000000..9581b08c4729de776bb1f032e8eff625458ddac8 GIT binary patch literal 24576 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 PRjj0nl~l1hRk3~sq%BzE literal 0 HcmV?d00001 diff --git a/dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/workspace.json b/dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/workspace.json new file mode 100644 index 0000000..8e940bb --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/c3bfe6a4e3ea522f0530724fa39111f1/workspace.json @@ -0,0 +1,3 @@ +{ + "folder": "vscode-remote://ssh-remote%2Batlas.tail4806cb.ts.net/home/riley" +} \ No newline at end of file diff --git a/dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/chatSessions/6f526eae-b27b-49cd-9817-e72d6480f23f.jsonl b/dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/chatSessions/6f526eae-b27b-49cd-9817-e72d6480f23f.jsonl new file mode 100644 index 0000000..7b3ea0f --- /dev/null +++ b/dot_config/private_Code/User/workspaceStorage/d58507d32a163bf14f1020a325e9617c/chatSessions/6f526eae-b27b-49cd-9817-e72d6480f23f.jsonl @@ -0,0 +1,17 @@ +{"kind":0,"v":{"version":3,"creationDate":1774364013331,"initialLocation":"panel","responderUsername":"GitHub Copilot","sessionId":"6f526eae-b27b-49cd-9817-e72d6480f23f","hasPendingEdits":false,"requests":[{"requestId":"request_621f2364-f555-48e8-b3e6-ba6b95e5d0e1","timestamp":1774364017720,"agent":{"extensionId":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"extensionVersion":"0.37.9","publisherDisplayName":"GitHub","extensionPublisherId":"GitHub","extensionDisplayName":"GitHub Copilot Chat","id":"github.copilot.editsAgent","description":"Edit files in your workspace in agent mode","when":"config.chat.agent.enabled","metadata":{"themeIcon":{"id":"tools"},"hasFollowups":false,"supportIssueReporting":false},"name":"agent","fullName":"GitHub Copilot","isDefault":true,"locations":["panel"],"modes":["agent"],"slashCommands":[],"disambiguation":[]},"modelId":"copilot/gpt-5.3-codex","responseId":"response_015041f5-9ef5-48fd-9af2-8fb9f36e5b4a","modelState":{"value":0},"contentReferences":[],"codeCitations":[],"timeSpentWaiting":1774364017720,"response":[{"kind":"mcpServersStarting","didStartServerIds":[]}],"message":{"text":"validate the codebase, documentation, and organisation of this project. be sure to familiarise yourself with the codebase first.","parts":[{"range":{"start":0,"endExclusive":128},"editorRange":{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":129},"text":"validate the codebase, documentation, and organisation of this project. be sure to familiarise yourself with the codebase first.","kind":"text"}]},"variableData":{"variables":[{"id":"vscode.prompt.instructions.root__file:///home/breadway/Documents/Hazard%20Pay/AGENTS.md","name":"prompt:AGENTS.md","value":{"$mid":1,"external":"file:///home/breadway/Documents/Hazard%20Pay/AGENTS.md","path":"/home/breadway/Documents/Hazard Pay/AGENTS.md","scheme":"file"},"kind":"promptFile","modelDescription":"Prompt instructions file","isRoot":true,"automaticallyAdded":true}]}}],"pendingRequests":[],"inputState":{"attachments":[],"mode":{"id":"agent","kind":"agent"},"selectedModel":{"identifier":"copilot/gpt-5.3-codex","metadata":{"extension":{"value":"GitHub.copilot-chat","_lower":"github.copilot-chat"},"id":"gpt-5.3-codex","vendor":"copilot","name":"GPT-5.3-Codex","family":"gpt-5.3-codex","tooltip":"OpenAI Codex model specialized for code generation, debugging, and software development tasks. Rate is counted at 1x.","version":"gpt-5.3-codex","multiplier":"1x","maxInputTokens":271805,"maxOutputTokens":128000,"auth":{"providerLabel":"GitHub Copilot Chat","accountLabel":"Breadway"},"isDefaultForLocation":{"panel":false,"terminal":false,"notebook":false,"editor":false},"isUserSelectable":true,"modelPickerCategory":{"label":"Premium Models","order":1},"capabilities":{"vision":true,"toolCalling":true,"agentMode":true}}},"inputText":"","selections":[{"startLineNumber":1,"startColumn":1,"endLineNumber":1,"endColumn":1,"selectionStartLineNumber":1,"selectionStartColumn":1,"positionLineNumber":1,"positionColumn":1}],"contrib":{"chatDynamicVariableModel":[]}}}} +{"kind":1,"k":["customTitle"],"v":"Codebase and Documentation Validation Request"} +{"kind":1,"k":["requests",0,"contentReferences"],"v":[{"kind":"reference","reference":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/AGENTS.md","external":"file:///home/breadway/Documents/Hazard%20Pay/AGENTS.md","path":"/home/breadway/Documents/Hazard Pay/AGENTS.md","scheme":"file"}}]} +{"kind":2,"k":["requests",0,"response"],"v":[{"kind":"thinking","value":[],"id":"3/R8WeLSTPMOUkPD8jU2wuod3FFFF9dwCz/gfRAvvTOPEx6arcK1jSWLw++L7uD3PGOgqZ9XZB481UUHi/P9zF4++kLPdA0fbiSs4/dOenDB0gRYxtwHuds87zBMSGjogE6UrCOSgobqG8f+IsdeZKouyV4iJ/lkvEoSQ1RrNBqXZVAKrUhcp+kBA9EjsOy6waVrtOnoOzCLyrpRWiLVfVWaEgjDqzmcLqha6qAnEMIdC+8ps3lIbNaulC+o63i3RFnNJOotibrpIVR03aszOY/zOfOcgscbwMgErukIDJFhEJFAE9l7XCs2AD5bqJEt0m+mFd0r2AOOqmmIym2K4Dx1tBV+ni/7IOqRk0d8JbU6geWngzx2H8sDndV7x+bUr9nE3yze72PyFNfkaU0VQKryzQp8+w=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"I’ll review the project in three passes: architecture/code health, documentation consistency, and folder/org structure, then I’ll give you a concrete validation report with risks and prioritized fixes. First I’m mapping the code and key docs so the assessment is grounded in the actual repo state.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":"","pastTenseMessage":{"value":"Created 5 todos","isTrusted":false,"supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolSpecificData":{"kind":"todoList","todoList":[{"id":"1","title":"Inventory scripts and project structure","status":"in-progress"},{"id":"2","title":"Assess code architecture patterns","status":"not-started"},{"id":"3","title":"Review docs for accuracy","status":"not-started"},{"id":"4","title":"Validate build/test readiness","status":"not-started"},{"id":"5","title":"Summarize findings and actions","status":"not-started"}]},"toolCallId":"837afd81-8d4a-43ff-97e4-d3685c823d1a","toolId":"manage_todo_list"},{"kind":"thinking","value":[],"id":"7fXwXSdFKw2tMakyRdhH8aHHKSC/G9+8tG4PbVBwr1TZevdMPg+kTW799d9W14qlh5NsbZAUpsECPJaIrg3ONABwdvbLPumb2NEFCO7L5HxHGQ32gE8o2+NAWNyfqLTdCzCs2ywKBDSQ5mcOFWh6tXkKgpeeNQplbHTMkHmWFd2sIzsgcH21EcQ1hj0otYzpwEK8Y/kkUa0FpywZ0hK1IvsrDVy+j5y9uvEyckKynkFBVJOBABucdFNlF2lgNv+G4wTuM6u1KqXIjjb4u3N+RHWplsN7aFGXzzgjZdPChZbagj+Go9sz4OpqnJmTgrIEOjeKM/YnszY1v1HLcgKfmHwmTiKJNC8Xbba6WfZ2I0ywFcRUISGtSLveiu2bt3cfahYY/F6MTRhIZk8XiEhP6Fv+t5yqJw=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"I’m now collecting a quick inventory of scripts, managers, events, and top-level docs so I can compare implementation against the architecture guidelines.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"2a1c5f16-4271-41d4-b00b-f82b54dac537","toolId":"copilot_listDirectory","generatedTitle":"Reviewed files and searched for specific patterns"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for files matching `**/Assets/_Project/Scripts/**/*.cs`","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for files matching `**/Assets/_Project/Scripts/**/*.cs`, 52 matches","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Destructible.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Destructible.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Destructible.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/EnemyData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/WeaponData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","scheme":"file"}],"toolCallId":"b643a24d-4794-424e-9ecd-77174ec1e88c","toolId":"copilot_findFiles","generatedTitle":"Reviewed files and searched for specific patterns"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for files matching `**/*.md`","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for files matching `**/*.md`, 7 matches","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/LORE.md","external":"file:///home/breadway/Documents/Hazard%20Pay/LORE.md","path":"/home/breadway/Documents/Hazard Pay/LORE.md","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/README.md","external":"file:///home/breadway/Documents/Hazard%20Pay/README.md","path":"/home/breadway/Documents/Hazard Pay/README.md","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","external":"file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md","path":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/GEMINI.md","external":"file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md","path":"/home/breadway/Documents/Hazard Pay/GEMINI.md","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/GAMEDESIGN.md","external":"file:///home/breadway/Documents/Hazard%20Pay/GAMEDESIGN.md","path":"/home/breadway/Documents/Hazard Pay/GAMEDESIGN.md","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/AGENTS.md","external":"file:///home/breadway/Documents/Hazard%20Pay/AGENTS.md","path":"/home/breadway/Documents/Hazard Pay/AGENTS.md","scheme":"file"},{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","scheme":"file"}],"toolCallId":"31fa71f9-bd95-447a-92b8-43aeadffb1cd","toolId":"copilot_findFiles","generatedTitle":"Reviewed files and searched for specific patterns"},{"kind":"thinking","value":[],"id":"XOqPsO94ZIZRZKSyMh4xCN/yRbaWZiK4/2A7mqrBIePwb2DHToi+nuDLbnizQx9cd9hENX6pu0Hw+trNuVkB+VH6WoIDV499XTktjS1cnOaUCMIGXt8c1tXlwjBrm4V7iDA7vnzwl8MisMuHmhXBLWCkMNh/VvogW37FwHmfS/FQSNEvqVsG8+doR9KdjzcvLmmM2NuRMmNGHl0NafkjdoEouRY1LqH3rzOswVaQ0dovaYq+bt/A9s/yB/xFu5/dxVBkUDJ9vUzgB8gG57YY3Q9RikuyAwcOwWjKJwERp6cMSKDolsVQUiJWJY+Lr1JcQCGBfEvCdWPuMg1Vv6RvKAbe9T/QTzn0qNZrrAGyiAbYlD45dx/o8I+aO1ePbmalHYrcHyjinoOjxJ7a6kIthg5pd+p7kw=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"I’ve mapped the repo and found 52 C# scripts plus 7 markdown docs; next I’m reading core architecture docs and representative systems to validate whether code matches the documented patterns.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/README.md#1-1), lines 1 to 260","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/README.md#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/README.md","scheme":"file","fragment":"1-1"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/README.md#1-1), lines 1 to 260","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/README.md#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/README.md","scheme":"file","fragment":"1-1"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"44755f5d-8946-406d-9dff-a90120b6d849","toolId":"copilot_readFile","generatedTitle":"Reviewed 3 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/GEMINI.md","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/GEMINI.md","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"d54eab64-2ef3-46f7-8b31-8588c1436f92","toolId":"copilot_readFile","generatedTitle":"Reviewed 3 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md#1-1), lines 1 to 260","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","scheme":"file","fragment":"1-1"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md#1-1), lines 1 to 260","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","scheme":"file","fragment":"1-1"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"1d2407e8-9386-4b30-8dfb-38db6ac28222","toolId":"copilot_readFile","generatedTitle":"Reviewed 3 files"},{"kind":"thinking","value":[],"id":"MZlAfz4v+tVuKZCIU3Q4cnouViH94kHrzk1Tq5ySi0yIm6XUmTI7J5q3RUw1gI+8sBShQ7yl4X+S91LgZcj+jwtF9+sbqIbMIy0Sk7ablU9Qtu/nKyxMrQW8G3FthwGNu0vw7Cq7MuhQ8/ihmXaZMgbizjEyCHHE3yN6lUBjAZ0CKTZ/fcZ2MYDnjd6C3A73M1mqAQVCHep6ZaraPQJ8pnTu29BlKHsBEwW0prUNNGk04Pjs43PsAMPm+kA8ujJwDmyJxIlHeAV2MA0/eQ6EKEgHknwDPai0dauDjn91HlMas+E1QQTXRF3Sb2aGtUrBKbdxJTt7auZoNA7O7rJJ4+pVKw7NXkO12rbNJgli/2xmqipR0e5OFJk1a04fFr6m9K9tb1OMKsmaZq0cE5DjSpqzciP+5Q=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"Next I’m sampling core runtime scripts (player, enemy, events, managers, shared systems) to verify architecture claims like single-responsibility components, event lifecycle safety, and ScriptableObject usage.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"7d51fa0e-5d58-4dbb-bb06-636b7e446435","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs#1-1), lines 1 to 260","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","scheme":"file","fragment":"1-1"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs#1-1), lines 1 to 260","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","scheme":"file","fragment":"1-1"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"e05c58e8-5278-414f-b1e8-3ecdc2c2aa85","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"1f8ab366-ea16-4e96-993b-3c634751dc8a","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"thinking","value":[],"id":"1jRs9pqb6L9F/1W1DQhz9eXvOELHle5+v/tcqhgQ2eksGiWqiGmO50hVodL3zIIBAeM76dwtEuO+sVcweA699GNBVnDFHpNFuB4eMgS1u69dD7AZ/C3Qxskxukk+o/ARq7BcKNL4gBdZm1+A2K46lXTw+xV7ym3i3RcPXlELq/AlNS6iSueEI+8dsMlGG1iWXTo3URIIIASV48ZXrd9gb+Eo4TB85MjZYmhuOerttiCifwSCUUDybIPg/frMkcLRhVvC+6iGAavKD+3ziUvtljizSZtERqFY7w/mNXDZ0VLgGAUQQEfR7jHo/pG1Qk2MBoZOD+sWghs6IWnSVmXqGQcqgodw/QYowFYV92d4CKXC/5Hu50Lz7ljqTJiUkoAnXz87p3UTSqsVejcMUdgaBc7wWXv/ew=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#1-1), lines 1 to 340","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file","fragment":"1-1"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#1-1), lines 1 to 340","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file","fragment":"1-1"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"72a4b9c3-18c6-4dc3-b8d2-714995c16987","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"bb2edfb0-7941-4fde-866a-6112951be7e7","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"bede9832-1158-4bd1-8fa4-8e20223bfe57","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"thinking","value":[],"id":"zQ0WOubffs/WnxPH5Gwr7bt6+GtUyWuAKcrFI4SC4+uvhiz5BAWg4QT/R72Y1T1OdAlCT6HusAh7GG5phlTh4VHSbrQvTV6EdrMf8xttXg07brRz2bTfmqdC1sfG3pAGdqorSLUpjdo+oTI/IANQHIBiwen2Qey8X+v5xK9auk7KtrXItsztSi0ojV18FDgbZiVUTNoiJw2iiWzcQ++N9vgjPRXKfwNnuMDHXJ5ry9LndYZ4/cdvi1UU9qXYXAEl4wSR3jTbHudkJMfVES1AR0x3zBkrWh23jnwjfDWTWJV99ju5pTldMVFiScL4brYsBovGSiS+Huu4kmbfK/PsRISycCDmJ0S+oQ7obo4Yn1CFOzifZoLQPyh2CQb5zmq5/hpUY2YX9d/VJPV8d0dT+wsWUhyKtA=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#341-341), lines 341 to 593","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#341-341":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file","fragment":"341-341"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#341-341), lines 341 to 593","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs#341-341":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file","fragment":"341-341"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"8df77829-15d5-44b8-8a38-30582ca1e678","toolId":"copilot_readFile","generatedTitle":"Reviewed 6 files"},{"kind":"thinking","value":[],"id":"z+7WtIb6VL8yNkSJpYdbXsF4ljcxww6EFnJ7u6/M1pH74Bjrly1hnNJXnYfK8qrN2Cwa+xU1lIV/0G3Q+nEyAzJS5B5SMZlQrFOQ+Bad+yG7Djsi4xevmkwoljZERoD2bNCNydEoQWMzClirZnjPTtr8iBl+Pk3pEC1WdtTE+lUHl978P9nZPTDADgZL3zVfgG9VukncLyrCJHuEvUMnG4JW2WpP8Si5UHVjUh66NL1TqXPu2b9sCyoVBmlQ/qOL/VBjkgai6sooCPFfMogKz6RgxI93topvUWHTw9qDIsdWAdJY4ZPuv9FphjrjDns94hXvvn0ssvz/zk3E0jOjHrq9eKZ/aEGXXLhtQvWavKjv6gYU2dZbkJfL1dn/EtFzmhb4z2NOUahN62aHainpNBaQayZOug=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"I’m seeing a mixed maturity level already (solid event hub, but at least one placeholder manager), so I’m now checking enemy/shared/data/UI scripts for consistency and any compile-risk patterns.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"d781bc20-95d3-425f-b72d-2f89dc0fa434","toolId":"copilot_readFile"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"967e48f3-0160-43c2-8f61-a3f6da05aea2","toolId":"copilot_readFile"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1), lines 1 to 320","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file","fragment":"1-1"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1), lines 1 to 320","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file","fragment":"1-1"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"e4679935-f7f2-4e4e-b59f-2cecf6a939a9","toolId":"copilot_readFile"}]} +{"kind":2,"k":["requests",0,"response"],"v":[{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"d781bc20-95d3-425f-b72d-2f89dc0fa434","toolId":"copilot_readFile","generatedTitle":"Reviewed 4 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"967e48f3-0160-43c2-8f61-a3f6da05aea2","toolId":"copilot_readFile","generatedTitle":"Reviewed 4 files"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1), lines 1 to 320","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file","fragment":"1-1"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1), lines 1 to 320","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#1-1":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file","fragment":"1-1"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"e4679935-f7f2-4e4e-b59f-2cecf6a939a9","toolId":"copilot_readFile","generatedTitle":"Reviewed 4 files"},{"kind":"thinking","value":[],"id":"/UfMWBE17ULQNmPUIDBHj1TIlgiSfU8XcEugbP7MQE1Q2mhYRtnqE1U57cvqTDHlwoQJxQk1mCVaefyeXMAlqMm8BxNpF/ch0MNw1iNBdoYO86We1g7P1H4HT/CkuaXfewUVEQMs+dUO+nHiKEgh2t4Bv17VhC7W7jfIABHkLo969Qm4+iAqPPOuhRy7RMmYQntXqPz4fMIgWkbV+3zB95ZW39ymfmp0UgaS/7D1gO4Eht49W/aNLwAyTt7p8Kj+xTR9CBUvZRMt5lheMYZkk6sJz+25UFd7o//BIXBOAdFf+lz7C7Pduk6qts/5gnHzILcxewruu7fzj4BmX819TjKaRze/dR+G6odULE0EZj5b6K1Tarfo/OBtN44bbwN6iDXa4du+DsIburvl8sK15CYa+u0eDA=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#321-321), lines 321 to 347","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#321-321":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file","fragment":"321-321"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#321-321), lines 321 to 347","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs#321-321":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file","fragment":"321-321"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"431940ac-a1c8-4dc5-92f4-8e87a6e7abc2","toolId":"copilot_readFile","generatedTitle":"Reviewed 4 files"},{"kind":"thinking","value":[],"id":"t21ysv4qMR5+vszBRhTw8+CqiZehK188I/sv99VMvcVatlzf9Zyj1z42HWoD3lMyUrFSwFrMsJfYpVST7f4qSoZaQau9o0sCFiI1EGPHhjF4Derdn0NEMiBPEeR6ldFCrUoy8HtVzC+Sy7yDrhaCP2hWbh+x50JTyhS60TaISLHxwSRe8iuRozgu0KQgWCvgDaF1oFPPaFnpxyL6zdXlZQb9PtoGvPrrqDX/5JQQ+fN1Gsw7WY4z5dbF8nyD/U82HPJpzXnq/951PuuFT4LFTLKOXFhSR8B5HF/eC7mbqLW6KTTD7XaFUeRzxsoLqK9WuG21dhynjbQXV2D+6cm+LJKEg94TQu2cLsOp5yslSyaJqpiuRf28/Yv/ndmS4mxCSCaNsXlHh4iJ+apbxxmd8aVske69kQ=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scenes)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scenes":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scenes","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scenes)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scenes":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scenes","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"16824fa1-b4b2-427c-9dea-bd4ef6ef51ac","toolId":"copilot_listDirectory","generatedTitle":"Reviewed 4 files"},{"kind":"thinking","value":[],"id":"E60mTkWZwvaMZrnSUf+kZN4tWjXu+yLdGYvnzYefA3otl2uEkp0HEnsa7Vgz9Q3SB49LJtW69IWUP5RNaZtg2ywIB4WtbUvvYKFiYVxDvShEfGZr+r0PZTh42O8rcpSPJVc+6pcsD8PeRs1sOgLm/E6OnWIwRaWBStLgl0jHIL1PXY3ta+vZPpPSjvNXSqZQPOqUO5qz5pfWTuFXhPkA939Rwv/UN/Uv70BWuU9Xyg8CPtAPQpuLbfl9OZwRB5PPWDWDhbHGH1gYySJZXbvYCJlquOy4iWXdl0ddxmoGOf2RGf5v0tAXTXywLaGtFo2u5+25Vf8LQji/UDn4IO2u2YQVKwnvmfWB4fFvnb3zuT+4YWilPsLXNpEIoJBdAnVsLGNx9unhXx7QnDG9n4cCLqTLk4wE6A=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"Quick status: the codebase is real and active, but docs appear partially stale against current assets (for example scene naming differs from README/GEMINI). I’m now doing targeted checks for event subscription hygiene, singleton/manager quality, and configuration/data consistency across all scripts.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"thinking","value":[],"id":"JV59o13I4vg3q1bJgqHr654995h2jLjmYjkDyVSmGwkIXb+DyhDRHwxrka4rk/korfdutV/xYpVv1oxLlZ1aNojXeLhF8XXCGRF4o4WzkgZf/R2K5XCKnldqbfVbtNZ0Uds2bRqdXywJASV3ra/1RjqaKb2okWhSGA+9Uz51gqyFBrSk2bCWk2ulsPwlXsOfw33EBnYs5bqLtO8RAoSyKB3yQMO2Q6N3nMZ8YVqVob4KzY8hfn5ypdg4vHlPLVDQIBJpI7u8Xuyz29JpRCUnMD43sSUR+Pe906cTF/X/JhcYKb/nq1oeVErPOdhMUfSVNYzyzrDhCupsJLXI72XwWqBtzet6zODXG7pNeLZNH4B7eemtydmh9XVwC9Z41tYnc8JW1w+p0frvpd/oSUBdnXPGSd/oDA=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"I’m running static pattern checks across the scripts to catch lifecycle issues (subscriptions without unsubscriptions), singleton overreach, and hardcoded config that should be data-driven.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for regex `GameEvents\\.[A-Za-z0-9_]+\\s*\\+=` (`**/Assets/_Project/Scripts/**/*.cs`)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for regex `GameEvents\\.[A-Za-z0-9_]+\\s*\\+=` (`**/Assets/_Project/Scripts/**/*.cs`), 23 results","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":19,"startColumn":9,"endLineNumber":19,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":20,"startColumn":9,"endLineNumber":20,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":21,"startColumn":9,"endLineNumber":21,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":22,"startColumn":9,"endLineNumber":22,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":{"startLineNumber":76,"startColumn":9,"endLineNumber":76,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"range":{"startLineNumber":22,"startColumn":9,"endLineNumber":22,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"range":{"startLineNumber":11,"startColumn":9,"endLineNumber":11,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"range":{"startLineNumber":9,"startColumn":9,"endLineNumber":9,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"range":{"startLineNumber":11,"startColumn":9,"endLineNumber":11,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"range":{"startLineNumber":63,"startColumn":9,"endLineNumber":63,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":71,"startColumn":9,"endLineNumber":71,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":72,"startColumn":9,"endLineNumber":72,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":73,"startColumn":9,"endLineNumber":73,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":74,"startColumn":9,"endLineNumber":74,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":75,"startColumn":9,"endLineNumber":75,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":76,"startColumn":9,"endLineNumber":76,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":70,"startColumn":9,"endLineNumber":70,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":71,"startColumn":9,"endLineNumber":71,"endColumn":50}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":198,"startColumn":9,"endLineNumber":198,"endColumn":37}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":199,"startColumn":9,"endLineNumber":199,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":16,"startColumn":9,"endLineNumber":16,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":17,"startColumn":9,"endLineNumber":17,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":{"startLineNumber":33,"startColumn":9,"endLineNumber":33,"endColumn":36}}],"toolCallId":"b1a1ea14-e831-406f-9ea5-1f54859d84c1","toolId":"copilot_findTextInFiles"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for regex `GameEvents\\.[A-Za-z0-9_]+\\s*-=` (`**/Assets/_Project/Scripts/**/*.cs`)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for regex `GameEvents\\.[A-Za-z0-9_]+\\s*-=` (`**/Assets/_Project/Scripts/**/*.cs`), 23 results","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"range":{"startLineNumber":15,"startColumn":9,"endLineNumber":15,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"range":{"startLineNumber":13,"startColumn":9,"endLineNumber":13,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":82,"startColumn":9,"endLineNumber":82,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":83,"startColumn":9,"endLineNumber":83,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":84,"startColumn":9,"endLineNumber":84,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":85,"startColumn":9,"endLineNumber":85,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":86,"startColumn":9,"endLineNumber":86,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":87,"startColumn":9,"endLineNumber":87,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"range":{"startLineNumber":15,"startColumn":9,"endLineNumber":15,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"range":{"startLineNumber":34,"startColumn":9,"endLineNumber":34,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":{"startLineNumber":82,"startColumn":9,"endLineNumber":82,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":21,"startColumn":9,"endLineNumber":21,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":22,"startColumn":9,"endLineNumber":22,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"range":{"startLineNumber":72,"startColumn":9,"endLineNumber":72,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":{"startLineNumber":38,"startColumn":9,"endLineNumber":38,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":27,"startColumn":9,"endLineNumber":27,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":28,"startColumn":9,"endLineNumber":28,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":29,"startColumn":9,"endLineNumber":29,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":30,"startColumn":9,"endLineNumber":30,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":76,"startColumn":9,"endLineNumber":76,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":77,"startColumn":9,"endLineNumber":77,"endColumn":50}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":204,"startColumn":9,"endLineNumber":204,"endColumn":37}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":205,"startColumn":9,"endLineNumber":205,"endColumn":36}}],"toolCallId":"1121ab02-9e27-490d-b2bd-cb16bb5828bd","toolId":"copilot_findTextInFiles"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for regex `FindObjectOfType|FindFirstObjectByType|FindAnyObjectByType` (`**/Assets/_Project/Scripts/**/*.cs`)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for regex `FindObjectOfType|FindFirstObjectByType|FindAnyObjectByType` (`**/Assets/_Project/Scripts/**/*.cs`), 8 results","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":{"startLineNumber":343,"startColumn":23,"endLineNumber":343,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":{"startLineNumber":401,"startColumn":25,"endLineNumber":401,"endColumn":46}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":{"startLineNumber":523,"startColumn":23,"endLineNumber":523,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":{"startLineNumber":59,"startColumn":36,"endLineNumber":59,"endColumn":57}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","scheme":"file"},"range":{"startLineNumber":48,"startColumn":45,"endLineNumber":48,"endColumn":66}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":{"startLineNumber":28,"startColumn":24,"endLineNumber":28,"endColumn":45}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","scheme":"file"},"range":{"startLineNumber":91,"startColumn":25,"endLineNumber":91,"endColumn":46}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","scheme":"file"},"range":{"startLineNumber":47,"startColumn":45,"endLineNumber":47,"endColumn":66}}],"toolCallId":"8ac64558-b816-4ac6-a780-834530c34dcb","toolId":"copilot_findTextInFiles"},{"kind":"thinking","value":[],"id":"wWUWKNV7AcWjHqgJdF8KRNGI6WJKTbIasykee1rPlktkfTVryYJ5B7jQKXwQtrCxrFoyYhoIUB6lHjeb+QddL3VnVtbFtJjNnPw3UyM8gQjGS2A09yK6vyR31Eh7y738lYguFigCPe8NYQCse3Catek3eJiQDHMZGcFIRXYIv9XXL4FdZU33NnaGHdprsxmyHLOEtYHAIxc5SLU+D9mByC7mzZT6jR9pbN/qla0uheQDLfdgi/fZeiJAxjeh7HhPxPdEzON+cqdyT4BVy4e66u8ERmY3KOAIoZWVOnfnNh883eG3s5I/keD/Yo9zhq4XBBp3BScBxLKu9aE5pPcNmybs2oi6APW+IjbxJHBhiq61f2IL/V3hRscc9luNPRlZjPA2HGP+l1vx5Tc89VYP9pkhqPsJiw=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Checking workspace for problems","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Checked workspace, no problems found","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"5469d732-9416-4a3c-9346-06a0cdb807a6","toolId":"copilot_getErrors"}],"i":34} +{"kind":2,"k":["requests",0,"response"],"v":[{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for regex `GameEvents\\.[A-Za-z0-9_]+\\s*\\+=` (`**/Assets/_Project/Scripts/**/*.cs`)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for regex `GameEvents\\.[A-Za-z0-9_]+\\s*\\+=` (`**/Assets/_Project/Scripts/**/*.cs`), 23 results","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":19,"startColumn":9,"endLineNumber":19,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":20,"startColumn":9,"endLineNumber":20,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":21,"startColumn":9,"endLineNumber":21,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":22,"startColumn":9,"endLineNumber":22,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":{"startLineNumber":76,"startColumn":9,"endLineNumber":76,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"range":{"startLineNumber":22,"startColumn":9,"endLineNumber":22,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"range":{"startLineNumber":11,"startColumn":9,"endLineNumber":11,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"range":{"startLineNumber":9,"startColumn":9,"endLineNumber":9,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"range":{"startLineNumber":11,"startColumn":9,"endLineNumber":11,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"range":{"startLineNumber":63,"startColumn":9,"endLineNumber":63,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":71,"startColumn":9,"endLineNumber":71,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":72,"startColumn":9,"endLineNumber":72,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":73,"startColumn":9,"endLineNumber":73,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":74,"startColumn":9,"endLineNumber":74,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":75,"startColumn":9,"endLineNumber":75,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":76,"startColumn":9,"endLineNumber":76,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":70,"startColumn":9,"endLineNumber":70,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":71,"startColumn":9,"endLineNumber":71,"endColumn":50}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":198,"startColumn":9,"endLineNumber":198,"endColumn":37}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":199,"startColumn":9,"endLineNumber":199,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":16,"startColumn":9,"endLineNumber":16,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":17,"startColumn":9,"endLineNumber":17,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":{"startLineNumber":33,"startColumn":9,"endLineNumber":33,"endColumn":36}}],"toolCallId":"b1a1ea14-e831-406f-9ea5-1f54859d84c1","toolId":"copilot_findTextInFiles","generatedTitle":"Searched for multiple regex patterns and checked workspace issues"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for regex `GameEvents\\.[A-Za-z0-9_]+\\s*-=` (`**/Assets/_Project/Scripts/**/*.cs`)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for regex `GameEvents\\.[A-Za-z0-9_]+\\s*-=` (`**/Assets/_Project/Scripts/**/*.cs`), 23 results","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"range":{"startLineNumber":15,"startColumn":9,"endLineNumber":15,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"range":{"startLineNumber":13,"startColumn":9,"endLineNumber":13,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":82,"startColumn":9,"endLineNumber":82,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":83,"startColumn":9,"endLineNumber":83,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":84,"startColumn":9,"endLineNumber":84,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":85,"startColumn":9,"endLineNumber":85,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":86,"startColumn":9,"endLineNumber":86,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":{"startLineNumber":87,"startColumn":9,"endLineNumber":87,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"range":{"startLineNumber":15,"startColumn":9,"endLineNumber":15,"endColumn":38}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"range":{"startLineNumber":34,"startColumn":9,"endLineNumber":34,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":{"startLineNumber":82,"startColumn":9,"endLineNumber":82,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":21,"startColumn":9,"endLineNumber":21,"endColumn":33}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":{"startLineNumber":22,"startColumn":9,"endLineNumber":22,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"range":{"startLineNumber":72,"startColumn":9,"endLineNumber":72,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":{"startLineNumber":38,"startColumn":9,"endLineNumber":38,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":27,"startColumn":9,"endLineNumber":27,"endColumn":35}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":28,"startColumn":9,"endLineNumber":28,"endColumn":36}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":29,"startColumn":9,"endLineNumber":29,"endColumn":32}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":{"startLineNumber":30,"startColumn":9,"endLineNumber":30,"endColumn":34}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":76,"startColumn":9,"endLineNumber":76,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":{"startLineNumber":77,"startColumn":9,"endLineNumber":77,"endColumn":50}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":204,"startColumn":9,"endLineNumber":204,"endColumn":37}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":{"startLineNumber":205,"startColumn":9,"endLineNumber":205,"endColumn":36}}],"toolCallId":"1121ab02-9e27-490d-b2bd-cb16bb5828bd","toolId":"copilot_findTextInFiles","generatedTitle":"Searched for multiple regex patterns and checked workspace issues"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for regex `FindObjectOfType|FindFirstObjectByType|FindAnyObjectByType` (`**/Assets/_Project/Scripts/**/*.cs`)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for regex `FindObjectOfType|FindFirstObjectByType|FindAnyObjectByType` (`**/Assets/_Project/Scripts/**/*.cs`), 8 results","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":{"startLineNumber":343,"startColumn":23,"endLineNumber":343,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":{"startLineNumber":401,"startColumn":25,"endLineNumber":401,"endColumn":46}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":{"startLineNumber":523,"startColumn":23,"endLineNumber":523,"endColumn":44}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":{"startLineNumber":59,"startColumn":36,"endLineNumber":59,"endColumn":57}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","scheme":"file"},"range":{"startLineNumber":48,"startColumn":45,"endLineNumber":48,"endColumn":66}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":{"startLineNumber":28,"startColumn":24,"endLineNumber":28,"endColumn":45}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","scheme":"file"},"range":{"startLineNumber":91,"startColumn":25,"endLineNumber":91,"endColumn":46}},{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","scheme":"file"},"range":{"startLineNumber":47,"startColumn":45,"endLineNumber":47,"endColumn":66}}],"toolCallId":"8ac64558-b816-4ac6-a780-834530c34dcb","toolId":"copilot_findTextInFiles","generatedTitle":"Searched for multiple regex patterns and checked workspace issues"},{"kind":"thinking","value":[],"id":"wWUWKNV7AcWjHqgJdF8KRNGI6WJKTbIasykee1rPlktkfTVryYJ5B7jQKXwQtrCxrFoyYhoIUB6lHjeb+QddL3VnVtbFtJjNnPw3UyM8gQjGS2A09yK6vyR31Eh7y738lYguFigCPe8NYQCse3Catek3eJiQDHMZGcFIRXYIv9XXL4FdZU33NnaGHdprsxmyHLOEtYHAIxc5SLU+D9mByC7mzZT6jR9pbN/qla0uheQDLfdgi/fZeiJAxjeh7HhPxPdEzON+cqdyT4BVy4e66u8ERmY3KOAIoZWVOnfnNh883eG3s5I/keD/Yo9zhq4XBBp3BScBxLKu9aE5pPcNmybs2oi6APW+IjbxJHBhiq61f2IL/V3hRscc9luNPRlZjPA2HGP+l1vx5Tc89VYP9pkhqPsJiw=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Checking workspace for problems","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Checked workspace, no problems found","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"5469d732-9416-4a3c-9346-06a0cdb807a6","toolId":"copilot_getErrors","generatedTitle":"Searched for multiple regex patterns and checked workspace issues"},{"kind":"thinking","value":[],"id":"vmiQ1XknvwYAcJapmujueMMzCb20eqZN/aJNvi6ErETDZN9nKPwAjXM03hIs7IE5tOKAvLY0iA2ruIYmaGugbupJyGT91YLhIqU5QspV29Xkf0TpTDvX8yVeMYdJMOiM83LtOnIA6ot83FTtpit+UghtZuwmGcLReBy6DmCh7rT6yptcSyHIHjBidKsHYoWaDKJax0YaMZ5NAL71jXfF0uwb4cyKPcQG5OTYqX1zJ9w4FcxwN+0fD8BChe3ChjOl/Rl0jD0sZcKpBboHsW8sVZWpqZDpU1oKJ4NPeZkUG0KjygacpSJkLzB6r8SQrpwglAogQ08vG5PX8JqrE+Dwk484C9FEF9Clzd/Ue3/Wc93G8qdTUHEcXD5OoXcWBq1Am0I6eUO9hlnyRa8AJU9GSY2HgKxMDA=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"Static diagnostics currently show no editor errors, which is a good sign for compile health. I’ll now inspect key managers/systems and ScriptableObject/data assets patterns to validate runtime architecture quality rather than just syntax.","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"b6a6773d-a4e1-4cfe-a692-77a6647d1669","toolId":"copilot_readFile"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"a60d7e53-bf6b-485b-93c3-73a3f8d307dd","toolId":"copilot_readFile"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"858d54d4-4f06-43a0-8582-02741bbff5f1","toolId":"copilot_readFile"},{"kind":"thinking","value":[],"id":"9ilYsxpr/3LsuwwIfwiO2n7aqUzFrBlbTzRU/MW0lR8xSK9B1cw+Qn3EnsDf9DtbX37OECfxHSiTWp8IjH7BLY8vHps8WNH5cvV41sqYIWyIC0l31xoh2YJhm4IF8ZZeU50/eEyul0GZuJR9zUHEbGXUUQlYilBYrwAwDrnVYqwnxvwCHbQY6c/ttWOlRGbfVJ7LT3WKIJqZ1KLJEP5sSZkJaFy0RBmitGVUaBQiul4VyCQupVfeZJusltNDJCd+SYhbURr5uJ59Lq5NQoV4CoZpX0Y05IY0TVuQedAwp3EnbE564f3i9/T5HIheRINaZ2VubhFie53UnceYWrBeC23kfe9+IVcflfVmPAzdQk2R1RIcapiuC4tXl/vDxY9AqveWlskGzQkhSmTk6RrmRyEqwijcAA=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"other"}},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Reading [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project","scheme":"file"}}},"pastTenseMessage":{"value":"Read [](file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project)","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/Assets/_Project","scheme":"file"}}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"toolCallId":"53854176-b4f8-4b7b-8ed5-2ecd6d9493ea","toolId":"copilot_listDirectory"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for files matching `**/Assets/_Project/Data/**/*.asset`","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for files matching `**/Assets/_Project/Data/**/*.asset`, no matches","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[],"toolCallId":"20d7ffb2-ab65-42b3-ba07-ddd2e68f17b3","toolId":"copilot_findFiles"},{"kind":"toolInvocationSerialized","invocationMessage":{"value":"Searching for files matching `**/Assets/_Project/**/*.asmdef`","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"pastTenseMessage":{"value":"Searched for files matching `**/Assets/_Project/**/*.asmdef`, no matches","supportThemeIcons":false,"supportHtml":false,"supportAlertSyntax":false,"uris":{}},"isConfirmed":{"type":1},"isComplete":true,"source":{"type":"internal","label":"Built-In"},"resultDetails":[],"toolCallId":"ec7c0848-9719-4b8b-a671-101154e15b02","toolId":"copilot_findFiles"},{"kind":"thinking","value":[],"id":"ZOH3171HiZcxbfxGk6NSCAzDbQnUDlCWa5XG9OO8I9A8nGM9G4BwskVA4u8mO4MyN+fmhBnqz6UTKx+9F+MtKj5bRm2TvnsPt/JLuks83b/aSqREEGCue20UKNd3i5tAXNEcz7+HVybIlsN3gpaugp1zkdMpSU8cyM1NSlZ2FlTstazqHoc3pkS/1neBzAJywc/L7tP/vwt/9vCrDtbWBH2NTVKORUV5T+vn4hFbvAFFc63wZUADEhNPGPdFMpf8fP3uPo6c2reRhXTqFDeOtPY0IrqFRTq9LuZQCOd1TSGbga5a+9DbnuucrF03uFL1UJUHlU2DTwDYjKWDmKDzsEXhg473mvt35M9aa0BhsY1Tt6ZhVZxu5BQNY3be5hh/FmOkTM8O2DunYpT4q3w4WgubPCswQg=="},{"kind":"thinking","value":"","id":"","metadata":{"vscodeReasoningDone":true,"stopReason":"text"}},{"value":"I found a major project-state gap: there are currently no ScriptableObject asset instances under ","supportThemeIcons":false,"supportHtml":false,"baseUri":{"$mid":1,"path":"/home/breadway/Documents/Hazard Pay/","scheme":"file"}}],"i":49} +{"kind":1,"k":["requests",0,"result"],"v":{"timings":{"firstProgress":5573,"totalElapsed":152792},"metadata":{"maxToolCallsExceeded":true,"codeBlocks":[],"renderedUserMessage":[{"type":1,"text":"\nThe current date is 24 March 2026.\nTerminals:\nTerminal: fish\n\n\n\nYou are an agent—keep going until the user's query is completely resolved before ending your turn. ONLY stop if solved or genuinely blocked.\nTake action when possible; the user expects you to do useful work without unnecessary questions.\nAfter any parallel, read-only context gathering, give a concise progress update and what's next.\nAvoid repetition across turns: don't restate unchanged plans or sections (like the todo list) verbatim; provide delta updates or only the parts that changed.\nTool batches: You MUST preface each batch with a one-sentence why/what/outcome preamble.\nProgress cadence: After 3 to 5 tool calls, or when you create/edit > ~3 files in a burst, report progress.\nRequirements coverage: Read the user's ask in full and think carefully. Do not omit a requirement. If something cannot be done with available tools, note why briefly and propose a viable alternative.\n\n\n\nvalidate the codebase, documentation, and organisation of this project. be sure to familiarise yourself with the codebase first.\n\n"},{"type":3,"cacheType":"ephemeral"}],"renderedGlobalContext":[{"type":1,"text":"\nThe user's current OS is: Linux\n\n\nI am working in a workspace with the following folders:\n- /home/breadway/Documents/Hazard Pay \nI am working in a workspace that has the following structure:\n```\nAGENTS.md\nGAMEDESIGN.md\nGEMINI.md\nHazard Pay.slnx\nLORE.md\nPERFORMANCE.md\nREADME.md\nAssets/\n\t_Project.meta\n\t_Recovery.meta\n\tDefaultVolumeProfile.asset\n\tDefaultVolumeProfile.asset.meta\n\tInputSystem_Actions.inputactions\n\tInputSystem_Actions.inputactions.meta\n\tScenes.meta\n\tSettings.meta\n\tTextMesh Pro.meta\n\tUI Toolkit.meta\n\tUnityTechnologies.meta\n\tUniversalRenderPipelineGlobalSettings.asset\n\tUniversalRenderPipelineGlobalSettings.asset.meta\n\tVefects.meta\n\t_Project/\n\t_Recovery/\n\tSettings/\n\tTextMesh Pro/\n\tUI Toolkit/\n\tUnityTechnologies/\n\tVefects/\nLibrary/\n\tAnnotationManager\n\tArtifactDB\n\tArtifactDB-lock\n\tBuildPlayer.prefs\n\tBuildProfileContext.asset\n\tBuildSettings.asset\n\tEditorInstance.json\n\tEditorOnlyScriptingSettings.json\n\tEditorOnlyVirtualTextureState.json\n\tEditorSnapSettings.asset\n\tEditorToolsSettings.asset\n\tEditorUserBuildSettings.asset\n\tilpp.pid\n\tInspectorExpandedItems.asset\n\tLastSceneManagerSetup.txt\n\tMonoManager.asset\n\tSceneVisibilityState.asset\n\tScriptMapper\n\tSourceAssetDB\n\tSourceAssetDB-lock\n\tSpriteAtlasDatabase.asset\n\tStyle.catalog\n\tAPIUpdater/\n\tArtifacts/\n\tBee/\n\tBuildInstructions/\n\tBuildProfiles/\n\tBurstCache/\n\tPackageCache/\n\tPackageManager/\n\tScriptAssemblies/\n\tSearch/\n\tShaderCache/\n\tStateCache/\n\tTempArtifacts/\nLogs/\nPackages/\n\tmanifest.json\n\tpackages-lock.json\nProjectSettings/\n\tAudioManager.asset\n\tClusterInputManager.asset\n\tDynamicsManager.asset\n\tEditorBuildSettings.asset\n\tEditorSettings.asset\n\tGraphicsSettings.asset\n\tInputManager.asset\n\tMemorySettings.asset\n\tMultiplayerManager.asset\n\tNavMeshAreas.asset\n\tNetworkManager.asset\n\tPackageManagerSettings.asset\n\tPhysics2DSettings.asset\n\tPresetManager.asset\n\tProjectSettings.asset\n\tProjectVersion.txt\n\tQualitySettings.asset\n\tSceneTemplateSettings.json\n\tShaderGraphSettings.asset\n\tTagManager.asset\n\tTimelineSettings.asset\n\tTimeManager.asset\n\tUnityConnectSettings.asset\n\tURPProjectSettings.asset\n\tVersionControlSettings.asset\n\tVFXManager.asset\n\tVisualScriptingSettings.asset\n\t...\nTemp/\n\t...\nUIElementsSchema/\n\t...\nUserSettings/\n```\nThis is the state of the context at this point in the conversation. The view of the workspace structure may be truncated. You can use tools to collect more context if needed.\n\n"},{"type":3,"cacheType":"ephemeral"}],"cacheKey":"file:///home/breadway/Documents/Hazard%20Pay","toolCallRounds":[{"response":"I’ll review the project in three passes: architecture/code health, documentation consistency, and folder/org structure, then I’ll give you a concrete validation report with risks and prioritized fixes. First I’m mapping the code and key docs so the assessment is grounded in the actual repo state.","toolCalls":[{"id":"call_D5w1VZqxi5jDnKRbfflBqlwz__vscode-1774363162390","name":"manage_todo_list","arguments":"{\"todoList\":[{\"id\":1,\"title\":\"Inventory scripts and project structure\",\"status\":\"in-progress\"},{\"id\":2,\"title\":\"Assess code architecture patterns\",\"status\":\"not-started\"},{\"id\":3,\"title\":\"Review docs for accuracy\",\"status\":\"not-started\"},{\"id\":4,\"title\":\"Validate build/test readiness\",\"status\":\"not-started\"},{\"id\":5,\"title\":\"Summarize findings and actions\",\"status\":\"not-started\"}]}"}],"toolInputRetry":0,"id":"7d0f5448-70f0-469b-a90e-72364446e9b6","statefulMarker":"QOmxJqIyvZuoGXTGoOiqlyYXPcu/juAD2s1hnp4CxgXSpejjKGeC0eCWQkXVIti+As4Slw0Zt/+q7G7yWPHBx2aA6k/0u0ofrA3LMrEdn6cFq2MIGlBGaCbXGkJk8UCtExoGpm5m4gRuVjDCAFZJQY2xYnZXEDljSoQeKufdY7nOHdIxbKGgrjKaXQ1ch+OLjj1tGUfFNAT3fW1MGQq5ZB6aRvLnuH6IWrr0yV8xfh3q/yazuIahLJhY5c4zaksFVt7SGCTl57DRKMCMCYG3OUzn2W9WW3BRweePqKUkzZRFUocrW5AIh2jIF/cI71kYYsHLjikeLctxsDFhfiG6pY+gtf5jOPpeK+0AoLctVoGHbC1Fi4K+6OwvyuMjdmBK5xNVdkU5DY1d9u5eHHFvYpDyOO8UqIEy","thinking":{"id":"3/R8WeLSTPMOUkPD8jU2wuod3FFFF9dwCz/gfRAvvTOPEx6arcK1jSWLw++L7uD3PGOgqZ9XZB481UUHi/P9zF4++kLPdA0fbiSs4/dOenDB0gRYxtwHuds87zBMSGjogE6UrCOSgobqG8f+IsdeZKouyV4iJ/lkvEoSQ1RrNBqXZVAKrUhcp+kBA9EjsOy6waVrtOnoOzCLyrpRWiLVfVWaEgjDqzmcLqha6qAnEMIdC+8ps3lIbNaulC+o63i3RFnNJOotibrpIVR03aszOY/zOfOcgscbwMgErukIDJFhEJFAE9l7XCs2AD5bqJEt0m+mFd0r2AOOqmmIym2K4Dx1tBV+ni/7IOqRk0d8JbU6geWngzx2H8sDndV7x+bUr9nE3yze72PyFNfkaU0VQKryzQp8+w==","text":[],"encrypted":"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","tokens":141},"timestamp":1774364026627,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"I’m now collecting a quick inventory of scripts, managers, events, and top-level docs so I can compare implementation against the architecture guidelines.","toolCalls":[{"id":"call_P4RXp8Cw4AArxqOlgWz0umKT__vscode-1774363162391","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts\"}"},{"id":"call_fF1gzmbRgtFlEURyedQpMTBf__vscode-1774363162392","name":"file_search","arguments":"{\"query\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":500}"},{"id":"call_oL3mkcnYgeaLxiBed9nnS87r__vscode-1774363162393","name":"file_search","arguments":"{\"query\":\"*.md\",\"maxResults\":200}"}],"toolInputRetry":0,"id":"24c8640a-a4b5-4c1b-bf64-aa47e2176f43","statefulMarker":"56gr4bmoY351RcCbtDsJjrObCOL3/zSxgKVMUVzHp9KiC1lgMsND7w4w+bdkD2RA2wM9kFdGb8Y3C7MY/Q/Kl/ffJ5JhgbYgLYJYT5+c96+p2CHTxiPam4fLzsmmChJGbYXa+7YJL4HJfkJgqyJ0ZsxAYshVarqpFugQQQAgdFywA2d9i3gEAYfVR1k4yN6JProXCqkf86d0eT4pzqWq+21AW2c8b0Qc/Pa40MXNAoL6JjbEiqk/X+j+xcT1pal0xRZIK5Gz/bn1H8/TtIPMtO1AGvZXU4iOeH5/KPDzjJ9ok6gokwSyLLVcd+bKiIhHcIVlbC2GVldMRfiCsC99HWCKoc4HXgVyqKvGBzRn4wHuL/4deLa4Lqs4ws7NBe0bX/H1UcqOjS9cP/ZVln52pOR3X+vkrCgV","thinking":{"id":"7fXwXSdFKw2tMakyRdhH8aHHKSC/G9+8tG4PbVBwr1TZevdMPg+kTW799d9W14qlh5NsbZAUpsECPJaIrg3ONABwdvbLPumb2NEFCO7L5HxHGQ32gE8o2+NAWNyfqLTdCzCs2ywKBDSQ5mcOFWh6tXkKgpeeNQplbHTMkHmWFd2sIzsgcH21EcQ1hj0otYzpwEK8Y/kkUa0FpywZ0hK1IvsrDVy+j5y9uvEyckKynkFBVJOBABucdFNlF2lgNv+G4wTuM6u1KqXIjjb4u3N+RHWplsN7aFGXzzgjZdPChZbagj+Go9sz4OpqnJmTgrIEOjeKM/YnszY1v1HLcgKfmHwmTiKJNC8Xbba6WfZ2I0ywFcRUISGtSLveiu2bt3cfahYY/F6MTRhIZk8XiEhP6Fv+t5yqJw==","text":[],"encrypted":"WkyUGNRvpJGkdMpZwJ1c+X32+9Dx0LP6GuFBDKobxmjGLfKmmI9E6Kz6+YUWLX+uuOfm214aYmd5SZ+nRzJpJDMlLQkvpfa7pqFF3oH/u+RCfw0/ACLp3/uB43oyfpSUZyeHeFN2zazaapWym0TYjqigOIjDNyVEtPdlnJGH8eqkIYe7lBgb3TZrvaNbNh/vLos5a4i3+qxd7RbTpvN7beU6nEXhKVh+Zn31t6BccyebT2x1omqZeGCzQyxUelBHKdDpQmeOLfbnH9P0xwVyUDL1Zi7zYSnp97y7wUkyl6eyhKPRATIiwuqBI0gaw8W+oJyUnzx18JTETFrnPISxcaPt1RJoYSBOty5Vc8x56425S26s+sDmSQ+4OkbbSOwMTFs8uAyzllndh5mDNul7rREssyb4qrjNRyu/B/52b+NSwE5TT2MxbKEvIYYdTo7Ldq6CmRhT8QrIMiXoWrUWniZQ0wY7jK1YDB9jpoHUUK1L2o7CU/yv2Pn5EL6el+e4ERhCrHaflz6UX/Wf78MY7ZCulfiW9dtlcRORgc9IhiIldqVRMY1w9s+EL4Y9KD8ry5GUqeb85QU6miTi2nayxixP1NCNcH3nHbtnaghTejJulm0EYf8NE69voF2pZ63TZAz+neD+JBE/PAYNBfayItNSJUcITQUynknRsv97katnx5VV0f7nGZz3hFzA3YzDNWr5Oj18xSjWWUfN+rvrsb83fmjPMFkHG4EbNIbQW7fNj4J3xEuuWZlwlqdPE730QqlG/mBxWicrvT0mLoK/oF6lrfhr4Qq2k6zvybUK2wVzD2gkY+jYW2wjlVPALUixTgVzNZMaKEbcahSWTibjCzlBQ2GDaskvc82nqBKhn6vOeWsUCzdWg02ilJsn7CB2qKDByv9oLCotg2/MuXAJDBnHwEe926Jd5/H34wVqWHViSArquoPBzrvHy2iWvqCBntkhQtwFWRQ556gegvGlxoZhUqsJFelEdVYfFeazym5ZdGP22LDF61cEW14SvGhpApLVZNI1cTF7zuaEHMsuS+wq3OSYfbYi/+Wlt5YcN+TUkCMyKvJ0Okgk27vEEmIEZB0Z6cGif+6FaRfjENhXhwdMsq0ZJ5TWnO3tj3veVSLJANPaPow4+d8hK6Q1rXeqo45SQacXUD3FUNNxxIibES3h7VB5n3WUYltak3zcEydB4amw+IxfVSQhfCi9NMHhej1Hr3s6f/gqeWVoZt0vifOj4zqx7y2B458gLi7sNkYGa+RdE8rf0M1phZAUDPihwgxceNhDDHR4+8GiyXsoWP+6rhspx9rKmTEOHyU1LAoI7fICf9BZ+wXCLJN0oIDblnMqWCESm/Fo6gaa2s/z3r+h2VBydgWAhZIOJ3cx0Bpqrh61W2ISEQhEnAP+kI06XP7QAh7UYTk0EZLzJzc50CLn0hgUrhd2NuSB0xVt8byCvQTGQWTf1ItwcEZ9qLIkZt46QgVJ92xRtU7dnjUAGMCyVuF3nKux0lSS1g8vL6/F8rwwAAVFoC2IMDg3SLI2aCRadiE01Y1UKpet4hzhcS2CNiq67dfgNGC2ibj3JCQqdG9+LPouvr8DZchJJ0iF0OPGSx9OALijtXzL4jDr8lttmSqiR3pQ3d/7bUM3J3YdyVDSzTH2QHmcv5PjpB6HQUkfkkBZh+AgBj3Ed8nKLCd7tRnlTOFe8K0aBJ70137lxJBVIB6kAA==","tokens":29},"timestamp":1774364032865,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"I’ve mapped the repo and found 52 C# scripts plus 7 markdown docs; next I’m reading core architecture docs and representative systems to validate whether code matches the documented patterns.","toolCalls":[{"id":"call_7yW21u1rF3sZd4tOwFxS4rT3__vscode-1774363162394","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/README.md\",\"startLine\":1,\"endLine\":260}"},{"id":"call_JcM9qa1rdsgNjoqRt34kGRPX__vscode-1774363162395","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/GEMINI.md\",\"startLine\":1,\"endLine\":260}"},{"id":"call_HrmKYzWpEjhHPfgxhIiZpojy__vscode-1774363162396","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md\",\"startLine\":1,\"endLine\":260}"}],"toolInputRetry":0,"id":"6ed8fbc6-776b-4a2f-9982-c16225d189c3","statefulMarker":"IFKSwgzUteJ8fvMpR8d2yeuMdPk2nz6A4jEoOU3J3dkYFoWdHXVjLg5WKXMshpPlRE47yShWLAug5B6Oxa7HbZ+nJFiZtIdmxfeeWuIeeztqIRbxRIcC9udzkNmw4G48dBcIbHW/ivlOxcTpMHT0iPeWdDb41xc9iOnHo5YFzjEVWRtReHBuadOaKnbefZnHAUDW7qxv3T924k9h06U/6iYOF7ys9RqehiZLz3hYijyhuBXrvcKYSlrIsDV5L1Otk/OqIhRO7CE7IQhcwHFAmlWx9xrUiLtrARsFTUWp9thvZ1ywXoYhOglyHMY79wLLpDJKLcmN/oCuOXdgCbfotzAvFQKCJDTx23JDA3Sw95OG07vChVFCBT4YLPdSrHpNMvCDKSDipUrJ+SNt6JyIYh1XyAgrdemb","thinking":{"id":"XOqPsO94ZIZRZKSyMh4xCN/yRbaWZiK4/2A7mqrBIePwb2DHToi+nuDLbnizQx9cd9hENX6pu0Hw+trNuVkB+VH6WoIDV499XTktjS1cnOaUCMIGXt8c1tXlwjBrm4V7iDA7vnzwl8MisMuHmhXBLWCkMNh/VvogW37FwHmfS/FQSNEvqVsG8+doR9KdjzcvLmmM2NuRMmNGHl0NafkjdoEouRY1LqH3rzOswVaQ0dovaYq+bt/A9s/yB/xFu5/dxVBkUDJ9vUzgB8gG57YY3Q9RikuyAwcOwWjKJwERp6cMSKDolsVQUiJWJY+Lr1JcQCGBfEvCdWPuMg1Vv6RvKAbe9T/QTzn0qNZrrAGyiAbYlD45dx/o8I+aO1ePbmalHYrcHyjinoOjxJ7a6kIthg5pd+p7kw==","text":[],"encrypted":"l2QhyPAqYHEZ2D0eGsi7g1VnKoHeRdfEh3pitOtwAN1nuRH+hEqRDlo6B+2vdGSFRoT0k0LHk1/kZ0C1/yfJfmbfoj0cyv+ldO+fEAlFttG0JvHfg3cwHA/UbK2domQSQtJSzcVwSwXu/qLGbZeIwH7LmzfxaOsY62nza4s3wFffIZE+lC0A2n1IB5CtqJoWRmyoG+KBuVcxh0gLn8KN8s4yO0xoZK5uojtQRuAgQpqdOK3rYbNopoAYffhuwNrHRy1/5tOWRnPihiw5pHvailJhc9aacioiObgJPY/qwUsh3H8MWM0gpliDi9E5aAz+LMjUSngC9OWJJSXmF57ZTZTDOE7X2H9Pv6Iu1qmolmGLaJmW4LLzTLEgMQHrn/34xK6mQUzSd+jTdaNsfFyDAr6K5MV0ndaiA01MNdu0lXEYjIwT1eSFXuORc3gKN+65zXORPfDmnMepoJBwLp9/QZzC4BCp/LLDRjy4UN+kFleSZP9QIx18ODKt4nq29xfbVpripZCy2gEycI+s1piQ9zGuimLp9MIrqXBPzO37nCJUZIrVGVnUFFszELvVe8Pq0CjB6hAdB8BBmFBXrbE6T5iUHXjXVxyBWJufN00Yqk8Xa7+9imlaZvUnBwl5sfgNWRP3GDH2el+QRKIRrVv2ulnolCotJx6CWVV+UPqFKzJV6aqtOPd1AYokWVRcOvKXEte+hGQDcP4XGI1cmV2j9Ldqm0cCukek3/L4jr335lYe0HtacB9NRrB3gHrCQWiynyZ8jLpiICAUnsyi/NZDqM8ONu6lKkVKARmDUYCzopqzT37x8J5+H2abbN5hmxn9oQZqQRIqUn35wMOngFYngddESy92mSYSoco1lsqENuXh4Osm7ZItZa1FwmoCa1kR8cjIrWASUg9hqar+58NJKHSM3UWeYoGGfOUm0PAWlHzrxitB2cwxkHwEhOOF1QZ2t1FNf8SgQXRIi3nrfw3imlZi1fZoz58uBfmfXDF8rNvNy/Uze/pCKwraJ0m2hlIDpqaG68ohu2ud2cUANiE07eEKHzMxVU70OlAcMBeMxh2CAaOke+KtvTp4JA+kkKL4zKNptjMsmH1aOQOREt0mkQuYhBZPd4Qb0To9a/MB1y0dOCzPsfoqDC4RO0FhUph7VsfSAMOb1UNqgx0Ef8fsnwMu0AhrV0Kl4glxH8qmF3TpoeNS3uv0Buy7wBOmU2nhhREqHwzHVcw84f+uyuHrljVi1IppQrf/n0cDrogetGk8+FOc4lKyiqH9GQujvxVSLOMBGTLATbN7Fg3ZezPm4odGFAhW5T3bd1jH8hJb/ZmyseMdCnAuJ2CHY9rvsGzCf5ZCOuZvHonMGg17h0F915L4zr/ECnPD97ElZfDXx2hZzt+M6lgR16pBiuwjDErWZxuXUlrEUdI4CgUOQgpszlBcDTybyLLZH+q2jQjyAoDH2y74K5UM8RXbP+/GQMtFHzXk5HyZ2Uz5DC40jymzmGEfa0Q6fWxAZNNjrzyjotflJy/v38XSe1jcKNWTtcLgmlUDDbL+SMLqyguTVDxXtryp46KGAIPrSppSUEh+vX3gDbrnmEs6UPQPRkzC5vhRTOzD/13Vj8QWFsTXyFcfkP9nVGTzyX67l7uX1iVhGmgCecQWqvVXBvXDxWAWogMutydnZRLX0vGw8SdRzhpiiPn1EZWto8IxPlvWC4V2GPn75YZfcUlbdnncT8Tbp6TH8V38sMoQDMPJGnG4bwVLSUo52u6pFCHxnvjzPAcPPeFHYG5FYmv/W6V9fOKrWc+fycH37LqUG+s=","tokens":41},"timestamp":1774364037645,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"Next I’m sampling core runtime scripts (player, enemy, events, managers, shared systems) to verify architecture claims like single-responsibility components, event lifecycle safety, and ScriptableObject usage.","toolCalls":[{"id":"call_DYaOZ0jL5CNlXJbw9WvyZKsR__vscode-1774363162397","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs\",\"startLine\":1,\"endLine\":260}"},{"id":"call_V0ERG90ZXNqqcm6B3nT9AN7I__vscode-1774363162398","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs\",\"startLine\":1,\"endLine\":260}"},{"id":"call_uOwNHFevhaW8U4XrWknDpC8D__vscode-1774363162399","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs\",\"startLine\":1,\"endLine\":260}"}],"toolInputRetry":0,"id":"dd22c045-5710-41c8-80e5-3de57851576d","statefulMarker":"tsh/pobIaUvabO+uck17ln37lbOk1oXRABq6AfRRgssSk2JnN05gGzEUhIXBwH/cCOGrZWhGjubTCoVO6seZKnMZC30vHpCEyNDl3itUPOUhAIAD2TeMg5DbraBeUwpcDs8L9RYNYQY0CEThHW0u1YiHzKadYMYl2NVgIJDoKD1surfObAD8qIePvi8AJNh8XcWV6IEGscCMT73885LwKVEnoeIZnX+ktQI9Y/L/tQmySd3wxBr4K8mIvDvTGxlOEVanit6Nya6DwXHBIEj48dXeWl5Lak4TaPeTsHxSQUFXquT7ZoB3hLFnDK7kfLUxkCARc6NSScVN3hoZ7B31d9Wkh+Fsm6Vf2ysyvKctjSLUAI+j/OyKRAuvPRwapXrK8TcjHtjTn0xgkUPl+766ZsVvOojkN92I","thinking":{"id":"MZlAfz4v+tVuKZCIU3Q4cnouViH94kHrzk1Tq5ySi0yIm6XUmTI7J5q3RUw1gI+8sBShQ7yl4X+S91LgZcj+jwtF9+sbqIbMIy0Sk7ablU9Qtu/nKyxMrQW8G3FthwGNu0vw7Cq7MuhQ8/ihmXaZMgbizjEyCHHE3yN6lUBjAZ0CKTZ/fcZ2MYDnjd6C3A73M1mqAQVCHep6ZaraPQJ8pnTu29BlKHsBEwW0prUNNGk04Pjs43PsAMPm+kA8ujJwDmyJxIlHeAV2MA0/eQ6EKEgHknwDPai0dauDjn91HlMas+E1QQTXRF3Sb2aGtUrBKbdxJTt7auZoNA7O7rJJ4+pVKw7NXkO12rbNJgli/2xmqipR0e5OFJk1a04fFr6m9K9tb1OMKsmaZq0cE5DjSpqzciP+5Q==","text":[],"encrypted":"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","tokens":86},"timestamp":1774364043725,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"","toolCalls":[{"id":"call_CI2ErptAaV46MQAOclyum9if__vscode-1774363162400","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs\",\"startLine\":1,\"endLine\":340}"},{"id":"call_YNpQVJYiCJ0i23GDydiZmSpR__vscode-1774363162401","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs\",\"startLine\":1,\"endLine\":280}"},{"id":"call_XrJcYgpbfmHvBb2GJqPeCLaZ__vscode-1774363162402","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs\",\"startLine\":1,\"endLine\":280}"}],"toolInputRetry":0,"id":"96185fc0-d2e6-4cf5-98ee-1e02c96c468f","statefulMarker":"T6kqKj915DvOYIvOSevl6MjnjAQzxfrdWsHi2fyzcr6JgjMQAhjox20p8PWFUHEU1kRCRvr9Sy+frAB2TLlcir70zGZDxmzWyyK9lYbVrYrSsF5RUs8/7GGuctrL5x3vCU53VpG7wxHw5I/akBOxiHvMz8TZRoWFarLsfDR4V6mC0qsHlRIot4cGLwFa4I4PwtSYfrev18Sp4ugo8V9H18xt0TtHN228LN8UquwwgdCoWOPtZuaNJlcaWh0dOzQp3z8tr+xa0qojFSoXDyouBv/biNUz5ezm/VKYwox0KVWQg/mcO2atBONBAjMcgCo2mc5f3EaTai0SM5IJRvCW3QkHpLV3mdcf5bH5snkjMRS3IsLuTfOaIoaaQw7WFSZMQhDXJ7YbbxYOIMoxYxj7bqRH8Y1pcBYh","thinking":{"id":"1jRs9pqb6L9F/1W1DQhz9eXvOELHle5+v/tcqhgQ2eksGiWqiGmO50hVodL3zIIBAeM76dwtEuO+sVcweA699GNBVnDFHpNFuB4eMgS1u69dD7AZ/C3Qxskxukk+o/ARq7BcKNL4gBdZm1+A2K46lXTw+xV7ym3i3RcPXlELq/AlNS6iSueEI+8dsMlGG1iWXTo3URIIIASV48ZXrd9gb+Eo4TB85MjZYmhuOerttiCifwSCUUDybIPg/frMkcLRhVvC+6iGAavKD+3ziUvtljizSZtERqFY7w/mNXDZ0VLgGAUQQEfR7jHo/pG1Qk2MBoZOD+sWghs6IWnSVmXqGQcqgodw/QYowFYV92d4CKXC/5Hu50Lz7ljqTJiUkoAnXz87p3UTSqsVejcMUdgaBc7wWXv/ew==","text":[],"encrypted":"B2qA4g2UMHAZ1fo9JfD3QnmNXfkSGsfo8bn9YXjmlbA9OaGA/pukTNAYfBh9KyZjQnqA1Q6d+cQ7NrNAh1E/nRRmQO5t077CAotb9Y1KHmDZYFRLmPl/p9J+TIy0pH+8Z2DFgZrI6lzOxHWTnKjYGK0EwFA9xOGdJWkq3EBtt0SEFNyZlanUolyUUhRxmmw4ZtcFvhsWxBGmgJySJxsv85AseSZL/fGqslSVlTIhz6Us7vj50l5eRq1hO610YOXhgUXEclx+YCbY4fhbWVmrYe7004CY6ZwbQrxewrk41VB6Uy8lcK43KUxOhrPHf7fvQ4Kpm3mEisqMmGEmDlZjekAUNMoW9VsdxacsCX2nDfjIA83v3ZEYEgIae8Ay7xFOgUH4PfG/4Y3p+tgysp4XCsOF7AlpzVajoI6EDVzrxATxnXj469RWeoXeGHgLXTJuW+xDm8+fi1b83vORgDK8ks51Ez62lwTku7p/uCQLBi+LNmg8JY54LJW9hTNqIKDpMoXImLeSU8yVfjiQqLf9eOzjRPtaM17N/SWTTVxAHeL3olxtcDH9cCJlnFCJ6jxN3Z4vqq1YEe4i1cqOhlkcZCQYR/WcWkKT+WOpD4qmvLeSb7mKm4+vSxc2iTfTpCGW8Hu9wsXg2NxPKAxtwCP896ZcFDvuHmUfUdcfwU5JqTA6QRKGkeOi2p9ac8Y4MdkUmF1J79uIhf0bjAUH18KaIALq2+20wcoZP8ErdOOFyNbA3oh8N68S9CNKUaoOGxR8TkbP9WfvMh/ef+Ra1h1v7STMtcAD95tIbI/XX1ycMgr9pshXOO6Bea7VHOsJmL7eC8EZmsOfgUXtinnHL7+qj9LuBLRS3SbqiyVLIo8TRlbva+bd9G4iYUtJA3ok1yHma1BwKyDNfOanUOZ0iI/UqQE/8zYJ4lW7ThdZXv+pfbbsRGPVrsSv9mzCYEMIGkjklQAuQddUlbxB4cGXiQYz+RygDn5Msm+/OEUgsF2JD2wm30jeETzFk+T9847h8usnOaT1RsBqdruol4kSn+WFitJIaxb2OIYSbYRt+Xbre1nRxbpqfUcdLhuWT7C+x2vFRxkDeB9lCruWfc3m9zwEAQW9xiGStE4UyPfzhUW41mJ9NGy7VfIdfT4O6r/Gq1nO6JgAuBV2sZuKwMi9fS7Zztvdy8D97449raJh/M9TpO3GL0KInbQ8YMzApjri6yVTBupcMRCbsj+xWDeHLN2GJsta5cXfE5RoDOp+RiGRjYw8i4y0Imi2zZUNG5316tcKS4yWnxDYZFNhp7tgqV7LwEPcoFJI3szCfNRbDN/IdaHPsEIaX2x4nxt9Q0rhL8VE1jY7dxykO4hjxU139j0VI2sWY9K2yKxIJiZKaS3ujlscWjhRLN+ET9Y+iIDzOuYjVnLFpx9RC7V9Zdgis+XqW//WqxrmEpGqlP+ewnYkY0lbHjXvw+WEL/NMy+OVGBOK75yqUoFLaQEKA+tTuiDRUciSTxltTp56o7OX6+ll8z5XXA0oMC1ChnhRFaGzJWKbVWNBSi+C8DVSr23zbMUN9otIvGnAnl+KlbL42w==","tokens":14},"timestamp":1774364048748},{"response":"","toolCalls":[{"id":"call_EJNSZQ9ESq1n7HQk4kWhYxfk__vscode-1774363162403","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs\",\"startLine\":341,\"endLine\":640}"}],"toolInputRetry":0,"id":"1e8cda7b-f7e3-478d-a6f4-5b165343ee1d","statefulMarker":"XCzZfjpVr0DhiNZlt8IevfCyAFAJywBTyMgzTaRI4SuZlLPeiFsv6X/mCQe2Q0BXAY927/QaJNr8qQY1SeUT7DktQ2FQcjbeG8HFjAxCIPgZg0MSsSZI/z2PgqVJtTWr3ibD+V/BWxpop8yTvt3mHVW52ZYWu8ZPGeDspH0uR2WlaWPfWDxoDU/vZuyqNuQP2VS5MPOvZNdScdzwNGMoibN8qQxBeff4PaczRJ2RwYLzPJLZCjAEbAZQuSksiJwmeKl5hSRZfW2ZHs0taJTACJmI7+V5U7Ij29lP94RE4RFSK5H8DzWe9T4Qh0zDHnppq1ostgLNm9X60VaGLbd3tpDpnmNXpUVDe5cP/C/5W7r53yKoKHOS2ImvGEYXSqFdy51RNAo67Js4LuKIMAwxoawlqgZRFSi5","thinking":{"id":"zQ0WOubffs/WnxPH5Gwr7bt6+GtUyWuAKcrFI4SC4+uvhiz5BAWg4QT/R72Y1T1OdAlCT6HusAh7GG5phlTh4VHSbrQvTV6EdrMf8xttXg07brRz2bTfmqdC1sfG3pAGdqorSLUpjdo+oTI/IANQHIBiwen2Qey8X+v5xK9auk7KtrXItsztSi0ojV18FDgbZiVUTNoiJw2iiWzcQ++N9vgjPRXKfwNnuMDHXJ5ry9LndYZ4/cdvi1UU9qXYXAEl4wSR3jTbHudkJMfVES1AR0x3zBkrWh23jnwjfDWTWJV99ju5pTldMVFiScL4brYsBovGSiS+Huu4kmbfK/PsRISycCDmJ0S+oQ7obo4Yn1CFOzifZoLQPyh2CQb5zmq5/hpUY2YX9d/VJPV8d0dT+wsWUhyKtA==","text":[],"encrypted":"qbTqcMkFUh/rKyVKODXEipWRgxw0p7HNda2XsmKri3ygFC/R7A4F+U8OMBDqLILotubBZ2Gc+9OqerDsY6PNQrOhSpFkoVpasZUshJYJaHlMhLtfdmnkplIiTeluzPPljg2SOsLBjefhi+y5IOqIpIHL9ogdirPCSjE/ovIo427dSkSE2UhMnloSwxVAVwrEJeP3LoN9KlVoDx16Nx/YtS0WTh2KQXRfl4QKjw0CAQIBu6S+ZqyK+jbVsY4xcPGAyPV5ufdPlbuKFHEgErDY5bsL0fQz3ZZtgQVJysPlzGDluFbdW/YWt1HNlOkR4uoQa7CflvsV9avvwv7RbR51R83kPA7Ge3c9gUBcOlKubFm1OToiUYnJ2OeT+dHoIzyTpScveQefYkue6F92mR7quHV9urlknyw8M28goFniY7aFW494iyQS/YtQtjFShMDIfwCWOq5Enh6OapwO+zhazgQSAwNLW5k/6RmryLoWbZVMUEbcuTk7fq6NcqevsUmkOLYHpBbOV+JUYCgA21ckeOsi6J1xo6H2RLZoqsRIYwJXnZX3xLcUyWB7BAl6oLfYs+piEneKBcSHeAguRo+zhNcd/M1r3NHmKN+p9nIVRkf9B6gnnIz9ICyVGtgVWUIXxDfalvVeb08etrlCc+ASp6n/y05p2A8aBg36svG8/HSQ4Co8Rkfh33gB76piLC+xjXk12ba7Jccr9hQvfOzgp8EaEs+oP6j3toxp7lBVl2kmlgSUrypxPLJPLbVz1qBddRiGEIuc2VWFcbdZEde1Y8SIbp5G7ZTD+dG140SYJNKPWZxSeJt1DuDDOTsrU4fqFNs+WrV40jz76gxW9U2Klam2JIJK8yRsERyZrYESivXLSw5eVvbchnbuwr1/hFs9MBKrNBNzN2vHkHwHhDthhQS6CBGJctwUya2k5Ys4rahHa4wMllAvK6Ckuovpt6iz2y23GoOAakOPsuc/cyiV61MY6dYenXSc409fm2ENVipkzwixMhb4QoCR2zHJC+eKMzOrZ0Nrs4xBImqobIbrCdDupfs+puMhsZNH4HEt5FAEmZq5INvVnqM2Xn/xbC46TPxzaYXGnw57scHaO2wNjuxK4mcVwVWlM4Mx336CRnBtVzDtdniw/M4J0U4qeQsz+CpMogHIgIGG2jMGWMZuJxOPtAscf5xasFcW0t5PZ9L2CgUkfgvQHTDcZqrmobCKF0ilnaEzukCTC5I7t47CmGhcr56SCqfynvqLRPb3JMS7BDn+eIxNemu28LIhOvSjfnlOA0KUXxJXeIBeEQC+C23fo09p7Ymi1b1KtxNGeHGEj9X9dpT3ZnVgKVzbyHGr3sDToWxhP21ffm/dQ8TgOyh785+BsmgAta8jdoNagk9rSYtRnxCYgy4sN0U5t74L6A2lOOJaZ0yblK8K8uPLRu7t0HGHdEmPS22NbYxgkxRT7nYb+ReI4vkcutm4ybONmMH04GtRDEZ7Q0kDdaw5TDm/vQob2RruV0cPKEOO/Lx5X76gyK8hbJRD1VOidJovaodE3MUArtL7H2d3YAAaqyBvONR9ah1lDf8IWZT0ESpAXRQmVocgmDwCQYLw9A+WrYUswXTgQHS7OMKIhRHh5aeFz5lvUjfTIXUSdy1MNCZX4YWMsiflt+7P/q6So/aVAGQNFcxfTtW2XZX/pN8ECcXlCuc=","tokens":25},"timestamp":1774364055236},{"response":"I’m seeing a mixed maturity level already (solid event hub, but at least one placeholder manager), so I’m now checking enemy/shared/data/UI scripts for consistency and any compile-risk patterns.","toolCalls":[{"id":"call_T6pJzSXtbIKLZYpDaLBbjXWs__vscode-1774363162404","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs\",\"startLine\":1,\"endLine\":320}"},{"id":"call_z0hHwAEGxCMcFw4NWgJ90dkW__vscode-1774363162405","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs\",\"startLine\":1,\"endLine\":340}"},{"id":"call_DAnjbmQiy840CPb6g9qSW3zt__vscode-1774363162406","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs\",\"startLine\":1,\"endLine\":320}"}],"toolInputRetry":0,"id":"9f6d0017-2e09-4830-92fd-1176e3f2ea89","statefulMarker":"OUvNxML6l7tOTTVHos/OWGCHYC9eKm6zvP3vmVts13AG7TLBzgNSZLN+V0rFMZtE83EGzZx8vXiyKVD7fGVvKFD4Fk87HgsiDKiNjfP3d5LoOeGPyqAiY7hpMh2VMH2Aomldk0NgM/fiLjZ7wVzS/Ba9EbVZB5XD+CLqHxL8KgKTIroZgDpnf+N3WiNADrShIifT0UwDbryxBA2+Pxv8tKz7ypBbM1h4MGrLoXazpg3DP2DI1pbtAE2tfNVi9d/vZh0IVdgRAqMlac/AV2EgnvVDQsP5kLqMiLS5dxkJ04H7LfEcLh57iWfuI9z70TTSXfNSRhL/vPfjVXpWnBZjnB8kUYB01+fciXo2j788tIe0OkeChVn3YQX3aBHHsYGhtETf4fqXD/QC05RRmOoNwZu8SP4QCZR/","thinking":{"id":"z+7WtIb6VL8yNkSJpYdbXsF4ljcxww6EFnJ7u6/M1pH74Bjrly1hnNJXnYfK8qrN2Cwa+xU1lIV/0G3Q+nEyAzJS5B5SMZlQrFOQ+Bad+yG7Djsi4xevmkwoljZERoD2bNCNydEoQWMzClirZnjPTtr8iBl+Pk3pEC1WdtTE+lUHl978P9nZPTDADgZL3zVfgG9VukncLyrCJHuEvUMnG4JW2WpP8Si5UHVjUh66NL1TqXPu2b9sCyoVBmlQ/qOL/VBjkgai6sooCPFfMogKz6RgxI93topvUWHTw9qDIsdWAdJY4ZPuv9FphjrjDns94hXvvn0ssvz/zk3E0jOjHrq9eKZ/aEGXXLhtQvWavKjv6gYU2dZbkJfL1dn/EtFzmhb4z2NOUahN62aHainpNBaQayZOug==","text":[],"encrypted":"Qjupu+M3QYSuGxAXrkn9xusRZrkSbSYK0KH33uOFn7+yJCL5EBeXjiiae+sQHAyTfleadr8n5BxgNzuu01/LIZIrkI8nBK5ZaQgW3cWoE6I5LzGPizc/LkhRF8eGLFMtd6ueHMRUUTY1AtZD9Wrh+IzujobbDVGGE+sz8WP5XrakiCkeg/fuEBgqiTMM6GmuSvDQ4zsucOD3v1JtxEtGEzbizUff99XW8AOv2mQnZJqfgPMIMLemFLV+fkTtaeWQlL/gSpAJjqEotl0lPM4OUk0xDdHqHZiN1R5ELt11nzi5aePJPahZxYxJAQuXpoUWlTCN/PkM/qNGSvVWG9f1F9SqcZAJRsemDBj1FmXbb/WyJ8f3XINRJed+HQV08dw0+DzxsbseFtEQymW7mjBcZliQ9LAvqkxnKN9SQzqXNeQAgzPmZKk2LViJNXuKzjmNJ0wRsffBotSo60YYviUlnl9aV/WStIhZr5uMKFnxuduIB1TtkcY5ee3VY31oz35qecLSVl4SHhpywPoxS/97uIgc0DFcsWU01yyhw5XD4zqv1xUHd6xpTSLUDB3viwkpMfX0QNnNsekLwMC1ZMDV+299KN6cdxxxXfV5epzfWz+NZGOM0amxP7Wy0uu1AdLDExJQPToSa/50dwDOpD6rorjw97BUuH6CizV6Ek1CmV6MVkWwEiKyNtI7C5ci0tMXZzFi0uv2cjLIWdzB4C7EbXTP86+nsnHkhLRLkabtbT1351TgXIsxfNLHvW3T/2qBunepC6gEsZd5aQB9rRiu4D+2gkRpDtOmJDArZWTBR2KbZ8GXLY2ldYNhoeMT0wXfyOX7g1uioQN9JJ0aN7Z3NeRc4spyv6MZNAIoXZ8onlXrsFim1kaRGWoyDAI4kduU4JsHbCVk2wf5owhLUY02mF6IDz2AlQnYwgEaOHYRp7zkRQo8IiyJeF4MMlV7d/WpSM6UNRDg/RHNcdyLzsNikJMzwWoAhodyFLNGIUL7/I4Oa5mIMSPED/TTUxgmBFFmlvAIgN9MnBKvKecoP0R83AaQPnVTkd3e7YKxSkvtCQHcph7WNpn1PckwSjbeYAWUPRANbPzp+tuWM0nvvVfYu21BGdDHaDsxgE/EsSMpNW/UIh1uknWt5JXjzVmCv8Oa0o11cc1mzM8ZwDPd2Q+CE06vmyZwHr4r6pbb8iq9RSBw35BsQjQb5Mn4BkJa9WyniQ4Fz7A0A0+U105r4zqMBbeOSfJHvQnuIeTkf5HGY1AmW0bfzNIPCiKOi3Y2zP7iHoEmDcilgiOwkMfNX+/h1Xc/v2RxvA0J478gW343nPE1Jmv/WeqlKPikFDUvEI9n1Zq7b2KffSRfIgVZrHuZClgr5YF+wgx3YTkdjCMpTE0HvrrRN4SAgAD0NPSU+3gJWCz1WkeHkTwUMuwJFZrA9mLs73L876vjfdjLqS/5lIScCLCcqLZkrdV42ljTgSHjNMgeCBTkohZRa/zqzjFjNdKqa8nVhWpaTtKUeKuSlsfI8ORI2Hx+pEZOuOdfrgq9ijwyr4zhqmfET0JkTg9S736Sr0o0wsHALwcBWO4CP5xxaO1QzEZq/VX4+r5ZTvKUV8jenyQkA3zGjE5K0RH7sHew0HYpEyhfNfutXuvuuEH/tu3UMCT52nuUJEUMBdMcGGzjQeqzdT3D9bNzAJPSp11m6yk=","tokens":32},"timestamp":1774364060719,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"","toolCalls":[{"id":"call_Ki3dZxk8QTrc75dY39uD3jg3__vscode-1774363162407","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs\",\"startLine\":321,\"endLine\":420}"}],"toolInputRetry":0,"id":"980ee44b-a793-47b4-819c-02a105516204","statefulMarker":"ztCjtER8YqAly+WmxNVmF+uT8/K+HJBzU1CqNjGVP2falljE5zLWII5to4LwElaVdeAcSs4G7b3BT/fkurKLmiVqH4dg2nZYGUHIfsQ8gTi1/mN4vlAnTZEq3pkQJZwvf2ixljC714wb7Opi1kYe6E47MKDkPz1A8IY6oGfsWJXjoM5541ZSRHIrbIrHR8N5kPUMEQDiuXfBp+JaFjEXDqKWNcOXRfzB06oi4fyL61pYvQzAtDOA/vxTgrLQUJ8nToCW87M5DPtXejs2L9bYM72mJTqLq33JmHsmMuLXKrelLeFfZVNjGKOyc37PppvRdbsMcNxglApse9f4lno0SbHbcVr4HM6jygQoDdbH5TVeBalFWS9csLustMiRCQect/HI9tjyldnDlEbqx2qAD4GqsYJVrGt4","thinking":{"id":"/UfMWBE17ULQNmPUIDBHj1TIlgiSfU8XcEugbP7MQE1Q2mhYRtnqE1U57cvqTDHlwoQJxQk1mCVaefyeXMAlqMm8BxNpF/ch0MNw1iNBdoYO86We1g7P1H4HT/CkuaXfewUVEQMs+dUO+nHiKEgh2t4Bv17VhC7W7jfIABHkLo969Qm4+iAqPPOuhRy7RMmYQntXqPz4fMIgWkbV+3zB95ZW39ymfmp0UgaS/7D1gO4Eht49W/aNLwAyTt7p8Kj+xTR9CBUvZRMt5lheMYZkk6sJz+25UFd7o//BIXBOAdFf+lz7C7Pduk6qts/5gnHzILcxewruu7fzj4BmX819TjKaRze/dR+G6odULE0EZj5b6K1Tarfo/OBtN44bbwN6iDXa4du+DsIburvl8sK15CYa+u0eDA==","text":[],"encrypted":"gmAnx+lw/fgc02u1YBcT+kQGI9P/z9gtyFqG2trv6OMr0+mPj4Tbjbfccf9T72lNIRWOEWkmiQXHHSYik1lpxU48ZhPQp+LRlwOpABjF7jiyUytq1yT/7cjLuZOl1eN/wzngVWjRQ1OdluGKvGgeE3EISyvNjw42eZPovxJdlqvds6kB8ZD5BpDzrdpGXo1qAnLLVrQ5YSvLAtAFTQd8zDhe18yXul9MeZRGq01zNQbn+uA2GLGly3UNzViT2CEG4KDWV6AQezo0z8slrkJbBTIAQ3YG2WhBQhFDawNZPwfbd7K0vCTy6VU/vbrA6+HTT3xk/A5d91ru07KTlEw+f5zkcsm232Q7XhOY6OGlCTQrriBajQqVYlLjwBfzTu4ssnCPLN1VmK0Vue6J+CgSxPXPr3SQffkE+aDubxr3/hNHzkDVNOgLSOnkGwwY4cAfm3/7H/cQlyPMK6Ldi2najtbMrL2OgFkI89ZGdTPM/myfyRX1T8+SIlagh9tpAIeVcNFTuHkc+SfsdtzpkIADRJjxwyecMU9JsVxjvyjG7k9bDBdZVZJOUTADjmQhI4wbrt1lC7abxgor4owh+65TnvMHK2FdgzA0MtfvTOt3eMUKf/YN3D4odnBnN3+IW54rG/ZwJLDa4Ci+pK0Yzhx93rWLcbHjO7q122P90IPNxmnNaz6HZN3BKFZjMewWBkZgeZB2biCIM67HvV2Hn6HJHN29cxpRivW9HNn4Um5IWbRYtias8jwYeoMqvufRexnSqoKP0EGoioTPhdr+PvRlqQVYR4S04nvuCUMlxMkPQZN7L74NS3MzGfX6vNFO+fzLB0Tp5W67+nJWkZJzgx2KZPQ+vwEXeZrGm7W3RKogOLm1mv326OfBElMlat33VThTPQDEaNfgYMqxpP+W+10xeiW+cTPdQrLJ5+N7gsO8cXww3Sw4KAgtfrLUIomrs21Nf6n7ob4TFdPFtP8c3lkwKvNuCFlTFuBgYG8rsYZ9z8wpMcuaxTw+HRB3lp4oRYfLUa5cwX4u+QGbShL/AHn6IBozh2pNlX6iJDT4HgN1XsIg7nAjqZ8oQ0PmCvy6pctxTfmUX8XdNtykDn5TdXrI4hgiiU+8/AnHPc+lXxdu+wGE1xR2n/bTr0H4fYH49ZTI0lDdbB4JKLLxPYQiJkiCsoKxhW5SrWt9hZufkZi5fuOe9xwxES+W6/wMsGlEPKMqH89RrA7yObZH4p+ifJ2VYBF8ykrgJ0hes7RLYeqNQckBXuJI/Q7AKCtu5yfRy8uZUZNc+04zHlhyQ0mTmbeSVHy1guOOURyX30rgVN7bNWWNSxkfH0wyMoqB9644xeiyAq2Q2dGDK+PHKT4d/U/Kj/BIPwoYxvIFVt1rBqyqjzS3Kd9Oo8NPhR+5DJz9+S8KWLjwPa/ValbgHPey5UFeyW/+9eto7zr8qdwLbecgumQ8tOkrEKxCQmL1GJaq3pNkl+cQ6bfxgyOoRms8UfFh8QK1KL3o7YrE/vbLOwBrLmT+EowfhGN42587XTjGUxOVMU9FNYfeUJZAztXDYS6Dx1Ougbvaafthnf0h4fYaznMCJDQrnp08Y0EaLmyJnPY61oEDig==","tokens":13},"timestamp":1774364064345},{"response":"","toolCalls":[{"id":"call_rhH5Pi8lPchjk0ONQJR33wm7__vscode-1774363162408","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scenes\"}"}],"toolInputRetry":0,"id":"e2e491d0-5170-49bd-841b-9b1e16a35df3","statefulMarker":"Ecrw+kzfwfb0shekdZ0sZM5XKhBDtMcs2CNdKT6TUWLp3hEZPyFRJCY9zXs9F5vZqgq/k9LJ6d0O/UfTln1vTJ290H0Lcxxlfb5twIuZrk5owiim+QKc1hU0p8lAF4okpLdQi8Cr4zyVZcTaXVggbUy5fMEgg4Dm2YBD+3U09uGZEbzuj5WI1Kn0taeVR4/PD4dYK6mvXsXW60Mfr4Wy6bV4EeuP1tMt+8QtOBPJ3nca19bh8dUl1LncC8M1Qkao9MrmBwtETswjLDRuiw+cVumXqjVkIU0I8Sn7+viv4haa7PscAgrzAnwrnhvJ2n7mSKzhteE3+nvy0eMsyO/JZ//HUv/zRvDhW9OxtBxl1VG1xQ89+fgYsNBYgRYcMW5iAiT47HdyyvrxziSjhtts8ZUnvoMmvRFr","thinking":{"id":"t21ysv4qMR5+vszBRhTw8+CqiZehK188I/sv99VMvcVatlzf9Zyj1z42HWoD3lMyUrFSwFrMsJfYpVST7f4qSoZaQau9o0sCFiI1EGPHhjF4Derdn0NEMiBPEeR6ldFCrUoy8HtVzC+Sy7yDrhaCP2hWbh+x50JTyhS60TaISLHxwSRe8iuRozgu0KQgWCvgDaF1oFPPaFnpxyL6zdXlZQb9PtoGvPrrqDX/5JQQ+fN1Gsw7WY4z5dbF8nyD/U82HPJpzXnq/951PuuFT4LFTLKOXFhSR8B5HF/eC7mbqLW6KTTD7XaFUeRzxsoLqK9WuG21dhynjbQXV2D+6cm+LJKEg94TQu2cLsOp5yslSyaJqpiuRf28/Yv/ndmS4mxCSCaNsXlHh4iJ+apbxxmd8aVske69kQ==","text":[],"encrypted":"sHEgnsVYhsPdoyIZkJDxktP/PhMHy6rFJa10dBS5rhwgu5QuMYkZh79oyuCzFYZLvOQHwtoS9+Rf9fIlqe5BQhd3yQx0xEkURbSS0goUdR7xbcF+W0II83ePy/pPg95HPmQ67K6J0blXW+JL4ybw9E7BZwGGiBVmOk4zCBH0+idUXu9mAZXJIn+hhgAazc62l954GEY9RDjBJQamXjE7T1NtcbbgymfVCcJaKuAYeM8Oe6jQQrMBLPwKEx3e3PSoCtYmccHDawSRRF16bYzACwxLiSs3CPqZfV7l1amE0cKe173X3tDg9DVdbRFhv0loHLwXhIiIH0wFIupRx4D3t6stLy+xjF4EB+tlUkQ6ZjvYEaoMjZRAQUdHewOVNqmcwPGyo6zMx3/8nLfhmBzeFAkL0cgYvazODqGKNlIucPaRG+qfkjS5qFtfOyercJGTJdraCjuFfx8gEGdxyMhNdRtL24/kLpscgQEFwRNCBTRPj6Wh+9ZqP7p5Lc3ViYPWzAxLDmdFw5zhpcv6644KSCS9xpUzNPxfQS2m1oF7asNC3uKtXFrN0G1gatr530hKSfnPoCGUMognHB2zdo8Vw6N3BiGTX2W2nvlLDwq8xhNPnuheO5RjdlHz/TxppHioFGkpYj1w0PtHu8sUtqCdnHTvm5CzXbK/OfA8DvWANk4xvplYIBzdYjYA7Kis6bUI9qti8MteoW4qK8Jfw15imtES/UjtroAccmOmAWWy3BuL07QLcrH4z1OpFdQycKYqMUVOl7ovDx+vLCWK+s2NBEFV9DFb/V6NvJrSa96eatC1QDgroT6xet9suJFHje1BvmxIL8mLouhpSPOXYdpg/Et95qdUWIELPyqvP4nTyF59TWk8aYEJpkq3yf5UKY7lpk0GvjOQ3wmQKdfx9DO2Doh+iOG9H/07GmtKs+l6YM8S8iJL3+N0+ZHvvQuDzaNvhyoqysWj41M4IPNTNL+24jBKMJapyxdXjAkDOztKFKokT6ANa0iM4xvB7VInz1k+Sib/k3SD9H64qsrNrt1DCMKhRZr7DnqSElc3xh6baJ5E4u+pESswLiXRGptuXN0Mz63etCcnFKvKEhUxYANXqDpGy8fBELCTQmf84klFaVmZD1XOt0lx0aZGTsjLhjxNq4JYNOmfd9tUPtrjUFGmHZrwYrqxZDEI3MLqmLOEuRXB0hJRtYyFto2TrF7+J3vJtl5KRBAhg2x+MewU1sYnedfqyR1Hz6tfBKelsjkOjb76qGL3UQ4GGZAgkKmPGEILe+UQpnG5Zvurplfo7v/X4vOSl24YUnzf73o5NoGVcKxjZQIOU1NVEjEqo2oM1CAFBGT7N9Oidutls5EkNIxkgW9QbFy4OwJcbWATXekC2ZqM30YwbbUxzl+ACnD7g5sHxiY+heqX1IwkOF4gRYYbgGmu1Ux1nirXF0XMiQRgSyE2A+rHeo6qwXU+QCRoih6aapMqm4kLv4fTRy0MDn016GuN1R8oUO0mbLAVzIg4NMMI1eFcAsAUzHHEtqPEO1dlMhZh0OcOgjbGNuZiHLn8KkBpan100j9FR97yu7l2ze38Z29gUhDz5P6U/w6pl4A9pnoHMkpRGn7KFCOrAaoz2bkZe3ejaBcDYHDBNJAjYDBZe+bZpbHXmWSb6Fg=","tokens":21},"timestamp":1774364068436},{"response":"Quick status: the codebase is real and active, but docs appear partially stale against current assets (for example scene naming differs from README/GEMINI). I’m now doing targeted checks for event subscription hygiene, singleton/manager quality, and configuration/data consistency across all scripts.I’m running static pattern checks across the scripts to catch lifecycle issues (subscriptions without unsubscriptions), singleton overreach, and hardcoded config that should be data-driven.","toolCalls":[{"id":"call_doHQiWn4S3Vox2FVoGeRr9k4__vscode-1774363162409","name":"grep_search","arguments":"{\"query\":\"GameEvents\\\\.[A-Za-z0-9_]+\\\\s*\\\\+=\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":500}"},{"id":"call_kAQyUrAxNqC1RFW1YO2YavNC__vscode-1774363162410","name":"grep_search","arguments":"{\"query\":\"GameEvents\\\\.[A-Za-z0-9_]+\\\\s*-=\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":500}"},{"id":"call_dj0MaHsQIx2EA2JGLaZ4OEdl__vscode-1774363162411","name":"grep_search","arguments":"{\"query\":\"FindObjectOfType|FindFirstObjectByType|FindAnyObjectByType\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":200}"}],"toolInputRetry":0,"id":"d18b640b-d7a4-40b6-b778-8dec3faee85c","statefulMarker":"Tp50NsY8vYMEdPLFOgMGa72/sOFT1QhHUiGO3i2vyuQBIzAJ5D7yv6agkqYJp82pS3zQzTAVw26BNM0PoMabqnq24MPYRWmv/IT0KRENcW/rtCJaXDLttc4gGuEOkYn/vpo0C1zmMQkR7euXxJ65X2JZnSQL5CRGL9PjdRxvlQ+kRjDPz35bYtp1sf23wQhcp0oY++/jG+YFupoLk9swJQJ4DuFUwro9bdZrqlIpdrSlKfPWCq6dDHpVJ7+By2y/NC7A0H1jQbYpaBMuKpN+ivYxZ2k6kYrnZTzf5k4zI0slLeSe60g+Wi1MHA9Uc70QcbexQxLcGerND6p3iqvCCvmZ9O54fUxch9ahp2Tvg9K0WlPJg6WE0PfH1T3zcPyikLyIfDUvMmTuSIezeqRZc1WEIS6u4Lr2","thinking":{"id":"JV59o13I4vg3q1bJgqHr654995h2jLjmYjkDyVSmGwkIXb+DyhDRHwxrka4rk/korfdutV/xYpVv1oxLlZ1aNojXeLhF8XXCGRF4o4WzkgZf/R2K5XCKnldqbfVbtNZ0Uds2bRqdXywJASV3ra/1RjqaKb2okWhSGA+9Uz51gqyFBrSk2bCWk2ulsPwlXsOfw33EBnYs5bqLtO8RAoSyKB3yQMO2Q6N3nMZ8YVqVob4KzY8hfn5ypdg4vHlPLVDQIBJpI7u8Xuyz29JpRCUnMD43sSUR+Pe906cTF/X/JhcYKb/nq1oeVErPOdhMUfSVNYzyzrDhCupsJLXI72XwWqBtzet6zODXG7pNeLZNH4B7eemtydmh9XVwC9Z41tYnc8JW1w+p0frvpd/oSUBdnXPGSd/oDA==","text":[],"encrypted":"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","tokens":141},"timestamp":1774364078271,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"","toolCalls":[{"id":"call_03ywX3STzm8spgR72s6MYwXn__vscode-1774363162412","name":"get_errors","arguments":"{}"}],"toolInputRetry":0,"id":"543060ec-d183-4cbe-9b5b-2257ca3d5091","statefulMarker":"pR/RaynrAfYuLUgMaXStz66GTdbiu5CeOBSM2eNpN6yRx67Wr6KMDKS6ri2b4Q850mWpSxy5uO84VslGXcieqwImRIs/92tZLfvjaHB1sXJZ6ZHf9lK6h8sD1BwCITZrVUtW7U/dG8sC9VPvVYXyiR2fHLW0t1QR334CYjf84Bytz7sU15wCtHW4E6xqji+HGmwwSDH8vOGmlA3LHldojU835f6jEN94DHNDkIFAaJ26UNHf4BYrD6NAQtsayBj2J6gvvSxUFn2Y9fQjYWlyIShngJKikBg2H15pcZX04uHubpVCAIR9o35/iaVgiWnohh9QF5mWtKx3N5RUGZzH3eNbr5ywIvWEsSUadJljpLsNTFSc2UqEF14yIbcTkppzNLyHIGi/8vfGbdDEL6I5FB8Cn1yRrzDG","thinking":{"id":"wWUWKNV7AcWjHqgJdF8KRNGI6WJKTbIasykee1rPlktkfTVryYJ5B7jQKXwQtrCxrFoyYhoIUB6lHjeb+QddL3VnVtbFtJjNnPw3UyM8gQjGS2A09yK6vyR31Eh7y738lYguFigCPe8NYQCse3Catek3eJiQDHMZGcFIRXYIv9XXL4FdZU33NnaGHdprsxmyHLOEtYHAIxc5SLU+D9mByC7mzZT6jR9pbN/qla0uheQDLfdgi/fZeiJAxjeh7HhPxPdEzON+cqdyT4BVy4e66u8ERmY3KOAIoZWVOnfnNh883eG3s5I/keD/Yo9zhq4XBBp3BScBxLKu9aE5pPcNmybs2oi6APW+IjbxJHBhiq61f2IL/V3hRscc9luNPRlZjPA2HGP+l1vx5Tc89VYP9pkhqPsJiw==","text":[],"encrypted":"dkDZxXqn5VvZfcbn6WNnOUS8X0KAauN+WCueeQClYPzbhZwdwUJ0ipiRukzaeQsV/w1tPVhe9WBaEDKQA6VX0qlcul7QwnpD8e7CgazKf1CFUOEomuZtky4NFgW8yx20hihGLD/OjyeqmfcXAspKxwbVf0XsYejoPdfiDjDBFw9fyhNnDzA9ZxSMdXitCuwzCURo2TdypWyxn6C736wWOMxtj2csZJx3JYVkzF3DAAwWa+9GSMZbWp9xWnN5hjor5DE4/0gPXkXDyLMvefWV0adEEPT2wNgfgpuYrMlW16Fb/HygAq5wsRttZ4oF61USK9kZFAiIYAt/PslMV/LZiqKamjkurKXiIfsxD6Tm+ILm2XLOW06z0mbmwNk0+JVzThzUK7Gk6hO5WwbUoUz8RZfdsnV19lm3qSMdsb+dk6Xn47pORZEgmX6v72jpmvYoGK7m79VPO269Ib1bvNmJ5KCzj6LO198pghACPG1NOyINwgy3E8rETDqGcQnc3OSmEcq5fzOPucAsbmuEQRXBT7wyOTlq9EIDSHGjgWqkL7pHOP18XaRwanyaoGKJudPu11IvOaj7sGYzMzCrORPy5VNNoAIWko1bGqpK3DwXAlOzv6XfyDJDhbxnlT4Jh4bX5JBV2e50q9CQVQHrlwfoNPCmOFV4b09z1oz2dGgjAcLHfYdNTfhx8bPDfU4A8m0n9QAELOJbXV70/NPM9DY+TN6w2OxloTLvDGbo/1O3BMBaaoCoqeSHvpkII2nK3pL7GkqPBGK4quQGLDoBVYdxtsw0DIaq88m56UH9/uqd47IwWRVNUt/mXK3oV4qQgLklxn/IlUcqGB2PvsK3CXvQSx4NseN2A2Htd/s2OT68/t0KqsHaSqiYNw0XSD6d7C7g3pxUPVGABr279qYNXkKns1YTgcMLMq9lnAwgRyPpWwTjmDgNol33BHFABlKgMkW5oNgdFVz062zwUyHinBZZVghyfItyLlm2nRilNzhwSgPb9gJ1SMT+kXznsLzqe1MzpEPCk05DZAg/GcA30RtddqMMJvK7glfFfebGRGam97MvKhkb7qmk+zl5dnVUHDFfn2qhBYJvuNMMw/l2GXFX+76mv2IztRqcHZU62A96SI76RvWbnid74//yS0mWJ+lPfV1Pn9pT7wb5096MIlRwRAxiFPh4Kjo3V5QbDA/m+p/ZbuSu5CeWPibmBVL+G2r0nRKhPoKSSUIOP7MZv3lDaJ9W00JZWSaQIFvc+4KgOW0o9FP7XfsQlWBLWR3OPWFTbPYozGB1MlCdiTHG8kWZLqhTT7/RvH0/3hFKrnmVEI8WGHMojmigE7bAk9sDtt1HoVZjcY4gLIR19j/9Ovj/G6mUwQ0Qh8CsjbBHQ9uP9xyh2s0co0qtYF7Ix1S9VvVV6OoI2C75y0hq4vEAR7hqdGHSMj8lhKyNa5M8pWuw3CWNhlVuM9jQTSp6+UVpfLv2Th7GLA3KcbC0MYEIsajFpfay1Dt2NobUnd+5h7sH+ZGIrQXvhsqiGLkBC4JpI2HChAgoi2cu5ijph5Vtg//P8j1v4cZY2pWVS4CQp24/vftNUsmbjte7yTQs41dkEr7uk9VhJnPOJlTnNgbcTs8h+B4OmjKWvX+P+ik+qsq3s61MFx0Axdg+GMvViJwjT0Ne0nA5qT0wCgMo8dmWVz4t/5sH0S0FipI5QXWS5N1gokYNPgWarvYGZA==","tokens":27},"timestamp":1774364081888},{"response":"Static diagnostics currently show no editor errors, which is a good sign for compile health. I’ll now inspect key managers/systems and ScriptableObject/data assets patterns to validate runtime architecture quality rather than just syntax.","toolCalls":[{"id":"call_6kgFuSlsZSWudYKxDXbmydi7__vscode-1774363162413","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs\",\"startLine\":1,\"endLine\":260}"},{"id":"call_j1WqhQl11XI0r9E54s4IOJXq__vscode-1774363162414","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs\",\"startLine\":1,\"endLine\":340}"},{"id":"call_LITtlPj8YcnxOaYApWyBOfn7__vscode-1774363162415","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs\",\"startLine\":1,\"endLine\":360}"}],"toolInputRetry":0,"id":"e201b620-1bc6-47aa-9981-6a0d83110028","statefulMarker":"vFJcZUydQJ9V4636rYSfHnyUpGC3kyIEW+s89Q126EN3KTUjoiIx8FWtsg2Ks7zRv5sqZcwF7CCf8cgvGeeU7VWrGip+1veHsjZf1i983OGNaM6FYsFHNPWKSEQ4wvKJAiJQFgp+z59B+NF7RmqgnUHmnjFp9YbsOgLRwuFIxKOG48P29KW2Rf+BtIf4efEDAOopo5I1MbPpdyt0N79s5iVZQJoM4DuFUdItE254+c0Ijwv66/pR3B+vE8oY6+eTOq/XTQrypePA/s5opk36RCTUxoqIrlplLoqqT7p0dDO8QgCafAZArVL/zVuhpJEyolVTuO/zMoJGZV6VvZsTNR+XhOlGEG/NETli82Zh0FnBGWXaenPdz1cgcOoF76qXt18Sk8C+6/vC64dVmIvOpsPb2WAggb2Z","thinking":{"id":"vmiQ1XknvwYAcJapmujueMMzCb20eqZN/aJNvi6ErETDZN9nKPwAjXM03hIs7IE5tOKAvLY0iA2ruIYmaGugbupJyGT91YLhIqU5QspV29Xkf0TpTDvX8yVeMYdJMOiM83LtOnIA6ot83FTtpit+UghtZuwmGcLReBy6DmCh7rT6yptcSyHIHjBidKsHYoWaDKJax0YaMZ5NAL71jXfF0uwb4cyKPcQG5OTYqX1zJ9w4FcxwN+0fD8BChe3ChjOl/Rl0jD0sZcKpBboHsW8sVZWpqZDpU1oKJ4NPeZkUG0KjygacpSJkLzB6r8SQrpwglAogQ08vG5PX8JqrE+Dwk484C9FEF9Clzd/Ue3/Wc93G8qdTUHEcXD5OoXcWBq1Am0I6eUO9hlnyRa8AJU9GSY2HgKxMDA==","text":[],"encrypted":"nOCA6arPhyJ7m0NkIY4gJF6Qa+LaJKQd8EFXMqt/T7H7boK9siDrvUFRSUQVe7jTiPSiI7RW4IO5OcyKtHA+aejX/oNsuwi9v3fzRhfo7G1AasMilecpl/TLI+HEIP60h4D2ROZxV/cRkvFIVeUdkvCAi7wgqBKu+lHfmG1hIPFLswC1OYP0EfaJE1uCbZoLldKohT5nMp/EvJDRlSGhAPW6CilB1gX68362d901yGOHcK4RqAQmZIu2sAn91EVG5b6I/sxiE4fUb6iWsRz6wbkpq72T11/APG7LTJIiyXVPPBH9Py+n/8sNNz/rfdp9sEaXDLgKpL4VSAUtUIq/LHVshKQp096s8p8gyxOak6lhyDV4IuBTETQ+nve8Fr5b8g6hZYPva+Z+Iq9A3A0lv/SricVHm4+4f0GM+7kni415y6ys/QMkGdovkHq1uvcgE1Kq/D3FPEj6aqaoCuJ7QxFr/UEQUcTHzEB0wZ5NjxQEjyZ8QACsEpcFHQlr4GTWbhO1wQhHwwmXAqBzueom9VUbz8ebtsQAnVRHF509VuJaIWclGcUIWUR/1+KkWAPnNoQ4fqR2nGMD4cOsaZbYnlmNPPzAXu18SnShE5bEhYrN6JfCkQNW5P9Zyjwz7ORu3wElIIKJj4ym8KQzVlc6voGq1pj83N40YOHPjfAm3J2fHatlW5zdpkTUDyEpK6DJB/YTHgFfHd2KYmfMOr9CNrBvpt3FPMxez8mAKlfhucwyQMryUZQzhbBKlvoEwQfTtnmO1rbonIrcVO+xdeoyMaj/MHaXc5JyXM2FCQzcF7Sk9+tegMOdpp/dwTOAD1OJBy48jDYhFT6KJhgcHAtrDFQQPs44IJKOMopGFQ6l8LhfOn+zGI9aeSG6xqBMupfyjkJ2TsSaNUSyaEHY04paUzFfpweRibmBMX/h0Vo4jD/1ud88lNruWYlaazZDgtcmR+P3Nh1pB2ygIKWsmoPke+xS5OtRnrDcA7vAYtQO9moV/PqT9/CXwNOEK2PKxQlqQO7rpWYEAIHH120ylr0CbP52VF/MqY/lnuh/8rMGaJaGH0AS8UYx1KWzQJX/n2fIXyDUQkzUQNB2t8aeB6qtfehKl0PwX5A2oK9slJBw5jA1LSdfuXNorgeA2n1ApgXWu/K/zgBfcrAF3BIvDAZi6A5HwmAjPrak7l0SGWNrDy8NFQkwFrOI2oUcI8PUR/o7Sa9NbLm3T5HXgcUxYyR4mvyaNAfnz5GoCVnHjRvtC2FHzs48LDxqCEHdGXSjbhFrEb+fvutIGPBCfWi7v5NPH8JAJHI09q0hqU1B0wkeKV/BOIg9F0zSCo4Kidxh56AwC2P6tLmHUDeaPWqe0S4iEZHighU4ID2WRaOc1quS52Vq0TROPCO821S5LB5D1w5gALIcjZS1B0Ew2RSnq2wEAn1PQiE7Btrc9tCGOky7NLP2kNtd0S0izlZZAfoSN7X/O3PrlZkUZsv0AUB1HPS/naK398s2wFFLle7Ty0bHAgTRCcejjspmwgIixaQiqhAeFtsyniUzZW4+8j/2ZVtkYRGacIklMvlicVzU6XcgtmOaK354WWGckAPINOHnd32BDhYA5U91gTEtH2XfKzrzHeCZTj7BmJKcXs0pcxh8yJRzg0AePFOovrToAbnFuo9aI3seuTSHvJYWSqT7CGw/jaVWDJz7CQbozrPQrkRIQ84M54aYE9B+cjS0z+cGsBI1D76DCwyS2cL1Buto1s0j5tAg0MgCikXmu6ZHxfS8dp4PeV0h/TrVH9m0xJQpwCiBjcR0WkAJNRpLnKo1+s+ZQKgzK8hRINdV2T+L9A==","tokens":37},"timestamp":1774364089261,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"","toolCalls":[{"id":"call_UNuLGFvjRPNVhlouavyJipMJ__vscode-1774363162416","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project\"}"},{"id":"call_54gfgwkVQ5DYtx4gGKF9aKdR__vscode-1774363162417","name":"file_search","arguments":"{\"query\":\"Assets/_Project/Data/**/*.asset\",\"maxResults\":500}"},{"id":"call_livfOw5qGp638egdU14oA8fX__vscode-1774363162418","name":"file_search","arguments":"{\"query\":\"Assets/_Project/**/*.asmdef\",\"maxResults\":200}"}],"toolInputRetry":0,"id":"41bd61db-bfbf-4c4c-8555-e42ce6d204d2","statefulMarker":"DFNVzzqMzlCPlLP+uWNvtXUGlhXaqq7YVEsYmEMUK0AisuZHiUn+AHk+yhg9b4jFWPWcyVQ/tr0PmCUEzcQCd0bpfGxbKISxl20Sy+SAxF0NXJ4NYyYfz/rNBGp+UH73//+beYXi5aiu6xBrM6qP9VTBYNBGE8tZCR2fQaWk4l7Q1E3KDqvcNsC3CRb5UDgM9bWoyCkG+tluqAtLuolCOc5w3rR4UopNET8TO8Zh8hp9HNblNBlJ8WaP3W4h/+AlyqXd+gsZybFAQcmxK1j8ltqBbFJOyVdrPK0XaECAtCLLfNM4yzYu+ttmuKa1D7DWjaXY7AczK0HA0vMWqPd1mvUfhYhqffGweSIdkddhpPl17JS5eHJJmHequYmZbqETgz8sh+fvDAYilgwf9+k+0CtzDupDxbdJ","thinking":{"id":"9ilYsxpr/3LsuwwIfwiO2n7aqUzFrBlbTzRU/MW0lR8xSK9B1cw+Qn3EnsDf9DtbX37OECfxHSiTWp8IjH7BLY8vHps8WNH5cvV41sqYIWyIC0l31xoh2YJhm4IF8ZZeU50/eEyul0GZuJR9zUHEbGXUUQlYilBYrwAwDrnVYqwnxvwCHbQY6c/ttWOlRGbfVJ7LT3WKIJqZ1KLJEP5sSZkJaFy0RBmitGVUaBQiul4VyCQupVfeZJusltNDJCd+SYhbURr5uJ59Lq5NQoV4CoZpX0Y05IY0TVuQedAwp3EnbE564f3i9/T5HIheRINaZ2VubhFie53UnceYWrBeC23kfe9+IVcflfVmPAzdQk2R1RIcapiuC4tXl/vDxY9AqveWlskGzQkhSmTk6RrmRyEqwijcAA==","text":[],"encrypted":"h90lBycOUv7b2nWV/NBFkeqcdXQ2Vu5Yw7/tX+XgT8YN3aKTArxp0T7vsnrYM81ZVyH6YrxzARYyPNp6VgZudJeN5vLfe6PXQYqo/RIRBAutGTaj101YAoJCojIWi+jdx4WOmRUYsZUYHKXK3soSHZCo7lrsRSYEDk4nMg5cXvUfWuhluH3/2P3498xZgShSsOYP4ejD21WEbLdotK0HB5LtHG3rphVvTt6tyY2nSnWQxqjSACnXpU7awieRxtNW4pTaZjsbSyn/g9IBG1fAySSiZ1D4Dh3Z7R2t7w7GaSQNHGKUC6gLB01SuspWXE6AF8iINDsRbG+4OM7CTaabKs/8cpRaVHXg1f2QOEvVXdTVsN+yFIrQLc41zUuGCuesq3aiTwwwZKKPx6WwYRmB+C04jYB5eI2OFA/SrEIRUa1HnQrFWs+V13Z5c/r9ALciZjjQn7lMqndKO3Mj5stFNkP7/J1cg9Y5pa4htI9ftMaK1DaKldPMAXkmRJh/PU5IO3Up9Jyzsua2nxDVpOBaar/aUvNOIjUAA5ZZ8gSapWrPMk6Pjs+2U7nujgtSYCHfWwMge90QYa7xbUXoqto023ML0RIG2y+iwRvQ4JaLZVH/i0116mW7ukACE8Nb6leNutY9JFngpVysfd/6ufBBGy6694HQxHNxgnu6xdawbNRLYCuwG4+YM/EhvGxFVBEemOayT5SCdmEquQqKo/ytsJ5WXcBf/I+xn+3EgJEefqjXXmaSyhuUOJZg9BTzBj2nGhnTBbZV/Ul4Ux9PvvVz2now7IfFyxDjA2zpxvZUBUbIPcRSyomioxxrBuAOAwoptulsA9yPUFwwGJnV1a4lbF6X8/DWCV3RfwDktJVN+9SbUusH4DTU8bhYwI6IFrlx3Ff7Pc3NSuqjOBOlzsNuGv4ZALZ5BE1qSM3kMOZgf/dF3D3/bayIy8ll5jR7ByUvbsmV7e8j623uikcEe7IPwyK2BQ0kPwtm/VlKAQ6slYf4RogT5ep3uqFbDhhl//YZUoiEDT0DuIjcDHVj0ABkW5tQRo/TOiczAkFrMRnc1sD3e5212B3sJXHlL03yKkAARqmFBZjx7hto6mhDtRAT1taz+KcCQI8PlkyEsT55Gvde873JephePLiwRSHAlHqnZ45B+DltUWfg4VKytO0o1WLQnxwkfuhNoJ5+g0Z7yOuLpLIhgtGC/ir4WnxB7JTSJijZlrn3pZ55O2R1r6jAvzjavZAvLloRboMU2NjCN9BqBQ2tTaCJcCU6c0saRPENup1BsrPP7CgJmqzuCqEAMTo9dm6vyZCw5qwzWhfs9oiVRITFKFG5Ls0Ae/0QRfqfiJzQguDv+cAUj+LU6ydd2O9l2Vs8EOkVNbLqyl5HuW6tbEoZkbARlO/MuBHwE6zu2JBP4E7WvXBggcQHjQnuTkBOxyu5v6Ls6l9HKgOex6xZEqFnYcxUeuu8Y+Wu4I+WKm4dzJpaeLaNPy61VhtIRlYv9pjK31qQZQaTlTiD5ax3L1x/LzkPElf/dsAE0KSvSkA9P3ONN0M947ZH1RGEPhXfNUxCJTPS4uKv2PRcP6WB3AXPN5tEwFxUw5qOZ9TNtDXVi9Johg7Az+4rDQ0/h4gEpfU+Vf9BcKQ2R3lNkd9NVTYJ7rcZqXPt9/3iVDKnQCm7Ko5VdgUZ0RAfp5bLUeHzZ958A6XqkkO29Ef221QdBSUDdjV/l02XqESWdmo2OLr3jmdkCAJwFp8rvRDNlvrmR+BBKR0EK1atPLWUuIZkC1VlF5o9GLqKQWbpVFdy2cnhnkYeOXZxcOsI+jx3NEA2XhD3k6QZxJupaBYn3zvMRVlRbEzAJ7qMRVoxkVveiAE28chvNgomJJZ5E5NjD1N/sB70CYm5","tokens":45},"timestamp":1774364097608},{"response":"I found a major project-state gap: there are currently no ScriptableObject asset instances under [Assets/_Project/Data](Assets/_Project/Data), and no `.asmdef` test assemblies. I’m drilling into `Data`, `Prefabs`, and `Scenes` folders to confirm whether this is intentional or missing setup.","toolCalls":[{"id":"call_49ALcudiGHzMI3EOJrwq6mgT__vscode-1774363162419","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Data\"}"},{"id":"call_RbTxookB5UdDYnHihNC7RswP__vscode-1774363162420","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Prefabs\"}"},{"id":"call_tLC7h5CkdytsJnbfYVUJGGqn__vscode-1774363162421","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scenes\"}"}],"toolInputRetry":0,"id":"0f71e8a9-9575-43d5-8faa-299604a64ff4","statefulMarker":"Mxe+xDS1CGXYw1zGmHrcZXMO5oio4CxO4IvZK/XAMTtOnrbGaZVc7aoM2OQ6hax8cXG+yyo9WArZGstH6p/02auISMOlApNeJGyMYSWhZVB+RVQMLN4hLjOpuP3IcJOn1cy5NkspOZ/4mbDIYD4XPZDR4fL2Pm75VBjJFnUDpqdW0kh3kSxYGzzeDj0NUOsWwCqUxi2DX/c35lqAtQiQ4HymD7JW5Sl1g197SHGlw6IBs3sspcxWPEp0+97zCJpqwjQmnaAEsDzPN7Z17iJXvNazNu7mUII0+kWkk9mVv55gMODCdqviD+D0/2BmGrjWv+gLuLk1b7nr13AO0HWnAK62JSg4h7gy/0XAPA2okeGaZ/sx38JnkceutgyQgccGUoY0GxBM/08QWRw/8yPRPeb38TQ5fLvc","thinking":{"id":"ZOH3171HiZcxbfxGk6NSCAzDbQnUDlCWa5XG9OO8I9A8nGM9G4BwskVA4u8mO4MyN+fmhBnqz6UTKx+9F+MtKj5bRm2TvnsPt/JLuks83b/aSqREEGCue20UKNd3i5tAXNEcz7+HVybIlsN3gpaugp1zkdMpSU8cyM1NSlZ2FlTstazqHoc3pkS/1neBzAJywc/L7tP/vwt/9vCrDtbWBH2NTVKORUV5T+vn4hFbvAFFc63wZUADEhNPGPdFMpf8fP3uPo6c2reRhXTqFDeOtPY0IrqFRTq9LuZQCOd1TSGbga5a+9DbnuucrF03uFL1UJUHlU2DTwDYjKWDmKDzsEXhg473mvt35M9aa0BhsY1Tt6ZhVZxu5BQNY3be5hh/FmOkTM8O2DunYpT4q3w4WgubPCswQg==","text":[],"encrypted":"B0CM3lRQX11nKKoX3v5wQg9eXZ8Ad5+WhEMmT600Fx8B1Hf3xRHuaHtyqp3fW/uzibw866ze7OlS+D+Ow/kNaA+Pl3UrBKMPBV+yorndS/8VVwE4FLKEaD/UHpfmm9gZlzfj+AYC2o1e1CgdhFmeMKEDgBCkVRyc7Rv59wDw8PJt/eLINEq1wFj51thYcCCzwNJcfs/kx6TLtG6yhDAGNOxtvYhSVdV1kqne8CosKjnTkVDhqtOo9694cqcL19sBte2uG8Y4nT0nDHHzJgA/iqXfoh687l0UrjTyZp9o5fXF9rIpnTmA5I3D42hFSBlXoj17POKa09Z6mGIaG78NRSl8Mo8UigDDJWM0zuEhh1arVqoONuuRiESfOBoDJ7uJFzC1D8Vk7adx36BmajGrAhT4ek6jCyt6x+SNev2cyapEQcHjQZZltqMOtM5euWoWdQ3riBL31cAC3EhJ5xwwNqv5q7nb+YkT4v19hV15WUwA8TxdBPpudrKK0G1b4r+sMwRiKfiUM9Qfg4K/1l25C+t1+oSzwCZJ1Ysgbt+w4Ti3mYebm3Tt2/gVmLjF4sA8SQ5tU4N/isBwpFDq37PTYiH4yR1Bg4dgDr/Hawm1bZLVNKj7ANgkkP3TuXUKSflAtgnsT3Qvbl+/IfnCAQTkKNUY/MmeLO/HlV5Gv8y161rzI6Y7GQM/y8gm7NG0ZW1h2oIryuwmhhVzKa1cdIFcFriKzSvepfEU8T0wLgQt1fmLMqzYs9WEErhV7S3FQNx2ZB/bbp1yCHHwf/BbVq+XrtFYHz+YlF/Q1ZMOndw0xrHPOsVyB6frZYX1MBOLAHLFLQJDlqS0Lvh0C4A8u7Rh00XD5UgyRXmO5h5ybTDHGCo6x21lMPSIycgvvcn7QAHf4KFBxCCq2h1rC19vjkEzLfh/2BYOQIpcBeRnD8qPYkK96onPcXV4+EWPcxs1UdGMyzmX+rs1l593nrwM+xi/8+nrw25JziLmSvFMepUrNGlNWE6112YOivP/NJLSQVzp8oubYxztxPjhLnfeMydVSazbLNBDj/wrSH/G7Is4zTwdjPrzYNRVtw6Z4Kg4066Ao1xuh/q/DBPts8Uwt8WZQPOygeGqIw9frMwpfsSmnE/qd2KzBFed9n5V4d2rx+kxTVUItDB7E/OXDoYjAVdb4Q72/UXE04Yx3o/0QHrjDLR9zx1CTwbhYqLBHpigDQAgooWIJFrrJVwhwUoWQdhichxv6RVRk4UkvkAeWk8jWPLELYpHys+cNpgRXIUgoI8fiZ8pSBowIspdsSkO5wYGAY/ncoDjKqNwZ/OTSf4N8JqFK0vtbQkztxTVQuBYHyFGW3qKf0F9BjAEUMctY4fs7RHPojPlozbb0wuIZZgdzqQWiXh3xZ2bEaspjUZEQnqP7ZfpS+sO9yb/GTPAFr2m9I/1IWfY+MXPtnz6LlNXcpZQVCcQFpq1jceJ6Nivnok8K6O83TnRSNK4DM3U/R0M5VfUwPhePrcshwvlqbVXZ9ZE4QE3aS1t0blkSLLbhL5vR2NUCEXpYBVp6CgW1IQ+rlLvywCTiSyGkFKPGLAjKEpJ8iRhdq65ExAq92VlV70vxzZGRitbeXoBusutlQYWuyBXntnDTKZoxGODtEvBLvTgHH2TSPV16LqvTaA=","tokens":25},"timestamp":1774364103698,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"","toolCalls":[{"id":"call_567DielUsfJrtDQ6tQ5oyoq6__vscode-1774363162422","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Data/Enemies\"}"},{"id":"call_otv1JtENxOkC2Y5ZKnzhbIjs__vscode-1774363162423","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Data/Upgrades\"}"},{"id":"call_BUeIGGcq0jHH0RUlNKqj5x9u__vscode-1774363162424","name":"list_dir","arguments":"{\"path\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Data/StatusEffects\"}"}],"toolInputRetry":0,"id":"dc42211e-f0d8-43f1-93b8-584655b880a6","statefulMarker":"OX/Q3uO1QQ3P1YKnxqRgVJ3enoT19KUCAReCQBinjYh1I7zZ04IcVRSBP5WxOUTgmfDH2vq66OJ4S8yx3JE2ziQtTWfx30xzZbENUpNr6nQ5mZRGjhUVh4hRTujsm5DRQKKZi4yXLTXeqmhAsndhens4NrdoGT0rULxJ3A9a0PIMOxwZdTP5W3t0zb+x2bLr8+nAulCAHK1KLfSlz3fTSyPpplD3qxAqv9eADp3lPd0+nJXpMbgaDj58I84m7UjhD2U+nfmoXYXbRh69HYhL3nP0kOh3e356JtOjLDet01Dxe9LtQLH/KxobqH5sn+HpYKJD8oxICYOYIji+Bx0keYX925eiUrAXgRgESq9CJkQyUDV1xyhsYfJPHm4XiOSvLzABMsm6/xxGaHA+pkFPTqNHif27F1//","thinking":{"id":"B/RQ+gi3zGNniC5WlAuLMr7zGwFWLGm5Db5h9CNcVaHoHp+THzXEuWVhRXrbyxK5LCt9sTI8O5q/KiKWAKMN6me8TF+JO7qzLDo+1RAqkW/1Mflh5BMpjhinpYnVDrah3jcxicW9zNiXZTFIfe3hWp8nTogwPA15aRsHhUIY/ghktP9Q+pR7edEuKVEOCu5Fe3P7l4EsEjNbcu6fQVyYLqGKcZNwU+DjA1fY5h24P0e3iPyczZj+KDrF4ktfDgsFRhQOcATAGbU7izjmNRQrJ2xn0DsDoBVAcOemMebyFnpj6KPVkTjJ2t1mt2SFK5jO/bbDeGpEQY7QnEpr59Dq0wQT0tZhQC/cxojrktefZuP/gnksJstrS+qf6UUR/ve2d4G2w0gNIWHBWmQsz7eiyLxsJDmM9g==","text":[],"encrypted":"BDLAMxHkAoBDDVr2VAIcIyAKOyarjj0QCxkufFZfbBi5ZsmwCXV14sNAD0ArzF8VC66ESVwiUoThS7LmSJML8TRFKTJzDeMdvzpNl+fczv7qcht1w07Lo5ag32upQByZBJYautIXybHLHVvfNGJs5rNciMmgB9jZSrtucJnj7iD1Xgnk2ife/w7Eu2X09lhpSltHokul2YLYaOJmFbaq1gjyWwvOhhFqGznMTowBj55DOAmkls1xEYdIjze1uTUvYAE8lVcIgvuaNuLd9OjJHlmfNmIBFzu6lbPIH8KSIUI/V/JT0kcn3rzeibaAsMnkJgtj/gLFhJ6c7t2M+3LedoxwzmIJMWe/bIBU9k8yOIUBxfaWsZsAKSCzj6ZCkSlvBUiq5ovPWOCZ9f3PC6fkQsBMpHg/Iq4Cgq47M4vWW33n71iOoUiVAMpBB3uxS9Be/MocFUPmjUAtmO2jexcAASQz5MZf8sYcg6Sh/9OcbEvlJhvbUJiZTPb1jdkfihyvgKQ2PgIL/+uIsRfl6FjvuV/XOB/6om78xBB56pcSeRDRSseCisnROD6NqJQPNeIN4BTSZNRBNvrYZZYzI3uiCAl9YL9VBMBjy4M1fEJlE1CDg5ffJVDowJe4OcWzBkggL72ep9+6XZ4tGUmFd3nObt2edkBjXD7E/dFmhxQGwfWo/BCNbvNb1fdOZExQ7WIGMMTXwLZcOG3kiww9v4iqZP6742vG8pwNlDaeMR0Lk85p+1PDJctOF8Fc88t4JtXCSSay+0HuCjzf0L84pzh7PrCF6EdmlD+o19YaQjVfm/UIPAN7EQSV12nKIYkf1e56s0QiGfj+hpg/+fefK3EKBmXnUFzbmqm39XL9DW+0qtY6HbKIGcRF8SOdGjuaNHHKuJHLcq13TScT6LYgYuYBEDWI2tYGCcOHeNjStKJeQZNqkQI1pv8ramXunVUpX4G5Lmbs3FtfKP5dNYY3KvNYl8bdvqVVh1ztO1JSwHrnD+F4QgaZFG7CPpRYsW8Yh8V+bQVuwnl/jLPUNEGa14Tq09qc6eLgmnL/LriLdTFpi1H9V9J+PYmwONEqT609uKos6houT2ceTpH9MJzu0uCUtCLmzJzBPLPB9O4CY8sJX4N5PpOm4jiL8HECsNyRsgzg4rrx2qW/aki+dQhn/QTemByFx1ZVyp9X4vMovIpZYaQYBNYQuanvvLOctT2XgQZqm7ODxVeRnmn+fBxqfsKlTajxwhEsPVvFpSfQohxA+mJBobWGrqwuFMuO6QJsU9jFhJIqGTYaacWXegF0Z1dNvzn8EX9ipzkI3o7sArMKMl7HEkppwy8bYLTRLDkr8FR/bJliWUbVJwalWnaPIdJSMyzsvbgyjVb4k7KwhFLS6oHqrlmRJnhEA5LHUZKD+JVv7BpABTjylh2WFxjQjigG6SVxb/T77qoCQgq+1LjJWEeZjzb7jaM6JOA/pwgEIS1mULVA5JC85+uI09m6p+YwtGa6IO3YMQh87mYTZxLmdiKatU3jgLnmRQ/3KLKOfIGusr0CC/+taJ0kuon35og0MrCeD8FockFGeJfkNeWk5ow5rCiIgWdHu44uItV8K4BYeSSOhRRIZPRp35THI/76xv3FMa2UQeHyixZsWDWkwgqWkUqmREL1bbuTxzVv2hYWwZh375WqPkv7GecoXwgr19okU8XtdWHSnx/3O7h47i7OChGJaRnqDGsN6kMilBf7dxqBQzZ/NHS6cH7tONJVsCk79+3WLV0WtTN8TUw76l6wTbfY+1Cqie/B7cbambUrqWW9Yid07ekTdbpAVyvJ4iG3gc6lY4cNlNePAe0N7M1/hgv/aFJT643KVXSUpU53RaN6rg==","tokens":45},"timestamp":1774364108205},{"response":"","toolCalls":[{"id":"call_AawmdzvbBVtaY13AV1OxAiZ5__vscode-1774363162425","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs\",\"startLine\":1,\"endLine\":240}"},{"id":"call_Hx4omLVtQSFeY2vQ2cy1z09V__vscode-1774363162426","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs\",\"startLine\":1,\"endLine\":360}"},{"id":"call_f2fPPQFnoA5Uwzs7nOBoiK79__vscode-1774363162427","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs\",\"startLine\":1,\"endLine\":260}"}],"toolInputRetry":0,"id":"58dcaf11-4562-478d-b3f2-f0d70da84a3a","statefulMarker":"9YD+Qui7qCRC/ZuPc8KFFc03mbHep77rwEsQPn7Id6zKo8MJI9j/AtODzIMy8PylUjCaF1lZ6KFacbHveuRqYz0QHwHDUR/9x8q7oSiYBJcWVVzAh0K5hRyoJahODo1WCzro5JH6mbE3GGu0bqT/uJDs54sWfpB1/AFvt9VYWqaD1iD3xt4shOo1R9Ji011VJBVPNkAcxiBvsIgvkd4Sx1yTPbUwiZd3Pico2Zvb4ccCd86qZqNl2nIbQGaBmjcmp8ThIru4nVb4JVCuGc8ynrVDkNAw7jM66XgTpfWU7hxHwZOO1+E4g7Lo+UcBQ8TnJE0WAbNZAmmMSPsdgTJAR71Vk0E50Ox8kqWNZvXeK8wrKhdGEk0sWQQMnNjJ2PiDT3e/uU7+U/DXlrCNhxvp15ZkOieNo/YV","thinking":{"id":"Jh2fj2FzYgCVJl0QuAo/61UbjP2iq8DMIUXWVLeLJsOblOSGuuHcU04Ra+Wlzg3rTJ/QFwG11ZJII/h4k3AwEjVKBimx3E3X0XdssiKKOo86P/4WLXgSOc/RAD+w6rgroWZ4Ew1KboVlHGk2UA4ulsEP/tY/is+iPxMO5kiAu75GxChsQaz6wnlmQa91DHKbT8UkIWWy7rwJ0I3wvfIPMHiAtVclt5t/vk6pS83aXlqIe2tnzxu+irBvuasdp8CeSgXOIDabl4+x75yJ4vP9n0wjARN1nxtzr7qDaiYRYx2zMTBY8EILY2ALaQ+1TJTcu465fHbwDuVZpOE3azxSIJD1PjP20jEYh3Op1L9ofryiKiyrkb7PYN7pl1oeXqULm9pbPkZpR1H6bJ9Y0l3prZdmjPXpQg==","text":[],"encrypted":"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","tokens":68},"timestamp":1774364113408},{"response":"","toolCalls":[{"id":"call_CRoaI5yPfFLCgQCtSE4o02z7__vscode-1774363162428","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs\",\"startLine\":1,\"endLine\":320}"},{"id":"call_RJeSleph6eG5dfMkSRljBtgF__vscode-1774363162429","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs\",\"startLine\":1,\"endLine\":360}"},{"id":"call_HsyqvBQob5fZE9wmUpuk8Sy5__vscode-1774363162430","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs\",\"startLine\":1,\"endLine\":360}"}],"toolInputRetry":0,"id":"76838175-5a74-4a15-84c3-9f8613715fe4","statefulMarker":"kQxQllH83COLj3uvV4Jlfdb8w76R1c5symlmZ3I2P3FyQnsQt3z5Bu7MFfp4gSbzoigp+375lnxCIYhPtVYmGmHgQeC861kcrK37fxW76ouRvZsnBi3sCgjZx35HVwZgjsneE96dmJg5QtTND+CA0/5/sNufl2lyCmIDX+XvYEvBYjuAaCe6J1z8J73mHrDGsyD2PkIbZ/iSJJVpa3eQlsU+pDPbsBFKUQaRQDWd7hZ8anghnrTVG3ISdDzN864AqFD6kwLofFnm7xvG4YrkV2yjlKEc2qpffTzwjahEdQeDwvSJgAFYeUfwfX712f7MJC9q/YyUUVad7jByauS4cKvQwvBdH1Nc9Tg5HtI01CkiEXjJBCZYmuErX3M1Zv2tw/7r2tlxRoTlM/vVoSczBd7pHZz6yW9d","thinking":{"id":"xKyUXqwkhcpibuMPwd1sx+aLx8819vVv8STC2qX/BONpR2eytOwonqm4zHrKKW29C/C+fiaACVuw9o7R39/KXlWlMTn6wMxRoqOGcPJly7HR6chYU3yJ0fnJE8njK2l51XiORJDqBDTsu/9JiloW6eB56Fbe8TBnt1jhdh7JG5OrEyQ73vy+blSdCwfnPjOpt5RR4U3V5S8F5q/A/A4iR1Seqx8Zq7veO6TM+IuDD3ZUwJDgPD5AG15gPmgUYaXOtQuhxfkEDo8BhszK8UFtaNBLVsFxjSNRXWgWL0THczdY2c1arB+73YjhedIW4JDyz4HyMlwh+Cr2B9E/gJgSkfS6PZS+tBcMTIDsE+uAfbgyzyYZOdttvqjDmi++jcRenQIMbofWRFXzS7nzkYfC6vtEZNDKaQ==","text":[],"encrypted":"KKLmd6ERzPo/LHQMwPE7C8oLuOnEIelZ6CSF4xMMi+90PCtM4HuS09CZEU9Uk4eYaKqNJTDBErK7qoizoI/4uZFEfB8M8wvJx4nJt7L+8IcjMYbVQs1gv/4G9f2O8N5muIrgo05zjg1KCpYWG218ykEW6JzWYlpJ/6UVyFSTVehTYoLyJFImBHhYOWK6FkzL9Png9OQVHXZozVmhfSSlQHvAJ0hOHebrZyFyN6wOR/JGPgV+HipCh7bPOUx45kzt0L2MEVHMnfsK7/y0VvgDiljxFNL4Z42bN1EdtYLcO/yXrORnL1pw5hqkmazkgys7m/iNHvi2MDFl9Qcyb28vdz4mYWfXbFpLWcrOW0+UVeLcK9n0h36gqzokHhNjBjFsQ/xPDKE9mFkLSKVy+qbBpM34UZnN4oNpxQmUrFTim/ulL/g8GGVV8TwpQbZSwJOHomqmep/Bf34xvPZmp1kqk9J2et+LRHJ7Ufjbyuoxc9fs/UNuwelbkgZDCSq6NtoeQrLfoKhNZ+2ekEkmVB7trmsHrwXBwfTfzCg+jpX1rTr88OmupruFo/JPclo5H/wURggPLuj+PC35yDZztoeaATih+8NnQ/bV1AkCe/SEuz+VMWEQ3k3LuGYqYwlcEPtESOw4mbSBTSNo9JRH6vvRMqx2sVMRqHHZxQAKnNzPjCPrpcXZmhK8l3/b8N2cvmJOgvzUbrOPxORmw9JEesyK11X6XpORG1u45eYfPiLfZNcZFHKyRaLyAORXwwfVNiBC7XqnL0DyqKlJmuTVKgshuf3WZUwiFdP6fPhNXVPAcXL0DPp6k4TkotreTMe99fBThgICqNpFNn59dDFYdoct23HKpv++4JrkTZ8R6yZW41uHO1Nw7Oa+PK2CsSfShnPqoRUKRoCeb9Y7WzQCTxHSY3zLDgB0v0YS6I2Q0uW6r1slAz9lxTWqF+hpMYG+eb9oDxZmmxNPhldjbUDne03TSsykK9HFkUTI48lv+TNO26x/27Imw8Q2RlvqFQZiWK3bBORPx6MMdBHOZLk7se2nry9Ma/sbgqUgMBXJrU9EvTgmH6WsydoPj8MANQOcNAmDZXgNfG5RpnDDq2SPF9E0PffWVqI+jE9zPc4P0iqycCQSFH+2526iTBvx4/Mb1sok7gVu4IfCy8z/TOGHZ6C1gKyRhraVpRCkTtx6oal1KDZlpUWobNLGSUKDPkPOejCz3BydKoIt6Gry5rpQnBXiczkv9Z+vjRYfv/5XNdAc6odrMwZshKYTx5SkaCjXEdpwrzrtovxP8xR7U0OO27AiN44iHuPBU40UQfSwsmdRfArzJFn10PIZjzzOURE4NVMcEOo7oSL+xXWONFHv7iYrvsIrMEFmayTqXaOdBPoNsS/xf2oF1Wr/wQh3alIi9Qk/aRv5WhnqVhH2h3kYEoJKi8Ilnen2hciMnDjCWmzjA7Ggj1298+3qii0SkYCHgbbzJz5BIMDqsxUfXzP3+NlZDnd1lmUglcAOfgmSGUvPWxGDcUM5ZumdFQ+j5KErNj/JZxqP/zd+7cBRwCLKsTjv0tCTQfGUZgmxg5wqlQ==","tokens":12},"timestamp":1774364117573},{"response":"","toolCalls":[{"id":"call_OKJBtEqI8RzTQE717nbSpjyP__vscode-1774363162431","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs\",\"startLine\":361,\"endLine\":430}"}],"toolInputRetry":0,"id":"6fd76823-b5f4-4c92-9567-f3bbf16465ae","statefulMarker":"Oy5s5CZ7hqSHrOGr+jdkkcNsr0jPjk9h47ZYjRf035y0ofRqTuPCtZ2W8EaIFwgiol3YQ2Y8Cg77Wz3WSZV8t17x+PV4MHVj/O9Bs1FXQ/A1ulwSWgjZYtk61HeXr2LpM785YjZo9AbXZB0qqqHOdkgt3hpJqDxErUaOwVWJMQL5VQMPFna9nwhei83pym3t7hLvSRdDw4YMOpSAlxG/mIhsJjfXtha+p82XNBv9wLhqwTve5QyLA77lgaclZeVDqF2cfaMm+Ri9NB9xPN///ZT/RSMGnUX7mtOYSamLLND0laI8nXGVBd1K4f2hORMAb9dF/B0gUHAX4DVwjN7oFfU64mSE3PaWDF4Ss3/Ac20GFEf7VsGJiRKFtT/TzaNqHlN5kUwM5SSeavekNmee/FDe7uwqau8G","thinking":{"id":"b2KeDZ2Q0qF+xAOGFpF48p/e0DZr6LDyugkamEHhpNTijXIP4QEw/eQ1sUOXGmBf9xhQoEOwoobwyLLiCxVtPkjUe/nuskbwbAcfYq46es8SQHyvbNY6vHZki0hRhclphBtgYlvfaBjdhijN0DxAhAmAo1ITmgxs8YB1co9XJvGUnPmbALHh+nH+5ulpEfORFehRicFExmTU03a2i3oCViTBF/tRX+E5t6FoO8J51v4cjwtF13R5wAaDtqKcQLonIYWSfC7glfYkJSEtdIq7t3R6OxMdGN1cHpNXhcBqIe3IFK4XI0NB0hZhLm7xlyrxmLj+BxjX0gcwSthq6aypff0zPko7UDx/O6SATE2Y5eGcxZirWdW7TuOSyFLLiAbAIOnZohT6sok/VaOEMjUFQKaYMDm9/w==","text":[],"encrypted":"pT+MmEfLyz+6hBQV0EbAm6r1ttarqJwoPLBXpGEIXWtvrFGIoqzT56Y9GgoUbvijUEtBlNdV/CxIDA0KGAwf6L9zqCzETaQwmFHPdeLv16E8RYrtcnPIlfsxaDfd/w/vb89AzW9EE3IH7Nq8eJGDLQloDqSeY0nVTpFFe2WsTbwmnEDK+5XGMG1AUOoQ7HzCQT46oxia5QPhnROyHMHobc20gvLvEuoUQp3WQSwjyPX39czq8CEdJ4zbp0Xwpn10+PMd7AyVAA+Jp6Agr7+hDiz2L2P9gVl7pQ8jgH0ZF8+SqWxYCjnelkOLOfmRhggOmyl/I9QR37LZvvdfvm8hm8c0SFMiddTKOvT9R4xjr9jCsISrBHKWVYauhqLhsRT5aTOp9LhcwD6S9uVQGtB/Nu49pN45jJqblofOtQHUVTDFJ8EGa8ImI1NDDwXqtPyoNezhgirdjV023AlWIWU5KDL03ktDYLmxKbHKwlidz0RB6AuN7hVu93+q6kXu8TFsNvZcKq+zlqARtJFskxWhEaLxuTNNiIMWrcLqrbjTwRdr7a+fMegl5zNQ/p5akCWxP15qGbkknpoOpeixjzvrM0YnTkjYK7f5bBj7/plXMXsy5nxAI02XN/vDIpMFsjSL0DJrUS1ta9nLBeyc8HekvkXUbqrCFFYeOc3REu8Quyo/ZoVggS5Hm96z1NlajjrvUCvpqZqxu5V0NQ1r7OqbWOd4YWEI061165LbnZnm9ZZ66SqZFtXh1cOHGZeZyK9ItShswXLBNILe7+ysM26Xzf1vdftWVCqAcMOFIw1+zjvSzC9hyYZkaX7QHKy2ryhfsq7Sevr+dujfEf4jITOAFhCJVL19t0pX/v21n2gkSPVeVVahNSE6vRIV0dq0V5f7qrzTqDlxx2smqDVSsouUi43OVAJUiXgqPXUXUf1+RqJIpWFOPpDjnAdPpWCuYjlhA1brrhtCivL70Y9/Ran6HXJy3rA1/PLkXDsU69ESOJbdd7Kza/k1SohFmiCNi2S+u1PPDs51yRk2ILbA2eAOzFAz9NB9HuGsnloQ/ORs3NIJFs3fJwbHv38eCb1skSkf4xQiLS7htn32GK3E0c+Twa4k5hZIP42mVqUHwcStlbPV58YAkjQSt+sknmj9xSr2mid2nl1HWZ0knBHZTVALzIE79swVmQpeixXxcaSo6Xpo9BrjUD1Jo4wY2/CBD3ehdKcTMKoyjRBOenZ0dUQXNs42Y1M6A+kTeRRdp3zI4ZqqEpGND77O5ZarlP83MZwYxqEalxTxSumphGk7zZWUcqIepqZIo/VQ2mf0CxR5CoyukSGEJbFX3bQDdmYFEv8CFeVB56Tec/GWivWr/a1QWPAABLTJmFjHlAyR/9Ui5cksjL38Xgj8H5NhPb+3FH0JebbLkMzKAPnktsM0YvzigHi/QisAXKGHkkExb1cbZciXaQtcsh/3FvVIpF/eifOn28tQfC5k5uGuWqUogwtBDcRUYess4pCjVNi/H3vBsK1gM2lrzsOps84ytlC4CzB66pNSYt8B1Fb9d/MWJAbbCROBNATzs/Hu3Bn9LmaXOZChsSeeqqsI1WXAcs/UUogmEE5dfH0XfEscNhTBa34B46JSY8Y7N8qxg8jT7ix4tQWjf5tAOQXKnhduCbIpVTpOAhrMZy/MKrkidEBT8H5aN3vfM3c=","tokens":25},"timestamp":1774364120739},{"response":"","toolCalls":[{"id":"call_PQQk6pTA6EEKsswpSDUdP5ta__vscode-1774363162432","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs\",\"startLine\":1,\"endLine\":220}"},{"id":"call_H9JZZU8laVAbJ6tMvBQHFKcI__vscode-1774363162433","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs\",\"startLine\":1,\"endLine\":320}"},{"id":"call_7Mqpfb3fyy2RtZdSwRnU1Pjo__vscode-1774363162434","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs\",\"startLine\":1,\"endLine\":360}"}],"toolInputRetry":0,"id":"88bad59a-ac09-4b54-92b6-c31a38e6c147","statefulMarker":"Z3L4TjOBKs8hFztBrGvZKQXtGImxukLVmHGsbMDQ2STUhZEE55GhwjWeiF3m3I0XnNjRNFpQZ68fWxhDqe+K2VmNwytnxt0xVzV4C1kqoTIScToPcbbMjToVy6TZSefjy9IUi3nRlJCl42SyRce/uz8I/aCM3WYrmK33J9WvPTUC5r3Faww4SNiWg9r3w90korIEjDW65RhjHhOWJuokP3XMZvjGLh7o3EaWaY7CVfFe1m1DDaYSllch/VEiSofZ6q9XPivGJfdRQjj6QbY4nFnTNpye4hrXOlhhcM3YfvqrKtSpcdJepnV9CurQ/QVH5y4xIowAm4kjC7niAceyTtHRIgT8EE5e1wiAFDWrkvRfmN0L3BCroX3KhG6HO/CawHlWf+Yi+/p9I38Z2bvQOwT+/Xw2Ah9B","thinking":{"id":"s2p4H2rwlvy/xnLpeUVNPakunLoXZ1txOPm+gdvYq5VXal66FEDBqQCRohZhr22DgUhhVrTEz0yGMzlyTtZgF+2uXmTflNxYc/KxrgLk0+xvjqW6BPfmWCB+RHtCN3sZMm3R2KZJWNQY6Hf7OD7gwB4xR7KYq1nC5Y2J51VKUS07Enk2mhFw8RTWBnN7cfUQZr091N3jbCxLii3hNLCWuVOrp7RPTX5pIlPXp6cETUwnkS36mSf5jg1qWCOOcWgVgZvZ1JlA5BodKHVytZKwvHh3xvcKPCeqzQyPoSTpabEnET5O4cMJHs0EGZUUnLRjXg2tBCduSCq4Rn5i8M7GpggCEj/DCbLHQTgApigQsY+JiGt+oo1UVyOoALj11tbadXFxJY0zbpCRwq1sjLAQspcXCFWvLA==","text":[],"encrypted":"aeeaLqaxbfMV7DQPLcIBk6g6pkJnnZx27XVxNkKBfjsplIRUKvMaNIwXvHdG1YIfHFCSTyOM+ROkm5N6o3XdTcEMl8Pu9GsZ5kjxur7aWdOI+xLbdZryrzZZIL/3leBbuE52tBTtj0HU1ZZJLPK/KEP5i0uWn8KC1Ygl8aQmP2JKeF5olaPVdq5EVORGT9zYIdooXodju3Rz0UjakkxftcPetwD9ZYRfhCpSmCxBYBkowVLwwqznBLhlsex8pG3VefERusXA6hP676dmioE8pO3ZazSKMYq1tufBsi9b/0kakpKkE3fr4J5ztDslxAfIpYvnE6+1VyCezq8v12cooqB6aLaysAdKhGTAhnH2yDsrk+QoyEtZH2ymyxwlgiEtxQff4/5uSlWhgo5DdXaXz14jXMfkLzGfltIIIo35DH9gOiJ7PVlQBlcuAICmhxHneo+be3w2lFP4hGjNSIzvK4nlzm9ANSaPWdK9+dHhwI7qHLMzo50EFS+F6Vdm5U1UEGhD9f0aBEWQNBvbBGFQC9ydG9vYFfmptjg6XY5OdNb7tVuwUlEPOKk8Y4/+F7zygwuXN2HAUzwEnCcBjmz3prkOHXu75sLDUM7YSu0zl4SHcnEjRUyrVAa9TdqLmmr6ZZcPgKxxj7VWhjexTHP8zDIzRwZOKWeatD9ccAtN6ZlED5V65x4i6GYgTvhc4F9SJ828nQ4p/LRsTBJsp4L+8RN9ADy6qNLgAeMWxUVi67rAvLc/0ZRw5hmitbd5y/V6Xe4ynTo0Q2s2uhrflsuWXgxJczYUZ81QXgZ5evuyembFYsuX0VqkvQAYYEjvJWaX3Fd/q+cicQUr9vV5BsSuq3fhMDNOMLgs9GfXz27949wpjhSnEcYiqz1HEjJ6Y9dgrIKmBI0RtjSL1ACJdG0xsN+nVvzsSRvS5SJJ55600t2qONzQ7gBdoCKjAssSQ7Sa9z4Wu5iNcGc0paWcC2Oft3H2hraUfKYObzosMVvTQy2VPex+p2fQxW2boCVnHkXgc+JuiDhC6E69TZpEd6MdPiMBsgGzNtYuJhFf3ErnzC57UkbJldTlU2WpKn0sqcmCpqqVkj6l2CClSav6xSEyyOmtE5ad79yO52lnqALHHAcQU6l1naTueZGdFze1PP/gyPrV6uPt64Wxj6qQk4P/nVb/y9cNo4VYNOepZYCDsHkZMd865ROB2UM8AutF2jcJB39WyIrPaK8USttoyHc5K1raT9KuvzrvGWkeG5u9iZLdtPK78ybJnXhs3DgWHEQnZ7fvqCtgXbqfz1bGcENSYPXvNrfQ98ACOl7ptpRfM2XHGbTDwFQXrhc9blkn6R1zbQa2n5vxkcZVlwMZ53vodT+ZmXPwzixSZvi61t4aBVsqH465taTZy8gFBMYEF+hwiMbt/eVsY4lzE1drWiivLU4dXtydHh6Z4GvxqfIkuIp8+9ru2lx0NyTD4JzkLH/Nclm2DgPyPEEI3AtdwDMx1j0NyRY+83WzUS+SoBXud8c4Y8lVpxfi4yWtE9WttqAZUYo+h3FwmwEkzT501ogUvc85eoD6jq3wp1Xq4bJCPYA1D5M4eoWljCixCxKQKl+bjwSGBAWWbSldJTc9Pi08qE7/qqPLLaGq/Y5FUh23uBO5oMaR5dCePibJI1AyL7kBVgl+6771Eblthxq5OLwE8VDFisifx+3afyA3qRYXf3YMarq8TtYsvtY3htULcZQ3hC0aSB8LvDWD285OqMJrm8sLTJoOxq+tBFze+og8+s/JLEZI","tokens":39},"timestamp":1774364125104},{"response":"","toolCalls":[{"id":"call_mQmguviTU18qAYdcI8H7NBVY__vscode-1774363162435","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/AudioManager.cs\",\"startLine\":1,\"endLine\":260}"},{"id":"call_tNLbjofvk3VpWNJYDSwQVw2n__vscode-1774363162436","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DebugManager.cs\",\"startLine\":1,\"endLine\":320}"},{"id":"call_SKESiji1Ke68OgyuEy4VAmAl__vscode-1774363162437","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs\",\"startLine\":1,\"endLine\":260}"}],"toolInputRetry":0,"id":"36d54a3a-d353-4fce-8a87-fd67b452a22f","statefulMarker":"W87rXNChAhhKp0DXKtladxzD9SsqjhAMEkOyS6MuaFrieZGsZPwVmxQt3zaLS8/E6XPpuUDJWVevuMHcp/ZelwMiVqzrqIbg1HOqcKc7v0K5bat83XpaLgoZbXuZlSB+pv9yk5KYuxkvAqaihvVpEcTkHPL6CLyiU091uqzDT2dCNlwK1PIiYv4l6YJSx0GaKA07CHAAzCUl9p3YeUJ6AfdaKGznkojOAveoWCsPiTe0by7WuG3degIt3Ta9Dl2ElFqViXSTSpwE1Zj5W9+6AJkB7jphRk2DGWObQDS2socJ2hzRgEIsSeLQ7ffLpTWROKCgBBXzDiQ6AlQP6GiUm1cmJDZuLjkDEa+p6E6GEYqgiNzLZHsA5omtwFnRk5fhX0IkrrsgJ6ObLiE4ijqG3oBcQaajbrET","thinking":{"id":"8psqGI3jaZIVJe7ZaUo9q6GFfStDgbMImwXOOYgl6cc44Du5u6yZyAJm2afC1dasBfiwpWvSssX+g4Vl/udxEpnlwMQ83bnRrba6X4TjqB3s8IFjLki2ytGSv4fQi4Za6CZLPjz5NJpqINqLqyDwiOoCnjwQamb4V0xUr7+VOeFcdMl/t1ll4g/PjyeNsZbqKZWMH+T0p2WOzSfe9NwXZEGuNyr+CHvpxzSXbmjlOmiNMOFvKbd0wAIP66KMBitYIj5XZpnd4sSW2NfStb7ddE0T9dfopG1pMHiB16O1hjpW10PukukZRH+OcbUDb39w3Z1ZPJB8FgFmH4SxwtZWr1s4rKq5K9J7YHzfb1aUSnaXhCtQqB+ucsqadN21/b9i+qX1ROH19TNpswlROrWYfdsuzS28pw==","text":[],"encrypted":"ROTbmdath7IuJaN22AFcIv/X0ajph3tf82yzGixr1guc5KoQ4Fs3c7MH3sQv+wiqnk/iFKCcXRCmOBUycTkRY4Y+urV2j6r96H2+HMOpYnOtklGPekSe1e/+tEn0bnunez6Yd6ryh5b5TWGI3Wv7bFnGeJ309+h+uvwwXb3RaxcMQqmFTvD6x8Mblv2EwG5A5FTFv2HxqF2fvRI3g1c5RJff1wTGjIlVpv6fSgxpGbMaQUWUeazHH6twd8M0LRxAK4f5HAZ14l4o/P3HFJTuePUpOXvB7rnWRSU34bSwPBDXfpMVWYemqOE7hzW3ZL4/7048z8ydlEzYXo9tkfEY8cKse6p7yJguDKARV9A9NgyFzklpSdAISAw1nut/VRGhWaNboUB+XVrAIhl7MC/+seMYjrxFslYWm0jYC7/2rMG3ii2e9xOK95nFxycKox4QS9qLC2UJPxyPPKAmn27FlOT4MwG/Xu4THF2CqbAaO5ExmygbfuHatORegpRp/drDH4HX+2QVyyMAuyYiVJi0giWR1nMzBocTWRmvwckUL9/P0GKLC+ChVaRv7XVTG31QzP4Y4gK98DjD3SaXh+cFu0zwR3HLL3JbMoE1zHhaRAgvB/jusL+lkKSSoHhFMXvC3lqBF8Fdx2+JuzYkGeHHjeGafh6GQB5jWU3o7cdL6nGvV7S+oUwaqVtA0oQg0zyRxEIsxWAQZR0NlJrdhK9nLwUvOBxL+f2WGTGLjlBsCbYJWtiAFKhng8aujhHyagpa+wu/Q1HqLe5yImU2KC1e+92W0gc0RvKkkvlJuHGwiaQT/ai355JYXfxwqY60xvkBSLnialVRaNOXvA1qJa9m8lVIpAcBtcbKp3LYFZ1+UJ03cBOeEGvN4xeWO3mY4uAy5QLhuJktLSkVuVqoI7smlv/0Ym5KBMMLu8UQbz5potpj9gDSlWlf+auZBeTaQQzJ6rmJ8v8/trWbW0V9YrAyVJaDsQtj9BQxZ6hS2SGXhAucLOmmP9DuvB9DfWCTOIxMQvCPVp6jePiEUjafxvevKYlrjDkGyuoKeCW1LfqxDrDykjbsvBXhX7U2Wv2yxN979Wp5JwSXaFmYxXFnIIx1kGHFBGgsJ3PPhXPMGoR/pociWB5x/pBv1MltgaR3v7+zftuvcRs2CCKap7CSBu95F1G4CNmYFqEiOFh9ea8KXY3hxmRFUAeUpRddTVaelsY/8HzsLgay6LW4ekqMBFThYonFgjpuegia8rn2Vb8dctblWMUcEoNcMTSXXWHAcNcbwN5IU9hiBay8EczDhj8gflDTOzqVKBBIot8GRISidLz2Ax7msvz6xZHmQcY5YVvXthyGwfLX6r/PnnQZluBLh5kSytZ5GFB472A0ZEe8Qe76jVc3Eotzh/DOx4vO84A4UZYb4Z505AuSar8p12adOe2mC9ZVKCx1YjpWvRqPxPmoYtVUOHVehaDGw8kgn9HuyoIpReYAftTHPjx+JM+qQ2DEuxDRcr1bYah1m7MCvtXjSKrRvSRnbXKvA02MN+27CziAbzpPDd7eFoNldVi16gmI7x2z7D9xufFZAGB4Z1O3HKqn/nU2J0XSpAn38uPJdlldr9RdwIkumaltIoQ2mCG2aEKh4TBhDaLOyJNbPjFCOybT1b1cu/HMIqo=","tokens":21},"timestamp":1774364130003},{"response":"","toolCalls":[{"id":"call_7sOyze4qq5k1JtdQzTSB8RJ6__vscode-1774363162438","name":"grep_search","arguments":"{\"query\":\"TODO|placeholder|You'll need to add this getter|adjust as needed|TBD|FIXME\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":500}"},{"id":"call_uX3clshqjoiQtHqkIdY8CqPz__vscode-1774363162439","name":"grep_search","arguments":"{\"query\":\"using Unity.VectorGraphics;\",\"isRegexp\":false,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":50}"},{"id":"call_n9lkztVSD6zIRSpwAA9t41UL__vscode-1774363162440","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs\",\"startLine\":1,\"endLine\":260}"}],"toolInputRetry":0,"id":"b4b51b1c-e24a-4546-8738-feb9d0492e2b","statefulMarker":"3N39XsqdtGNy9hsQLHJxqF5yHT4W6W4mUGGC93m0PeDciM4eCjaBQeDVLSTL3AQX4NdLuFDdoU+fK/jUwnc9ij3HhKQsXy/2jTD7pQty/7IGjhgi47pIlQoTmqIuVyYV8WD9QumKG0+CKwukhAoBbG15i6bYn0kH31GqFbE/hsFXNi5gMRc2Up4VKIRVWkgtYDk8Bqviy2DXSc7pP53m7DPu0LPRT23U7Di7FDtF0SwTRGh/dR3fx3cvyIQ7y4u0AHO/02cpo34KdJ3GUPd0X3vwz1kB9HfSEWAKya6HNf5toCfskBlNGTaDbNDUOIMEqeI4MFhEp9/hTMB2aeAwcLPzsYuVBuCkz9TktBIgylDqJq3VedKE9UmywAJamqeMHIyRl4H5baK9xRBTvImSYM1/egRarblN","thinking":{"id":"PVctCv2MwuvMssfScsxfDiminsT/k4QAGKwNscHq7NUPCcSkVBiSuWI/me19QkfPI8zZ4ANJkQiLkQpsLade+wrg9PzFJAZ8LnrQYCoO+ABxHL5s5Ig8Sy28E/HmB4I+XDO5iqmQrZS8wY7JI5eSIpLMsI5MiILOqBGNz3CCczuDXXBXI9CArBNYfySUsxbpa7wi9Hg65P2WDmzgE5t81Iea67nQxc0o5YcscgbcbQCl6dDZv9l+aahdKYuVXJJTfNXwnAsrpIF0B1R3uLCUu5eGUOhdQDXco6YSS56b3ueriTOTt1Y4w279EA2Ny3WqhOQh0MY6gm7f5b+VhRQEJUuLBXS3X0xv+bzlS8Y/fv4en6kAeaEayvDp8d/iojKfmvYQJliMzdrS2oVleB5xqCjPDkLo0g==","text":[],"encrypted":"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","tokens":285},"timestamp":1774364139146},{"response":"I’ve confirmed a few concrete maintainability smells (placeholder scripts, stale comments, and at least one unnecessary import). I’m doing one final sweep for incomplete/empty MonoBehaviours and doc mismatches so the validation report is complete and prioritized.","toolCalls":[{"id":"call_Bv5kZxC6E7t6l40HxFLE11er__vscode-1774363162441","name":"grep_search","arguments":"{\"query\":\"class\\\\s+\\\\w+\\\\s*:\\\\s*MonoBehaviour\\\\s*\\\\{\\\\s*//\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":200}"},{"id":"call_R7hE2KoB8Y9tTE7ErnDDzeHT__vscode-1774363162442","name":"grep_search","arguments":"{\"query\":\"void\\\\s+Update\\\\(\\\\)\\\\s*\\\\{\\\\s*\\\\}\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":200}"},{"id":"call_QgMIhdddXkmyTEWMuxwzCWd2__vscode-1774363162443","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md\",\"startLine\":1,\"endLine\":260}"}],"toolInputRetry":0,"id":"df7171f5-a12f-4e93-ad55-a6155503f531","statefulMarker":"NpoIl1gg2ZVZJYK2x63q1hH8cTB43GypN3+QyxA9xeIDPWqfIf6F28A/elkA0ypGDsJKHHW6FXqcUVznsDD6QVcig0TM2w4PTFsm+pS7T1Di0YiZwOfe2aneG3vnyVtv0Op30++QvsQBVnOMgcoyXFLgdFvvvmroEs1dOnOVPfXFMEwQbWSK5xi02LynVESo79ewN1TfBmKbm1eZbetTkqgFwLBZt6YRjMchJv7d9g6YlmbDDT9+jIXHOX50WeNYYispkt6iiFrBctGEpv9FjOKf/MTnw5QuTZwNd+q6auhitYdM2E9J8mysYHlYHW3znuPtL5npPn4xkaDorvaYCdeoGQIKfKUJfrQ4TEchfqdBYrExn5D8WOMWJ7olaViEhNUiNz8Si498tcPqszoBL2a4XQQi8s7v","thinking":{"id":"y0SXBT8wLnWkMHjWAZCEPj+uTREmiItCt0Xir1kCwaAIBsjY4wNoUl/Er0UUg9yd/Xwj+XsTLYkAvUtlmv807AXi279twnasDUaJ6R7F0xLWMGUnJQmq4znZKLo6xO1fsMD6PmPHUFrELXPUE9ey0bK3U90oDbj7rG5DEZa7P8C7c2VuzeZ6jwsvnREB0wQi6zoy0U2OJRiJZjMgKM22CsC4mt5lB17l2u36GONh2FserLCzPXhJZwZ4KfMJjTrPGSHuynI4wKH0tnUR7xWkuMXYtcWa1mKay5aTJKpOwkc2baJ2ehaj8xKh+6NMIC8xwXQP7lYZi2yIAzIRayde9GeH4ufhq3Dp6C1WDjIfSuqY5J6T99fLBDaknaMw9o7a9JMp4vBBos0yL1R0WZfaD6A/TPDDjQ==","text":[],"encrypted":"UtU8qL57aly14aw3Lu+THtyJuKzZYVOr9hkAhy2B3CFrwSVoEIGcQsTizXy3XKkfVj9EwbQi/rSzX6R+4xq65mh5iF5J0UXFtSGTGkt8As3F5nqhqglTs0u/c5cGg4dgMPSIyA/axbNe1IU7aH5NFH6EeI+9a5V8MmsTGweLv24L8uQDV7tQ1tXawf7jaPakBDQICbpSQDXYp/pNAZlu4mhjXTQuBhxwjCJSDKw/i3g5cLJ5jgPdIgSSKP+WBnP0HSTAZBx7JusbGVyRjMOJ51bQpjqPsp6oUhLpeGAcUYvcMcyCv0+8T6na1hHarc1lX698F5VBoNJf6h+R5t8U270NKk92v+yM497BxOLCFdlQbbOi33OrXNJhH+tJczMuHiXaQaJas0nXLwBLJ9dXnLMtAJadwP0sWyUcZUzn6j2mTOru1tfBtYoCxy+ouYk8H5kLlRRBJdfszveaJnByeM3qv0MHbFIKvf3Nufw7oDwOIDCirWwxdCzq5jwHeJSeLM4iy5bfRHQySMPQ7ydzVYIZe7M96qD45dYL7/PF4OIgwubrVhoQelqClkL1wEzk5LVZ6BdzJZLILu3R2KVZE6Y4+Tkgh7jO/nLCyIeWCvrdFX6irY7ZMX03p14CbpqlXcn74weY3O4eJCJjs/IXjGRrVpntTi3tP9VXnNIj/pNx/NTnnuiP8sNXtXkBRmiMFCAJyOmRLqbbwy49ZbCZWZ3m8xPw0uoIUxXYLek6TOIVkmK8ag3qpT6OeWKedPtIPyV/nv//ixmCHYr7bXkCXfzeu9RrZxiGdVbi5kh7qgp8QkDDqrj6LONf/uCZ7Kk9U+tzZWYj3SyPbTC9rwgrr9lE0LKFDa7tKBbF7zmM4BYq2aMQ41os9MMFJ6uKKzI5ypIPgesfMwReKa9rM5V/5/SmSJ+nGNZHBrJro5y6uvUJ5Ds6TXeCx1burJi/rCC/RrcNR6ksBEFhPejjp4zC2JWXUn9uXZ1fgGa/cx+92pc22pVBBk8llZUARoGfXExqnIz/LMThQlfRtuNmH/dGcl6FJ1iL9cXCnnGiIAipc/fb5WvUfhieYuR07mTSzzjViAVM2AMvAAtaVu3zU/MXUbaJRqs7PmQe+GCP+6+A5rk10Th/poUhZv1j3x508sJ8fR8G38S79Jo6sFCWT8UUivzBcQ+ycms8cAcgBvRviLnzRV0+d7Z1nnC8xp2SnMdNmp4qv3OZFYu/x6SYHD2T0jDnvW9AXLQUKAAE05ddqhNSp7310NLCNB9pFB5jD+rw7yg8Fq5zXgQkOpK2YceLsjTG3yDHwlLIA8alxkthxHysCMedLzgeiimy7BHKpZ9oK729DYtotj6/T0vBZwzqlH1bwmkXPGB4XfjnOLZMWVEXhf245VU3yGRdOF5jTpnB3pDfFNmUAnCZ0gypCoJTvykgjKKG+xHsMTblTiPPtxwvj/FiApPz8C8haquspHXum4JeP1SbM+W8OV5JT5dhUuLn822/EqZ4VqlkyK91S0WDfkPmx4gdROcIa4QKM7vlwZ/N7kLYin8OGj29FerXwyfvFYgJ8YrMEEX5y1O8v6QDMFMACVXgXEqE7XlkGQPT71xU8kpheLMmdI+cGTBdZaWPuCKh5lExc2GGofnT5AQAWLz3vFXWcOCRn4sppQv5BnJWru1EIRO78UckDMAz5qNM0qFqIQWWHTX3AqPTMcFaVEYT92CYGexdI4NpEdvIZFUUR5FyXMs/lBVs","tokens":38},"timestamp":1774364145772,"phase":"commentary","phaseModelId":"gpt-5.3-codex"},{"response":"","toolCalls":[{"id":"call_rAGb8mRnGcZghCVrgYIMMKsM__vscode-1774363162444","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/README.md\",\"startLine\":261,\"endLine\":548}"}],"toolInputRetry":0,"id":"7a8741d5-764a-4b6f-81e3-c0ea555276e5","statefulMarker":"NVq+66vRiPbAVGMx6UCKMTBLZ60h4+Xmq0wbf5QS2tkxEFgV36wAPuc4Ix1sM17bAoDNAL+ZDSzM1pcZt3NVBVL/eh+HURVnyiQJswjFFVNWDf9/jfSL2iiYzb+fh31olWrj91IjgaIK/awQp5tuMr1oi7B94BwZUbwowGxW0LDdV4OsjMm93RcUxsO+3JQxoXWyBS2jJ7vwVR3XVZyDDZBO9I+wS4GLsza2Ffx5PeR/sdbRqdf/lMnKcjdtyS2/A+gptEOMw+nO5SYKUvfJgyvAB7Xs+WeNxk17i8xwePhJvf6xcz0HEukmQZgYX9AUrsudUwsq8GsHBlK9LpUMDhf7BvGjzyX/X1N1ALHgD+lHeejJIJMzDqHTRIFM6VpgTEErCU5pf1Us5/+JM4c7aJdxiJRax/K1","thinking":{"id":"/+YUPUqZDPbrkcX/Dpk3poBxHottnLgRXFxD112hnT/wVWkM1tAn2eT99s6OnH1ZGn07HTmHOOscqBoFEvJPqHrbHPbRjWHE5+3+2jltixl+vXMSiGLjn3nDnkbfkkPeUqvdK9V7HFiH9tYMJVp+nQ2BEKTojsfXY023Ls9znmJKY6AImeO3dGJWfH13gtgNU+dbS9yI+1fkaBIxyjvr8BCDA0c8kJ03uC+SaaB6kmfw8fBkT+VkGi98Cuq3aPurDcIvizKy08L57wiLIj+dKebFXYw9RuBpconQBokfn3BSTwe53XeFy3YJIAEW8GD4BwnrxUi1zybTWm8uDKWgoHjlJPZL97/RVHuuUAnVIXZyE1WJSQEuVKgUZ1oLPYT/0+463iJ/bMukQ53Uyf3KAROrMb65Hw==","text":[],"encrypted":"GGRcK+HLfPIUQPixMSFQpzLXXPIK5QLk8TVQ4a7dkALi97kNUgnGIbK257Cti8tUU9Bn4ZujVmeZpJwqchY/2bPcPCsblTeIJUkYiSFuGUueTp+pxdfpm6VNuGFndbCa99nkE2FW07uNzxn+M7qDhyKSIKxbraMpA7IMaL26T+mFWaggpKXs/Czf4+73Ddi7RODkrkOtP5bw3vPeJfBGHwW00AlPqB5FP2gKWjb8cS3YOWiL9nXpwE8WxrYcbgjR/0s3NQDgDQsHBFKSt4HbUX4N1S8Bm5DJ9nxn3QPtSFdgNuW1jqjpLPx57zfFIDNJgDoVSVddFRCTSa1ldQGG1SxDcxoOpiMKsSaBCSqvdh2/IU7tV+FA+zSicGcfscNcjiShCrMw06hBaH2YrtbYtS7bHPOAEBtZKrHiYYnSL7pGpozK4LBLwbbSHAHyNc8kI1EMq+1RPk4UBsFXKkQijWTz/oZFTkxX3rfPMuqHSj9TDe1oXBH55jczxltMvbedCT1bBwtEdcSXlDIQqywUBi4WY2Ys50lD3pAel792ePzHRcEq/KNXlyA7DQf29N10Osh+I3dYVAceozeoAVn5VMYEPOfLCprQaEBHyhiUsWmrFaVjQvrv5ggZCEfg5mDRxeurJ9IMm/WWQR+/RU0yxCWzZceud7+3r6TVkG8PLDaTsL7rKwcTp0BVyQKVsz4T30AlJD05Eg2c4LlDRENhBhHWRMg9FxAxkdmuM31h1M5rFhSJYnTVEWzfJbGDVGON2Fn5qAfDZ3clzePQsFDtqP3cFvrpvXoq8X9X6v76O57vsoQRn2O608gR6qC5Y4qS8dQmvFcHtLnq1C5B4mELwLVS9YOWzmjpm/eD3YwwiXkyhfVhbtIqynu5ARa3SfKUoeBZK0+2EUn74fdIn0gjFIP6IS13WgMg8dtZTLEIgZP8ohapuyLh8SES9QmYFrlQGDkXME+N2LpaZMBqhEG6bik5Xawcpv5FeBP8nSx0qsdZ8vP/gBCW8vnt5OOwhmqjBkX/GR9I2sd+Bl9lQeEKBlc1s1B3bgQNauWZhrP9ZuK5kkIaUyMD0/x11wGtwE+RGSndGXTN2YMZRZs6HsZAWp9NsM+Vmno2PszBSSO9bPochXePMUGx40+F2nFq0lApc1ADe+UsfxKhPuSGNfGrLk8EaTrvIPnDBhWgdRwlFkGCjTx1LJq1H58BTOV8LdJK4bSf392+1+w65PlRwvaOvOEKEy+Tg19vI75QuFMQgu0FowLN19NBGFMXCMolJAlu2vfAocNefD43+oQ05u+sffAwDjhxeV2yYyXuFEooBEpjSOkcGBTQjYj+vW2c/4YVlNT+97EtI5uAn6svELoTHaoG0bewLeq6vb5lwWGKLcWwMVWeIsEwuLQVkvYnzrZ/Kg76jiHlm+BZddGkNtH0gxlDgDDDfgx7J3JDHO6+/jPz1Z7hy1L1+lfODZpsbXoMiHml50V++pKhx2BHs8Yp9Itbk4al8jIklXNASiHikQZYjGhHPSleCrxDXovCBfMztwK6kfNVWJPiZvGVKRafGaIhIA8V5o/THgje8yvfVzJmD1CocH4og5ZxL27cm6L6Sq9FPJaZa4z0XKXIgpeTzV7YVz++owok2LFqcVgclzSqapJGbPG1R+oO23OU8GyFSqIZhgc+wM1h4jDUCwEoKWOwi2VlV6TqZCDZMXe+zxVrVbFyuUXLzVSlJgX/r5bSZzjWu3Y7lkSgWq3LJilUDNxWscQf2my3A6gIgdxDKyA/ECE4OH+fFPdZ6MpYg5+49sL/8OkhfzN0pVboMTJlCrxYKbg0KJVfiqwsjHhZ/CEMn46hVU9tFBe3pTOKQop2q9HP+EGr0aCUf+cCSxPDDctPvKRDtoGVA9Gt5cXlL+SbIddKWfDVrn0ycCDeY8qv1JwfyQvlgWrD4BdMWdrGYHn23+E=","tokens":50},"timestamp":1774364151536},{"response":"","toolCalls":[{"id":"call_UpGJzXUKHImQHK56Fos0JN5D__vscode-1774363162445","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/ProjectSettings/ProjectVersion.txt\",\"startLine\":1,\"endLine\":40}"},{"id":"call_6FXJi6CpJ8J455BkkXcZNWYO__vscode-1774363162446","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/Packages/manifest.json\",\"startLine\":1,\"endLine\":260}"},{"id":"call_qsQkHHjng8oaupEAxcSCtdiQ__vscode-1774363162447","name":"read_file","arguments":"{\"filePath\":\"/home/breadway/Documents/Hazard Pay/GAMEDESIGN.md\",\"startLine\":1,\"endLine\":180}"}],"toolInputRetry":0,"id":"6c8bf98e-8f63-4894-a970-37fdc2f5eb4e","statefulMarker":"h77HYoWuiWSPobRtOByFGkoPynlXww5uOTyMH0XNjCcBbq9C1Q53IzOWXiB84m1j/g4KBLNzjjhizOIlPLZIzwxrPSENCrVhsaeOQHrDIAnP1AdrJgINAoaTzVw0HLTyfNsqRQCLttC2gPwgOTPtrv3Cbbjfy350mCr5Ck5GoR2BXsTDZWzWKal0k8xbxcLqadMgdWsdh05UBpjnP/YdleEUZxIOPSXj7xYpbxdYWXDzY5aRYRWvv8ot7kkS14ZtCAir/KIN++VhluNxiJLUCfamYfLjwLJKuoqOYOjQkj+MudP7BE5ZEckD0NynaFIPTwTs564KZI7gvUSMx5b7ztVGhuFdrpUbKxw+anYlB2nH8U/NOselZW6H+znIh4h/LPWptLxs6oO0uVkjNzh2zgK60YbK1fY9","thinking":{"id":"CDVx372AU0XF/kzCOd7ocF54ZodZOKW9kjDPZbKm6Hpkl3KYYz3I6MYVcTKYQ+ijuQbRNpML/rAjTmuMzAgpcvvqo8+9mgJr2SGtlItn6yKAp3HbPKTn0EafXhsusircJxhDWCHUTiczafZCqELRSUjal40v4CHE0ca1bmK0TTh0jsXGJc1z92xnWvHpI9DacTzQXEZaKEYkEjlkEk4tUJcsMRdHF/02eYJk6xI5d5lCcCSibUEY5JjQXQRy58Xf37xqetsBK8CJws5litkp3Oaqc6e2M9mJim28lv3gCGWOhgJ63ETLYoFLwKHls8dTYVlipcTeYc6dLMUPFgy6JaqJf3QUvHyPSlX/b+m0+KYtRAaKIZ8anjLrWqE/7S+cXeImDoBJ67HTERVqTkE96QwpXT1cGQ==","text":[],"encrypted":"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","tokens":78},"timestamp":1774364157156},{"response":"","toolCalls":[{"id":"call_iLeFTZEsKWcVLYbZkMRwic1P__vscode-1774363162448","name":"grep_search","arguments":"{\"query\":\"top-down 2D roguelike|GameplayTest.unity|MainMenu.unity|Current Phase|Last Updated|Unity 6.3 LTS\",\"isRegexp\":true,\"includePattern\":\"README.md\",\"maxResults\":50}"},{"id":"call_39l4kQSR2QiyJ786y8gVMzXF__vscode-1774363162449","name":"grep_search","arguments":"{\"query\":\"Unity 6000.3.3f1|GameplayTest.unity|Input System|InputSystem\",\"isRegexp\":true,\"includePattern\":\"GEMINI.md\",\"maxResults\":50}"},{"id":"call_XuvM23cd7ZzFNwGzA9oCtLbV__vscode-1774363162450","name":"grep_search","arguments":"{\"query\":\"Current Unity Version|Primary Scene|Windows Standalone|No test assemblies\",\"isRegexp\":true,\"includePattern\":\"AGENTS.md\",\"maxResults\":50}"}],"toolInputRetry":0,"id":"eee3fbf3-548a-45a5-9446-c1e3ba0513ac","statefulMarker":"G2UZamL4U80KHDs3WwJ2q5RurdK7qHRaVE0mtcYJdhUAEZ3E200RG8+gF2XhDLJXSAY6hhIJNqxVpn+oQyY46ylT6GCWm4Fmym68+wiNQeqpsD3PXCkOsFwBnUmaCaApCQuhC6nxJMYXowu079M9akvCVIwU5JWK+FOm1PfZSFhWWfdOgmHx5QYOgSeuHX0KqT0OwLRBFZVojY0L3uI4qUvSGxKrEzuaZUDDPqDU4/Fn4gosxe8q6AJBe5NTQeooHSnMZ3GllrS2iJVQ+72o+RlOkQl669FQI/MPPdOlVbEBKuHScUw2xdYE7iIBtZNYExVimgllMuZ8kAHXX0mQcyAzBS2HgiLbhVwWQkKJ3Tx0Yc6xeRqa/Vl0J2Xa54hi8oFpCrVUhshAombuCe5TPktV+G9mWS+U","thinking":{"id":"2cTpqi14A19DDH0C7jYHOJxKBwF17/cUsl3mOJzdOkZQidEvJu/kNNvT7vlC1vr2FqCPTA1akHJ7qSd4xYSMvIXVUc2agAHw04V8mdBZcW91EoY6XLV3RygNV6BmHg9ukEQXMvS+JDiqdd8uteSjXrlJtYzMpWZaix0YeGlb3s1YcNQN/AB3UymwwVSsbFGxZopavsZe1MDhQx3V/jUhsUSRPD9sI7o8bhC0bwSHSiBWfd6yIEx9yzXeVi2ffPkncXAunqkf6ybgBiRXC+zgr9QEbsrDxx8Nv4NARQgcJ8CVbdi+tsiD1n0gnR9baiDETp2dYabrbqukTJk1f8v3dpRcdVkc5MQoqo5ww5+G322z8RM1+kzmeAz00cUfOI3aVASWzL+Vpr+ud7K7ayjXI79jDLWI4w==","text":[],"encrypted":"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","tokens":196},"timestamp":1774364165318},{"response":"","toolCalls":[{"id":"call_1L3Vu6eWIS2b07enLPNMWADg__vscode-1774363162451","name":"grep_search","arguments":"{\"query\":\"public class RoomManager|public class UpgradeUI|public class AudioManager|public class EventListener|using Unity.VectorGraphics|FindFirstObjectByType|Invoke\\\\(nameof\\\\(InitializeUI\\\\), 0.1f\\\\)|EnemyData data = enemy.EnemyData\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/**/*.cs\",\"maxResults\":200}"},{"id":"call_w85qdeNy77MMlWsNXlTNjrUa__vscode-1774363162452","name":"grep_search","arguments":"{\"query\":\"OnStatusEffectRemoved\\\\?\\\\.Invoke|OnStatusEffectApplied\\\\?\\\\.Invoke\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs\",\"maxResults\":20}"},{"id":"call_Pr611DQek2l5IG6uCRaYRxC9__vscode-1774363162453","name":"grep_search","arguments":"{\"query\":\"OnHealthChanged = null|OnPlayerMovementInput|ClearAllListeners\",\"isRegexp\":true,\"includePattern\":\"Assets/_Project/Scripts/Events/GameEvents.cs\",\"maxResults\":80}"}],"toolInputRetry":0,"id":"7273671e-c89d-4ea9-a0fa-f61254b54e6b","statefulMarker":"7HRwrGORmL8pGQhf/E/mYtnUZdgbyN4j/8G2IWlO2cr48ml7F59qrC1a7CiiXZ3c1+D286RW0ocZQ7jGGJSoZHyQ9o5G9GqxMA57UNenJTXyxL6ycT+hJw8cHIfvYCyTL3RN5e8oMTBPpSV8vqUqPRwbNUoB6Pcw9xFdtvcYykYcO/zhdGcv10008m+AAdI8+GMZ3pa5bVI4azvIOhsk2VseFhJigVvHcMXAufCY7rjBKBTcV+aOys9oYUNkqUi+sHk3rOVmulIRqzOnaXQTrU+1jKnjpV4L2uFtJQes1mUIew1lcJoXHfuagkl0xO0yk/Hwr0Xd+ClExuoONw7hKGx9zzQqS3okCtlalU0icSBjScoj1mUWrPmtSDPcwYkrv9D7US0Mwk97g8Cm4NTcv3zrlheLfFBv","thinking":{"id":"nHl5Wmsx4iVIWPzsPG3SXJvGvukbUkP9+slOKaOzDDyPwwy5oUyaebvtOrkL0F67nxXlZUW96JHQEhTiFVEs0ianfoAV4+5IB6getlybVy3fwaGNl6Efyxa7GA4cWL8ak9mYoCsuSEwRtyXC/znPHBTTNZeYfeqlodZ+V1UDCVs5O6umVSQ+bVunEfJXcGbf2BfmLcnmGrw4ag4wwCYcjxI1Y0UuZW2b5/QFMrv+n03L2TfK+SnFnPz0QZmXKeo8aFR44RWMcB8huw2ZPRauDbTgD+c/TxGGsyQXza34z6RPs7GU0Enl1MMLWmD3aHJrvnlc3yP6h0RY/UfdnwZP4J2s/q0TyaDZ7mExRMYd2RSO7jNC9BT2qgkuFoyWXkkCWx2n5E0f7KSgf92omNXmDh6ErqLFzg==","text":[],"encrypted":"crwJehVFSpoWa/16G3MdOGAkJ4S2lZ25wb9iI7RXi+NoEb/qQAMlnhmHEcng6b53pKIvtv3tMGkDzgXYvrotSzBpNbApW2cxeJLOcSlmpvbzfZcZY/8FjAd7w9XWaSbfGGVRbCkgxkHkvQjL1cS+PBX4HUkcY/z94A7I4kynKPI9HA7Onvv4ddGWTA2INxLvhOCbw74sUqcriLCxvsVY8Tf2SpYFa0GVXxWPlcgjCmqPvvOJkTzNJScLxUSrLESz5auMK6lm4KXZgofHNlLDaw6zK7roizZ5wTpkN1V0HomzPnTCWLHUdFBpxZ7fM5R39uebNcZO9RMof328rCZI6wn71PDKrjdq+qb9y2XAdAREzM7XqDBSevaSyqmLvFM9a8F7/LJpLanfnlPROpJHtFVcCgt97R+dG0xa/cqyrm4NXZgn2OogyZjZSpGeVqWqIGUdyGTvjSC+14D8QuzbSuQBQBxyqdHFwUsGNgjp7OyylSHmufRYFo4seaABmC7qHYi1LaJGmpfXEq5oRdMshDyyTmWSPwcYxOXyscjUetdbLYic7xAV7CKcw1Wh02hNara0PFOcUAORGJWymrbyLr0x4v0lJq4593XOtsPxvMTTaMwEb5Bktgmx/4qAgmRHFx0Za0nH0Frb4+cM2qAIDuvWIgxPncjP+L92F8fCeZt4WhshrS8UkQCk1FGWCNKIQ9eNdozrs8l4Uj9SC7sxjy8hvmdJ5VJUjdBUlhIwZ0t93/NWsRaWdhT4riaY1rOUojhBAWpw9C6F5+CGU9+Ptu8AMz2N4U3kb4CjU4uKefUBJP+dTCB5hZxMSOkWyw1GzX4mSvs+eGUZAQv0R7Y1yvy7GqgD4eIwoxAu/YkozoS1Dchxt3ibZ3MzfE1fLXQ4WHWcun0fBH9F5/ThvjNCm+cfdlkpVjewxuOEnKkVld/WFheXPeZhqDV8URi7kHDShoPfoijONZQu3ytYlhw3P9Fe58llZd6qWv7U66hqe5YebeoldSveTvKcTiolnD+VflsEr+ThEtUVnN5Sh/FLyEi3/CXVnm0xLZbVPAlBwAgZgbv2VDAvcrkjEoP5hVagMtrXKYZ5tnsQRzF+4q7MTWVXoawbnirkyEIXve12yOphKCHrwywaU43e5qfcTrjo575rXY6XkJyREi0+jKwS/5i7b8HRIWlyLwCzzpXW8T9VLDMhg7gKjWAgw6j119r04euA3E8/9quYaHmBSmDkSLbVqY8BmkDafPbQlweqhkFtUQUBY9N4wKGE77gsZxlngGMljOMzp0C9UnxJnfnn56++OO67b/2gCZAY5vQEbQbYsl2iyhE+1TlJn86jYTMVoaa1glX5hkYjPnv0PKuc0edjM6/oL4gHPwrETFd7zPxLe8NN1/M7m0z7pL6CpBrqiboYnm1/37ydr2sA6KXT/YXb9Lxx49GQNq6khlrlnVZR2Axsxk9yn/JSzzgjkXTDTho8b9dfbU0Pn0Po4Dnuo02dxjSAglGtEdV1BW89MT/80r1v2TvOHlBXTjwCUSVqFKLLX4CqF9sYzepGHate4Hm3zOUMvbQHMUwy0RqHxCfSB/ZXJ9HiwytkvkNSKY22V12+b5erGeCG53cF2qqBd7C9kGh53K3AAW0zjieJpHYeitOYwiNw9HMB85Nw5YxZF/sejUSKZkaI3PqAGe4e3Fb693Y=","tokens":24},"timestamp":1774364171981}],"toolCallResults":{"call_D5w1VZqxi5jDnKRbfflBqlwz__vscode-1774363162390":{"$mid":20,"content":[{"$mid":21,"value":"Successfully wrote todo list\n\nWarning: Did you mean to update so many todos at the same time? Consider working on them one by one."}]},"call_P4RXp8Cw4AArxqOlgWz0umKT__vscode-1774363162391":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Data/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Data.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Effects.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Enemies/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Enemies.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Events/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Events.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Managers/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Managers.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Player/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Player.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Shared/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Shared.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Systems/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Systems.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"UI/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"UI.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Upgrades.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Utilities/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Utilities.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_fF1gzmbRgtFlEURyedQpMTBf__vscode-1774363162392":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"Rwe","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"52 total results","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAiming.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerControls.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/DebugDude.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/UpgradeDebug.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Utilities/PerformanceUtils.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DebugManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/AudioManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IWeaponAttack.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IMovementModifiable.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDebugFunction.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/IDamageable.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/CombatCalculator.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Destructible.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Destructible.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Destructible.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Destructible.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusResistanceData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Attack/ContactDamage.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/EnemyData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/WeaponData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/ActiveStatusEffect.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/EnemyAttack.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IMovementBehavior.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectVFX.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/IAttackBehaviour.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/UpgradeUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/StupidAudio.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]}],"props":{},"references":[]}}}]},"call_oL3mkcnYgeaLxiBed9nnS87r__vscode-1774363162393":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"Rwe","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"7 total results","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/LORE.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/LORE.md","external":"file:///home/breadway/Documents/Hazard%20Pay/LORE.md","path":"/home/breadway/Documents/Hazard Pay/LORE.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/README.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/README.md","external":"file:///home/breadway/Documents/Hazard%20Pay/README.md","path":"/home/breadway/Documents/Hazard Pay/README.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","external":"file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md","path":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/GEMINI.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/GEMINI.md","external":"file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md","path":"/home/breadway/Documents/Hazard Pay/GEMINI.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/GAMEDESIGN.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/GAMEDESIGN.md","external":"file:///home/breadway/Documents/Hazard%20Pay/GAMEDESIGN.md","path":"/home/breadway/Documents/Hazard Pay/GAMEDESIGN.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/AGENTS.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/AGENTS.md","external":"file:///home/breadway/Documents/Hazard%20Pay/AGENTS.md","path":"/home/breadway/Documents/Hazard Pay/AGENTS.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/DEBUG_SYSTEM_README.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":10},"references":[]}],"props":{},"references":[]}}}]},"call_7yW21u1rF3sZd4tOwFxS4rT3__vscode-1774363162394":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":2,"priority":9007199254740991,"text":"File: `","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"/home/breadway/Documents/Hazard Pay/README.md","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"`. Lines ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"1","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" to ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"260","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" (","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"548","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" lines total): ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false},{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"````markdown\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/README.md","external":"file:///home/breadway/Documents/Hazard%20Pay/README.md","path":"/home/breadway/Documents/Hazard Pay/README.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":"# 🪲 Hazard Pay (Working Title)\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":"> A top-down 2D roguelike where you play as pest exterminators clearing bug infestations. Think Enter the Gungeon meets Vampire Survivors with a darkly comedic twist.\n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":"[![Unity Version](https://img.shields.io/badge/Unity-6.3_LTS-black.svg?style=flat&logo=unity)](https://unity.com/)\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":"[![License](https://img.shields.io/badge/License-Proprietary-red.svg)](LICENSE)\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"[![Development Phase](https://img.shields.io/badge/Phase-2_Core_Loop_&_2D_Refactor-blue.svg)](#development-roadmap)\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":"## 📋 Navigation\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":"**For Players/Game Design**: [Overview](#-game-overview) • [Features](#-game-features) • [How to Play](#how-to-play) • [Status](#-playable-status)\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":"**For Developers**: [Getting Started](#-getting-started) • [Development](#-development-section) • [Tech Stack](#-technical-stack) • [Architecture](#-architecture--code-standards) • [Contributing](#-contributing)\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":"## 🎮 Game Overview\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":"**Hazard Pay** is a top-down 2D pixel-art roguelike featuring \"intentionally broken\" character progression. Players choose from 4-5 unlockable exterminators, each with overpowered mechanics balanced by meaningful constraints, to clear procedurally arranged industrial sectors.\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":"### How to Play\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":"1. **Navigate** through 25 procedurally arranged rooms (Sectors) with branching paths\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":"2. **Fight** increasingly challenging bug infestations using tactical fire spread and crowd control\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":"3. **Choose** 1 of 3 upgrades (Performance Reviews) after each room\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":"4. **Level up** to unlock path abilities at levels 10, 20, 30\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":"5. **Defeat** mid-boss (Sector ~12) and final boss (Sector 25)\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":"6. **Unlock** Overtime Mode (Endless) for infinite scaling challenge\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":"### Core Philosophy\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":"| Pillar | What It Means |\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":"|--------|---------|\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":"| **Systemic Variation** | Each room forces tactical adaptation, not just higher numbers |\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":"| **Enemies as Teachers** | Every bug type teaches a specific mechanic |\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":"| **Intentionally Broken** | Overpowered abilities balanced by meaningful constraints |\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":"## 🎮 Game Features\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":"### Characters (4-5 Unlockable Exterminators)\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":"Each character has one overpowered mechanic balanced by a constraint:\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":"| Character | Power | Constraint |\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":"|-----------|-------|-----------|\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":"| **Flamethrower** | Fire spreads infinitely between enemies | Takes damage in own flames |\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":"| **Beekeeper** | Dead bugs become allies | Cannot deal direct damage |\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":"| **Cryo-Tech** | Frozen enemies shatter and chain-freeze | Cannot damage unfrozen enemies |\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":"| **Swatter** | Melee specialist with execute mechanic | Close-range only |\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":"| **Sprayer** | Chemical DOT with poison immunity | Damage over time (no burst) |\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":"### Progression Systems\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":"**1. Room Upgrades (Per-Run)**\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":"- Choose 1 of 3 after each room clear\n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":"- Categories: Power (damage/weapons), Defense (HP/resistances), Utility (speed/cooldowns)\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":"- ~25 upgrade choices per full run\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":"**2. Level-Up Path System (Per-Run)**\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":"- **Every Level**: Auto-heal X% HP\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":"- **Level 10**: Choose 1 of 3 major path branches (significant power spike)\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":"- **Level 20**: Choose 1 of 2 options based on Level 10 choice\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":"- **Level 30**: Final path choice (Endless Mode only, massive power spike)\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":"- **Level 31+**: Permanent character-specific buffs each level (Endless only)\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":"**3. Meta-Progression (Persistent)**\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":"- Earn currency from runs\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":"- Unlock new characters (after milestone achievements)\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":"- Unlock additional character path trees\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":"- Small meaningful upgrades\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":"### Map Structure\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":"- **25 rooms total** with Slay the Spire-style branching paths\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":"- **Room Types**: Combat, Shop, Elite, \"Unknown\" (random modifiers/events)\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":"- **Bosses**: Mid-boss (~room 12), Final boss (room 25)\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":"- **Endless Mode**: Unlocked after beating final boss, separate mode per map\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":"### Enemy Types\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":"\"Enemies as teachers\" - each type exists to teach a specific mechanic:\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":"- **Roaches**: Swarm tactics (teaches AOE value)\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":"- **Spiders**: Web traps, ceiling walkers (teaches awareness)\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":"- **Wasps**: Flying, ranged (teaches target priority)\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":"- **Beetles**: Armored (teaches armor-piercing value)\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":"- **Larvae**: Evolve if not killed quickly (teaches tempo)\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":"## � Playable Status\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":"### What's Done (Phase 1 ✅)\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":"- ✅ Combat system (move, aim, shoot, damage)\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":"- ✅ Enemy AI and spawning\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":"- ✅ Health system with visual feedback\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":"- ✅ XP and leveling system\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":"- ✅ Basic UI (health bar, XP bar, level-up screen)\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":"- ✅ **Object pooling system** (2000+ enemy capacity)\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":"- ✅ **Status effect system** with visual effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":"- ✅ **Fire spread mechanics** working at scale\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":"### Performance Achievement 🚀\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":"- **2000+ simultaneous enemies** at stable 60 FPS\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":"- **Zero GC allocations** during gameplay (after pool warmup)\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":"- **Status effects with VFX** working on all enemies\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":"- True \"horde extermination\" gameplay enabled\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":"*See [PERFORMANCE.md](PERFORMANCE.md) for detailed metrics and optimizations.*\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":"### What's Next (Phase 2 ⬅️ IN PROGRESS)\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":"- [ ] Room clearing and transitions\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":"- [ ] Upgrade selection UI (pick 1 of 3)\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":"- [ ] Path branches at levels 10/20\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":"- [ ] 15-20 varied room designs\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":"- [ ] First boss encounter\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":"### TBD Questions\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":"- Movement speed tuning\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":"- Dodge mechanic (dash/roll/i-frames?)\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":"- Damage feedback visuals (screen shake, particles)\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":"- Heal percentage on level-up\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":"- Character-specific attack patterns\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":"## 🚀 Getting Started\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":"### Prerequisites\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":"- Unity 6.3 LTS or later\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":"- Git installed\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":"- GitHub account with repo access\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":"- Code editor (VS, Rider, or VS Code)\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":"### First-Time Setup\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":"1. **Clone the repository**\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" ```bash\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" git clone https://github.com/[your-username]/exterminator-game.git\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" cd exterminator-game\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" ```\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":"2. **Open in Unity**\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" - Open Unity Hub\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" - Click \"Add\" → select cloned folder\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" - Unity automatically imports assets\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":"3. **Test the setup**\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" - Open `Scenes/GameplayTest.unity`\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" - Press Play\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" - Controls: WASD to move, mouse to aim\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" - Should see player capsule moving smoothly\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":"4. **Create a feature branch**\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" ```bash\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" git checkout dev\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" git pull origin dev\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" git checkout -b feature/your-feature-name\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" ```\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":"# 📋 Development Section\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":"*For developers working on the project. Game designers and players can skip to the end.*\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":"## 🛠 Technical Stack\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":"| Component | Technology |\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":"|-----------|-----------|\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":"| **Engine** | Unity 6.3 LTS |\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":"| **Rendering** | Universal Render Pipeline (URP) |\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":"| **Perspective** | 2D (top-down orthographic camera) |\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":"| **Physics** | Unity 2D Physics (Rigidbody2D, Collider2D) |\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":"| **Language** | C# (.NET Standard 2.1) |\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":"| **Version Control** | Git + GitHub |\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":"| **Project Management** | JIRA |\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":"### Architecture Approach\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":"- **Component-based**: Modular MonoBehaviours with single responsibilities\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":"- **Event-driven**: Centralized `GameEvents.cs` for system communication\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":"- **Data-driven**: ScriptableObjects for all configuration (upgrades, enemies, weapons)\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":"- **Manager orchestration**: Sparse use of singleton managers to coordinate systems\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":"## 📁 Project Structure\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":"Assets/\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":"└── _Project/\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" ├── Scenes/\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" │ ├── MainMenu.unity\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" │ ├── GameplayTest.unity\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" │ └── Endless.unity\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" │\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" ├── Scripts/\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" │ ├── Managers/ # Singleton-style orchestrators\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" │ │ ├── GameManager.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" │ │ ├── RoomManager.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" │ │ ├── XPManager.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" │ │ ├── UpgradeManager.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" │ │ └── AudioManager.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" │ ├── Player/ # Player-specific components\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" │ │ ├── PlayerController.cs # Orchestrator\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" │ │ ├── PlayerMovement.cs # Movement logic\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" │ │ ├── PlayerAiming.cs # Aiming logic\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" │ │ ├── PlayerAttack.cs # Attack logic\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" │ │ └── PlayerStats.cs # Data class\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" │ ├── Enemies/ # Enemy components\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" │ │ ├── Enemy.cs # Base enemy orchestrator\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" │ │ ├── EnemyMovement.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" │ │ ├── EnemyAttack.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" │ │ └── Types/\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" │ │ ├── Roach.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" │ │ ├── Spider.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" │ │ └── Wasp.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" │ ├── Shared/ # Universal components\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" │ │ ├── Health.cs # Universal health system\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" │ │ ├── IDamageable.cs # Damage interface\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" │ │ └── Destructible.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" │ ├── Systems/ # Non-MonoBehaviour logic\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" │ │ ├── SpawnSystem.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" │ │ ├── CombatCalculator.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" │ │ └── PoolingSystem.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" │ ├── Data/ # ScriptableObject definitions\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" │ │ ├── UpgradeData.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" │ │ ├── EnemyData.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" │ │ └── WeaponData.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" │ ├── Events/ # Event system\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" │ │ └── GameEvents.cs # Centralized event hub\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" │ │\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" │ └── UI/ # UI components\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" │ ├── HealthBarUI.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" │ ├── UpgradeUI.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" │ └── XPBarUI.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" │\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" ├── Prefabs/ # Reusable GameObjects\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" │ ├── Player/\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" │ ├── Enemies/\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" │ ├── Projectiles/\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" │ └── UI/\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" │\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" ├── Data/ # ScriptableObject .asset files\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" │ ├── Upgrades/\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" │ ├── Enemies/\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" │ └── Weapons/\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" │\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" ├── Art/ # Visual assets\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" ├── Audio/ # Sound/music\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" └── Materials/ # Unity materials\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"````","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_JcM9qa1rdsgNjoqRt34kGRPX__vscode-1774363162395":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":"````markdown\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/GEMINI.md","external":"file:///home/breadway/Documents/Hazard%20Pay/GEMINI.md","path":"/home/breadway/Documents/Hazard Pay/GEMINI.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":"# GEMINI.md - Context & Instructions for Exterminator Game\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":"## 1. Project Overview\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":"**Exterminator** is a top-down 3D roguelike developed in **Unity 6 (6000.3.3f1)** using the **Universal Render Pipeline (URP)**. The game features Hades-style combat, procedural room generation, and unique character progression mechanics.\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":"**Core Pillars:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":"* **Systemic Variation:** Rooms force tactical adaptation.\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":"* **Enemies as Teachers:** Each enemy type teaches a specific mechanic.\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":"* **Intentionally Broken Characters:** Overpowered mechanics balanced by meaningful constraints.\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":"## 2. Technical Stack\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":"* **Engine:** Unity 6000.3.3f1 (LTS)\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":"* **Language:** C# (.NET Standard 2.1)\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":"* **Pipeline:** URP 17.3.0\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":"* **Key Packages:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" * `com.unity.inputsystem` (New Input System)\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" * `com.unity.cinemachine`\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" * `com.unity.ai.navigation`\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":"## 3. Architecture & Patterns\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":"Strictly adhere to these architectural patterns when modifying code.\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":"### A. Component-Based Modularity\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":"* **Single Responsibility:** Each script handles ONE logical unit (e.g., `PlayerMovement` handles moving, `PlayerAiming` handles rotation).\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":"* **Orchestrators:** Use a main controller (e.g., `PlayerController`) to initialize and coordinate components, but delegate actual logic to them.\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":"* **Dependencies:** Use `[RequireComponent(typeof(T))]` to enforce dependencies.\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":"### B. Event-Driven Communication (`GameEvents.cs`)\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":"* **Decoupling:** Systems must NOT reference each other directly if possible. Use `GameEvents` static actions.\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":"* **Pattern:** `Source System` -> `GameEvents.Invoke()` -> `Target System(s)`\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":"* **Safety:** Always check for null before invoking (`?.Invoke()`).\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":"* **Lifecycle:** **ALWAYS** unsubscribe from events in `OnDisable()` to prevent memory leaks.\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":"### C. Data-Driven Design (ScriptableObjects)\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":"* **Configuration:** Use `ScriptableObject` for all game data (Enemies, Weapons, Upgrades).\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":"* **Avoid Hardcoding:** Do not hardcode values in scripts. Expose them as `[SerializeField]` or load from data assets.\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":"* **Location:** Store data assets in `Assets/_Project/Data/`.\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":"### D. Managers (Singletons)\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":"* **Role:** Only use Managers for high-level state orchestration (e.g., `GameManager`, `RoomManager`).\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":"* **Restriction:** Managers should delegate work, not perform heavy logic.\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":"## 4. Directory Structure\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":"All custom project files reside in `Assets/_Project/`. Do not modify root `Assets/` unless installing third-party tools.\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":"```text\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":"Assets/_Project/\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":"├── Scripts/\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":"│ ├── Managers/ # High-level orchestrators (Singleton-ish)\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":"│ ├── Player/ # Player logic (Controller, Movement, etc.)\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":"│ ├── Enemies/ # Enemy logic\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":"│ ├── Shared/ # Interfaces, Utilities (Health, IDamageable)\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":"│ ├── Events/ # GameEvents.cs\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":"│ ├── Data/ # ScriptableObject definitions (classes)\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":"│ └── UI/ # UI scripts\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":"├── Prefabs/ # GameObjects\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":"├── Data/ # .asset files (instances of ScriptableObjects)\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":"├── Art/ # Models, Textures, Materials\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":"└── Scenes/ # Unity Scenes\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":"## 5. Coding Standards & Conventions\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":"* **Naming:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" * Classes/Methods/Public Fields: `PascalCase`\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" * Private Fields/Variables: `camelCase`\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" * Constants: `UPPER_CASE`\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":"* **Serialization:** Prefer `[SerializeField] private` over `public` for Inspector exposure.\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":"* **Headers:** Use `[Header(\"Category\")]` to organize Inspector fields.\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":"* **Comments:** Focus on *WHY*, not *WHAT*. Document complex algorithms or event flows.\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":"## 6. Common Workflows\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"### Adding a New Game Event\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":"1. Define the `Action` or `Action` in `GameEvents.cs`.\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"2. Add a static helper method (optional but recommended) for safe invocation with error handling (try-catch).\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":"3. Add the `ClearAllListeners` cleanup logic in `GameEvents.ClearAllListeners()`.\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":"### creating a New Enemy\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":"1. Create a new script in `Scripts/Enemies/Types/` inheriting from `Enemy`.\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"2. Create a `ScriptableObject` data class in `Scripts/Data/` if needed (or reuse `EnemyData`).\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":"3. Create the prefab in `Prefabs/Enemies/`.\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":"## 7. Version Control (Git)\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":"* **Branching:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" * `main`: Stable releases only.\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" * `dev`: Integration branch.\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" * `feature/*`: Active development.\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"* **Commit Messages:** Imperative mood, descriptive (e.g., \"Add enemy spawn system\", not \"update\").\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":"## 8. Build & Run\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":"* **Editor:** Open `Scenes/GameplayTest.unity` to test core mechanics.\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"* **Build:** Standard Unity Build Settings (Target Platform: Windows/PC).\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":"````","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_HrmKYzWpEjhHPfgxhIiZpojy__vscode-1774363162396":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":2,"priority":9007199254740991,"text":"File: `","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"`. Lines ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"1","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" to ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"260","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" (","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"338","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" lines total): ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false},{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"````markdown\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","external":"file:///home/breadway/Documents/Hazard%20Pay/PERFORMANCE.md","path":"/home/breadway/Documents/Hazard Pay/PERFORMANCE.md","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":"# Performance Achievements & Optimizations\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":"## 🎯 Current Performance Metrics\n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":"**Date Achieved:** January 31, 2026\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"### Enemy Count Capacity\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":"- ✅ **2000+ simultaneous enemies** with stable performance\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":"- ✅ **Status effects working** on all enemies with VFX pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":"- ✅ **Zero GC allocations** after pool warmup\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":"This represents a ~40x improvement over typical Unity projects handling 50-100 enemies.\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":"## 🚀 Key Optimizations Implemented\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":"### 1. Object Pooling System\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":"**Location:** `Assets/_Project/Scripts/Systems/PoolingSystem.cs`\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":"**What it does:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":"- Pre-instantiates GameObjects during startup\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":"- Reuses objects instead of Instantiate/Destroy\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":"- Eliminates GC allocations during gameplay\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":"**Impact:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":"- ~10x faster spawn/despawn vs Instantiate/Destroy\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":"- Zero GC pressure during combat\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":"- Handles 2000+ active objects smoothly\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":"**Pooled Objects:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":"- Enemies (all types)\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":"- Status effect VFX (fire, poison, ice, etc.)\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":"- Projectiles\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":"- Hit effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":"- Other frequently spawned objects\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":"### 2. Status Effect VFX Pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":"**Location:** `Assets/_Project/Scripts/Systems/StatusEffects/`\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":"**What it does:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":"- Status effect visuals use the pooling system\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":"- VFX follows enemies without parenting (Update-based positioning)\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":"- Proper cleanup on effect expire/enemy death\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":"**Impact:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":"- Can apply 100+ status effects simultaneously\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":"- No stuttering when many enemies catch fire\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":"- Seamless visual effects at scale\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":"**Key Components:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":"- `StatusEffectController.cs` - Manages effects per entity\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":"- `StatusEffectVFX.cs` - Poolable VFX with follow behavior\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":"- `ActiveStatusEffect.cs` - Lightweight data structure\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":"### 3. Flamethrower Optimization\n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":"**Location:** `Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs`\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":"**What it does:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":"- Pre-allocated hit buffers (no allocations per frame)\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":"- Cached component lookups (Dictionary-based)\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":"- Contact filters configured once\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":"- Fast inverse square root for distance checks\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":"- Throttled debug logging\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":"**Impact:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":"- Cone detection handles 100+ enemies per frame\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":"- Zero allocations during continuous fire\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":"- Maintains 60 FPS with 2000+ enemies in range\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":"**Key Optimizations:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":"```csharp\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":"- Collider2D[] hitBuffer (pre-allocated)\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":"- Dictionary damageableCache\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":"- Dictionary statusEffectControllerCache\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":"- ContactFilter2D cached\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":"- FastInvSqrt() for quick distance checks\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":"### 4. Collection Safety\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":"**Location:** Various controllers\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":"**What it does:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":"- Two-pass updates (collect, then modify)\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":"- Avoids modifying collections during iteration\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":"- Pre-allocated removal lists\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":"**Impact:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":"- No \"Collection was modified\" exceptions\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":"- Stable at any enemy count\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":"- Predictable performance\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":"### 5. Enemy Pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":"**Location:** `Assets/_Project/Scripts/Enemies/Enemy.cs`\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":"**What it does:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":"- Implements `IPoolable` interface\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":"- Resets state on spawn from pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":"- Cleans up on return to pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":"- Returns to pool on death instead of Destroy()\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":"**Impact:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":"- Spawn/despawn 100+ enemies per second\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":"- No GC spikes when clearing rooms\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":"- Instant respawn capability\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":"## 📊 Performance Comparison\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":"### Before Optimizations (Typical Unity Project)\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":"- ❌ 50-100 enemies max before lag\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":"- ❌ GC spikes every 2-3 seconds\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":"- ❌ Frame drops when enemies die\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":"- ❌ Status effects cause stuttering\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":"- ❌ Instantiate/Destroy allocations\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":"### After Optimizations (Current State)\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":"- ✅ **2000+ enemies** smooth gameplay\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":"- ✅ **Zero GC** during gameplay (after warmup)\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":"- ✅ **Stable 60 FPS** with full combat\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":"- ✅ **100+ status effects** simultaneously\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":"- ✅ **Object pooling** eliminates allocations\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":"### Performance Metrics at 2000 Enemies\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":"Frame Rate: 60 FPS (stable)\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":"GC Allocations: 0 bytes/frame (after warmup)\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":"Active Pools: ~5-10 pools with 50-100 objects each\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":"Memory: Stable (no leaks)\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":"CPU: Well-distributed across systems\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":"## 🔧 Additional Optimization Techniques\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":"### Physics Optimization\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":"- Kinematic Rigidbody2D on enemies (no physics calculations)\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":"- ContactFilter2D for targeted collision checks\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":"- Layer masks to filter irrelevant collisions\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":"### Update Loop Optimization\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":"- Early exit when no work needed (`if (count == 0) return;`)\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":"- Pre-allocated buffers for frequently accessed data\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":"- Cached transform references\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":"### Memory Management\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":"- Dictionary-based component caching\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":"- Pre-allocated arrays for Physics2D queries\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":"- Reusable lists for temporary operations\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":"### Fire Spread Optimization\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":"- Non-allocating overlap checks\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":"- Spread cooldown timers\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":"- Radius-based culling\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":"## 🎮 Gameplay Impact\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":"### What This Enables\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":"**Vampire Survivors-style Hordes:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":"- Massive enemy waves (500-2000 enemies)\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":"- Screen-filling combat effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":"- Dense bullet patterns without lag\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":"**Fire Spread Mechanics:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":"- Chain reactions through entire hordes\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":"- Visual spectacle of 100+ enemies on fire\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":"- Performance stable even at peak chaos\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":"**Status Effect Variety:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":"- Multiple effect types active simultaneously\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":"- Stacking effects on individual enemies\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":"- Spread effects (fire) work at scale\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":"**Boss Encounters:**\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":"- Bosses can summon hundreds of minions\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":"- Maintain performance during climactic fights\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":"- Complex attack patterns without frame drops\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":"## 🔍 Profiling Notes\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":"### Bottlenecks Identified & Resolved\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":"1. **Original Bottleneck:** Instantiate/Destroy\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" - **Solution:** Object pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" - **Result:** 10x performance improvement\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":"2. **Original Bottleneck:** GetComponent calls every frame\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" - **Solution:** Dictionary-based caching\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" - **Result:** 5x faster component access\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":"3. **Original Bottleneck:** Status effect VFX spawning\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" - **Solution:** VFX pooling with follow behavior\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" - **Result:** Zero allocations, smooth visuals\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":"4. **Original Bottleneck:** Collection modification during iteration\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" - **Solution:** Two-pass updates\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" - **Result:** Zero exceptions, stable performance\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":"### Current Performance Profile\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":"Update Loop: ~2-3ms (at 2000 enemies)\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":"Rendering: ~5-8ms (depends on VFX count)\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":"Physics: ~1-2ms (mostly raycasts)\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":"Garbage Collection: 0ms (no allocations)\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":"```\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":"## 💡 Best Practices Established\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":"### For High Enemy Counts\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":"1. **Always use object pooling** for frequently spawned objects\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":"2. **Cache component references** instead of repeated GetComponent\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":"3. **Pre-allocate buffers** for Physics2D queries\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":"4. **Two-pass collection updates** (collect, then modify)\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":"5. **Early exit** from updates when no work needed\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":"6. **Contact filters** over broad collision checks\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":"7. **Kinematic Rigidbody2D** when physics simulation not needed\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":"### For Status Effects at Scale\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":"1. **Pool VFX prefabs** instead of instantiate\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":"2. **Follow via Update()** instead of parenting\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":"3. **Cleanup on disable** to prevent leaks\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":"4. **Validate prefab references** before spawning\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":"5. **Handle destroyed objects** gracefully in pools\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":"### For Flamethrower-style Weapons\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":"1. **Pre-allocated hit buffers** for cone detection\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":"2. **Cached transforms** to avoid repeated access\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"3. **Fast math approximations** where accuracy isn't critical\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":"4. **Throttled debug logging** to avoid string allocations\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"5. **Layer masks** to filter targets early\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":"---\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":"## 🎯 Future Optimization Opportunities\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":"### If Performance Becomes an Issue Again\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":"1. **ECS (Entity Component System)**\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" - Could push to 5000+ enemies\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" - Requires major refactor\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" - Unity DOTS/ECS package\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"2. **Job System for Flamethrower**\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" - Multi-threaded cone detection\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" - Parallel damage application\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" - Requires C# Job System\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"3. **GPU Instancing for Enemies**\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"````","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_DYaOZ0jL5CNlXJbw9WvyZKsR__vscode-1774363162397":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":"using System;\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":"///

\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":"/// Central controller for the player character.\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":"/// Responsibilities:\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":"/// - Initialize and hold references to player components (movement, aiming, shooting, health, stats, etc)\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":"/// - Orchestrate interactions between components\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":"/// - Handle player-specific events (damage reactions, death behavior, level up effects, etc)\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":"/// - Expose public API for other systems to interact with the player\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":"[RequireComponent(typeof(Health))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":"[RequireComponent(typeof(PlayerMovement))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":"[RequireComponent(typeof(PlayerAiming))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":"[RequireComponent(typeof(PlayerAttack))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":"public class PlayerController : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" [Header(\"Components\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" [SerializeField] private Health health;\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" private PlayerMovement movement;\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" private PlayerAiming aiming;\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" private PlayerAttack shooting;\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" // Add more as needed\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" [Header(\"Stats\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" public PlayerStats stats { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" [Header(\"References\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" public static PlayerController Instance { get; private set; } // Singleton for easy access\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" void Awake() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" // Singleton setup\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" if (Instance == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" Instance = this;\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" } else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" Destroy(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" // Get components\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" health = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" movement = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" aiming = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" shooting = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" // Initialize stats\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" stats = new PlayerStats();\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" // Apply stats to health\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" health.SetMaxHP(stats.currentMaxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" public void GetHealth(out Health outHealth) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" outHealth = health;\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" void OnEnable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" // Subscribe to health events\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" health.OnDamaged += HandleDamaged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" health.OnHealed += HandleHealed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" health.OnDied += HandleDeath;\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" // Subscribe to game events\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" GameEvents.OnLevelUp += OnLevelUp;\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" void OnDisable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" // ALWAYS unsubscribe\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" health.OnDamaged -= HandleDamaged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" health.OnHealed -= HandleHealed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" health.OnDied -= HandleDeath;\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" GameEvents.OnLevelUp -= OnLevelUp;\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" void FixedUpdate() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" // Orchestrate movement\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" void Update() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" // Orchestrate attacks\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" // === DAMAGE HANDLING ===\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" void HandleDamaged(float amount, Vector2 hitPoint, Vector2 hitDirection) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" // Player-specific damage reactions\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" // Screen effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" // CameraShake or ScreenFlash component handles this via events\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" // Audio\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" // AudioManager listens to health.OnDamaged\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" // Knockback\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" movement.ApplyKnockback(hitDirection);\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" // Fire game event for other systems\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" GameEvents.OnPlayerDamaged?.Invoke(amount, health.CurrentHP, health.MaxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" GameEvents.PlayerHealthChanged(health.CurrentHP, health.MaxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" void HandleHealed(float amount) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" // Fire event for UI/audio\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" GameEvents.PlayerHealed(amount);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" GameEvents.PlayerHealthChanged(health.CurrentHP, health.MaxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" void HandleDeath() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" // Player-specific death behavior\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" // Disable input\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" movement.enabled = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" shooting.enabled = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" // Play death animation\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" // animator.SetTrigger(\"Death\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" // Fire game event\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" GameEvents.PlayerDied();\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" GameEvents.EndRun(false); // Player lost\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" Destroy(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" // GameManager listens to OnPlayerDied and shows game over screen\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" // === PROGRESSION ===\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" void OnLevelUp(int newLevel) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" // Heal % on level up (from your GDD)\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" float healAmount = health.MaxHP * 0.2f; // 20% (adjust as needed)\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" health.Heal(healAmount);\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" // Visual feedback\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" // Spawn level-up particles, play sound, etc.\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" // (These are handled by systems listening to GameEvents.OnLevelUp)\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" void ApplyUpgrade(UpgradeData upgrade) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" // Apply upgrade to stats\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" stats.ApplyUpgrade(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" // Update health if max HP changed\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" if (upgrade.healthBonus > 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" health.SetMaxHP(stats.currentMaxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" health.Heal(upgrade.healthBonus); // Heal the bonus amount\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" // Update movement speed\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" if (upgrade.speedMultiplier != 1f) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" movement.UpdateSpeed(stats.currentSpeed);\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" // Fire event for UI updates\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" GameEvents.PlayerStatsChanged(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" // === PUBLIC API (for other systems to call) ===\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" public void TakeDamageFromGameEvent(float amount) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" // If you want GameManager to directly call damage\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" // (Though I recommend using IDamageable instead)\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" health.TakeDamage(amount, transform.position, Vector2.zero);\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_V0ERG90ZXNqqcm6B3nT9AN7I__vscode-1774363162398":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":2,"priority":9007199254740991,"text":"File: `","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"`. Lines ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"1","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" to ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"260","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" (","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"270","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" lines total): ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false},{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerMovement.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":"using UnityEngine.InputSystem;\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":"/// Handles player movement via Rigidbody2D.\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":"/// Responsibility: Read input → Calculate velocity → Move via physics\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"/// Fires movement events for other systems to react to (animation, sfx, etc).\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":"public class PlayerMovement : MonoBehaviour, IMovementModifiable\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" [Header(\"Movement Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" [SerializeField] private float moveSpeed = 8f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" [Header(\"Dash Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" [SerializeField] private float dashSpeed = 20f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" [SerializeField] private float dashDuration = 0.15f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" [SerializeField] private float dashCooldown = 0.8f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" [SerializeField] private float dashRecoveryTime = 0.1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" [Header(\"Knockback Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" [SerializeField] private float knockbackSpeed = 8f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" [SerializeField] private float knockbackDuration = 0.2f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" private Rigidbody2D rb;\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" private PlayerControls controls;\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" private PlayerStats stats;\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" private Vector2 moveInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" private Vector2 dashDirection;\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" private bool isInitialized = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" private float lastDashTime = -Mathf.Infinity;\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" private float dashEndTime = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" private bool isDashing = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" private bool isRecovering = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" private float recoveryEndTime = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" private Vector2 recoveryStartVelocity;\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" private float knockbackEndTime = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" private Vector2 knockbackVelocity;\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" [Header(\"Collision\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" [SerializeField] private LayerMask obstacleMask = ~0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" [SerializeField] private float skinWidth = 0.05f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" [Header(\"References\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" [SerializeField] private Transform cameraTransform;\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" private Collider2D col;\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" private bool isCapsule = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" private float capsuleRadius = 0.5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" private float capsuleHeight = 2f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" private float speedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" private float currentSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" private void Awake()\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" rb = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" col = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" // Get PlayerStats from PlayerController\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" var playerController = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" if (playerController != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" stats = playerController.stats;\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" var cap = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" if (cap != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" isCapsule = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" capsuleRadius = Mathf.Max(cap.size.x * 0.5f * Mathf.Max(transform.localScale.x, transform.localScale.y), 0.01f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" capsuleHeight = Mathf.Max(cap.size.y * transform.localScale.y, 0.01f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" else if (col != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" // approximate radius/height from bounds\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" capsuleRadius = Mathf.Max(col.bounds.extents.x, col.bounds.extents.y);\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" capsuleHeight = Mathf.Max(col.bounds.size.y, 0.01f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" rb.gravityScale = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" rb.freezeRotation = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" rb.collisionDetectionMode = CollisionDetectionMode2D.Continuous; // Smoother collision handling\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" rb.interpolation = RigidbodyInterpolation2D.Interpolate; // Smoother visual movement\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" private void OnEnable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" if (!isInitialized)\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" controls = new PlayerControls();\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" isInitialized = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" controls.Player.Move.Enable();\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" controls.Player.Move.performed += OnMoveInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" controls.Player.Move.canceled += OnMoveInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" controls.Player.Dash.Enable();\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" controls.Player.Dash.performed += OnDashInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" private void OnDisable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" if (controls != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" controls.Player.Move.performed -= OnMoveInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" controls.Player.Move.canceled -= OnMoveInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" controls.Player.Move.Disable();\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" controls.Player.Dash.performed -= OnDashInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" controls.Player.Dash.Disable();\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" private void OnMoveInput(InputAction.CallbackContext context)\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" moveInput = context.ReadValue().normalized;\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" GameEvents.OnPlayerMovementInput?.Invoke(moveInput);\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" public void UpdateSpeed(float newSpeed)\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" moveSpeed = newSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" private void OnDashInput(InputAction.CallbackContext context)\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" // Use PlayerStats dash cooldown if available, otherwise fall back to serialized value\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" float currentDashCooldown = stats != null ? stats.currentDashCooldown : dashCooldown;\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" if (Time.time >= lastDashTime + currentDashCooldown)\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" PerformDash();\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" private void PerformDash()\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" // Use input direction for dash when input exists, otherwise player's forward (up in 2D)\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" if (moveInput.sqrMagnitude > 0.0001f)\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" dashDirection = moveInput.normalized;\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" dashDirection = transform.up;\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" lastDashTime = Time.time;\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" dashEndTime = Time.time + dashDuration;\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" isDashing = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" GameEvents.OnPlayerDash?.Invoke(dashDirection);\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" private void FixedUpdate()\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" if (Time.time < knockbackEndTime)\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" rb.linearVelocity = knockbackVelocity;\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" if (isDashing)\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" if (Time.time < dashEndTime)\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" rb.linearVelocity = dashDirection * dashSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" isDashing = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" isRecovering = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" recoveryStartVelocity = rb.linearVelocity;\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" recoveryEndTime = Time.time + dashRecoveryTime;\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" if (isRecovering)\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" float t = Mathf.Clamp01(1f - (recoveryEndTime - Time.time) / dashRecoveryTime);\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" Vector2 target = Vector2.zero;\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" rb.linearVelocity = Vector2.Lerp(recoveryStartVelocity, target, t);\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" if (Time.time >= recoveryEndTime)\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" isRecovering = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" rb.linearVelocity = Vector2.zero;\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" Move();\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" public void ApplyKnockback(Vector2 direction)\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" if (direction.sqrMagnitude < 0.0001f)\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" Vector2 flatDir = direction.normalized;\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" knockbackVelocity = flatDir * knockbackSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" knockbackEndTime = Time.time + knockbackDuration;\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" isDashing = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" isRecovering = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" private void Move()\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" // Normal movement via velocity to ensure collision response\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" // Use PlayerStats speed if available, otherwise fall back to serialized value\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" currentSpeed = stats != null ? stats.currentSpeed : moveSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" currentSpeed *= speedMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" Vector2 desiredVelocity = moveInput * currentSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" // If no input, zero velocity\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" if (desiredVelocity.sqrMagnitude < 0.0001f)\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" rb.linearVelocity = Vector2.zero;\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" Vector2 dir = desiredVelocity.normalized;\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" float checkDistance = desiredVelocity.magnitude * Time.fixedDeltaTime + skinWidth;\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" RaycastHit2D hit;\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" bool blocked = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" // Use the collider's current position for casting\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" Vector2 castOrigin = (Vector2)transform.position;\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" if (isCapsule)\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" hit = Physics2D.CapsuleCast(castOrigin, new Vector2(capsuleRadius * 2f, capsuleHeight),\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" CapsuleDirection2D.Vertical, 0f, dir, checkDistance, obstacleMask);\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" blocked = hit.collider != null && hit.distance > 0f; // Only block if we're not already overlapping\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" hit = Physics2D.CircleCast(castOrigin, capsuleRadius, dir, checkDistance, obstacleMask);\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" blocked = hit.collider != null && hit.distance > 0f; // Only block if we're not already overlapping\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" if (blocked && hit.collider != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" // Slide along surface instead of penetrating\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" // Calculate the component of velocity parallel to the surface\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" Vector2 slideDir = Vector2.Perpendicular(hit.normal);\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" float slideMagnitude = Vector2.Dot(desiredVelocity, slideDir);\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" desiredVelocity = slideDir * slideMagnitude;\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" // Let the Rigidbody2D handle the actual collision resolution\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" // by setting velocity and allowing physics to do its job\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" rb.linearVelocity = desiredVelocity;\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" public void SetSpeedMultiplier(float multiplier)\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" speedMultiplier = multiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_uOwNHFevhaW8U4XrWknDpC8D__vscode-1774363162399":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAttack.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":"using System;\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":"using UnityEngine.InputSystem;\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":"public class PlayerAttack : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" [Header(\"Components\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" [SerializeField] private PlayerController playerController;\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" [SerializeField] private PlayerAiming aiming;\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" [SerializeField] private Health health;\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" [SerializeField] private float baseFireRate = 0.5f; // shots per second (fallback)\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" [SerializeField] private Transform firePoint;\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" private PlayerControls controls;\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" private PlayerStats stats;\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" private bool isInitialized = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" private bool isFiring = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" private float nextFireTime = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" private IWeaponAttack currentWeapon;\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" void Awake()\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" playerController = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" aiming = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" health = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" // Get PlayerStats from PlayerController\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" if (playerController != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" stats = playerController.stats;\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" // Try to find any component that implements IWeaponAttack safely\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" currentWeapon = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" if (currentWeapon == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" // Try non-generic lookup and cast (covers some Unity versions)\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" var comp = GetComponent(typeof(IWeaponAttack));\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" if (comp is IWeaponAttack casted) currentWeapon = casted;\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" if (currentWeapon == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" // Try children as a fallback\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" currentWeapon = GetComponentInChildren();\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" // Initialize weapon with player stats for damage calculations\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" if (currentWeapon != null && stats != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" currentWeapon.Initialize(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" void OnEnable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" // Only create controls once to avoid multiple input listeners\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" if (!isInitialized)\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" controls = new PlayerControls();\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" isInitialized = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" // Reset firing state when enabled to prevent stuck attacking\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" isFiring = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" controls.Player.Attack.Enable();\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" controls.Player.Attack.started += OnAttackStarted;\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" controls.Player.Attack.canceled += OnAttackCanceled;\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" void OnDisable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" // Stop any active attack when disabled\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" isFiring = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" if (currentWeapon != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" currentWeapon.StopAttack();\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" if (controls != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" controls.Player.Attack.started -= OnAttackStarted;\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" controls.Player.Attack.canceled -= OnAttackCanceled;\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" controls.Player.Attack.Disable();\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" void Update()\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" // Handle simple auto-fire behavior when holding the attack\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" if (isFiring && Time.time >= nextFireTime)\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" // Use PlayerStats attack speed if available, otherwise fall back to serialized value\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" float attackSpeed = stats != null ? stats.currentAttackSpeed : baseFireRate;\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" nextFireTime = Time.time + (attackSpeed > 0f ? 1f / attackSpeed : 0.5f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" if (currentWeapon != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" currentWeapon.Attack();\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" // Safe fallback: no weapon component found — record attempt\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" GameEvents.DebugLog(\"PlayerAttack: attack attempted (no weapon found)\", DebugCategory.Input);\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" void OnAttackStarted(InputAction.CallbackContext context)\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" isFiring = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" if (currentWeapon != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" currentWeapon.Attack();\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" GameEvents.DebugLog(\"PlayerAttack: Attack started (no weapon found)\", DebugCategory.Input);\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" void OnAttackCanceled(InputAction.CallbackContext context)\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" isFiring = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" if (currentWeapon != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" currentWeapon.StopAttack();\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_CI2ErptAaV46MQAOclyum9if__vscode-1774363162400":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":2,"priority":9007199254740991,"text":"File: `","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"`. Lines ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"1","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" to ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"340","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" (","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"593","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" lines total): ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false},{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":342,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":342},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":341,"text":"using System;\n","references":[],"lineBreakBefore":true}],"props":{"priority":341},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":340,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":340},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":339,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":339},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":338,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":338},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":337,"text":"/// Centralized event system for cross-system communication.\n","references":[],"lineBreakBefore":true}],"props":{"priority":337},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":336,"text":"/// Decouples systems so they don't need direct references to each other.\n","references":[],"lineBreakBefore":true}],"props":{"priority":336},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":335,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":335},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":334,"text":"public static class GameEvents\n","references":[],"lineBreakBefore":true}],"props":{"priority":334},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":333,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":333},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":332,"text":" // ========== PLAYER EVENTS ==========\n","references":[],"lineBreakBefore":true}],"props":{"priority":332},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":331,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":331},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":330,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":330},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":329,"text":" /// Fired when player movement input changes.\n","references":[],"lineBreakBefore":true}],"props":{"priority":329},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":328,"text":" /// Allows systems to react to movement input independently (animation, sfx, etc).\n","references":[],"lineBreakBefore":true}],"props":{"priority":328},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":327,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":327},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":326,"text":" public static Action OnPlayerMovementInput;\n","references":[],"lineBreakBefore":true}],"props":{"priority":326},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":325,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":325},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":324,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":324},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":323,"text":" /// Fired when player rotation/aiming changes.\n","references":[],"lineBreakBefore":true}],"props":{"priority":323},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":322,"text":" /// Allows systems to react to aim updates (animation, UI, etc).\n","references":[],"lineBreakBefore":true}],"props":{"priority":322},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":321,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":321},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":320,"text":" public static Action OnPlayerAimDirectionChanged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":320},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":319,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":319},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":318,"text":" public static Action OnPlayerDash;\n","references":[],"lineBreakBefore":true}],"props":{"priority":318},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":317,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":317},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":316,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":316},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":315,"text":" /// Fired when player selects an upgrade from the upgrade choice UI. \n","references":[],"lineBreakBefore":true}],"props":{"priority":315},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":314,"text":" /// Parameters: chosen UpgradeData\n","references":[],"lineBreakBefore":true}],"props":{"priority":314},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":313,"text":" /// Listeners: Player (apply upgrade), UI (close upgrade panel), AudioManager (play selection sound)\n","references":[],"lineBreakBefore":true}],"props":{"priority":313},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":312,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":312},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":311,"text":" public static Action OnPlayerUpgradeApplied;\n","references":[],"lineBreakBefore":true}],"props":{"priority":311},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":310,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":310},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":309,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":309},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":308,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":308},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":307,"text":" // COMBAT EVENTS\n","references":[],"lineBreakBefore":true}],"props":{"priority":307},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":306,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":306},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":305,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":305},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":304,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":304},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":303,"text":" /// Fired when an enemy is killed. Passes the enemy that died.\n","references":[],"lineBreakBefore":true}],"props":{"priority":303},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":302,"text":" /// Listeners: XPManager (award XP), RoomManager (check room clear), AudioManager (death sound), UI (kill counter)\n","references":[],"lineBreakBefore":true}],"props":{"priority":302},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":301,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":301},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":300,"text":" public static Action OnEnemyKilled;\n","references":[],"lineBreakBefore":true}],"props":{"priority":300},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":299,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":299},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":298,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":298},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":297,"text":" /// Fired when an enemy takes damage (non-fatal).\n","references":[],"lineBreakBefore":true}],"props":{"priority":297},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":296,"text":" /// Parameters: damage amount, hit position, hit direction\n","references":[],"lineBreakBefore":true}],"props":{"priority":296},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":295,"text":" /// Listeners: VFXManager (spawn damage numbers), AudioManager (hit sound)\n","references":[],"lineBreakBefore":true}],"props":{"priority":295},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":294,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":294},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":293,"text":" public static event Action OnEnemyDamaged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":293},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":292,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":292},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":291,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":291},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":290,"text":" /// Fired when player takes damage.\n","references":[],"lineBreakBefore":true}],"props":{"priority":290},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":289,"text":" /// Parameters: damage amount, current HP, max HP\n","references":[],"lineBreakBefore":true}],"props":{"priority":289},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":288,"text":" /// Listeners: HealthBarUI (update bar), ScreenEffects (flash red), AudioManager (hurt sound)\n","references":[],"lineBreakBefore":true}],"props":{"priority":288},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":287,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":287},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":286,"text":" public static Action OnPlayerDamaged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":286},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":285,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":285},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":284,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":284},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":283,"text":" /// Fired when player is healed.\n","references":[],"lineBreakBefore":true}],"props":{"priority":283},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":282,"text":" /// Parameters: heal amount\n","references":[],"lineBreakBefore":true}],"props":{"priority":282},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":281,"text":" /// Listeners: HealthBarUI (update bar), VFXManager (heal particles), AudioManager (heal sound)\n","references":[],"lineBreakBefore":true}],"props":{"priority":281},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":280,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":280},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":279,"text":" public static event Action OnPlayerHealed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":279},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":278,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":278},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":277,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":277},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":276,"text":" /// Fired when player dies.\n","references":[],"lineBreakBefore":true}],"props":{"priority":276},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":275,"text":" /// Listeners: GameManager (game over screen), AudioManager (death sound), InputManager (disable input)\n","references":[],"lineBreakBefore":true}],"props":{"priority":275},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":274,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":274},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":273,"text":" public static event Action OnPlayerDied;\n","references":[],"lineBreakBefore":true}],"props":{"priority":273},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":272,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":272},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":271,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":271},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":270,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":270},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":269,"text":" // STATUS EFFECT EVENTS\n","references":[],"lineBreakBefore":true}],"props":{"priority":269},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":268,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":268},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":267,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":267},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":266,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":266},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":265,"text":" /// Fired when a status effect is applied to an entity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":265},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":264,"text":" /// Parameters: affected GameObject, effect data\n","references":[],"lineBreakBefore":true}],"props":{"priority":264},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":263,"text":" /// Listeners: VFXManager (spawn effect visuals), AudioManager (play effect sound), UI (show status icon)\n","references":[],"lineBreakBefore":true}],"props":{"priority":263},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":" public static Action OnStatusEffectApplied;\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":" /// Fired when a status effect is removed from an entity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":" /// Parameters: affected GameObject, effect data\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":" /// Listeners: VFXManager (clean up visuals), UI (remove status icon)\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":" public static Action OnStatusEffectRemoved;\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" // PROGRESSION EVENTS\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" /// Fired when player gains XP.\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" /// Parameters: XP amount gained\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" /// Listeners: XPBarUI (update bar), VFXManager (XP gain popup)\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" public static System.Action OnXPChanged; // (currentXP, xpRequired)\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" /// Fired when player levels up.\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" /// Parameters: new level\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" /// Listeners: Player (heal on level up), UI (level up popup), PathSystem (check for path unlock at 10/20/30)\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" public static System.Action OnLevelUp; // (newLevel)\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" /// Fired when upgrade choices are offered to player.\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" /// Parameters: current level, array of 3 upgrade options\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" /// Listeners: UpgradeUI (display choices)\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" public static event Action OnUpgradeOffered;\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" public static event Action OnHealthChanged; // (currentHP, maxHP)\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" /// Fired when player's stats change (from upgrades, buffs, debuffs).\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" /// Parameters: updated PlayerStats\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" /// Listeners: CharacterSheetUI (update display), SaveManager (track current stats)\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" public static event Action OnPlayerStatsChanged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" // ROOM EVENTS\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" /// Fired when player enters a new room.\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" /// Parameters: room index (0-24)\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" /// Listeners: RoomManager (spawn enemies), UI (update room counter), MusicManager (change music)\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" public static event Action OnRoomEntered;\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" /// Fired when all enemies in a room are cleared.\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" /// Parameters: room index\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" /// Listeners: UpgradeManager (show upgrade choices), DoorController (unlock doors), SaveManager (save progress)\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" public static event Action OnRoomCleared;\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" /// Fired when player enters the boss room.\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" /// Listeners: MusicManager (boss music), UI (boss health bar), CameraController (zoom out)\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" public static event Action OnBossRoomEntered;\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" /// Fired when a boss is defeated.\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" /// Parameters: boss identifier (mid-boss or final boss)\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" /// Listeners: GameManager (check win condition), UI (victory screen), SaveManager (unlock endless mode)\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" public static event Action OnBossDefeated;\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" // GAME STATE EVENTS\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" /// Fired when game state changes (menu, playing, paused, game over, etc.).\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" /// Parameters: new game state\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" /// Listeners: UI (show/hide panels), AudioManager (pause music), InputManager (enable/disable input)\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" public static event Action OnGameStateChanged;\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" /// Fired when a new run starts.\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" /// Listeners: All managers (reset state), SaveManager (create new run data), UI (reset displays)\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" public static event Action OnRunStarted;\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" /// Fired when run ends (win or loss).\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" /// Parameters: was victory (true = won, false = died)\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" /// Listeners: GameManager (show results screen), SaveManager (record run stats), MetaProgression (award currency)\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" public static event Action OnRunEnded;\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" // UI EVENTS\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" /// Fired when a notification should be shown to player.\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" /// Parameters: notification text\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" /// Listeners: NotificationUI (display popup)\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" public static event Action OnShowNotification;\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" /// Fired when game is paused or unpaused.\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" /// Parameters: is paused\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" /// Listeners: GameManager (set Time.timeScale), UI (show pause menu), AudioManager (pause sounds)\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" public static event Action OnGamePaused;\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" // META-PROGRESSION EVENTS (Phase 3+)\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" /// Fired when player earns persistent currency.\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" /// Parameters: currency amount\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" /// Listeners: MetaProgressionUI (update display), SaveManager (save currency)\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" public static event Action OnCurrencyEarned;\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" /// Fired when player unlocks a new character.\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" /// Parameters: character ID\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" /// Listeners: CharacterSelectUI (enable character), SaveManager (save unlock)\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" public static event Action OnCharacterUnlocked;\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" /// Fired when player unlocks a new path tree for a character.\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" /// Parameters: character ID, path tree ID\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" /// Listeners: PathSystemUI (show new options), SaveManager (save unlock)\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" public static event Action OnPathTreeUnlocked;\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" // AUDIO EVENTS (Optional - can also subscribe directly to other events)\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" /// Fired when a sound effect should play.\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" /// Parameters: sound ID/name, position (Vector2.zero for 2D sounds)\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" /// Listeners: AudioManager\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" public static event Action OnPlaySound;\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" /// Fired when music should change.\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" /// Parameters: music track ID/name\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" /// Listeners: AudioManager\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" public static event Action OnPlayMusic;\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" // DEBUG EVENTS (Development only)\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" #if UNITY_EDITOR || DEVELOPMENT_BUILD\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" /// Fired when debug command is executed.\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" /// Parameters: command name, arguments\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" /// Listeners: DebugConsole, various managers\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" public static event Action OnDebugCommand;\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" /// Debug logging event for combat/attack debugging.\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" /// Parameters: log message, category\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" public static event Action OnDebugLog;\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" /// Helper method for debug logging with category filtering.\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" /// Only logs if the category is enabled in DebugManager.\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" /// Only active in Editor and Development builds.\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" public static void DebugLog(string message, DebugCategory category = DebugCategory.General)\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" // Check if DebugManager exists and category is enabled\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" if (DebugManager.Instance == null || !DebugManager.Instance.IsCategoryEnabled(category))\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" // Add category prefix to message for easier filtering in console\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" string prefixedMessage = $\"{DebugManager.Instance.GetCategoryPrefix(category)} {message}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" Debug.Log(prefixedMessage);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" OnDebugLog?.Invoke(prefixedMessage, category);\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" /// Backward compatibility: Log without category (uses General category).\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" [System.Obsolete(\"Use DebugLog(message, category) instead for better filtering.\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" public static void DebugLog(string message)\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" Debug.Log(message);\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" /// Helper method for debug warning logging with category filtering.\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" /// Only logs if the category is enabled in DebugManager.\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" /// Only active in Editor and Development builds.\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" public static void DebugWarning(string message, DebugCategory category = DebugCategory.General)\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" // Check if DebugManager exists and category is enabled\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" if (DebugManager.Instance == null || !DebugManager.Instance.IsCategoryEnabled(category))\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" // Add category prefix to message for easier filtering in console\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" string prefixedMessage = $\"{DebugManager.Instance.GetCategoryPrefix(category)} {message}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" Debug.LogWarning(prefixedMessage);\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" OnDebugLog?.Invoke(prefixedMessage, category);\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" [System.Obsolete(\"Use DebugWarning(message, category) instead for better filtering.\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" public static void DebugWarning(string message)\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" Debug.Log(message);\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" public static void DebugError(string message, DebugCategory category = DebugCategory.General)\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" // Check if DebugManager exists and category is enabled\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" if (DebugManager.Instance == null || !DebugManager.Instance.IsCategoryEnabled(category))\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" // Add category prefix to message for easier filtering in console\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" string prefixedMessage = $\"{DebugManager.Instance.GetCategoryPrefix(category)} {message}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" Debug.LogError(prefixedMessage);\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" OnDebugLog?.Invoke(prefixedMessage, category);\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" /// Backward compatibility: Log without category (uses General category).\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" [System.Obsolete(\"Use DebugError(message, category) instead for better filtering.\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" public static void DebugError(string message)\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" Debug.LogError(message);\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":342,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":342},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_YNpQVJYiCJ0i23GDydiZmSpR__vscode-1774363162401":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":"public class XPManager : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" public static XPManager Instance { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" [Header(\"XP Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" [SerializeField] private int currentXP = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" [SerializeField] private int currentLevel = 1;\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" [SerializeField] private int xpToNextLevel = 100;\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" [SerializeField] private float xpMultiplier = 1.5f; // How much XP increases per level\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" [SerializeField] private bool debugMode = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" [Header(\"Level Up Rewards\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" [SerializeField] private float healPercentOnLevelUp = 0.1f; // 10% heal\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" private Health playerHealth;\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" void Awake() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" // Singleton pattern\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" if (Instance != null && Instance != this) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" Destroy(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" } else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" Instance = this;\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" // Get player health reference\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" playerHealth = FindFirstObjectByType()?.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" void OnEnable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" // Subscribe to enemy killed event\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" GameEvents.OnEnemyKilled += AwardXP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" void OnDisable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" // Unsubscribe to prevent memory leaks\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" GameEvents.OnEnemyKilled -= AwardXP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" public void AddXP(int amount)\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" currentXP += amount;\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" // Fire event for UI\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" GameEvents.OnXPChanged?.Invoke(currentXP, xpToNextLevel);\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" // Check for level up\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" CheckLevelUp();\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" private void AwardXP(Enemy enemy) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" // Get XP value from enemy's data\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" EnemyData data = enemy.EnemyData; // You'll need to add this getter\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" if (data == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" if (debugMode) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" GameEvents.DebugWarning(\"Enemy has no data, can't award XP\", DebugCategory.XPAndLeveling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" AddXP(data.XPValue);\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" private void CheckLevelUp() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" while (currentXP >= xpToNextLevel) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" LevelUp();\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" private void LevelUp() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" currentLevel++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" currentXP -= xpToNextLevel;\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" // Calculate next level requirement (exponential curve)\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" xpToNextLevel = Mathf.RoundToInt(xpToNextLevel * xpMultiplier);\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" if (debugMode) GameEvents.DebugLog($\"Leveled up to {currentLevel}! Next level at {xpToNextLevel} XP.\", DebugCategory.XPAndLeveling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" // Heal player\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" HealPlayer();\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" // Fire level up event\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" GameEvents.OnLevelUp?.Invoke(currentLevel);\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" private void HealPlayer() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" if (playerHealth != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" float healAmount = playerHealth.MaxHP * healPercentOnLevelUp;\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" playerHealth.Heal(healAmount);\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" GameEvents.DebugLog($\"Healed player for {healAmount} HP on level up.\", DebugCategory.General);\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" } \n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" // Public getters for UI\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" public int GetCurrentXP() => currentXP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" public int GetXPToNextLevel() => xpToNextLevel;\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" public int GetCurrentLevel() => currentLevel;\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_XrJcYgpbfmHvBb2GJqPeCLaZ__vscode-1774363162402":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/RoomManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":"public class RoomManager : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" // Handles room spawning and transitions\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_EJNSZQ9ESq1n7HQk4kWhYxfk__vscode-1774363162403":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/GameEvents.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/GameEvents.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":" #else\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" /// No-op debug logging for release builds.\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" [System.Diagnostics.Conditional(\"UNITY_EDITOR\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" public static void DebugLog(string message, DebugCategory category = DebugCategory.General) { }\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" [System.Diagnostics.Conditional(\"UNITY_EDITOR\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" [System.Obsolete(\"Use DebugLog(message, category) instead for better filtering.\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" public static void DebugLog(string message) { }\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" #endif\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" // HELPER METHODS (Optional - for safer invocation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" public static void StartRun() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" OnRunStarted?.Invoke();\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" GameEvents.DebugError($\"Error in OnRunStarted listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" public static void EndRun(bool wasVictory) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" OnRunEnded?.Invoke(wasVictory);\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" GameEvents.DebugError($\"Error in OnRunEnded listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" /// Safely invoke OnEnemyKilled with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" public static void EnemyKilled(Enemy enemy) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" OnEnemyKilled?.Invoke(enemy);\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" GameEvents.DebugError($\"Error in OnEnemyKilled listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" /// Safely invoke OnPlayerDamaged with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" public static void PlayerDamaged(float amount, float currentHP, float maxHP) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" OnPlayerDamaged?.Invoke(amount, currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" GameEvents.DebugError($\"Error in OnPlayerDamaged listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" /// Safely invoke OnHealthChanged with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" public static void PlayerHealthChanged(float currentHP, float maxHP) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" OnHealthChanged?.Invoke(currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" GameEvents.DebugError($\"Error in OnPlayerHealthChanged listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" /// Safely invoke OnLevelUp with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" public static void LevelUp(int newLevel) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" OnLevelUp?.Invoke(newLevel);\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" GameEvents.DebugError($\"Error in OnLevelUp listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" /// Safely invoke OnRoomCleared with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" public static void RoomCleared(int roomIndex) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" OnRoomCleared?.Invoke(roomIndex);\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" GameEvents.DebugError($\"Error in OnRoomCleared listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" /// Safely invoke OnPlayerHealed with null check and error handling. \n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" public static void PlayerHealed(float amount) { // Helper method\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" OnPlayerHealed?.Invoke(amount);\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" GameEvents.DebugError($\"Error in OnPlayerHealed listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" } \n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" /// Safely invoke OnPlayerDied with null check and error handling. \n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" public static void PlayerDied() { // Helper method\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" OnPlayerDied?.Invoke();\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" GameEvents.DebugError($\"Error in OnPlayerDied listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" /// Safely invoke OnPlayerStatsChanged with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" public static void PlayerStatsChanged(PlayerStats stats)\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" OnPlayerStatsChanged?.Invoke(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" catch (Exception e)\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" GameEvents.DebugError($\"Error in OnPlayerStatsChanged listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" public static void XPChanged(int current, int required) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" OnXPChanged?.Invoke(current, required);\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" GameEvents.DebugError($\"Error in OnXPChanged listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" public static void EnemyDamaged(float amount, Vector2 hitPoint, Vector2 hitDirection) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" OnEnemyDamaged?.Invoke(amount, hitPoint, hitDirection);\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" GameEvents.DebugError($\"Error in OnEnemyDamaged listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" public static void UpgradeApplied(UpgradeData upgrade) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" OnPlayerUpgradeApplied?.Invoke(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" GameEvents.DebugError($\"Error in OnPlayerUpgradeApplied listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" /// Safely invoke OnStatusEffectApplied with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" public static void StatusEffectApplied(GameObject target, StatusEffectData effectData) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" OnStatusEffectApplied?.Invoke(target, effectData);\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" GameEvents.DebugError($\"Error in OnStatusEffectApplied listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" /// Safely invoke OnStatusEffectRemoved with null check and error handling.\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" public static void StatusEffectRemoved(GameObject target, StatusEffectData effectData) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" OnStatusEffectRemoved?.Invoke(target, effectData);\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" } catch (Exception e) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" GameEvents.DebugError($\"Error in OnStatusEffectRemoved listeners: {e.Message}\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" // Add more helper methods as needed for frequently used events\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" // CLEANUP (Call on scene unload to prevent memory leaks)\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" /// Unsubscribe all listeners. Call this when changing scenes or ending runs.\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" /// WARNING: Only use this if you're absolutely sure you want to clear ALL listeners.\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" /// Usually it's better to let each system manage its own subscriptions.\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" public static void ClearAllListeners() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" // Combat\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" OnEnemyKilled = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" OnEnemyDamaged = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" OnPlayerDamaged = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" OnPlayerHealed = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" OnPlayerDied = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" // Status Effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" OnStatusEffectApplied = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" OnStatusEffectRemoved = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" // Progression\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" OnXPChanged = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" OnLevelUp = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" OnPlayerUpgradeApplied = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" OnUpgradeOffered = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" OnPlayerStatsChanged = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" // Room\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" OnRoomEntered = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" OnRoomCleared = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" OnBossRoomEntered = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" OnBossDefeated = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" // Game State\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" OnGameStateChanged = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" OnRunStarted = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" OnRunEnded = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" // UI\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" OnShowNotification = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" OnGamePaused = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" // Meta\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" OnCurrencyEarned = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" OnCharacterUnlocked = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" OnPathTreeUnlocked = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" // Audio\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" OnPlaySound = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" OnPlayMusic = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" #if UNITY_EDITOR || DEVELOPMENT_BUILD\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" OnDebugCommand = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" OnDebugLog = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" #endif\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" GameEvents.DebugLog(\"All GameEvents listeners cleared.\", DebugCategory.General);\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"// ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":"// SUPPORTING ENUMS\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":"// ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"/// Possible game states. Used with OnGameStateChanged event.\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"public enum GameState {\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" MainMenu,\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" CharacterSelect,\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" Playing,\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" Paused,\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" UpgradeChoice,\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" GameOver,\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" Victory,\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" Loading\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_T6pJzSXtbIKLZYpDaLBbjXWs__vscode-1774363162404":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Enemy.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":"[RequireComponent(typeof(Health))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":"[RequireComponent(typeof(EnemyAttack))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":"[RequireComponent(typeof(Rigidbody2D))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":"public class Enemy : MonoBehaviour, IPoolable, IMovementModifiable {\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" [Header(\"Components\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" [SerializeField] protected Health health;\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" IMovementBehavior movement;\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" [SerializeField] Rigidbody2D rb;\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" EnemyAttack attack;\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" IAttackBehaviour attackBehavior;\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" [Header(\"Data\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" [SerializeField] private EnemyData enemyData;\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" public EnemyData EnemyData { get => enemyData; set => enemyData = value; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" bool debugMode = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" // Cache for pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" private bool isInitialized = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" void Update()\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" if (movement != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" movement.UpdateMovement();\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" void Awake() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" CacheComponents();\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" ConfigureRigidbody();\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" ApplyEnemyData();\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" private void ConfigureRigidbody()\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" if (rb != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" // Make enemy kinematic to prevent physics-based pushing/vibration\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" // Enemy movement is handled by IMovementBehavior, not physics forces\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" rb.bodyType = RigidbodyType2D.Kinematic;\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" rb.useFullKinematicContacts = true; // Still detect collisions for damage\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" private void CacheComponents()\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" if (isInitialized) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" health = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" attack = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" rb = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" movement = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" attackBehavior = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" isInitialized = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" void ApplyEnemyData()\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" if (enemyData != null && health != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" health.SetMaxHP(enemyData.maxHealth);\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" void Start()\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" if (enemyData != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" Initialize(enemyData);\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" GameEvents.DebugLog(\"Enemy has no EnemyData assigned.\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" public void Initialize(EnemyData enemyData)\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" this.enemyData = enemyData;\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" if (attack == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" GameEvents.DebugLog(\"Enemy missing EnemyAttack component.\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" else if (attackBehavior == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" GameEvents.DebugLog(\"Enemy missing IAttackBehaviour component.\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" attack.Initialize(this.enemyData, attackBehavior);\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" if (movement == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" GameEvents.DebugLog(\"Enemy missing IMovementBehavior component.\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" movement.Initialize(this.enemyData);\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" void OnEnable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" health.OnDied += HandleDeath;\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" health.OnDamaged += HandleDamage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" void OnDisable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" health.OnDied -= HandleDeath;\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" health.OnDamaged -= HandleDamage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" void HandleDamage(float amount, Vector2 hitPoint, Vector2 hitDirection) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" // Fire GameEvent for damage tracking, VFX, audio, etc.\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" GameEvents.EnemyDamaged(amount, hitPoint, hitDirection);\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" GameEvents.DebugLog($\"[Enemy] {gameObject.name} took {amount} damage. HP: {health.CurrentHP}/{health.MaxHP}\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" void HandleDeath() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" GameEvents.EnemyKilled(this);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" // Return to pool instead of destroying\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" if (PoolingSystem.Instance != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" PoolingSystem.Instance.Return(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" Destroy(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" // IPoolable implementation for object pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" public void OnSpawnFromPool()\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" CacheComponents();\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" // Reset health\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" if (health != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" health.ResetHealth();\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" // Re-enable Rigidbody2D\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" if (rb != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" rb.simulated = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" // Re-initialize with enemy data\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" if (enemyData != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" Initialize(enemyData);\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" public void SetSpeedMultiplier(float multiplier)\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" if (movement != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" movement.SetSpeedMultiplier(multiplier);\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" public void OnReturnToPool()\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" // Stop Rigidbody2D to prevent errors\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" if (rb != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" rb.linearVelocity = Vector2.zero;\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" // Stop movement\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" if (movement != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" movement.Stop();\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_z0hHwAEGxCMcFw4NWgJ90dkW__vscode-1774363162405":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Shared/Health.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Shared/Health.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":"using System;\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":"public class Health : MonoBehaviour, IDamageable {\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" [Header(\"Health Stats\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" [SerializeField] private float maxHP = 100f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" private float currentHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" [Header(\"Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" [SerializeField] private bool isInvulnerable = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" [SerializeField] private bool canHeal = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" // Events for other systems to react to\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" public event Action OnHealthChanged; // current, max\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" public event Action OnDamaged; // amount, hitPoint, hitDirection\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" public event Action OnDied;\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" public event Action OnHealed; // amount\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" public bool IsAlive => currentHP > 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" public float CurrentHP => currentHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" public float MaxHP => maxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" public float HealthPercent => currentHP / maxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" void Awake() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" currentHP = maxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" /// Reset health to max (used for object pooling)\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" public void ResetHealth()\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" currentHP = maxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" OnHealthChanged?.Invoke(currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" // IDamageable implementation\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" public void TakeDamage(float amount, Vector2 hitPoint, Vector2 hitDirection) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" if (!IsAlive || isInvulnerable) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" currentHP -= amount;\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" currentHP = Mathf.Max(0, currentHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" OnDamaged?.Invoke(amount, hitPoint, hitDirection);\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" OnHealthChanged?.Invoke(currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" if (currentHP <= 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" Die();\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" public void Heal(float amount) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" if (!IsAlive || !canHeal) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" currentHP += amount;\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" currentHP = Mathf.Min(currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" OnHealed?.Invoke(amount);\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" OnHealthChanged?.Invoke(currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" public void SetMaxHP(float newMax) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" maxHP = newMax;\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" currentHP = Mathf.Min(currentHP, maxHP); // Don't exceed new max\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" OnHealthChanged?.Invoke(currentHP, maxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" void Die() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" OnDied?.Invoke();\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" // Health doesn't know HOW to die (player vs enemy vs destructible)\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" // It just announces \"I died\" via event\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_DAnjbmQiy840CPb6g9qSW3zt__vscode-1774363162406":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":2,"priority":9007199254740991,"text":"File: `","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"`. Lines ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"1","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" to ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"320","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" (","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"347","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" lines total): ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false},{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":322,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":322},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":321,"text":"using System.Collections.Generic;\n","references":[],"lineBreakBefore":true}],"props":{"priority":321},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":320,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":320},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":319,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":319},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":318,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":318},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":317,"text":"/// Manages upgrade selection, validation, and application.\n","references":[],"lineBreakBefore":true}],"props":{"priority":317},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":316,"text":"/// Checks for required upgrades (prerequisites) and conflicting upgrades (mutually exclusive).\n","references":[],"lineBreakBefore":true}],"props":{"priority":316},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":315,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":315},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":314,"text":"public class UpgradeManager : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":314},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":313,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":313},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":312,"text":" [Header(\"Upgrade Pool\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":312},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":311,"text":" [Tooltip(\"All available upgrades in the game. Assign all UpgradeData assets here.\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":311},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":310,"text":" [SerializeField] private UpgradeData[] allUpgrades;\n","references":[],"lineBreakBefore":true}],"props":{"priority":310},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":309,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":309},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":308,"text":" [Header(\"Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":308},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":307,"text":" [Tooltip(\"Number of upgrade choices offered to player\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":307},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":306,"text":" [SerializeField] private int upgradeChoiceCount = 3;\n","references":[],"lineBreakBefore":true}],"props":{"priority":306},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":305,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":305},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":304,"text":" public static UpgradeManager Instance { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":304},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":303,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":303},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":302,"text":" void Awake() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":302},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":301,"text":" if (Instance == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":301},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":300,"text":" Instance = this;\n","references":[],"lineBreakBefore":true}],"props":{"priority":300},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":299,"text":" } else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":299},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":298,"text":" Destroy(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":298},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":297,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":297},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":296,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":296},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":295,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":295},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":294,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":294},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":293,"text":" // UPGRADE POOL SELECTION\n","references":[],"lineBreakBefore":true}],"props":{"priority":293},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":292,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":292},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":291,"text":" public UpgradeData[] GetAllUpgrades() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":291},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":290,"text":" return allUpgrades;\n","references":[],"lineBreakBefore":true}],"props":{"priority":290},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":289,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":289},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":288,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":288},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":287,"text":" public List GetUpgradesByTypeAndCount(UpgradeType type, int count, List outputList) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":287},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":286,"text":" if (outputList == null) return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":286},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":285,"text":" outputList.Clear();\n","references":[],"lineBreakBefore":true}],"props":{"priority":285},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":284,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":284},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":283,"text":" if (allUpgrades == null || allUpgrades.Length == 0 || count <= 0) return outputList;\n","references":[],"lineBreakBefore":true}],"props":{"priority":283},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":282,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":282},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":281,"text":" PlayerController player = PlayerController.Instance;\n","references":[],"lineBreakBefore":true}],"props":{"priority":281},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":280,"text":" if (player == null || player.stats == null) return outputList;\n","references":[],"lineBreakBefore":true}],"props":{"priority":280},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":279,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":279},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":278,"text":" // Build pool of matching type that can actually be taken\n","references":[],"lineBreakBefore":true}],"props":{"priority":278},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":277,"text":" List pool = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":277},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":276,"text":" foreach (UpgradeData u in allUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":276},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":275,"text":" if (u != null && u.type == type && CanTakeUpgrade(u, player.stats)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":275},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":274,"text":" pool.Add(u);\n","references":[],"lineBreakBefore":true}],"props":{"priority":274},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":273,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":273},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":272,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":272},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":271,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":271},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":270,"text":" if (pool.Count == 0) return outputList;\n","references":[],"lineBreakBefore":true}],"props":{"priority":270},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":269,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":269},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":268,"text":" // Select up to count items, weighted by rarity. Avoid duplicates unless stackable.\n","references":[],"lineBreakBefore":true}],"props":{"priority":268},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":267,"text":" for (int i = 0; i < count && pool.Count > 0; i++) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":267},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":266,"text":" UpgradeData selected = SelectWeightedUpgrade(pool);\n","references":[],"lineBreakBefore":true}],"props":{"priority":266},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":265,"text":" if (selected == null) break;\n","references":[],"lineBreakBefore":true}],"props":{"priority":265},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":264,"text":" outputList.Add(selected);\n","references":[],"lineBreakBefore":true}],"props":{"priority":264},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":263,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":263},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":" // Remove non-stackable upgrades or upgrades at max stacks to prevent duplicates\n","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":" if (selected.maxStacks <= 1) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":" pool.Remove(selected);\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":" } else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":" // Check if we can still take this stackable upgrade\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":" int currentStacks = GetUpgradeStackCount(selected, player.stats) + 1; // +1 because we just added it\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":" if (currentStacks >= selected.maxStacks) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":" pool.Remove(selected);\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" return outputList;\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" // UPGRADE APPLICATION\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" /// Apply the chosen upgrade to the player after validation.\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" public void ApplyUpgrade(UpgradeData upgrade) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" PlayerController player = PlayerController.Instance;\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" if (player == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" GameEvents.DebugWarning(\"PlayerController instance not found. Cannot apply upgrade.\", DebugCategory.Upgrades);\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" // Validate upgrade can be taken\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" if (!CanTakeUpgrade(upgrade, player.stats)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" GameEvents.DebugWarning($\"Cannot apply upgrade '{upgrade.upgradeName}': requirements not met.\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" player.stats.ApplyUpgrade(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" GameEvents.UpgradeApplied(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" GameEvents.DebugLog($\"Applied upgrade: {upgrade.upgradeName}\", DebugCategory.Upgrades);\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" // UPGRADE VALIDATION\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" /// Check if a specific upgrade can be taken by the player.\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" /// Validates max stacks, required upgrades (prerequisites), and conflicting upgrades.\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" public bool CanTakeUpgrade(UpgradeData upgrade, PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" if (upgrade == null || stats == null) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" // Use the UpgradeData's built-in validation\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" return upgrade.CanBeTaken(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" /// Check if required upgrades (prerequisites) are satisfied.\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" public bool HasRequiredUpgrades(UpgradeData upgrade, PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" if (upgrade == null || stats == null) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" if (upgrade.requiredUpgrades == null || upgrade.requiredUpgrades.Length == 0) return true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" foreach (UpgradeData required in upgrade.requiredUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" if (required != null && !stats.HasUpgrade(required)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" return true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" /// Check if any conflicting upgrades have been taken.\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" public bool HasConflictingUpgrade(UpgradeData upgrade, PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" if (upgrade == null || stats == null) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" if (upgrade.conflictingUpgrades == null || upgrade.conflictingUpgrades.Length == 0) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" foreach (UpgradeData conflict in upgrade.conflictingUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" if (conflict != null && stats.HasUpgrade(conflict)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" return true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" /// Get the reason why an upgrade cannot be taken (for UI display).\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" /// Returns null if upgrade can be taken.\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" public string GetUpgradeBlockedReason(UpgradeData upgrade, PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" if (upgrade == null) return \"Invalid upgrade\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" if (stats == null) return \"No player stats\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" // Check max stacks\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" if (upgrade.maxStacks > 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" int currentStacks = GetUpgradeStackCount(upgrade, stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" if (currentStacks >= upgrade.maxStacks) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" return $\"Max stacks reached ({currentStacks}/{upgrade.maxStacks})\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" // Check required upgrades\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" if (upgrade.requiredUpgrades != null && upgrade.requiredUpgrades.Length > 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" List missingUpgrades = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" foreach (UpgradeData required in upgrade.requiredUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" if (required != null && !stats.HasUpgrade(required)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" missingUpgrades.Add(required.upgradeName);\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" if (missingUpgrades.Count > 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" return $\"Requires: {string.Join(\", \", missingUpgrades)}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" // Check conflicting upgrades\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" if (upgrade.conflictingUpgrades != null && upgrade.conflictingUpgrades.Length > 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" foreach (UpgradeData conflict in upgrade.conflictingUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" if (conflict != null && stats.HasUpgrade(conflict)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" return $\"Conflicts with: {conflict.upgradeName}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" return null; // No issues, upgrade can be taken\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" /// Get how many times the player has taken a specific upgrade.\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" public int GetUpgradeStackCount(UpgradeData upgrade, PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" if (upgrade == null || stats == null) return 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" int count = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" foreach (UpgradeData applied in stats.AppliedUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" if (applied == upgrade) count++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" return count;\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" // UPGRADE SELECTION / OFFERING\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" /// Get all upgrades that can currently be taken by the player.\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" /// Filters out upgrades blocked by requirements, conflicts, or max stacks.\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" public List GetAvailableUpgrades(PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" List available = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" if (allUpgrades == null || stats == null) return available;\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" foreach (UpgradeData upgrade in allUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" if (upgrade != null && CanTakeUpgrade(upgrade, stats)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" available.Add(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" return available;\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" /// Get available upgrades filtered by type (Power, Defense, Utility).\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" public List GetAvailableUpgradesByType(PlayerStats stats, UpgradeType type) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" List available = GetAvailableUpgrades(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" available.RemoveAll(u => u.type != type);\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" return available;\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" /// Get available upgrades filtered by rarity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" public List GetAvailableUpgradesByRarity(PlayerStats stats, UpgradeRarity rarity) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" List available = GetAvailableUpgrades(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" available.RemoveAll(u => u.rarity != rarity);\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" return available;\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" /// Offer random upgrade choices to the player.\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" /// Respects rarity weights: Common (70%), Rare (25%), Epic (5%).\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" public UpgradeData[] GetRandomUpgradeChoices(PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" List available = GetAvailableUpgrades(stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" List choices = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" if (available.Count == 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" GameEvents.DebugWarning(\"No available upgrades to offer!\", DebugCategory.Upgrades);\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" return choices.ToArray();\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" // Select random upgrades (weighted by rarity)\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" for (int i = 0; i < upgradeChoiceCount && available.Count > 0; i++) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" UpgradeData selected = SelectWeightedUpgrade(available);\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" if (selected != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" choices.Add(selected);\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" // Remove from pool to avoid duplicates (unless stackable)\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" if (selected.maxStacks <= 1) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" available.Remove(selected);\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" return choices.ToArray();\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" /// Select a random upgrade weighted by rarity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" /// Common: 70%, Rare: 25%, Epic: 5%\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" private UpgradeData SelectWeightedUpgrade(List upgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" if (upgrades == null || upgrades.Count == 0) return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" // Build weighted list\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" List<(UpgradeData upgrade, float weight)> weighted = new List<(UpgradeData, float)>();\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" float totalWeight = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" foreach (UpgradeData upgrade in upgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" float weight = GetRarityWeight(upgrade.rarity);\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" weighted.Add((upgrade, weight));\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" totalWeight += weight;\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" // Random selection\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" float roll = Random.Range(0f, totalWeight);\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" float cumulative = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" foreach (var (upgrade, weight) in weighted) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" cumulative += weight;\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" if (roll <= cumulative) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" return upgrade;\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" // Fallback (shouldn't happen)\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" return upgrades[Random.Range(0, upgrades.Count)];\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" /// Get spawn weight for a rarity tier.\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" private float GetRarityWeight(UpgradeRarity rarity) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" return rarity switch {\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" UpgradeRarity.Common => 70f,\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" UpgradeRarity.Rare => 25f,\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" UpgradeRarity.Epic => 5f,\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" _ => 50f\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" };\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" // DEBUG / UTILITY\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":" /// Log all available upgrades and their status for debugging.\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":322,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":322},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_Ki3dZxk8QTrc75dY39uD3jg3__vscode-1774363162407":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/UpgradeManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" [ContextMenu(\"Debug: Log Upgrade Status\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" public void DebugLogUpgradeStatus() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" PlayerController player = PlayerController.Instance;\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" if (player == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" GameEvents.DebugWarning(\"No player found for upgrade status check.\", DebugCategory.Upgrades);\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" GameEvents.DebugLog(\"=== UPGRADE STATUS ===\", DebugCategory.Upgrades);\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" if (allUpgrades == null || allUpgrades.Length == 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" GameEvents.DebugLog(\"No upgrades in pool!\", DebugCategory.Upgrades);\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" foreach (UpgradeData upgrade in allUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" if (upgrade == null) continue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" bool canTake = CanTakeUpgrade(upgrade, player.stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" string reason = GetUpgradeBlockedReason(upgrade, player.stats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" string status = canTake ? \"AVAILABLE\" : $\"BLOCKED - {reason}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" GameEvents.DebugLog($\"[{upgrade.rarity}] {upgrade.upgradeName}: {status}\", DebugCategory.Upgrades );\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_rhH5Pi8lPchjk0ONQJR33wm7__vscode-1774363162408":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene.unity","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene.unity.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene.unity","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene.unity.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_doHQiWn4S3Vox2FVoGeRr9k4__vscode-1774363162409":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"iFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"23 matches (maxResults capped at 200)","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":372},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnPlayerDied += onPlayerDiedHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":18,"character":8},{"line":18,"character":34}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":372},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":373},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled += onEnemyKilledHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":19,"character":8},{"line":19,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":373},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":374},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp += onLevelUpHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":20,"character":8},{"line":20,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":374},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":375},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnXPChanged += onXPChangedHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":21,"character":8},{"line":21,"character":33}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":375},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":376},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled += OnEnemyDied;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":[{"line":75,"character":8},{"line":75,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":376},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":377},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRunEnded += ShowGameOver;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"range":[{"line":21,"character":8},{"line":21,"character":32}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":377},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":378},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnHealthChanged += UpdateHealthBar;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"range":[{"line":10,"character":8},{"line":10,"character":37}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":378},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":379},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp += UpdateLevelDisplay;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"range":[{"line":8,"character":8},{"line":8,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":379},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":380},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnXPChanged += UpdateXPBar;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"range":[{"line":10,"character":8},{"line":10,"character":33}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":380},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":381},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp += OnLevelUp;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"range":[{"line":62,"character":8},{"line":62,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":381},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":382},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnHealthChanged += UpdateHealth;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":70,"character":8},{"line":70,"character":37}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":382},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":383},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnXPChanged += UpdateXP;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":71,"character":8},{"line":71,"character":33}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":383},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":384},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp += UpdateLevel;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":72,"character":8},{"line":72,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":384},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":385},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRoomEntered += UpdateRoom;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":73,"character":8},{"line":73,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":385},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":386},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRoomCleared += OnRoomCleared;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":74,"character":8},{"line":74,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":386},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":387},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled += OnEnemyKilled;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":75,"character":8},{"line":75,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":387},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":388},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnPlayerMovementInput += HandleMovementInput;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":[{"line":69,"character":8},{"line":69,"character":43}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":388},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":389},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnPlayerAimDirectionChanged += HandleAimDirectionChanged;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":[{"line":70,"character":8},{"line":70,"character":49}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":389},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":390},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyDamaged += HandleEnemyDamaged;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":[{"line":197,"character":8},{"line":197,"character":36}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":390},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":391},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled += HandleEnemyKilled;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":[{"line":198,"character":8},{"line":198,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":391},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":392},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRunEnded += HandleRunEnded;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":[{"line":15,"character":8},{"line":15,"character":32}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":392},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":393},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRunStarted += HandleRunStarted;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":[{"line":16,"character":8},{"line":16,"character":34}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":393},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":394},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled += AwardXP;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":[{"line":32,"character":8},{"line":32,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":394},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4}],"props":{},"references":[]}}}]},"call_kAQyUrAxNqC1RFW1YO2YavNC__vscode-1774363162410":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"iFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"23 matches (maxResults capped at 200)","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":441},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnXPChanged -= UpdateXPBar;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/XPBarUI.cs","scheme":"file"},"range":[{"line":14,"character":8},{"line":14,"character":33}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":441},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":442},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp -= UpdateLevelDisplay;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/LevelDisplayUI.cs","scheme":"file"},"range":[{"line":12,"character":8},{"line":12,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":442},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":443},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnHealthChanged -= UpdateHealth;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":81,"character":8},{"line":81,"character":37}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":443},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":444},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnXPChanged -= UpdateXP;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":82,"character":8},{"line":82,"character":33}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":444},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":445},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp -= UpdateLevel;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":83,"character":8},{"line":83,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":445},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":446},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRoomEntered -= UpdateRoom;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":84,"character":8},{"line":84,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":446},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":447},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRoomCleared -= OnRoomCleared;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":85,"character":8},{"line":85,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":447},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":448},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled -= OnEnemyKilled;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"range":[{"line":86,"character":8},{"line":86,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":448},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":449},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnHealthChanged -= UpdateHealthBar;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"range":[{"line":14,"character":8},{"line":14,"character":37}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":449},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":450},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRunEnded -= ShowGameOver;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameOverUI.cs","scheme":"file"},"range":[{"line":33,"character":8},{"line":33,"character":32}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":450},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":451},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled -= OnEnemyDied;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":[{"line":81,"character":8},{"line":81,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":451},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":452},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRunEnded -= HandleRunEnded;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":[{"line":20,"character":8},{"line":20,"character":32}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":452},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":453},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnRunStarted -= HandleRunStarted;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"range":[{"line":21,"character":8},{"line":21,"character":34}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":453},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":454},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp -= OnLevelUp;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerController.cs","scheme":"file"},"range":[{"line":71,"character":8},{"line":71,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":454},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":455},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled -= AwardXP;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":[{"line":37,"character":8},{"line":37,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":455},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":456},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnPlayerDied -= onPlayerDiedHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":26,"character":8},{"line":26,"character":34}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":456},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":457},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled -= onEnemyKilledHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":27,"character":8},{"line":27,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":457},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":458},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnLevelUp -= onLevelUpHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":28,"character":8},{"line":28,"character":31}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":458},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":459},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnXPChanged -= onXPChangedHandler;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Events/EventListener.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Events/EventListener.cs","scheme":"file"},"range":[{"line":29,"character":8},{"line":29,"character":33}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":459},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":460},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnPlayerMovementInput -= HandleMovementInput;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":[{"line":75,"character":8},{"line":75,"character":43}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":460},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":461},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnPlayerAimDirectionChanged -= HandleAimDirectionChanged;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/PlayerAnimation.cs","scheme":"file"},"range":[{"line":76,"character":8},{"line":76,"character":49}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":461},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":462},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyDamaged -= HandleEnemyDamaged;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":[{"line":203,"character":8},{"line":203,"character":36}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":462},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":463},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" GameEvents.OnEnemyKilled -= HandleEnemyKilled;","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Player/Attack%20Types/FlamethrowerAttack.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Player/Attack Types/FlamethrowerAttack.cs","scheme":"file"},"range":[{"line":204,"character":8},{"line":204,"character":35}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":463},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4}],"props":{},"references":[]}}}]},"call_dj0MaHsQIx2EA2JGLaZ4OEdl__vscode-1774363162411":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"iFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"8 matches","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":510},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var spawner = FindFirstObjectByType();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":[{"line":342,"character":22},{"line":342,"character":43}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":510},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":511},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var xpManager = FindFirstObjectByType(); // Assuming it exists","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":[{"line":400,"character":24},{"line":400,"character":45}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":511},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":512},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var spawner = FindFirstObjectByType();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/DebugMenuUI.cs","scheme":"file"},"range":[{"line":522,"character":22},{"line":522,"character":43}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":512},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":513},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var playerController = FindFirstObjectByType();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"range":[{"line":58,"character":35},{"line":58,"character":56}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":513},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":514},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var player = UnityEngine.Object.FindFirstObjectByType();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/ChaseMovement.cs","scheme":"file"},"range":[{"line":47,"character":44},{"line":47,"character":65}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":514},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":515},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" playerHealth = FindFirstObjectByType()?.GetComponent();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/XPManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/XPManager.cs","scheme":"file"},"range":[{"line":27,"character":23},{"line":27,"character":44}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":515},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":516},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var enemy = FindFirstObjectByType();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectDebugger.cs","scheme":"file"},"range":[{"line":90,"character":24},{"line":90,"character":45}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":516},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4},{"type":1,"ctor":2,"ctorName":"$we","children":[{"type":1,"ctor":2,"ctorName":"n","children":[{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":517},{"type":1,"ctor":2,"ctorName":"Zrt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":1000,"text":" var player = UnityEngine.Object.FindFirstObjectByType();","references":[],"lineBreakBefore":true}],"props":{"priority":1000},"references":[]},{"type":2,"priority":1,"text":"\n","lineBreakBefore":false}],"props":{"flexGrow":1,"priority":1},"references":[{"anchor":{"uri":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Enemies/Movement/FlyingMovement.cs","scheme":"file"},"range":[{"line":46,"character":44},{"line":46,"character":65}]},"options":{"isFromTool":true}}]},{"type":1,"ctor":2,"ctorName":"","children":[{"type":2,"priority":9007199254740991,"text":"","lineBreakBefore":false}],"props":{},"references":[],"keepWithId":517},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false}],"props":{},"references":[]}],"props":{"passPriority":true},"references":[],"flags":4}],"props":{},"references":[]}}}]},"call_03ywX3STzm8spgR72s6MYwXn__vscode-1774363162412":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"mU","children":[{"type":2,"priority":9007199254740991,"text":"No errors found.","lineBreakBefore":false}],"props":{},"references":[]}}}]},"call_6kgFuSlsZSWudYKxDXbmydi7__vscode-1774363162413":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Managers/GameManager.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Managers/GameManager.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":"using Unity.VectorGraphics;\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":"using UnityEngine.SceneManagement;\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":"public class GameManager : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" public GameState gameState;\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" [SerializeField] private string gameSceneName = \"TestScene\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" void Awake()\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" // Do not reload scene here to avoid infinite loop\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" gameState = GameState.Playing;\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" void OnEnable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" GameEvents.OnRunEnded += HandleRunEnded;\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" GameEvents.OnRunStarted += HandleRunStarted;\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" void OnDisable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" GameEvents.OnRunEnded -= HandleRunEnded;\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" GameEvents.OnRunStarted -= HandleRunStarted;\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" void HandleRunStarted()\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" // Handle run start logic here\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" Time.timeScale = 1f; // Resume the game\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" gameState = GameState.Playing;\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" SceneManager.LoadScene(SceneManager.GetActiveScene().name);\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" void HandleRunEnded(bool isVictory)\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" // Handle game over logic here\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" Time.timeScale = 0f; // Pause the game\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" if (!isVictory)\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" GameEvents.DebugLog(\"Game Over! Displaying Game Over Screen...\", DebugCategory.General);\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" Time.timeScale = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" // Show Game Over UI\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" gameState = GameState.GameOver;\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" GameEvents.DebugLog(\"Run Completed! Displaying Victory Screen...\", DebugCategory.General);\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" // Show Victory UI\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" gameState = GameState.Victory;\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_j1WqhQl11XI0r9E54s4IOJXq__vscode-1774363162414":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/WaveSpawner.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":"using System.Collections;\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":"public class WaveSpawner : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" [Header(\"Wave Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" [SerializeField] private GameObject scorpionPrefab;\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" // add other enemy prefabs here\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" [SerializeField] private int baseEnemiesPerWave = 4;\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" [SerializeField] private float enemyIncreasePerWave = 1.3f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" [SerializeField] private float timeBetweenWaves = 3f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" [Header(\"Spawn Area\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" [SerializeField] private float spawnRadius = 12f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" [SerializeField] private float minSpawnDistance = 6f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" [SerializeField] private Vector2 arenaSize = new Vector2(25f, 20f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" [Header(\"Spawn Patterns\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" [Tooltip(\"How much of the circle around player is blocked for spawning (0-1). 0.5 = enemies spawn in 180° arc\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" [SerializeField] [Range(0.2f, 0.8f)] private float safeArcRatio = 0.35f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" [Tooltip(\"Chance to spawn from arena edges instead of around player\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" [SerializeField] [Range(0f, 1f)] private float edgeSpawnChance = 0.6f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" [Tooltip(\"Chance to spawn enemies in clusters\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" [SerializeField] [Range(0f, 1f)] private float clusterChance = 0.25f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" [SerializeField] private float clusterRadius = 2f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" [SerializeField] private int clusterSize = 3;\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" [Header(\"Pooling\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" [SerializeField] private int initialPoolSize = 50;\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" [SerializeField] private int maxPoolSize = 200;\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" [Header(\"References\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" [SerializeField] private Transform player;\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" private int currentWave = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" private int enemiesAlive = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" private bool waveInProgress = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" // Cached values to avoid allocations\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" private WaitForSeconds waveWait;\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" private string poolId;\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" // Spawn pattern state\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" private float currentSafeAngle; // Direction player is facing/moving - we spawn AWAY from this\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" // Public Accessors for Debug UI\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" public int CurrentWave => currentWave;\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" public int EnemiesAlive => enemiesAlive;\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" public bool WaveInProgress => waveInProgress;\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" /// Debug setter for the debug menu.\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" public void DebugSetWave(int wave) => currentWave = Mathf.Max(0, wave);\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" void Start()\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" if (player == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" var playerController = FindFirstObjectByType();\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" if (playerController != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" player = playerController.transform;\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" // Pre-cache wait to avoid GC allocation each wave\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" waveWait = new WaitForSeconds(timeBetweenWaves);\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" // Initialize enemy pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" if (scorpionPrefab != null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" poolId = scorpionPrefab.name;\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" PoolingSystem.Instance?.CreatePool(scorpionPrefab, initialPoolSize, true, maxPoolSize);\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" GameEvents.OnEnemyKilled += OnEnemyDied;\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" StartCoroutine(WaveController());\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" void OnDestroy() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" GameEvents.OnEnemyKilled -= OnEnemyDied;\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" private IEnumerator WaveController() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" while (true) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" // Wait between waves (uses cached WaitForSeconds)\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" yield return waveWait;\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" // Start new wave\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" currentWave++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" SpawnWave();\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" // Wait for wave to be cleared\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" while (waveInProgress) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" yield return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" private void SpawnWave() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" int enemiesToSpawn = Mathf.RoundToInt(baseEnemiesPerWave * Mathf.Pow(enemyIncreasePerWave, currentWave - 1));\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" #if UNITY_EDITOR || DEVELOPMENT_BUILD\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" GameEvents.DebugLog($\"Starting Wave {currentWave}: {enemiesToSpawn} enemies\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" #endif\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" waveInProgress = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" // Update safe angle based on player's facing direction\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" UpdateSafeAngle();\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" int i = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" while (i < enemiesToSpawn)\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" // Decide spawn pattern\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" float roll = Random.value;\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" if (roll < clusterChance && i + clusterSize <= enemiesToSpawn)\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" // Spawn a cluster\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" Vector2 clusterCenter = GetSpawnPosition();\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" int actualClusterSize = Random.Range(clusterSize / 2, clusterSize + 1);\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" for (int j = 0; j < actualClusterSize && i < enemiesToSpawn; j++)\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" Vector2 offset = Random.insideUnitCircle * clusterRadius;\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" Vector2 spawnPos = clusterCenter + offset;\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" SpawnEnemy(spawnPos);\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" i++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" // Spawn individual enemy\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" Vector2 spawnPos = GetSpawnPosition();\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" SpawnEnemy(spawnPos);\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" i++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" private void SpawnEnemy(Vector2 position)\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" // Use pooling system instead of Instantiate\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" GameObject enemy = PoolingSystem.Instance?.Get(poolId, position, Quaternion.identity);\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" // Fallback to Instantiate if pooling not available\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" if (enemy == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" GameEvents.DebugLog(\"Pooling system not available or pool empty, instantiating enemy directly.\", DebugCategory.EnemyAI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" Instantiate(scorpionPrefab, (Vector3)position, Quaternion.identity);\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" enemiesAlive++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" private void UpdateSafeAngle()\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" // Try to get player's movement direction or facing direction\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" var playerRb = player.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" if (playerRb != null && playerRb.linearVelocity.sqrMagnitude > 0.1f)\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" // Player is moving - keep their path clear\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" currentSafeAngle = Mathf.Atan2(playerRb.linearVelocity.y, playerRb.linearVelocity.x) * Mathf.Rad2Deg;\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" // Player is stationary - pick a random safe direction\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" currentSafeAngle = Random.Range(0f, 360f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" private Vector2 GetSpawnPosition()\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" if (Random.value < edgeSpawnChance)\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" return GetEdgeSpawnPosition();\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" return GetArcSpawnPosition();\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" /// Spawn from arena edges (not surrounding player).\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" private Vector2 GetEdgeSpawnPosition()\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" Vector2 arenaCenter = player != null ? (Vector2)player.position : Vector2.zero;\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" // Pick a random edge (0=top, 1=right, 2=bottom, 3=left)\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" int edge = Random.Range(0, 4);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" float t = Random.value; // Position along edge (0-1)\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" Vector2 spawnPos;\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" float halfWidth = arenaSize.x * 0.5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" float halfHeight = arenaSize.y * 0.5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" switch (edge)\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" case 0: // Top\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" spawnPos = new Vector2(Mathf.Lerp(-halfWidth, halfWidth, t), halfHeight);\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" break;\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" case 1: // Right\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" spawnPos = new Vector2(halfWidth, Mathf.Lerp(-halfHeight, halfHeight, t));\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" break;\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" case 2: // Bottom\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" spawnPos = new Vector2(Mathf.Lerp(-halfWidth, halfWidth, t), -halfHeight);\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" break;\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" default: // Left\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" spawnPos = new Vector2(-halfWidth, Mathf.Lerp(-halfHeight, halfHeight, t));\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" break;\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" return arenaCenter + spawnPos;\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" /// Spawn in an arc AWAY from player's safe direction (leaves escape route).\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" private Vector2 GetArcSpawnPosition()\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" // Calculate spawn arc (opposite of safe direction)\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" float spawnArcCenter = currentSafeAngle + 180f; // Opposite direction\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" float arcHalfWidth = (1f - safeArcRatio) * 180f; // How wide the spawn arc is\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" // Random angle within the spawn arc\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" float angle = spawnArcCenter + Random.Range(-arcHalfWidth, arcHalfWidth);\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" angle *= Mathf.Deg2Rad;\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" float distance = Random.Range(minSpawnDistance, spawnRadius);\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" Vector2 offset = new Vector2(\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" Mathf.Cos(angle) * distance,\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" Mathf.Sin(angle) * distance\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" );\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" return (Vector2)player.position + offset;\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" private void OnEnemyDied(Enemy enemy) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" enemiesAlive--;\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" if (enemiesAlive <= 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" waveInProgress = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" #if UNITY_EDITOR || DEVELOPMENT_BUILD\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" GameEvents.DebugLog($\"Wave {currentWave} cleared!\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" #endif\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_LITtlPj8YcnxOaYApWyBOfn7__vscode-1774363162415":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":331,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/PlayerStats.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":331},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":330,"text":"using System;\n","references":[],"lineBreakBefore":true}],"props":{"priority":330},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":329,"text":"using System.Collections.Generic;\n","references":[],"lineBreakBefore":true}],"props":{"priority":329},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":328,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":328},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":327,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":327},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":326,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":326},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":325,"text":"/// Pure C# class that manages all player statistics.\n","references":[],"lineBreakBefore":true}],"props":{"priority":325},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":324,"text":"/// Handles base stats, modifiers from upgrades, and recalculation.\n","references":[],"lineBreakBefore":true}],"props":{"priority":324},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":323,"text":"/// NOT a MonoBehaviour - PlayerController holds an instance of this.\n","references":[],"lineBreakBefore":true}],"props":{"priority":323},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":322,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":322},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":321,"text":"[System.Serializable]\n","references":[],"lineBreakBefore":true}],"props":{"priority":321},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":320,"text":"public class PlayerStats {\n","references":[],"lineBreakBefore":true}],"props":{"priority":320},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":319,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":319},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":318,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":318},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":317,"text":" // BASE STATS (Never change after init)\n","references":[],"lineBreakBefore":true}],"props":{"priority":317},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":316,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":316},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":315,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":315},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":314,"text":" [Header(\"Base Stats\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":314},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":313,"text":" [SerializeField] private float baseMaxHP = 100f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":313},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":312,"text":" [SerializeField] private float baseDamage = 5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":312},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":311,"text":" [SerializeField] private float baseSpeed = 15f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":311},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":310,"text":" [SerializeField] private float baseAttackSpeed = 1.2f; // Attacks per second\n","references":[],"lineBreakBefore":true}],"props":{"priority":310},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":309,"text":" [SerializeField] private float baseCritChance = 0.08f; // 8%\n","references":[],"lineBreakBefore":true}],"props":{"priority":309},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":308,"text":" [SerializeField] private float baseCritMultiplier = 1.5f; // 1.5x damage\n","references":[],"lineBreakBefore":true}],"props":{"priority":308},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":307,"text":" [SerializeField] private float baseArmor = 5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":307},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":306,"text":" [SerializeField] private bool debugMode = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":306},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":305,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":305},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":304,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":304},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":303,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":303},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":302,"text":" // CURRENT STATS (Recalculated when upgrades applied)\n","references":[],"lineBreakBefore":true}],"props":{"priority":302},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":301,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":301},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":300,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":300},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":299,"text":" // Health\n","references":[],"lineBreakBefore":true}],"props":{"priority":299},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":298,"text":" public float currentMaxHP { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":298},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":297,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":297},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":296,"text":" // Damage\n","references":[],"lineBreakBefore":true}],"props":{"priority":296},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":295,"text":" public float currentDamage { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":295},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":294,"text":" public float currentCritChance { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":294},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":293,"text":" public float currentCritMultiplier { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":293},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":292,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":292},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":291,"text":" // Speed\n","references":[],"lineBreakBefore":true}],"props":{"priority":291},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":290,"text":" public float currentSpeed { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":290},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":289,"text":" public float currentAttackSpeed { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":289},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":288,"text":" public float currentDashCooldown { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":288},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":287,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":287},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":286,"text":" // Defense\n","references":[],"lineBreakBefore":true}],"props":{"priority":286},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":285,"text":" public float currentArmor { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":285},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":284,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":284},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":283,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":283},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":282,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":282},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":281,"text":" // UPGRADE TRACKING\n","references":[],"lineBreakBefore":true}],"props":{"priority":281},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":280,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":280},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":279,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":279},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":278,"text":" private List appliedUpgrades = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":278},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":277,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":277},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":276,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":276},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":275,"text":" /// Get read-only list of all upgrades applied this run.\n","references":[],"lineBreakBefore":true}],"props":{"priority":275},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":274,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":274},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":273,"text":" public IReadOnlyList AppliedUpgrades => appliedUpgrades.AsReadOnly();\n","references":[],"lineBreakBefore":true}],"props":{"priority":273},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":272,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":272},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":271,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":271},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":270,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":270},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":269,"text":" // CONSTRUCTOR\n","references":[],"lineBreakBefore":true}],"props":{"priority":269},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":268,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":268},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":267,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":267},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":266,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":266},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":265,"text":" /// Initialize stats with default base values.\n","references":[],"lineBreakBefore":true}],"props":{"priority":265},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":264,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":264},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":263,"text":" public PlayerStats() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":263},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":" // Use default base values\n","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":" RecalculateStats();\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":" /// Initialize stats with custom base values (for different characters).\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":" public PlayerStats(float maxHP, float damage, float speed, float attackSpeed) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":" baseMaxHP = maxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" baseDamage = damage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" baseSpeed = speed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" baseAttackSpeed = attackSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" RecalculateStats();\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" // UPGRADE SYSTEM\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" /// Apply an upgrade to the player's stats.\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" /// Automatically recalculates all current stats.\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" public void ApplyUpgrade(UpgradeData upgrade) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" if (upgrade == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" GameEvents.DebugLog(\"Attempted to apply null upgrade\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" // Capture stats before upgrade for comparison\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" string beforeStats = GetStatsDebugString();\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" appliedUpgrades.Add(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" RecalculateStats();\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" // Log upgrade application with before/after comparison\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" GameEvents.DebugLog($\"=== UPGRADE APPLIED ===\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" GameEvents.DebugLog($\"Upgrade: {upgrade.upgradeName} (Type: {upgrade.type})\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" GameEvents.DebugLog($\"Modifiers: HP+{upgrade.healthBonus} ({upgrade.healthMultiplier:F2}x), DMG+{upgrade.damageBonus} ({upgrade.damageMultiplier:F2}x)\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" GameEvents.DebugLog($\"Speed: {upgrade.speedMultiplier:F2}x, AtkSpd: {upgrade.attackSpeedMultiplier:F2}x, CDR: {upgrade.cooldownReduction:P0}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" GameEvents.DebugLog($\"Crit: +{upgrade.critChanceBonus:P1} chance, +{upgrade.critDamageBonus:F2}x mult, Armor+{upgrade.armorBonus}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" GameEvents.DebugLog($\"BEFORE: {beforeStats}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" GameEvents.DebugLog($\"AFTER: {GetStatsDebugString()}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" GameEvents.DebugLog($\"Total upgrades applied: {appliedUpgrades.Count}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" /// Recalculate all current stats based on base stats + all applied upgrades.\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" /// Call this after applying upgrades or changing base stats.\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" private void RecalculateStats() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" // Start with base values\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" currentMaxHP = baseMaxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" currentDamage = baseDamage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" currentSpeed = baseSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" currentAttackSpeed = baseAttackSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" currentCritChance = baseCritChance;\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" currentCritMultiplier = baseCritMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" currentArmor = baseArmor;\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" currentDashCooldown = 2f; // Default dash cooldown\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" // Apply all upgrades\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" foreach (UpgradeData upgrade in appliedUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" ApplyUpgradeModifiers(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" // Clamp values to reasonable ranges\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" currentCritChance = Mathf.Clamp01(currentCritChance); // 0-100%\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" currentSpeed = Mathf.Max(1f, currentSpeed); // Minimum speed\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" currentAttackSpeed = Mathf.Max(0.1f, currentAttackSpeed); // Minimum attack speed\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" currentDashCooldown = Mathf.Max(0.1f, currentDashCooldown); // Minimum cooldown\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" GameEvents.DebugLog($\"Stats recalculated: {GetStatsDebugString()}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" /// Get a compact debug string of current stats for logging.\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" private string GetStatsDebugString() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" return $\"HP:{currentMaxHP:F0} DMG:{currentDamage:F1} SPD:{currentSpeed:F1} ASPD:{currentAttackSpeed:F2} CRIT:{currentCritChance:P0}/{currentCritMultiplier:F1}x ARM:{currentArmor:F0} DASH:{currentDashCooldown:F2}s\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" /// Apply a single upgrade's modifiers to current stats.\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" private void ApplyUpgradeModifiers(UpgradeData upgrade) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" // Additive bonuses (flat amounts)\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" currentMaxHP += upgrade.healthBonus;\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" currentDamage += upgrade.damageBonus;\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" currentArmor += upgrade.armorBonus;\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" // Multiplicative bonuses (percentages)\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" currentDamage *= upgrade.damageMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" currentSpeed *= upgrade.speedMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" currentAttackSpeed *= upgrade.attackSpeedMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" currentMaxHP *= upgrade.healthMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" // Cooldown reduction (note: reduction, not multiplier)\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" currentDashCooldown *= (1f - upgrade.cooldownReduction);\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" // Crit stats\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" currentCritChance += upgrade.critChanceBonus;\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" currentCritMultiplier += upgrade.critDamageBonus;\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" // RESET SYSTEM (For new runs)\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" /// Reset all stats to base values (use when starting new run).\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" public void ResetStats() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" int previousUpgradeCount = appliedUpgrades.Count;\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" appliedUpgrades.Clear();\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" RecalculateStats();\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" GameEvents.DebugLog($\"=== STATS RESET ===\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" GameEvents.DebugLog($\"Cleared {previousUpgradeCount} upgrades, returned to base values\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" GameEvents.DebugLog($\"Current: {GetStatsDebugString()}\", DebugCategory.PlayerStats);\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" // UTILITY METHODS\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" /// Calculate final damage for an attack, including crit chance.\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" public float CalculateDamage() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" float damage = currentDamage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" // Roll for crit\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" if (UnityEngine.Random.value < currentCritChance) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" damage *= currentCritMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" GameEvents.DebugLog($\"CRIT! Damage: {damage}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" return damage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" /// Calculate damage reduction from armor.\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" /// Formula: Damage Reduction = Armor / (Armor + 100)\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" /// This gives diminishing returns (100 armor = 50% reduction, 200 = 66%, etc.)\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" public float CalculateDamageReduction() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" return currentArmor / (currentArmor + 100f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" /// Apply armor damage reduction to incoming damage.\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" public float ApplyArmorToDamage(float incomingDamage) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" float reduction = CalculateDamageReduction();\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" float finalDamage = incomingDamage * (1f - reduction);\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" return Mathf.Max(1f, finalDamage); // Minimum 1 damage\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" /// Get total number of upgrades applied this run.\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" public int GetUpgradeCount() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" return appliedUpgrades.Count;\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" /// Get number of upgrades of a specific type.\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" public int GetUpgradeCountByType(UpgradeType type) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" int count = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" foreach (UpgradeData upgrade in appliedUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" if (upgrade.type == type) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" count++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" return count;\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" /// Check if player has a specific upgrade.\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" public bool HasUpgrade(UpgradeData upgrade) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" return appliedUpgrades.Contains(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" // DEBUG / SERIALIZATION\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" /// Debug setters for the debug menu. Use with caution - bypasses normal stat calculation.\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" public void DebugSetMaxHP(float value) => currentMaxHP = Mathf.Max(1f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" public void DebugSetDamage(float value) => currentDamage = Mathf.Max(0f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" public void DebugSetSpeed(float value) => currentSpeed = Mathf.Max(1f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" public void DebugSetAttackSpeed(float value) => currentAttackSpeed = Mathf.Max(0.1f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" public void DebugSetCritChance(float value) => currentCritChance = Mathf.Clamp01(value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" public void DebugSetCritMultiplier(float value) => currentCritMultiplier = Mathf.Max(1f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" public void DebugSetArmor(float value) => currentArmor = Mathf.Max(0f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" public void DebugSetDashCooldown(float value) => currentDashCooldown = Mathf.Max(0.1f, value);\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" /// Get a formatted string of all current stats (for debug UI).\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" public string GetStatsString() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" return $\"=== PLAYER STATS ===\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" $\"Max HP: {currentMaxHP:F0}\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" $\"Damage: {currentDamage:F1}\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" $\"Speed: {currentSpeed:F1}\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" $\"Attack Speed: {currentAttackSpeed:F2} attacks/sec\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" $\"Crit Chance: {currentCritChance * 100f:F1}%\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" $\"Crit Multiplier: {currentCritMultiplier:F1}x\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" $\"Armor: {currentArmor:F0} ({CalculateDamageReduction() * 100f:F1}% reduction)\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" $\"Dash Cooldown: {currentDashCooldown:F2}s\\n\" +\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" $\"Upgrades Applied: {appliedUpgrades.Count}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" /// Serialize stats for saving (returns data that can be saved to JSON).\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" public PlayerStatsData Serialize() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" return new PlayerStatsData {\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" appliedUpgradeIDs = appliedUpgrades.ConvertAll(u => u.upgradeID)\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" };\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" /// Deserialize stats from save data (rebuild stats from saved upgrade IDs).\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" public void Deserialize(PlayerStatsData data, List allUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" appliedUpgrades.Clear();\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" // Rebuild upgrades from IDs\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" foreach (string upgradeID in data.appliedUpgradeIDs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" UpgradeData upgrade = allUpgrades.Find(u => u.upgradeID == upgradeID);\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" if (upgrade != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" appliedUpgrades.Add(upgrade);\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" RecalculateStats();\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":"// ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":"// SERIALIZATION DATA CLASS\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"// ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"/// Data structure for saving/loading player stats.\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":"[System.Serializable]\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":"public class PlayerStatsData {\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" public List appliedUpgradeIDs = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":331,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":331},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_UNuLGFvjRPNVhlouavyJipMJ__vscode-1774363162416":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Art/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Art.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Audio/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Audio.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Data/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Data.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Materials.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Prefabs/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Prefabs.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scenes/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scenes.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scripts/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scripts.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"UI/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"UI.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_54gfgwkVQ5DYtx4gGKF9aKdR__vscode-1774363162417":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"Rwe","children":[{"type":2,"priority":9007199254740991,"text":"No files found","lineBreakBefore":false}],"props":{},"references":[]}}}]},"call_livfOw5qGp638egdU14oA8fX__vscode-1774363162418":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"Rwe","children":[{"type":2,"priority":9007199254740991,"text":"No files found","lineBreakBefore":false}],"props":{},"references":[]}}}]},"call_49ALcudiGHzMI3EOJrwq6mgT__vscode-1774363162419":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Enemies/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Enemies.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Player.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"StatusEffects/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"StatusEffects.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Upgrades/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Upgrades.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Weapons.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_RbTxookB5UdDYnHihNC7RswP__vscode-1774363162420":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Camera/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Camera.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Enemies/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Enemies.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Player/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Player.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Projectiles.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"UI.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_tLC7h5CkdytsJnbfYVUJGGqn__vscode-1774363162421":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene.unity","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"GameScene.unity.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene/","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene.unity","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"TestScene.unity.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_567DielUsfJrtDQ6tQ5oyoq6__vscode-1774363162422":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scorpion.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scorpion.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_otv1JtENxOkC2Y5ZKnzhbIjs__vscode-1774363162423":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Adrenaline Surge.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Adrenaline Surge.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Attack Damage 20%.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Attack Damage 20%.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Berserker Rage.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Berserker Rage.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Chain Lightning.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Chain Lightning.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Combat Stimulants.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Combat Stimulants.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Devastating Blows.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Devastating Blows.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Efficient Systems.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Efficient Systems.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Emergency Protocols.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Emergency Protocols.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Executioner.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Executioner.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Exoskeleton.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Exoskeleton.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Explosive Finale.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Explosive Finale.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Extended Magazine.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Extended Magazine.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Glass Cannon.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Glass Cannon.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Heavy Caliber.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Heavy Caliber.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Iron Will.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Iron Will.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Juggernaut.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Juggernaut.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Life Leech.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Life Leech.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Momentum.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Momentum.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Overcharge.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Overcharge.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Precision Strike.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Precision Strike.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Quick Step.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Quick Step.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Reinforced Suit.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Reinforced Suit.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scavenger.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Scavenger.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Second Wind.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Second Wind.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Sharpened Claws.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Sharpened Claws.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Tactical Retreat.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Tactical Retreat.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Thick Skin.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Thick Skin.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Time Dilation Field.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Time Dilation Field.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Trigger Happy.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Trigger Happy.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Venom Rounds.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Venom Rounds.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Vitality Boost.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Vitality Boost.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_BUeIGGcq0jHH0RUlNKqj5x9u__vscode-1774363162424":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"dFt","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Fire.asset","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Fire.asset.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Fire.prefab","references":[],"lineBreakBefore":true}],"props":{},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9007199254740991,"text":"Fire.prefab.meta","references":[],"lineBreakBefore":true}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_AawmdzvbBVtaY13AV1OxAiZ5__vscode-1774363162425":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/EnemyData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/EnemyData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":"public enum EnemyMovementType\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" ChaseMovement,\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" FlyingMovement,\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" SwarmMovement\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":"public enum EnemyAttackType\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" Contact,\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" Ranged\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":"public enum EnemyType\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" Roach,\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" Ant,\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" Spider,\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" Fly,\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" Scorpion\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":"[CreateAssetMenu(menuName = \"Exterminator/EnemyData\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":"public class EnemyData : ScriptableObject {\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" public string enemyName;\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" public float maxHealth;\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" public float moveSpeed;\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" public int XPValue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" public float attackDamage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" public float attackCooldown = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" public GameObject prefab;\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" public EnemyMovementType MovementType;\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" public EnemyAttackType AttackType;\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"/*\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":"Example EnemyData:\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":"Health: 50\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"Speed: 3.5\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":"Damage: 10\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"XP Value: 15\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"Movement Type: \"Chase\"\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"Attack Type: \"Contact\"\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":"Attack Cooldown: 1.0s\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":"Detection Range: 69\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"Model Prefab: RoachModel\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"*/\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_Hx4omLVtQSFeY2vQ2cy1z09V__vscode-1774363162426":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/UpgradeData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":"/// ScriptableObject that defines an upgrade's properties.\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":"/// Create instances in Assets/_Project/Data/Upgrades/\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":"/// Right-click → Create → Game → Upgrade Data\n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":"[CreateAssetMenu(fileName = \"New Upgrade\", menuName = \"Exterminator/Upgrade Data\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":"public class UpgradeData : ScriptableObject {\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" [Header(\"Identification\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" [Tooltip(\"Unique ID for this upgrade (used for saving/loading)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" public string upgradeID;\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" [Tooltip(\"Display name shown to player\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" public string upgradeName;\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" [TextArea(3, 5)]\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" [Tooltip(\"Description shown in upgrade UI\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" public string description;\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" [Tooltip(\"Icon shown in upgrade UI\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" public Sprite icon;\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" [Header(\"Category\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" [Tooltip(\"Power, Defense, or Utility (determines which pool this upgrade appears in)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" public UpgradeType type;\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" [Header(\"Rarity\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" [Tooltip(\"Common, Rare, or Epic (affects spawn chance)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" public UpgradeRarity rarity = UpgradeRarity.Common;\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" // STAT MODIFIERS\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" [Header(\"Health Modifiers\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" [Tooltip(\"Flat HP bonus (e.g., +20 HP)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" public float healthBonus = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" [Tooltip(\"Multiplicative HP bonus (e.g., 1.1 = +10% max HP)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" public float healthMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" [Header(\"Damage Modifiers\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" [Tooltip(\"Flat damage bonus (e.g., +5 damage)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" public float damageBonus = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" [Tooltip(\"Multiplicative damage bonus (e.g., 1.2 = +20% damage)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" public float damageMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" [Tooltip(\"Crit chance increase (e.g., 0.1 = +10% crit chance)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" public float critChanceBonus = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" [Tooltip(\"Crit damage multiplier increase (e.g., 0.5 = crit does +0.5x more damage)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" public float critDamageBonus = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" [Header(\"Speed Modifiers\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" [Tooltip(\"Multiplicative movement speed (e.g., 1.15 = +15% speed)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" public float speedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" [Tooltip(\"Multiplicative attack speed (e.g., 1.2 = +20% faster attacks)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" public float attackSpeedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" [Tooltip(\"Cooldown reduction (e.g., 0.2 = -20% cooldowns)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" [Range(0f, 0.5f)]\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" public float cooldownReduction = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" [Header(\"Defense Modifiers\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" [Tooltip(\"Flat armor bonus (e.g., +10 armor)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" public float armorBonus = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" // SPECIAL EFFECTS (Phase 2+)\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" [Header(\"Special Effects (Optional)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" [Tooltip(\"Does this upgrade have a special effect beyond stat changes?\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" public bool hasSpecialEffect = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" [Tooltip(\"ID of special effect to apply (e.g., 'lifesteal', 'pierce', 'explode_on_kill')\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" public string specialEffectID;\n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" [TextArea(2, 3)]\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" [Tooltip(\"Description of special effect (for tooltip)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" public string specialEffectDescription;\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" // RESTRICTIONS (Optional)\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" [Header(\"Restrictions (Optional)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" [Tooltip(\"Maximum times this upgrade can be taken in one run (0 = unlimited)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" public int maxStacks = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" [Tooltip(\"Upgrades that cannot be taken with this one (mutually exclusive)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" public UpgradeData[] conflictingUpgrades;\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" [Tooltip(\"Upgrades required before this can appear\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" public UpgradeData[] requiredUpgrades;\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" // UTILITY METHODS\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" /// Get formatted tooltip text for UI display.\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" public string GetTooltipText() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" string tooltip = $\"{upgradeName}\\n\\n{description}\\n\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" // Add stat changes\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" if (healthBonus > 0) tooltip += $\"+{healthBonus} Max HP\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" if (healthMultiplier != 1f) tooltip += $\"+{(healthMultiplier - 1f) * 100f:F0}% Max HP\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" if (damageBonus > 0) tooltip += $\"+{damageBonus} Damage\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" if (damageMultiplier != 1f) tooltip += $\"+{(damageMultiplier - 1f) * 100f:F0}% Damage\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" if (critChanceBonus > 0) tooltip += $\"+{critChanceBonus * 100f:F0}% Crit Chance\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" if (critDamageBonus > 0) tooltip += $\"+{critDamageBonus * 100f:F0}% Crit Damage\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" if (speedMultiplier != 1f) tooltip += $\"+{(speedMultiplier - 1f) * 100f:F0}% Move Speed\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" if (attackSpeedMultiplier != 1f) tooltip += $\"+{(attackSpeedMultiplier - 1f) * 100f:F0}% Attack Speed\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" if (cooldownReduction > 0) tooltip += $\"-{cooldownReduction * 100f:F0}% Cooldowns\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" if (armorBonus > 0) tooltip += $\"+{armorBonus} Armor\\n\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" // Add special effect description\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" if (hasSpecialEffect && !string.IsNullOrEmpty(specialEffectDescription)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" tooltip += $\"\\n{specialEffectDescription}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" return tooltip;\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" /// Check if this upgrade can be taken (based on restrictions).\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" public bool CanBeTaken(PlayerStats stats) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" // Check max stacks\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" if (maxStacks > 0 && stats.HasUpgrade(this)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" int currentStacks = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" foreach (UpgradeData upgrade in stats.AppliedUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" if (upgrade == this) currentStacks++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" if (currentStacks >= maxStacks) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" // Check conflicting upgrades\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" foreach (UpgradeData conflict in conflictingUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" if (stats.HasUpgrade(conflict)) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" // Check required upgrades\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" foreach (UpgradeData required in requiredUpgrades) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" if (!stats.HasUpgrade(required)) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" return true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" // VALIDATION (Editor only)\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" #if UNITY_EDITOR\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" void OnValidate() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" // Auto-generate ID from name if empty\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" if (string.IsNullOrEmpty(upgradeID)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" upgradeID = name.ToLower().Replace(\" \", \"_\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" // Ensure multipliers are at least 1 (or 0 for reduction)\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" if (damageMultiplier < 0) damageMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" if (speedMultiplier < 0) speedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" if (attackSpeedMultiplier < 0) attackSpeedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" if (healthMultiplier < 0) healthMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" #endif\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"// ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":"// ENUMS\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"// ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":"/// Upgrade category (determines when/how it appears in upgrade choices).\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":"public enum UpgradeType {\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" Power, // Damage, attack speed, crit\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" Defense, // HP, armor, resistances\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" Utility // Movement speed, cooldowns, special effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"/// Upgrade rarity (affects spawn chance).\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"public enum UpgradeRarity {\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" Common, // 70% spawn chance\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" Rare, // 25% spawn chance\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" Epic // 5% spawn chance\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_f2fPPQFnoA5Uwzs7nOBoiK79__vscode-1774363162427":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/WeaponData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/WeaponData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":"[CreateAssetMenu(menuName = \"Exterminator/WeaponData\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":"public class WeaponData : ScriptableObject {\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" public string weaponName;\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_CRoaI5yPfFLCgQCtSE4o02z7__vscode-1774363162428":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Data/StatusEffectData.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":"/// Types of status effects that can be applied to entities.\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":"public enum StatusEffectType {\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" Fire,\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" Ice,\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" Poison,\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" Shock,\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" Bleed\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":"/// ScriptableObject that defines a status effect's properties.\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":"/// Create instances in Assets/_Project/Data/StatusEffects/\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":"/// Right-click → Create → Exterminator → Status Effect Data\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":"[CreateAssetMenu(fileName = \"NewStatusEffect\", menuName = \"Exterminator/Status Effect Data\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":"public class StatusEffectData : ScriptableObject {\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" // IDENTIFICATION\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" [Header(\"Identification\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" [Tooltip(\"The type of status effect\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" private StatusEffectType effectType;\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" [Tooltip(\"Display name for the effect\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" private string effectName;\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" // TIMING\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" [Header(\"Timing\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" [Tooltip(\"How long the effect lasts in seconds\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" private float duration = 5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" [Tooltip(\"How often the effect ticks (for DoT effects)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" private float tickInterval = 0.5f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" [Tooltip(\"Can this effect stack multiple times?\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" private bool canStack = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" [Tooltip(\"Max stacks if stacking is enabled\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" private int maxStacks = 1;\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" [Tooltip(\"Does applying refresh the duration?\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" private bool refreshDurationOnReapply = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" // DAMAGE OVER TIME\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" [Header(\"Damage Over Time\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" [Tooltip(\"Damage dealt per tick\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" private float damagePerTick = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" // MODIFIERS\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" [Header(\"Movement Modifier\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" [Tooltip(\"Multiplier for movement speed (0.5 = 50% slower, 1.0 = no change)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" [Range(0f, 2f)]\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" private float moveSpeedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" [Header(\"Damage Modifier\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" [Tooltip(\"Multiplier for damage taken while afflicted\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" [Range(0f, 3f)]\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" private float damageTakenMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" // SPREAD (Fire propagation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" [Header(\"Spread (Fire propagation)\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" [Tooltip(\"Can this effect spread to nearby entities?\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" private bool canSpread = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" [Tooltip(\"Radius to check for spread targets\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" private float spreadRadius = 2f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" [Tooltip(\"How long after initial application before spread starts\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" private float spreadDelay = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" [Tooltip(\"How long the spread window lasts\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" private float spreadDuration = 8f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" [Tooltip(\"Interval between spread attempts\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" private float spreadInterval = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" [Tooltip(\"Layer mask for spread targets\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" private LayerMask spreadTargetMask;\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" // VISUAL/AUDIO\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" [Header(\"Visual/Audio\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" [Tooltip(\"VFX prefab to spawn on target when effect is applied\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" private GameObject effectPrefab;\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" [SerializeField]\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" [Tooltip(\"Tint color for the visual effect\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" private Color effectTint = Color.white;\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" // PUBLIC ACCESSORS (Read-Only)\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" public StatusEffectType EffectType => effectType;\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" public string EffectName => effectName;\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" public float Duration => duration;\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" public float TickInterval => tickInterval;\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" public bool CanStack => canStack;\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" public int MaxStacks => maxStacks;\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" public bool RefreshDurationOnReapply => refreshDurationOnReapply;\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" public float DamagePerTick => damagePerTick;\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" public float MoveSpeedMultiplier => moveSpeedMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" public float DamageTakenMultiplier => damageTakenMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" public bool CanSpread => canSpread;\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" public float SpreadRadius => spreadRadius;\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" public float SpreadDelay => spreadDelay;\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" public float SpreadDuration => spreadDuration;\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" public float SpreadInterval => spreadInterval;\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" public LayerMask SpreadTargetMask => spreadTargetMask;\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" public GameObject EffectPrefab => effectPrefab;\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" public Color EffectTint => effectTint;\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_RJeSleph6eG5dfMkSRljBtgF__vscode-1774363162429":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":2,"priority":9007199254740991,"text":"File: `","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"`. Lines ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"1","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" to ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"360","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" (","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"378","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":" lines total): ","lineBreakBefore":false},{"type":2,"priority":9007199254740991,"text":"\n","lineBreakBefore":false},{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":362,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":362},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":361,"text":"using System.Collections.Generic;\n","references":[],"lineBreakBefore":true}],"props":{"priority":361},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":360,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":360},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":359,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":359},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":358,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":358},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":357,"text":"/// Manages active status effects on an entity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":357},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":356,"text":"/// Attach to any entity that can receive status effects (Player, Enemies).\n","references":[],"lineBreakBefore":true}],"props":{"priority":356},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":355,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":355},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":354,"text":"[RequireComponent(typeof(Health))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":354},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":353,"text":"public class StatusEffectController : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":353},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":352,"text":" [Header(\"Configuration\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":352},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":351,"text":" [SerializeField] private StatusResistanceData resistanceData;\n","references":[],"lineBreakBefore":true}],"props":{"priority":351},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":350,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":350},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":349,"text":" [Header(\"Debug\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":349},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":348,"text":" [SerializeField] private bool enableDebugLogs = false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":348},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":347,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":347},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":346,"text":" private Health health;\n","references":[],"lineBreakBefore":true}],"props":{"priority":346},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":345,"text":" private readonly Dictionary activeEffects = new Dictionary();\n","references":[],"lineBreakBefore":true}],"props":{"priority":345},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":344,"text":" private readonly List effectsToRemove = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":344},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":343,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":343},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":342,"text":" // Cached component references for modifiers\n","references":[],"lineBreakBefore":true}],"props":{"priority":342},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":341,"text":" private IMovementModifiable movementComponent;\n","references":[],"lineBreakBefore":true}],"props":{"priority":341},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":340,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":340},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":339,"text":" // Pre-allocated for spread detection\n","references":[],"lineBreakBefore":true}],"props":{"priority":339},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":338,"text":" private const int MAX_SPREAD_HITS = 16;\n","references":[],"lineBreakBefore":true}],"props":{"priority":338},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":337,"text":" private Collider2D[] spreadHitBuffer = new Collider2D[MAX_SPREAD_HITS];\n","references":[],"lineBreakBefore":true}],"props":{"priority":337},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":336,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":336},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":335,"text":" // Aggregate modifiers (recalculated when effects change)\n","references":[],"lineBreakBefore":true}],"props":{"priority":335},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":334,"text":" public float MoveSpeedMultiplier { get; private set; } = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":334},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":333,"text":" public float DamageTakenMultiplier { get; private set; } = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":333},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":332,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":332},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":331,"text":" void Awake() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":331},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":330,"text":" health = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":330},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":329,"text":" movementComponent = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":329},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":328,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":328},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":327,"text":" if (resistanceData != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":327},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":326,"text":" resistanceData.Initialize();\n","references":[],"lineBreakBefore":true}],"props":{"priority":326},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":325,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":325},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":324,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":324},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":323,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":323},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":322,"text":" void Update() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":322},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":321,"text":" // Performance optimization: Early exit if no active effects\n","references":[],"lineBreakBefore":true}],"props":{"priority":321},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":320,"text":" // Critical for maintaining 60 FPS with 2000+ enemies\n","references":[],"lineBreakBefore":true}],"props":{"priority":320},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":319,"text":" if (activeEffects.Count == 0) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":319},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":318,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":318},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":317,"text":" effectsToRemove.Clear();\n","references":[],"lineBreakBefore":true}],"props":{"priority":317},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":316,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":316},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":315,"text":" foreach (var kvp in activeEffects) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":315},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":314,"text":" var effect = kvp.Value;\n","references":[],"lineBreakBefore":true}],"props":{"priority":314},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":313,"text":" effect.UpdateTick(Time.deltaTime);\n","references":[],"lineBreakBefore":true}],"props":{"priority":313},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":312,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":312},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":311,"text":" // Handle damage ticks\n","references":[],"lineBreakBefore":true}],"props":{"priority":311},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":310,"text":" if (effect.Data.DamagePerTick > 0 && effect.ShouldTick()) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":310},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":309,"text":" float damage = effect.GetTotalDamagePerTick();\n","references":[],"lineBreakBefore":true}],"props":{"priority":309},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":308,"text":" health.TakeDamage(damage, transform.position, Vector2.zero);\n","references":[],"lineBreakBefore":true}],"props":{"priority":308},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":307,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":307},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":306,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":306},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":305,"text":" GameEvents.DebugLog($\"[StatusEffect] {effect.Data.EffectName} dealt {damage} damage to {gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":305},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":304,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":304},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":303,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":303},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":302,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":302},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":301,"text":" // Handle spread (fire propagation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":301},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":300,"text":" if (effect.ShouldSpread()) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":300},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":299,"text":" TrySpreadEffect(effect);\n","references":[],"lineBreakBefore":true}],"props":{"priority":299},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":298,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":298},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":297,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":297},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":296,"text":" // Mark expired effects for removal\n","references":[],"lineBreakBefore":true}],"props":{"priority":296},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":295,"text":" if (effect.IsExpired) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":295},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":294,"text":" effectsToRemove.Add(kvp.Key);\n","references":[],"lineBreakBefore":true}],"props":{"priority":294},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":293,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":293},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":292,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":292},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":291,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":291},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":290,"text":" // Remove expired effects (do NOT call RemoveEffect, handle cleanup directly here)\n","references":[],"lineBreakBefore":true}],"props":{"priority":290},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":289,"text":" foreach (var type in effectsToRemove) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":289},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":288,"text":" if (activeEffects.TryGetValue(type, out var effect)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":288},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":287,"text":" // Clean up visual - return to pool if possible\n","references":[],"lineBreakBefore":true}],"props":{"priority":287},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":286,"text":" if (effect.VisualInstance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":286},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":285,"text":" ReturnEffectVisual(effect.VisualInstance);\n","references":[],"lineBreakBefore":true}],"props":{"priority":285},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":284,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":284},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":283,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":283},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":282,"text":" activeEffects.Remove(type);\n","references":[],"lineBreakBefore":true}],"props":{"priority":282},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":281,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":281},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":280,"text":" // Fire event\n","references":[],"lineBreakBefore":true}],"props":{"priority":280},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":279,"text":" GameEvents.OnStatusEffectRemoved?.Invoke(gameObject, effect.Data);\n","references":[],"lineBreakBefore":true}],"props":{"priority":279},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":278,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":278},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":277,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":277},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":276,"text":" GameEvents.DebugLog($\"[StatusEffect] Removed expired {effect.Data.EffectName} from {gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":276},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":275,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":275},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":274,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":274},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":273,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":273},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":272,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":272},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":271,"text":" // Recalculate modifiers if any effects were removed\n","references":[],"lineBreakBefore":true}],"props":{"priority":271},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":270,"text":" if (effectsToRemove.Count > 0) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":270},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":269,"text":" RecalculateModifiers();\n","references":[],"lineBreakBefore":true}],"props":{"priority":269},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":268,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":268},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":267,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":267},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":266,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":266},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":265,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":265},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":264,"text":" /// Apply a status effect to this entity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":264},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":263,"text":" /// Returns true if the effect was applied, false if immune or resisted.\n","references":[],"lineBreakBefore":true}],"props":{"priority":263},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":" public bool ApplyEffect(StatusEffectData effectData, float durationMultiplier = 1f) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":" if (effectData == null) return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":" // Check immunity\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":" if (resistanceData != null && resistanceData.IsImmune(effectData.EffectType)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":" GameEvents.DebugLog($\"[StatusEffect] {gameObject.name} is immune to {effectData.EffectName}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" // Apply resistance to duration\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" float finalDuration = effectData.Duration * durationMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" if (resistanceData != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" finalDuration = resistanceData.ApplyResistance(effectData.EffectType, finalDuration);\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" // Duration reduced to zero means fully resisted\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" if (finalDuration <= 0f) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" GameEvents.DebugLog($\"[StatusEffect] {gameObject.name} fully resisted {effectData.EffectName}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" return false;\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" // Check if effect already exists\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" if (activeEffects.TryGetValue(effectData.EffectType, out var existingEffect)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" if (effectData.CanStack && existingEffect.CurrentStacks < effectData.MaxStacks) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" existingEffect.AddStack();\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" GameEvents.DebugLog($\"[StatusEffect] {effectData.EffectName} stacked on {gameObject.name} (x{existingEffect.CurrentStacks})\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" if (effectData.RefreshDurationOnReapply) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" existingEffect.RefreshDuration();\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" RecalculateModifiers();\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" return true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" // Create new effect\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" var newEffect = new ActiveStatusEffect(effectData, finalDuration);\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" activeEffects[effectData.EffectType] = newEffect;\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" // Spawn visual effect using pooling\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" if (effectData.EffectPrefab != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" SpawnEffectVisual(newEffect);\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" else if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" GameEvents.DebugLog($\"[StatusEffect] No EffectPrefab assigned for {effectData.EffectName}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" RecalculateModifiers();\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" // Fire event for UI/audio\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" GameEvents.OnStatusEffectApplied?.Invoke(gameObject, effectData);\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" GameEvents.DebugLog($\"[StatusEffect] Applied {effectData.EffectName} to {gameObject.name} for {finalDuration}s\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" return true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" /// Remove a specific status effect.\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" public void RemoveEffect(StatusEffectType type) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":" if (activeEffects.TryGetValue(type, out var effect)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" // Clean up visual - return to pool if possible\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":" if (effect.VisualInstance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" ReturnEffectVisual(effect.VisualInstance);\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" activeEffects.Remove(type);\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" RecalculateModifiers();\n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" // Fire event\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" GameEvents.OnStatusEffectRemoved?.Invoke(gameObject, effect.Data);\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" GameEvents.DebugLog($\"[StatusEffect] Removed {effect.Data.EffectName} from {gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" /// Remove all active status effects.\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" public void ClearAllEffects() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" foreach (var effect in activeEffects.Values) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" if (effect.VisualInstance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" ReturnEffectVisual(effect.VisualInstance);\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" activeEffects.Clear();\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" RecalculateModifiers();\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":" /// Check if entity has a specific effect type active.\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" public bool HasEffect(StatusEffectType type) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":" return activeEffects.ContainsKey(type);\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" /// Get the active effect of a specific type, or null if not present.\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":" public ActiveStatusEffect GetEffect(StatusEffectType type) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" return activeEffects.TryGetValue(type, out var effect) ? effect : null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":" private void TrySpreadEffect(ActiveStatusEffect effect) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" if (effect.Data.SpreadTargetMask.value == 0) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" int hitCount = Physics2D.OverlapCircleNonAlloc(\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" transform.position, \n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" effect.Data.SpreadRadius, \n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":" spreadHitBuffer, \n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" effect.Data.SpreadTargetMask\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" );\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" for (int i = 0; i < hitCount; i++) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" var col = spreadHitBuffer[i];\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" if (col == null || col.gameObject == gameObject) continue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" var targetController = col.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" if (targetController != null && !targetController.HasEffect(effect.Data.EffectType)) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" targetController.ApplyEffect(effect.Data);\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" GameEvents.DebugLog($\"[StatusEffect] {effect.Data.EffectName} spread from {gameObject.name} to {col.gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" private void RecalculateModifiers() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" MoveSpeedMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" DamageTakenMultiplier = 1f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" foreach (var effect in activeEffects.Values) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":" MoveSpeedMultiplier *= effect.Data.MoveSpeedMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" DamageTakenMultiplier *= effect.Data.DamageTakenMultiplier;\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" // Notify movement component of change\n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" movementComponent?.SetSpeedMultiplier(MoveSpeedMultiplier);\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" /// Spawn a visual effect from pool and attach it to follow this entity.\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":" private void SpawnEffectVisual(ActiveStatusEffect effect) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" // Validate prefab reference\n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" if (effect.Data.EffectPrefab == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" GameEvents.DebugLog($\"[StatusEffect] EffectPrefab is NULL for {effect.Data.EffectName}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" GameObject vfxInstance = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" GameEvents.DebugLog($\"[StatusEffect] SpawnEffectVisual called for {effect.Data.EffectName} on {gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" GameEvents.DebugLog($\"[StatusEffect] EffectPrefab: {effect.Data.EffectPrefab.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" // Try to use pooling system\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" if (PoolingSystem.Instance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" GameEvents.DebugLog($\"[StatusEffect] PoolingSystem found, attempting to get VFX from pool\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":" vfxInstance = PoolingSystem.Instance.Get(\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" effect.Data.EffectPrefab,\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" transform.position,\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" Quaternion.identity\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" );\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" GameEvents.DebugLog($\"[StatusEffect] PoolingSystem.Get returned: {vfxInstance?.name ?? \"NULL\"}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" catch (System.Exception ex) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" GameEvents.DebugLog($\"[StatusEffect] PoolingSystem.Get failed: {ex.Message}. Falling back to Instantiate.\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" vfxInstance = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" // Fallback to instantiate if pooling failed or not available\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" if (vfxInstance == null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" GameEvents.DebugLog($\"[StatusEffect] Using Instantiate as fallback\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":" vfxInstance = Instantiate(effect.Data.EffectPrefab, transform.position, Quaternion.identity);\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" GameEvents.DebugLog($\"[StatusEffect] Instantiate returned: {vfxInstance?.name ?? \"NULL\"}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" if (vfxInstance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" GameEvents.DebugLog($\"[StatusEffect] VFX instance created successfully: {vfxInstance.name}, active: {vfxInstance.activeSelf}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" // Set up VFX to follow this entity\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" var vfxComponent = vfxInstance.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":" if (vfxComponent != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" GameEvents.DebugLog($\"[StatusEffect] StatusEffectVFX component found, setting follow target to {gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" vfxComponent.SetFollowTarget(transform);\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":" else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" // Fallback: parent it if no VFX component\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" GameEvents.DebugLog($\"[StatusEffect] VFX prefab missing StatusEffectVFX component, using parent fallback\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" vfxInstance.transform.SetParent(transform);\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" vfxInstance.transform.localPosition = Vector3.zero;\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" effect.VisualInstance = vfxInstance;\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" GameEvents.DebugLog($\"[StatusEffect] ✓ Successfully spawned and attached VFX for {effect.Data.EffectName} on {gameObject.name}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" GameEvents.DebugLog($\"[StatusEffect] ✗ FAILED to spawn VFX - vfxInstance is NULL!\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" /// Return a visual effect to the pool.\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" private void ReturnEffectVisual(GameObject vfxInstance) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" if (vfxInstance == null) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" try {\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" // Stop following before returning to pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" var vfxComponent = vfxInstance.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" if (vfxComponent != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" vfxComponent.StopFollowing();\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" // Try to return to pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":" if (PoolingSystem.Instance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":362,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":362},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_HsyqvBQob5fZE9wmUpuk8Sy5__vscode-1774363162430":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":317,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/PoolingSystem.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":317},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":316,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":316},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":315,"text":"using System.Collections.Generic;\n","references":[],"lineBreakBefore":true}],"props":{"priority":315},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":314,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":314},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":313,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":313},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":312,"text":"/// High-performance object pooling system to eliminate GC allocations from Instantiate/Destroy.\n","references":[],"lineBreakBefore":true}],"props":{"priority":312},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":311,"text":"/// Use for frequently spawned objects like enemies, projectiles, VFX, etc.\n","references":[],"lineBreakBefore":true}],"props":{"priority":311},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":310,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":310},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":309,"text":"public class PoolingSystem : MonoBehaviour\n","references":[],"lineBreakBefore":true}],"props":{"priority":309},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":308,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":308},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":307,"text":" public static PoolingSystem Instance { get; private set; }\n","references":[],"lineBreakBefore":true}],"props":{"priority":307},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":306,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":306},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":305,"text":" [System.Serializable]\n","references":[],"lineBreakBefore":true}],"props":{"priority":305},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":304,"text":" public class PoolConfig\n","references":[],"lineBreakBefore":true}],"props":{"priority":304},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":303,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":303},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":302,"text":" public string poolId;\n","references":[],"lineBreakBefore":true}],"props":{"priority":302},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":301,"text":" public GameObject prefab;\n","references":[],"lineBreakBefore":true}],"props":{"priority":301},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":300,"text":" public int initialSize = 20;\n","references":[],"lineBreakBefore":true}],"props":{"priority":300},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":299,"text":" public bool expandable = true;\n","references":[],"lineBreakBefore":true}],"props":{"priority":299},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":298,"text":" public int maxSize = 100;\n","references":[],"lineBreakBefore":true}],"props":{"priority":298},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":297,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":297},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":296,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":296},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":295,"text":" [Header(\"Pool Configurations\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":295},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":294,"text":" [SerializeField] private List poolConfigs = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":294},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":293,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":293},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":292,"text":" // Dictionaries for fast lookup\n","references":[],"lineBreakBefore":true}],"props":{"priority":292},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":291,"text":" private Dictionary> pools = new Dictionary>();\n","references":[],"lineBreakBefore":true}],"props":{"priority":291},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":290,"text":" private Dictionary configLookup = new Dictionary();\n","references":[],"lineBreakBefore":true}],"props":{"priority":290},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":289,"text":" private Dictionary activeObjectToPoolId = new Dictionary();\n","references":[],"lineBreakBefore":true}],"props":{"priority":289},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":288,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":288},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":287,"text":" // Pre-allocated list to avoid allocations during pool operations\n","references":[],"lineBreakBefore":true}],"props":{"priority":287},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":286,"text":" private Transform poolContainer;\n","references":[],"lineBreakBefore":true}],"props":{"priority":286},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":285,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":285},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":284,"text":" void Awake()\n","references":[],"lineBreakBefore":true}],"props":{"priority":284},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":283,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":283},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":282,"text":" if (Instance != null && Instance != this)\n","references":[],"lineBreakBefore":true}],"props":{"priority":282},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":281,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":281},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":280,"text":" Destroy(gameObject);\n","references":[],"lineBreakBefore":true}],"props":{"priority":280},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":279,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":279},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":278,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":278},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":277,"text":" Instance = this;\n","references":[],"lineBreakBefore":true}],"props":{"priority":277},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":276,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":276},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":275,"text":" poolContainer = new GameObject(\"PooledObjects\").transform;\n","references":[],"lineBreakBefore":true}],"props":{"priority":275},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":274,"text":" poolContainer.SetParent(transform);\n","references":[],"lineBreakBefore":true}],"props":{"priority":274},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":273,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":273},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":272,"text":" InitializePools();\n","references":[],"lineBreakBefore":true}],"props":{"priority":272},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":271,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":271},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":270,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":270},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":269,"text":" void OnDestroy()\n","references":[],"lineBreakBefore":true}],"props":{"priority":269},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":268,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":268},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":267,"text":" if (Instance == this)\n","references":[],"lineBreakBefore":true}],"props":{"priority":267},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":266,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":266},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":265,"text":" Instance = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":265},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":264,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":264},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":263,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":263},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":" private void InitializePools()\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":" foreach (var config in poolConfigs)\n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":" CreatePool(config);\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" /// Create a new pool from configuration\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" public void CreatePool(PoolConfig config)\n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" if (pools.ContainsKey(config.poolId))\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" GameEvents.DebugWarning($\"Pool '{config.poolId}' already exists.\", DebugCategory.Pooling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" pools[config.poolId] = new Queue(config.initialSize);\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" configLookup[config.poolId] = config;\n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" // Pre-warm the pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" for (int i = 0; i < config.initialSize; i++)\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" CreatePooledObject(config);\n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" /// Create a pool at runtime from a prefab (auto-generates ID from prefab name)\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" public void CreatePool(GameObject prefab, int initialSize = 20, bool expandable = true, int maxSize = 100)\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" string poolId = prefab.name;\n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" if (pools.ContainsKey(poolId))\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" return; // Pool already exists\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" var config = new PoolConfig\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" poolId = poolId,\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" prefab = prefab,\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" initialSize = initialSize,\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" expandable = expandable,\n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" maxSize = maxSize\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" };\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" CreatePool(config);\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" private GameObject CreatePooledObject(PoolConfig config)\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" GameObject obj = Instantiate(config.prefab, poolContainer);\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" obj.SetActive(false);\n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" pools[config.poolId].Enqueue(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" return obj;\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":203},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":202,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":202},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":201,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":201},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":200,"text":" /// Get an object from the pool. Returns null if pool doesn't exist or is empty and non-expandable.\n","references":[],"lineBreakBefore":true}],"props":{"priority":200},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":199,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":199},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":198,"text":" public GameObject Get(string poolId, Vector3 position, Quaternion rotation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":198},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":197,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":197},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":196,"text":" if (!pools.TryGetValue(poolId, out var pool))\n","references":[],"lineBreakBefore":true}],"props":{"priority":196},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":195,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":195},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":194,"text":" GameEvents.DebugWarning($\"Pool '{poolId}' not found. Create it first or use Instantiate.\", DebugCategory.Pooling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":194},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":193,"text":" return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":193},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":192,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":192},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":191,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":191},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":190,"text":" GameObject obj = null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":190},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":189,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":189},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":188,"text":" // Try to get a valid object from the pool, skipping any destroyed ones\n","references":[],"lineBreakBefore":true}],"props":{"priority":188},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":187,"text":" while (pool.Count > 0 && obj == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":187},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":186,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":186},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":185,"text":" obj = pool.Dequeue();\n","references":[],"lineBreakBefore":true}],"props":{"priority":185},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":184,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":184},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":183,"text":" // Check if object was destroyed (can happen if prefab reference was lost)\n","references":[],"lineBreakBefore":true}],"props":{"priority":183},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":182,"text":" if (obj == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":182},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":181,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":181},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":180,"text":" GameEvents.DebugWarning($\"Found destroyed object in pool '{poolId}', skipping...\", DebugCategory.Pooling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":180},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":179,"text":" continue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":179},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":178,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":178},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":177,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":177},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":176,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":176},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":175,"text":" // If no valid object found, create a new one\n","references":[],"lineBreakBefore":true}],"props":{"priority":175},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":174,"text":" if (obj == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":174},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":173,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":173},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":172,"text":" var config = configLookup[poolId];\n","references":[],"lineBreakBefore":true}],"props":{"priority":172},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":171,"text":" if (!config.expandable)\n","references":[],"lineBreakBefore":true}],"props":{"priority":171},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":170,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":170},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":169,"text":" GameEvents.DebugWarning($\"Pool '{poolId}' is empty and not expandable.\", DebugCategory.Pooling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":169},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":168,"text":" return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":168},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":167,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":167},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":166,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":166},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":165,"text":" // Check max size limit\n","references":[],"lineBreakBefore":true}],"props":{"priority":165},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":164,"text":" if (activeObjectToPoolId.Count >= config.maxSize)\n","references":[],"lineBreakBefore":true}],"props":{"priority":164},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":163,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":163},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":162,"text":" GameEvents.DebugWarning($\"Pool '{poolId}' reached max size ({config.maxSize}).\", DebugCategory.Pooling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":162},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":161,"text":" return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":161},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":160,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":160},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":159,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":159},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":158,"text":" obj = Instantiate(config.prefab);\n","references":[],"lineBreakBefore":true}],"props":{"priority":158},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":157,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":157},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":156,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":156},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":155,"text":" if (obj == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":155},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":154,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":154},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":153,"text":" GameEvents.DebugWarning($\"Failed to get object from pool '{poolId}' - object is null!\", DebugCategory.Pooling);\n","references":[],"lineBreakBefore":true}],"props":{"priority":153},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":152,"text":" return null;\n","references":[],"lineBreakBefore":true}],"props":{"priority":152},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":151,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":151},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":150,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":150},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":149,"text":" obj.transform.SetPositionAndRotation(position, rotation);\n","references":[],"lineBreakBefore":true}],"props":{"priority":149},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":148,"text":" obj.transform.SetParent(null);\n","references":[],"lineBreakBefore":true}],"props":{"priority":148},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":147,"text":" obj.SetActive(true);\n","references":[],"lineBreakBefore":true}],"props":{"priority":147},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":146,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":146},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":145,"text":" activeObjectToPoolId[obj] = poolId;\n","references":[],"lineBreakBefore":true}],"props":{"priority":145},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":144,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":144},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":143,"text":" // Notify the object it was spawned from pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":143},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":142,"text":" var poolable = obj.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":142},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":141,"text":" poolable?.OnSpawnFromPool();\n","references":[],"lineBreakBefore":true}],"props":{"priority":141},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":140,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":140},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":139,"text":" return obj;\n","references":[],"lineBreakBefore":true}],"props":{"priority":139},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":138,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":138},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":137,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":137},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":136,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":136},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":135,"text":" /// Get an object from the pool using Vector2 position (for 2D games)\n","references":[],"lineBreakBefore":true}],"props":{"priority":135},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":134,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":134},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":133,"text":" public GameObject Get(string poolId, Vector2 position, Quaternion rotation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":133},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":132,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":132},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":131,"text":" return Get(poolId, new Vector3(position.x, position.y, 0f), rotation);\n","references":[],"lineBreakBefore":true}],"props":{"priority":131},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":130,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":130},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":129,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":129},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":128,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":128},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":127,"text":" /// Get an object from pool using prefab name as ID\n","references":[],"lineBreakBefore":true}],"props":{"priority":127},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":126,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":126},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":125,"text":" public GameObject Get(GameObject prefab, Vector3 position, Quaternion rotation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":125},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":124,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":124},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":123,"text":" string poolId = prefab.name;\n","references":[],"lineBreakBefore":true}],"props":{"priority":123},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":122,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":122},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":121,"text":" // Auto-create pool if it doesn't exist\n","references":[],"lineBreakBefore":true}],"props":{"priority":121},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":120,"text":" if (!pools.ContainsKey(poolId))\n","references":[],"lineBreakBefore":true}],"props":{"priority":120},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":119,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":119},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":118,"text":" CreatePool(prefab);\n","references":[],"lineBreakBefore":true}],"props":{"priority":118},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":117,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":117},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":116,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":116},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":115,"text":" return Get(poolId, position, rotation);\n","references":[],"lineBreakBefore":true}],"props":{"priority":115},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":114,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":114},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":113,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":113},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":112,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":112},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":111,"text":" /// Get an object from pool using prefab name as ID and Vector2 position (for 2D games)\n","references":[],"lineBreakBefore":true}],"props":{"priority":111},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":110,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":110},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":109,"text":" public GameObject Get(GameObject prefab, Vector2 position, Quaternion rotation)\n","references":[],"lineBreakBefore":true}],"props":{"priority":109},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":108,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":108},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":107,"text":" return Get(prefab, new Vector3(position.x, position.y, 0f), rotation);\n","references":[],"lineBreakBefore":true}],"props":{"priority":107},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":106,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":106},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":105,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":105},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":104,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":104},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":103,"text":" /// Return an object to its pool. Much faster than Destroy().\n","references":[],"lineBreakBefore":true}],"props":{"priority":103},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":102,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":102},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":101,"text":" public void Return(GameObject obj)\n","references":[],"lineBreakBefore":true}],"props":{"priority":101},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":100,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":100},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":99,"text":" if (obj == null) return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":99},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":98,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":98},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":97,"text":" if (!activeObjectToPoolId.TryGetValue(obj, out string poolId))\n","references":[],"lineBreakBefore":true}],"props":{"priority":97},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":96,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":96},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":95,"text":" // Object wasn't from a pool, destroy it normally\n","references":[],"lineBreakBefore":true}],"props":{"priority":95},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":94,"text":" Destroy(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":94},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":93,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":93},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":92,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":92},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":91,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":91},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":90,"text":" // Notify the object it's being returned\n","references":[],"lineBreakBefore":true}],"props":{"priority":90},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":89,"text":" var poolable = obj.GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":89},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":88,"text":" poolable?.OnReturnToPool();\n","references":[],"lineBreakBefore":true}],"props":{"priority":88},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":87,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":87},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":86,"text":" activeObjectToPoolId.Remove(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":86},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":85,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":85},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":84,"text":" obj.SetActive(false);\n","references":[],"lineBreakBefore":true}],"props":{"priority":84},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":83,"text":" obj.transform.SetParent(poolContainer);\n","references":[],"lineBreakBefore":true}],"props":{"priority":83},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":82,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":82},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":81,"text":" if (pools.TryGetValue(poolId, out var pool))\n","references":[],"lineBreakBefore":true}],"props":{"priority":81},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":80,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":80},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":79,"text":" pool.Enqueue(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":79},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":78,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":78},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":77,"text":" else\n","references":[],"lineBreakBefore":true}],"props":{"priority":77},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":76,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":76},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":75,"text":" // Pool was destroyed, destroy the object\n","references":[],"lineBreakBefore":true}],"props":{"priority":75},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":74,"text":" Destroy(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":74},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":73,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":73},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":72,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":72},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":71,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":71},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":70,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":70},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":69,"text":" /// Return all active objects to their pools\n","references":[],"lineBreakBefore":true}],"props":{"priority":69},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":68,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":68},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":67,"text":" public void ReturnAll()\n","references":[],"lineBreakBefore":true}],"props":{"priority":67},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":66,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":66},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":65,"text":" // Copy keys to avoid modification during iteration\n","references":[],"lineBreakBefore":true}],"props":{"priority":65},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":64,"text":" var activeObjects = new List(activeObjectToPoolId.Keys);\n","references":[],"lineBreakBefore":true}],"props":{"priority":64},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":63,"text":" foreach (var obj in activeObjects)\n","references":[],"lineBreakBefore":true}],"props":{"priority":63},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":62,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":62},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":61,"text":" Return(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":61},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":60,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":60},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":59,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":59},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":58,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":58},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":57,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":57},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":56,"text":" /// Return all active objects of a specific pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":56},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":55,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":55},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":54,"text":" public void ReturnAll(string poolId)\n","references":[],"lineBreakBefore":true}],"props":{"priority":54},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":53,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":53},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":52,"text":" var toReturn = new List();\n","references":[],"lineBreakBefore":true}],"props":{"priority":52},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":51,"text":" foreach (var kvp in activeObjectToPoolId)\n","references":[],"lineBreakBefore":true}],"props":{"priority":51},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":50,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":50},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":49,"text":" if (kvp.Value == poolId)\n","references":[],"lineBreakBefore":true}],"props":{"priority":49},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":48,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":48},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":47,"text":" toReturn.Add(kvp.Key);\n","references":[],"lineBreakBefore":true}],"props":{"priority":47},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":46,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":46},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":45,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":45},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":44,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":44},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":43,"text":" foreach (var obj in toReturn)\n","references":[],"lineBreakBefore":true}],"props":{"priority":43},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":42,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":42},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":41,"text":" Return(obj);\n","references":[],"lineBreakBefore":true}],"props":{"priority":41},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":40,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":40},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":" /// Get stats for debugging\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":" public (int available, int active) GetPoolStats(string poolId)\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" if (!pools.TryGetValue(poolId, out var pool))\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":" return (0, 0);\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" int active = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":" foreach (var kvp in activeObjectToPoolId)\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" if (kvp.Value == poolId) active++;\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" return (pool.Count, active);\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" /// Check if a pool exists\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" /// \n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" public bool HasPool(string poolId) => pools.ContainsKey(poolId);\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":"/// Interface for pooled objects to receive spawn/return callbacks\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":"public interface IPoolable\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" /// Called when object is retrieved from pool and activated\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" void OnSpawnFromPool();\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" /// Called when object is being returned to pool\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" void OnReturnToPool();\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":317,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":317},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_OKJBtEqI8RzTQE717nbSpjyP__vscode-1774363162431":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/Systems/StatusEffects/StatusEffectController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" PoolingSystem.Instance.Return(vfxInstance);\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" else {\n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" // Fallback to destroy if no pooling system\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" Destroy(vfxInstance);\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" catch (System.Exception ex) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" if (enableDebugLogs) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" GameEvents.DebugLog($\"[StatusEffect] Error returning VFX to pool: {ex.Message}\", DebugCategory.Combat);\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" void OnDisable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" ClearAllEffects();\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_PQQk6pTA6EEKsswpSDUdP5ta__vscode-1774363162432":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/HealthBarUI.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":39},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":38,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":38},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":37,"text":"using UnityEngine.UI;\n","references":[],"lineBreakBefore":true}],"props":{"priority":37},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":36,"text":"using TMPro;\n","references":[],"lineBreakBefore":true}],"props":{"priority":36},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":35,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":35},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":34,"text":"public class HealthBarUI : MonoBehaviour {\n","references":[],"lineBreakBefore":true}],"props":{"priority":34},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":33,"text":" [Header(\"References\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":33},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":32,"text":" [SerializeField] private Image fillImage;\n","references":[],"lineBreakBefore":true}],"props":{"priority":32},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":31,"text":" [SerializeField] private TextMeshProUGUI healthText; // Optional\n","references":[],"lineBreakBefore":true}],"props":{"priority":31},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":30,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":30},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":29,"text":" void OnEnable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":29},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":28,"text":" GameEvents.OnHealthChanged += UpdateHealthBar;\n","references":[],"lineBreakBefore":true}],"props":{"priority":28},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":27,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":27},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":26,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":26},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":25,"text":" void OnDisable() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":25},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":24,"text":" GameEvents.OnHealthChanged -= UpdateHealthBar;\n","references":[],"lineBreakBefore":true}],"props":{"priority":24},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":23,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":23},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":22,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":22},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":21,"text":" void Start() {\n","references":[],"lineBreakBefore":true}],"props":{"priority":21},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":20,"text":" // Initialize with current values\n","references":[],"lineBreakBefore":true}],"props":{"priority":20},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":19,"text":" if (PlayerController.Instance != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":19},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":18,"text":" Health playerHealth;\n","references":[],"lineBreakBefore":true}],"props":{"priority":18},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":17,"text":" PlayerController.Instance.GetHealth(out playerHealth); \n","references":[],"lineBreakBefore":true}],"props":{"priority":17},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":16,"text":" UpdateHealthBar(playerHealth.CurrentHP, playerHealth.MaxHP);\n","references":[],"lineBreakBefore":true}],"props":{"priority":16},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":15,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":15},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":14,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":14},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":13,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":13},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":12,"text":" private void UpdateHealthBar(float currentHP, float maxHP) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":12},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":11,"text":" if (fillImage != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":11},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":10,"text":" float fillAmount = (float)currentHP / maxHP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":10},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":9,"text":" fillImage.fillAmount = fillAmount;\n","references":[],"lineBreakBefore":true}],"props":{"priority":9},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":8,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":8},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":7,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":7},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":6,"text":" if (healthText != null) {\n","references":[],"lineBreakBefore":true}],"props":{"priority":6},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":5,"text":" healthText.text = $\"{currentHP} / {maxHP}\";\n","references":[],"lineBreakBefore":true}],"props":{"priority":5},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":4,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":4},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":3,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":3},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":2,"text":"}\n","references":[],"lineBreakBefore":true}],"props":{"priority":2},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":39,"text":"```","references":[],"lineBreakBefore":true}],"props":{"priority":39},"references":[]}],"props":{},"references":[]}],"props":{},"references":[]}}}]},"call_H9JZZU8laVAbJ6tMvBQHFKcI__vscode-1774363162433":{"$mid":20,"content":[{"$mid":23,"value":{"node":{"type":1,"ctor":2,"ctorName":"oxe","children":[{"type":1,"ctor":2,"ctorName":"tn","children":[{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":305,"text":"```csharp\n","references":[{"anchor":{"$mid":1,"fsPath":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","external":"file:///home/breadway/Documents/Hazard%20Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","path":"/home/breadway/Documents/Hazard Pay/Assets/_Project/Scripts/UI/GameplayHUDController.cs","scheme":"file"},"options":{"isFromTool":true}}],"lineBreakBefore":true}],"props":{"priority":305},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":304,"text":"using UnityEngine;\n","references":[],"lineBreakBefore":true}],"props":{"priority":304},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":303,"text":"using UnityEngine.UIElements;\n","references":[],"lineBreakBefore":true}],"props":{"priority":303},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":302,"text":"\n","references":[],"lineBreakBefore":true}],"props":{"priority":302},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":301,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":301},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":300,"text":"/// Controls the main gameplay HUD using UI Toolkit.\n","references":[],"lineBreakBefore":true}],"props":{"priority":300},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":299,"text":"/// Subscribes to GameEvents to update health, XP, level, etc.\n","references":[],"lineBreakBefore":true}],"props":{"priority":299},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":298,"text":"/// Theme: Industrial \"Company Safety Manual\" style.\n","references":[],"lineBreakBefore":true}],"props":{"priority":298},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":297,"text":"/// \n","references":[],"lineBreakBefore":true}],"props":{"priority":297},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":296,"text":"[RequireComponent(typeof(UIDocument))]\n","references":[],"lineBreakBefore":true}],"props":{"priority":296},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":295,"text":"public class GameplayHUDController : MonoBehaviour\n","references":[],"lineBreakBefore":true}],"props":{"priority":295},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":294,"text":"{\n","references":[],"lineBreakBefore":true}],"props":{"priority":294},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":293,"text":" [Header(\"References\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":293},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":292,"text":" [SerializeField] private UIDocument uiDocument;\n","references":[],"lineBreakBefore":true}],"props":{"priority":292},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":291,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":291},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":290,"text":" [Header(\"Settings\")]\n","references":[],"lineBreakBefore":true}],"props":{"priority":290},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":289,"text":" [SerializeField] private float lowHealthThreshold = 0.3f; // 30% HP = low health warning\n","references":[],"lineBreakBefore":true}],"props":{"priority":289},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":288,"text":" [SerializeField] private float notificationDuration = 2f; // How long notifications stay visible\n","references":[],"lineBreakBefore":true}],"props":{"priority":288},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":287,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":287},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":286,"text":" // UI Element References\n","references":[],"lineBreakBefore":true}],"props":{"priority":286},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":285,"text":" private VisualElement root;\n","references":[],"lineBreakBefore":true}],"props":{"priority":285},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":284,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":284},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":283,"text":" // Health Bar\n","references":[],"lineBreakBefore":true}],"props":{"priority":283},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":282,"text":" private VisualElement healthBarFill;\n","references":[],"lineBreakBefore":true}],"props":{"priority":282},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":281,"text":" private Label healthText;\n","references":[],"lineBreakBefore":true}],"props":{"priority":281},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":280,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":280},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":279,"text":" // XP Bar\n","references":[],"lineBreakBefore":true}],"props":{"priority":279},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":278,"text":" private VisualElement xpBarFill;\n","references":[],"lineBreakBefore":true}],"props":{"priority":278},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":277,"text":" private Label xpText;\n","references":[],"lineBreakBefore":true}],"props":{"priority":277},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":276,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":276},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":275,"text":" // Level Display\n","references":[],"lineBreakBefore":true}],"props":{"priority":275},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":274,"text":" private Label levelValue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":274},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":273,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":273},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":272,"text":" // Room Info\n","references":[],"lineBreakBefore":true}],"props":{"priority":272},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":271,"text":" private Label roomValue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":271},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":270,"text":" private Label enemiesValue;\n","references":[],"lineBreakBefore":true}],"props":{"priority":270},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":269,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":269},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":268,"text":" // Notification\n","references":[],"lineBreakBefore":true}],"props":{"priority":268},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":267,"text":" private VisualElement notificationPanel;\n","references":[],"lineBreakBefore":true}],"props":{"priority":267},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":266,"text":" private Label notificationText;\n","references":[],"lineBreakBefore":true}],"props":{"priority":266},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":265,"text":" private float notificationTimer = 0f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":265},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":264,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":264},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":263,"text":" // Cached Values\n","references":[],"lineBreakBefore":true}],"props":{"priority":263},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":262,"text":" private float currentHealth = 100f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":262},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":261,"text":" private float maxHealth = 100f;\n","references":[],"lineBreakBefore":true}],"props":{"priority":261},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":260,"text":" private int currentXP = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":260},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":259,"text":" private int requiredXP = 100;\n","references":[],"lineBreakBefore":true}],"props":{"priority":259},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":258,"text":" private int currentLevel = 1;\n","references":[],"lineBreakBefore":true}],"props":{"priority":258},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":257,"text":" private int currentRoom = 1;\n","references":[],"lineBreakBefore":true}],"props":{"priority":257},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":256,"text":" private int enemiesRemaining = 0;\n","references":[],"lineBreakBefore":true}],"props":{"priority":256},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":255,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":255},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":254,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":254},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":253,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":253},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":252,"text":" // INITIALIZATION\n","references":[],"lineBreakBefore":true}],"props":{"priority":252},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":251,"text":" // ========================================\n","references":[],"lineBreakBefore":true}],"props":{"priority":251},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":250,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":250},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":249,"text":" void Awake()\n","references":[],"lineBreakBefore":true}],"props":{"priority":249},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":248,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":248},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":247,"text":" // Auto-assign if not set\n","references":[],"lineBreakBefore":true}],"props":{"priority":247},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":246,"text":" if (uiDocument == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":246},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":245,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":245},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":244,"text":" uiDocument = GetComponent();\n","references":[],"lineBreakBefore":true}],"props":{"priority":244},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":243,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":243},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":242,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":242},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":241,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":241},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":240,"text":" void OnEnable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":240},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":239,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":239},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":238,"text":" // Wait one frame for UI to be fully initialized\n","references":[],"lineBreakBefore":true}],"props":{"priority":238},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":237,"text":" Invoke(nameof(InitializeUI), 0.1f);\n","references":[],"lineBreakBefore":true}],"props":{"priority":237},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":236,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":236},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":235,"text":" // Subscribe to events\n","references":[],"lineBreakBefore":true}],"props":{"priority":235},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":234,"text":" GameEvents.OnHealthChanged += UpdateHealth;\n","references":[],"lineBreakBefore":true}],"props":{"priority":234},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":233,"text":" GameEvents.OnXPChanged += UpdateXP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":233},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":232,"text":" GameEvents.OnLevelUp += UpdateLevel;\n","references":[],"lineBreakBefore":true}],"props":{"priority":232},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":231,"text":" GameEvents.OnRoomEntered += UpdateRoom;\n","references":[],"lineBreakBefore":true}],"props":{"priority":231},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":230,"text":" GameEvents.OnRoomCleared += OnRoomCleared;\n","references":[],"lineBreakBefore":true}],"props":{"priority":230},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":229,"text":" GameEvents.OnEnemyKilled += OnEnemyKilled;\n","references":[],"lineBreakBefore":true}],"props":{"priority":229},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":228,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":228},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":227,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":227},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":226,"text":" void OnDisable()\n","references":[],"lineBreakBefore":true}],"props":{"priority":226},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":225,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":225},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":224,"text":" // Unsubscribe from events\n","references":[],"lineBreakBefore":true}],"props":{"priority":224},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":223,"text":" GameEvents.OnHealthChanged -= UpdateHealth;\n","references":[],"lineBreakBefore":true}],"props":{"priority":223},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":222,"text":" GameEvents.OnXPChanged -= UpdateXP;\n","references":[],"lineBreakBefore":true}],"props":{"priority":222},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":221,"text":" GameEvents.OnLevelUp -= UpdateLevel;\n","references":[],"lineBreakBefore":true}],"props":{"priority":221},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":220,"text":" GameEvents.OnRoomEntered -= UpdateRoom;\n","references":[],"lineBreakBefore":true}],"props":{"priority":220},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":219,"text":" GameEvents.OnRoomCleared -= OnRoomCleared;\n","references":[],"lineBreakBefore":true}],"props":{"priority":219},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":218,"text":" GameEvents.OnEnemyKilled -= OnEnemyKilled;\n","references":[],"lineBreakBefore":true}],"props":{"priority":218},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":217,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":217},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":216,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":216},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":215,"text":" void InitializeUI()\n","references":[],"lineBreakBefore":true}],"props":{"priority":215},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":214,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":214},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":213,"text":" if (uiDocument == null || uiDocument.rootVisualElement == null)\n","references":[],"lineBreakBefore":true}],"props":{"priority":213},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":212,"text":" {\n","references":[],"lineBreakBefore":true}],"props":{"priority":212},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":211,"text":" GameEvents.DebugLog(\"GameplayHUDController: UIDocument or root element is null!\", DebugCategory.UI);\n","references":[],"lineBreakBefore":true}],"props":{"priority":211},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":210,"text":" return;\n","references":[],"lineBreakBefore":true}],"props":{"priority":210},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":209,"text":" }\n","references":[],"lineBreakBefore":true}],"props":{"priority":209},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":208,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":208},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":207,"text":" root = uiDocument.rootVisualElement;\n","references":[],"lineBreakBefore":true}],"props":{"priority":207},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":206,"text":" \n","references":[],"lineBreakBefore":true}],"props":{"priority":206},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":205,"text":" // Get references to UI elements\n","references":[],"lineBreakBefore":true}],"props":{"priority":205},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":204,"text":" healthBarFill = root.Q(\"health-bar-fill\");\n","references":[],"lineBreakBefore":true}],"props":{"priority":204},"references":[]},{"type":1,"ctor":2,"ctorName":"sBe","children":[{"type":2,"priority":203,"text":" healthText = root.Q