Implements modifier system for weapons

Adds a modifier system allowing dynamic modification of weapon
stats and behavior. This includes:

- Creating ModifierLibrary to manage available modifiers.
- Adds ModifierManager to handle equipping and unequipping modifiers
- Adds a new RangedWeaponComponent to handle firing projectiles and
  managing modifiers.
- Introduces a DebugUI for in-game modifier management.
- Introduces an "Unlimited Power" modifier that changes the projectile scene.
- Modifies stats components to work with the new modifier system.

This system allows for more flexible and customizable weapon
functionality.
This commit is contained in:
Dan Baker 2025-05-08 18:31:19 +01:00
parent 9f66ab0a73
commit 70839387ca
22 changed files with 432 additions and 40 deletions

View file

@ -22,6 +22,7 @@ Global="*res://utility/Globals.gd"
SceneSelector="*res://utility/SceneSelector.gd"
MapBuilder="*res://utility/MapBuilder.gd"
DebugMenu="*res://addons/debug_menu/debug_menu.tscn"
ModLib="*res://utility/ModifierLibrary.gd"
[display]
@ -36,11 +37,17 @@ enabled=PackedStringArray("res://addons/debug_menu/plugin.cfg", "res://addons/lo
[file_customization]
folder_colors={
"res://UI/": "green",
"res://combat/": "red",
"res://combat/modifiers/": "green",
"res://combat/weapons/": "red"
"res://combat/weapons/": "red",
"res://utility/": "purple"
}
[gui]
theme/custom="uid://ddgipwj5yd0vw"
[input]
move_up={
@ -68,6 +75,11 @@ fire={
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(115, 24),"global_position":Vector2(129, 97),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
debug_menu={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194332,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[layer_names]