From 3d6204cc830fc6fe44dbd00fe8dc372d8f9e48ef Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Wed, 3 Jun 2026 23:33:19 +0200 Subject: [PATCH] remove: key/toolbox/map items, keep only medkit and flashlight --- .vscode/settings.json | 8 + COMMANDS_GUIDE.md | 17 --- bin/main/config.yml | 49 ++++++ bin/main/dev/loki/chest/Chest.class | Bin 0 -> 2437 bytes bin/main/dev/loki/chest/ChestManager.class | Bin 0 -> 4844 bytes bin/main/dev/loki/chest/ChestOpening$1.class | Bin 0 -> 935 bytes bin/main/dev/loki/chest/ChestOpening.class | Bin 0 -> 5180 bytes .../dev/loki/command/DBDAdminCommand.class | Bin 0 -> 12317 bytes bin/main/dev/loki/command/DBDCommand.class | Bin 0 -> 8752 bytes bin/main/dev/loki/command/SetupCommand.class | Bin 0 -> 14059 bytes bin/main/dev/loki/config/ConfigManager.class | Bin 0 -> 4674 bytes bin/main/dev/loki/config/GameConfig.class | Bin 0 -> 5573 bytes .../dev/loki/config/LocationsConfig.class | Bin 0 -> 6020 bytes bin/main/dev/loki/config/MessagesConfig.class | Bin 0 -> 6999 bytes .../dev/loki/config/SkillCheckConfig.class | Bin 0 -> 4548 bytes bin/main/dev/loki/core/GameEventBus.class | Bin 0 -> 2679 bytes bin/main/dev/loki/core/GameManager.class | Bin 0 -> 2519 bytes .../core/GameSession$PlayerJoinEvent.class | Bin 0 -> 1427 bytes .../core/GameSession$PlayerLeaveEvent.class | Bin 0 -> 1432 bytes bin/main/dev/loki/core/GameSession.class | Bin 0 -> 7798 bytes bin/main/dev/loki/core/GameState.class | Bin 0 -> 1452 bytes bin/main/dev/loki/damage/AttackListener.class | Bin 0 -> 3586 bytes bin/main/dev/loki/damage/DamageHandler.class | Bin 0 -> 3805 bytes bin/main/dev/loki/data/DataStorage.class | Bin 0 -> 499 bytes .../dev/loki/data/GeneratorDataManager.class | Bin 0 -> 5924 bytes bin/main/dev/loki/data/MatchResult$Role.class | Bin 0 -> 1115 bytes bin/main/dev/loki/data/MatchResult.class | Bin 0 -> 1354 bytes bin/main/dev/loki/data/PlayerStats.class | Bin 0 -> 2131 bytes bin/main/dev/loki/data/SQLiteStorage.class | Bin 0 -> 7559 bytes bin/main/dev/loki/data/YamlStorage.class | Bin 0 -> 6362 bytes .../dev/loki/gate/ExitGate$GateState.class | Bin 0 -> 1180 bytes bin/main/dev/loki/gate/ExitGate.class | Bin 0 -> 3276 bytes bin/main/dev/loki/gate/GateManager.class | Bin 0 -> 4717 bytes .../gate/GateOpening$OpeningProgress.class | Bin 0 -> 661 bytes .../loki/gate/GateOpening$OpeningTask.class | Bin 0 -> 2162 bytes bin/main/dev/loki/gate/GateOpening.class | Bin 0 -> 4412 bytes .../dev/loki/hatch/Hatch$HatchState.class | Bin 0 -> 1169 bytes bin/main/dev/loki/hatch/Hatch.class | Bin 0 -> 4169 bytes bin/main/dev/loki/hatch/HatchCondition.class | Bin 0 -> 3904 bytes bin/main/dev/loki/hatch/HatchEscape.class | Bin 0 -> 3644 bytes bin/main/dev/loki/hook/Hook.class | Bin 0 -> 2265 bytes bin/main/dev/loki/hook/HookManager.class | Bin 0 -> 6333 bytes .../loki/hook/HookRescue$RescueSession.class | Bin 0 -> 1538 bytes bin/main/dev/loki/hook/HookRescue.class | Bin 0 -> 5418 bytes bin/main/dev/loki/hook/HookSacrifice.class | Bin 0 -> 4049 bytes bin/main/dev/loki/hook/HookStage.class | Bin 0 -> 1730 bytes bin/main/dev/loki/hook/HookStruggle.class | Bin 0 -> 5280 bytes bin/main/dev/loki/item/BaseItem.class | Bin 0 -> 463 bytes bin/main/dev/loki/item/ChestLoot.class | Bin 0 -> 790 bytes bin/main/dev/loki/item/DBDItems.class | Bin 0 -> 6655 bytes bin/main/dev/loki/item/ItemFlashlight.class | Bin 0 -> 4510 bytes bin/main/dev/loki/item/ItemMedkit.class | Bin 0 -> 4470 bytes bin/main/dev/loki/item/ItemType.class | Bin 0 -> 1593 bytes .../dev/loki/item/ItemUseListener$1.class | Bin 0 -> 4008 bytes bin/main/dev/loki/item/ItemUseListener.class | Bin 0 -> 8575 bytes bin/main/dev/loki/killer/HitValidator.class | Bin 0 -> 3470 bytes bin/main/dev/loki/killer/KillerAttack.class | Bin 0 -> 6221 bytes .../loki/killer/KillerCarry$CarryData.class | Bin 0 -> 663 bytes bin/main/dev/loki/killer/KillerCarry.class | Bin 0 -> 6731 bytes .../dev/loki/killer/KillerController.class | Bin 0 -> 4977 bytes bin/main/dev/loki/killer/KillerMovement.class | Bin 0 -> 5205 bytes bin/main/dev/loki/killer/KillerVision.class | Bin 0 -> 3652 bytes .../dev/loki/listener/DamageListener.class | Bin 0 -> 4451 bytes .../listener/GeneratorSelectListener.class | Bin 0 -> 3019 bytes .../listener/PlayerInteractListener.class | Bin 0 -> 8758 bytes .../loki/listener/PlayerMoveListener.class | Bin 0 -> 6649 bytes .../loki/listener/PlayerQuitListener.class | Bin 0 -> 4991 bytes .../listener/SetupBlockBreakListener.class | Bin 0 -> 1835 bytes bin/main/dev/loki/map/MapBuilder.class | Bin 0 -> 7822 bytes bin/main/dev/loki/map/MapTemplate.class | Bin 0 -> 5621 bytes .../loki/map/TemplateManager$PresetMap.class | Bin 0 -> 1681 bytes bin/main/dev/loki/map/TemplateManager.class | Bin 0 -> 6014 bytes bin/main/dev/loki/mdbd.class | Bin 0 -> 5969 bytes bin/main/dev/loki/mdbdBootstrap.class | Bin 0 -> 541 bytes bin/main/dev/loki/mdbdLoader.class | Bin 0 -> 534 bytes bin/main/dev/loki/objective/Generator.class | Bin 0 -> 3846 bytes .../dev/loki/objective/GeneratorManager.class | Bin 0 -> 5609 bytes .../loki/objective/GeneratorRegression.class | Bin 0 -> 2679 bytes .../GeneratorRepair$RepairSession.class | Bin 0 -> 718 bytes .../dev/loki/objective/GeneratorRepair.class | Bin 0 -> 8025 bytes .../objective/SkillCheck$CheckState.class | Bin 0 -> 1990 bytes bin/main/dev/loki/objective/SkillCheck.class | Bin 0 -> 4052 bytes .../dev/loki/objective/SkillCheckUI.class | Bin 0 -> 4797 bytes .../dev/loki/pallet/Pallet$PalletState.class | Bin 0 -> 1196 bytes bin/main/dev/loki/pallet/Pallet.class | Bin 0 -> 3615 bytes .../loki/pallet/PalletBreak$BreakTask.class | Bin 0 -> 1786 bytes .../pallet/PalletBreak$BreakingProgress.class | Bin 0 -> 846 bytes bin/main/dev/loki/pallet/PalletBreak.class | Bin 0 -> 3964 bytes bin/main/dev/loki/pallet/PalletDrop.class | Bin 0 -> 4376 bytes bin/main/dev/loki/pallet/PalletManager.class | Bin 0 -> 3730 bytes bin/main/dev/loki/pallet/PalletStun$1.class | Bin 0 -> 1254 bytes bin/main/dev/loki/pallet/PalletStun.class | Bin 0 -> 3184 bytes bin/main/dev/loki/phase/EndgamePhase$1.class | Bin 0 -> 785 bytes bin/main/dev/loki/phase/EndgamePhase.class | Bin 0 -> 8421 bytes .../GameplayPhase$VanillaDamageBlocker.class | Bin 0 -> 1442 bytes bin/main/dev/loki/phase/GameplayPhase.class | Bin 0 -> 18754 bytes bin/main/dev/loki/phase/LobbyPhase.class | Bin 0 -> 5285 bytes bin/main/dev/loki/phase/Phase.class | Bin 0 -> 521 bytes bin/main/dev/loki/phase/RoleAssignPhase.class | Bin 0 -> 1858 bytes bin/main/dev/loki/player/BasePlayer.class | Bin 0 -> 1548 bytes bin/main/dev/loki/player/Killer.class | Bin 0 -> 630 bytes bin/main/dev/loki/player/PlayerManager.class | Bin 0 -> 6301 bytes bin/main/dev/loki/player/PlayerState.class | Bin 0 -> 1775 bytes bin/main/dev/loki/player/Survivor.class | Bin 0 -> 644 bytes .../role/RoleAssigner$RoleAssignedEvent.class | Bin 0 -> 1610 bytes bin/main/dev/loki/role/RoleAssigner.class | Bin 0 -> 7007 bytes bin/main/dev/loki/role/RoleQueue.class | Bin 0 -> 2192 bytes bin/main/dev/loki/role/SpawnPosition.class | Bin 0 -> 1264 bytes bin/main/dev/loki/sound/GeneratorSound.class | Bin 0 -> 3856 bytes bin/main/dev/loki/sound/SoundLevels.class | Bin 0 -> 1628 bytes bin/main/dev/loki/sound/SoundManager.class | Bin 0 -> 3764 bytes .../dev/loki/sound/TerrorRadiusSound.class | Bin 0 -> 3415 bytes bin/main/dev/loki/state/StateHandler.class | Bin 0 -> 3959 bytes bin/main/dev/loki/state/StateMachine.class | Bin 0 -> 4046 bytes bin/main/dev/loki/state/StateTransition.class | Bin 0 -> 2391 bytes .../loki/survivor/SurvivorController.class | Bin 0 -> 2548 bytes .../dev/loki/survivor/SurvivorHealing.class | Bin 0 -> 5528 bytes .../dev/loki/survivor/SurvivorMovement.class | Bin 0 -> 2948 bytes bin/main/dev/loki/totem/DullTotem.class | Bin 0 -> 2957 bytes bin/main/dev/loki/totem/HexTotem.class | Bin 0 -> 4020 bytes bin/main/dev/loki/totem/Totem.class | Bin 0 -> 2664 bytes bin/main/dev/loki/totem/TotemManager.class | Bin 0 -> 5112 bytes bin/main/dev/loki/totem/TotemState.class | Bin 0 -> 1675 bytes bin/main/dev/loki/ui/ActionBar.class | Bin 0 -> 6705 bytes bin/main/dev/loki/ui/ProgressBar.class | Bin 0 -> 3358 bytes bin/main/dev/loki/ui/Sidebar.class | Bin 0 -> 8280 bytes bin/main/dev/loki/ui/StatusIcons.class | Bin 0 -> 2337 bytes .../dev/loki/ui/TitleUI$SkillCheckState.class | Bin 0 -> 1972 bytes bin/main/dev/loki/ui/TitleUI.class | Bin 0 -> 7623 bytes bin/main/dev/loki/util/LocationUtil.class | Bin 0 -> 5507 bytes bin/main/dev/loki/util/MathUtil.class | Bin 0 -> 4573 bytes bin/main/dev/loki/util/ParticleUtil.class | Bin 0 -> 5937 bytes bin/main/dev/loki/util/PlayerUtil.class | Bin 0 -> 7267 bytes bin/main/dev/loki/util/TextUtil.class | Bin 0 -> 1068 bytes bin/main/dev/loki/util/TimeUtil.class | Bin 0 -> 4581 bytes .../loki/window/Window$PlayerContext.class | Bin 0 -> 1643 bytes bin/main/dev/loki/window/Window.class | Bin 0 -> 2216 bytes .../WindowFastVault$FastVaultTask.class | Bin 0 -> 1733 bytes .../dev/loki/window/WindowFastVault.class | Bin 0 -> 4414 bytes bin/main/dev/loki/window/WindowManager.class | Bin 0 -> 4051 bytes .../loki/window/WindowVault$VaultTask.class | Bin 0 -> 960 bytes bin/main/dev/loki/window/WindowVault.class | Bin 0 -> 4343 bytes bin/main/dev/loki/world/LobbyManager.class | Bin 0 -> 5206 bytes .../dev/loki/world/VoidWorldGenerator.class | Bin 0 -> 980 bytes bin/main/game.yml | 138 +++++++++++++++++ bin/main/locations.yml | 58 +++++++ bin/main/messages.yml | 119 +++++++++++++++ bin/main/plugin.yml | 26 ++++ bin/main/skillcheck.yml | 120 +++++++++++++++ src/main/java/dev/loki/item/ChestLoot.java | 14 +- src/main/java/dev/loki/item/DBDItems.java | 98 +----------- src/main/java/dev/loki/item/ItemKey.java | 96 ------------ src/main/java/dev/loki/item/ItemMap.java | 96 ------------ src/main/java/dev/loki/item/ItemToolbox.java | 98 ------------ src/main/java/dev/loki/item/ItemType.java | 19 +-- .../java/dev/loki/item/ItemUseListener.java | 144 ++++++------------ 156 files changed, 583 insertions(+), 517 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 bin/main/config.yml create mode 100644 bin/main/dev/loki/chest/Chest.class create mode 100644 bin/main/dev/loki/chest/ChestManager.class create mode 100644 bin/main/dev/loki/chest/ChestOpening$1.class create mode 100644 bin/main/dev/loki/chest/ChestOpening.class create mode 100644 bin/main/dev/loki/command/DBDAdminCommand.class create mode 100644 bin/main/dev/loki/command/DBDCommand.class create mode 100644 bin/main/dev/loki/command/SetupCommand.class create mode 100644 bin/main/dev/loki/config/ConfigManager.class create mode 100644 bin/main/dev/loki/config/GameConfig.class create mode 100644 bin/main/dev/loki/config/LocationsConfig.class create mode 100644 bin/main/dev/loki/config/MessagesConfig.class create mode 100644 bin/main/dev/loki/config/SkillCheckConfig.class create mode 100644 bin/main/dev/loki/core/GameEventBus.class create mode 100644 bin/main/dev/loki/core/GameManager.class create mode 100644 bin/main/dev/loki/core/GameSession$PlayerJoinEvent.class create mode 100644 bin/main/dev/loki/core/GameSession$PlayerLeaveEvent.class create mode 100644 bin/main/dev/loki/core/GameSession.class create mode 100644 bin/main/dev/loki/core/GameState.class create mode 100644 bin/main/dev/loki/damage/AttackListener.class create mode 100644 bin/main/dev/loki/damage/DamageHandler.class create mode 100644 bin/main/dev/loki/data/DataStorage.class create mode 100644 bin/main/dev/loki/data/GeneratorDataManager.class create mode 100644 bin/main/dev/loki/data/MatchResult$Role.class create mode 100644 bin/main/dev/loki/data/MatchResult.class create mode 100644 bin/main/dev/loki/data/PlayerStats.class create mode 100644 bin/main/dev/loki/data/SQLiteStorage.class create mode 100644 bin/main/dev/loki/data/YamlStorage.class create mode 100644 bin/main/dev/loki/gate/ExitGate$GateState.class create mode 100644 bin/main/dev/loki/gate/ExitGate.class create mode 100644 bin/main/dev/loki/gate/GateManager.class create mode 100644 bin/main/dev/loki/gate/GateOpening$OpeningProgress.class create mode 100644 bin/main/dev/loki/gate/GateOpening$OpeningTask.class create mode 100644 bin/main/dev/loki/gate/GateOpening.class create mode 100644 bin/main/dev/loki/hatch/Hatch$HatchState.class create mode 100644 bin/main/dev/loki/hatch/Hatch.class create mode 100644 bin/main/dev/loki/hatch/HatchCondition.class create mode 100644 bin/main/dev/loki/hatch/HatchEscape.class create mode 100644 bin/main/dev/loki/hook/Hook.class create mode 100644 bin/main/dev/loki/hook/HookManager.class create mode 100644 bin/main/dev/loki/hook/HookRescue$RescueSession.class create mode 100644 bin/main/dev/loki/hook/HookRescue.class create mode 100644 bin/main/dev/loki/hook/HookSacrifice.class create mode 100644 bin/main/dev/loki/hook/HookStage.class create mode 100644 bin/main/dev/loki/hook/HookStruggle.class create mode 100644 bin/main/dev/loki/item/BaseItem.class create mode 100644 bin/main/dev/loki/item/ChestLoot.class create mode 100644 bin/main/dev/loki/item/DBDItems.class create mode 100644 bin/main/dev/loki/item/ItemFlashlight.class create mode 100644 bin/main/dev/loki/item/ItemMedkit.class create mode 100644 bin/main/dev/loki/item/ItemType.class create mode 100644 bin/main/dev/loki/item/ItemUseListener$1.class create mode 100644 bin/main/dev/loki/item/ItemUseListener.class create mode 100644 bin/main/dev/loki/killer/HitValidator.class create mode 100644 bin/main/dev/loki/killer/KillerAttack.class create mode 100644 bin/main/dev/loki/killer/KillerCarry$CarryData.class create mode 100644 bin/main/dev/loki/killer/KillerCarry.class create mode 100644 bin/main/dev/loki/killer/KillerController.class create mode 100644 bin/main/dev/loki/killer/KillerMovement.class create mode 100644 bin/main/dev/loki/killer/KillerVision.class create mode 100644 bin/main/dev/loki/listener/DamageListener.class create mode 100644 bin/main/dev/loki/listener/GeneratorSelectListener.class create mode 100644 bin/main/dev/loki/listener/PlayerInteractListener.class create mode 100644 bin/main/dev/loki/listener/PlayerMoveListener.class create mode 100644 bin/main/dev/loki/listener/PlayerQuitListener.class create mode 100644 bin/main/dev/loki/listener/SetupBlockBreakListener.class create mode 100644 bin/main/dev/loki/map/MapBuilder.class create mode 100644 bin/main/dev/loki/map/MapTemplate.class create mode 100644 bin/main/dev/loki/map/TemplateManager$PresetMap.class create mode 100644 bin/main/dev/loki/map/TemplateManager.class create mode 100644 bin/main/dev/loki/mdbd.class create mode 100644 bin/main/dev/loki/mdbdBootstrap.class create mode 100644 bin/main/dev/loki/mdbdLoader.class create mode 100644 bin/main/dev/loki/objective/Generator.class create mode 100644 bin/main/dev/loki/objective/GeneratorManager.class create mode 100644 bin/main/dev/loki/objective/GeneratorRegression.class create mode 100644 bin/main/dev/loki/objective/GeneratorRepair$RepairSession.class create mode 100644 bin/main/dev/loki/objective/GeneratorRepair.class create mode 100644 bin/main/dev/loki/objective/SkillCheck$CheckState.class create mode 100644 bin/main/dev/loki/objective/SkillCheck.class create mode 100644 bin/main/dev/loki/objective/SkillCheckUI.class create mode 100644 bin/main/dev/loki/pallet/Pallet$PalletState.class create mode 100644 bin/main/dev/loki/pallet/Pallet.class create mode 100644 bin/main/dev/loki/pallet/PalletBreak$BreakTask.class create mode 100644 bin/main/dev/loki/pallet/PalletBreak$BreakingProgress.class create mode 100644 bin/main/dev/loki/pallet/PalletBreak.class create mode 100644 bin/main/dev/loki/pallet/PalletDrop.class create mode 100644 bin/main/dev/loki/pallet/PalletManager.class create mode 100644 bin/main/dev/loki/pallet/PalletStun$1.class create mode 100644 bin/main/dev/loki/pallet/PalletStun.class create mode 100644 bin/main/dev/loki/phase/EndgamePhase$1.class create mode 100644 bin/main/dev/loki/phase/EndgamePhase.class create mode 100644 bin/main/dev/loki/phase/GameplayPhase$VanillaDamageBlocker.class create mode 100644 bin/main/dev/loki/phase/GameplayPhase.class create mode 100644 bin/main/dev/loki/phase/LobbyPhase.class create mode 100644 bin/main/dev/loki/phase/Phase.class create mode 100644 bin/main/dev/loki/phase/RoleAssignPhase.class create mode 100644 bin/main/dev/loki/player/BasePlayer.class create mode 100644 bin/main/dev/loki/player/Killer.class create mode 100644 bin/main/dev/loki/player/PlayerManager.class create mode 100644 bin/main/dev/loki/player/PlayerState.class create mode 100644 bin/main/dev/loki/player/Survivor.class create mode 100644 bin/main/dev/loki/role/RoleAssigner$RoleAssignedEvent.class create mode 100644 bin/main/dev/loki/role/RoleAssigner.class create mode 100644 bin/main/dev/loki/role/RoleQueue.class create mode 100644 bin/main/dev/loki/role/SpawnPosition.class create mode 100644 bin/main/dev/loki/sound/GeneratorSound.class create mode 100644 bin/main/dev/loki/sound/SoundLevels.class create mode 100644 bin/main/dev/loki/sound/SoundManager.class create mode 100644 bin/main/dev/loki/sound/TerrorRadiusSound.class create mode 100644 bin/main/dev/loki/state/StateHandler.class create mode 100644 bin/main/dev/loki/state/StateMachine.class create mode 100644 bin/main/dev/loki/state/StateTransition.class create mode 100644 bin/main/dev/loki/survivor/SurvivorController.class create mode 100644 bin/main/dev/loki/survivor/SurvivorHealing.class create mode 100644 bin/main/dev/loki/survivor/SurvivorMovement.class create mode 100644 bin/main/dev/loki/totem/DullTotem.class create mode 100644 bin/main/dev/loki/totem/HexTotem.class create mode 100644 bin/main/dev/loki/totem/Totem.class create mode 100644 bin/main/dev/loki/totem/TotemManager.class create mode 100644 bin/main/dev/loki/totem/TotemState.class create mode 100644 bin/main/dev/loki/ui/ActionBar.class create mode 100644 bin/main/dev/loki/ui/ProgressBar.class create mode 100644 bin/main/dev/loki/ui/Sidebar.class create mode 100644 bin/main/dev/loki/ui/StatusIcons.class create mode 100644 bin/main/dev/loki/ui/TitleUI$SkillCheckState.class create mode 100644 bin/main/dev/loki/ui/TitleUI.class create mode 100644 bin/main/dev/loki/util/LocationUtil.class create mode 100644 bin/main/dev/loki/util/MathUtil.class create mode 100644 bin/main/dev/loki/util/ParticleUtil.class create mode 100644 bin/main/dev/loki/util/PlayerUtil.class create mode 100644 bin/main/dev/loki/util/TextUtil.class create mode 100644 bin/main/dev/loki/util/TimeUtil.class create mode 100644 bin/main/dev/loki/window/Window$PlayerContext.class create mode 100644 bin/main/dev/loki/window/Window.class create mode 100644 bin/main/dev/loki/window/WindowFastVault$FastVaultTask.class create mode 100644 bin/main/dev/loki/window/WindowFastVault.class create mode 100644 bin/main/dev/loki/window/WindowManager.class create mode 100644 bin/main/dev/loki/window/WindowVault$VaultTask.class create mode 100644 bin/main/dev/loki/window/WindowVault.class create mode 100644 bin/main/dev/loki/world/LobbyManager.class create mode 100644 bin/main/dev/loki/world/VoidWorldGenerator.class create mode 100644 bin/main/game.yml create mode 100644 bin/main/locations.yml create mode 100644 bin/main/messages.yml create mode 100644 bin/main/plugin.yml create mode 100644 bin/main/skillcheck.yml delete mode 100644 src/main/java/dev/loki/item/ItemKey.java delete mode 100644 src/main/java/dev/loki/item/ItemMap.java delete mode 100644 src/main/java/dev/loki/item/ItemToolbox.java diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..affe967 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "chat.tools.terminal.autoApprove": { + "/^\\.\\\\gradlew\\.bat build --no-daemon 2>&1 \\| Select-Object -Last 40$/": { + "approve": true, + "matchCommandLine": true + } + } +} \ No newline at end of file diff --git a/COMMANDS_GUIDE.md b/COMMANDS_GUIDE.md index c857b8a..b1e35de 100644 --- a/COMMANDS_GUIDE.md +++ b/COMMANDS_GUIDE.md @@ -337,22 +337,6 @@ ENDGAME (2 минуты) --- -### /dbdsetup save \<название\> - -Сохранить блоки между pos1 и pos2 как шаблон карты. - -``` -/dbdsetup save main_map -``` - -**Tab complete для load/save:** показывает существующие шаблоны. - -``` -→ Шаблон 'main_map' сохранен! -``` - ---- - ### /dbdsetup load \<название\> Загрузить шаблон на текущую позицию игрока. @@ -511,7 +495,6 @@ ENDGAME (2 минуты) | `/dbdadmin world ` | admin | Телепорт в мир | | `/dbdsetup wand` | admin | Палочка выделения | | `/dbdsetup pos1` / `pos2` | admin | Точки выделения | -| `/dbdsetup save ` | admin | Сохранить шаблон карты | | `/dbdsetup load ` | admin | Загрузить шаблон | | `/dbdsetup list` | admin | Список шаблонов | | `/dbdsetup set <тип>` | admin | Сохранить позицию объекта | diff --git a/bin/main/config.yml b/bin/main/config.yml new file mode 100644 index 0000000..ec91e1e --- /dev/null +++ b/bin/main/config.yml @@ -0,0 +1,49 @@ +# ============================================ +# Mdbd Plugin - Главный конфиг +# Версия: ${version} +# ============================================ + +# Основные настройки плагина +settings: + # Язык сообщений (пока только встроенный) + language: "ru" + + # Отладочный режим + debug: false + + # Автосохранение каждые X минут + auto-save-minutes: 5 + +# Настройки игры +game: + # Минимум игроков для старта + min-players: 5 + + # Максимум игроков + max-players: 5 + + # Обратный отсчёт в лобби (секунды) + lobby-countdown: 60 + + # Задержка перед назначением ролей (секунды) + role-assign-delay: 5 + +# Визуальные настройки +display: + # Использовать титры при старте игры + use-title-on-start: true + + # Показывать ActionBar с прогрессом + use-action-bar: true + + # Показывать Scoreboard (боковую панель) + use-sidebar: true + + # Формат прогресс-бара + progress-bar: + length: 20 + filled: "█" + empty: "░" + # Цвета в формате &#rrggbb + color-filled: "�FF00" + color-empty: "&#FF0000" diff --git a/bin/main/dev/loki/chest/Chest.class b/bin/main/dev/loki/chest/Chest.class new file mode 100644 index 0000000000000000000000000000000000000000..04e6073ce343c5e18e26f2f517a9c6d837b6f248 GIT binary patch literal 2437 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/chest/ChestOpening$1.class b/bin/main/dev/loki/chest/ChestOpening$1.class new file mode 100644 index 0000000000000000000000000000000000000000..94f37c9508cc496fb9ff01d8f75995e106c5d3c0 GIT binary patch literal 935 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 HOC|pUP8pCX literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/command/DBDCommand.class b/bin/main/dev/loki/command/DBDCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..c6311a65057e01e626b20e757cb6e057e741b55a GIT binary patch literal 8752 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/command/SetupCommand.class b/bin/main/dev/loki/command/SetupCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..eb33a831ff5ce088339322f55be41b28502d87f1 GIT binary patch literal 14059 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/config/ConfigManager.class b/bin/main/dev/loki/config/ConfigManager.class new file mode 100644 index 0000000000000000000000000000000000000000..1f8049e5854bf0cba75fa226ad9132396af3c11d GIT binary patch literal 4674 zcmb7I33n6M75<(VMwZ9eF{^=q40dYCHcAQtrs+oAy`hZ-g(h@O+H`OKO;1nK@4Xo(^ff zFpB?ZXcD+RX^Fl>v{}CsV&`NHVACf(Ta6J?7&V9w+nQvDuRw(2$7gF-LaZlbPa@8S3_#rtwTc~ zh(6q*p0k7is>u5tz!x)QS??M&+0gMX-WV3jNvo2oRA+U@@8bpyLU93CM-dkUHYD<< z;hJOSf>E^HvY%xwwT-pek7sj5 zm#R!76O(!WxQ!j2CG|P#HZ}N30r*g-=NDzo_F&@|y4PP%v#? zlm>%%3SZUmm9jSsq{fntugQn1HDNmivOa^aYk0QIssM9pG4EWIkAjYG;5lkHlF8X( zE|+Hyn@OgjHp3O>Sa`0RQ_J%@zJ+fKY{?jD**BaePFwCGzZF~~E8nO)YQ-zJ{+dF| zi{iUFz9+8&?V^#-@|Mx?{j#SrsF|ae5~eBuuS9yM5a1yv=o)##LZ(BYNxo^DDh*JR z48l#2q2{crlQsX@s?o~xHHa7R3k_G^vTvkquOTaa^Gm!)9LO7m?Nh~peTowTsUVmU@xC~VNgU)EY+t( zps#^Y^?a4sRLvk3oK>ars?+VU`Sa{v2?VD7e#dbOZr;dEneL*Klgr)VcbS;q}|O&m(7@{fc>0Don(RnH}E zs;9)q@od)2$8CdcSMLXy(R2< z7VX}*@aZe$YsL^iw<*h;(Sj|sx|P#j54MxKhws2J&o_HIu@_P9s9pIga3{ZaLcBr7 zCJjO(JLt$=RN=Yv92o^^=OU5rx0kSg1&1OxFmfi+eGhk6abyLfB*aNLstCtcFhRlz z5+)U4dId8ioFrjZ5#G6iIY!V^!o%I~D&Y|sMU#qRCo>1m{y~K3eJ^RdahR@6)8Dh` zSCQzRJANbr$%?BEb0J+lK;Ni;v;?yRi+*u4Q9?#-Cb^j@A*(jC+{~5Wa8q?+Gb08D zI4g#kzzBbX7{q?MBGc#@Kj0g0k~6!Xr;ALzgu$*G=sQETy@OYgn;KH}YKsi=OJV35 zF1|n(uVUR40ISi#8f;|3w_%?$5%SbjDzytA#D{34gIIZtxN1^03qbr2+cf5-Ne()m z6Jm(65`j4}Ek;`CMGv9#;gQy!)>p8xrco_k1zi?U}#d}&y`0_Gh z({dM3yWyK7EyJ&(t*2#r8J)vDEtk>8&k~*Ih z{SZGQ-=plJALA#qAW?iL+FnP$hG*3Or&=bt{ujYfF754aFhR`<-#?W(BhD{(k;Dns z%N!?=R#lJwq1yVD@bhJCtO<9;4_Cshi%nY&&nxB_X-65}I898ba3Y@4N;v&~F~Q(V zENBzCYlGk)G-iF@uHu^STa>Fb*vhnzN&tDyvQ7~nsKI5cZ%5!)xZXf`qF#8Wq3{j- zx`FUaz3^;9;g|4o1L3)P;nNL;Z(^~5@S%F)a}9)>@f($y-{N;%*E2_dqN+cu&%fYr Pq{&|k{*Hg*-{|>2pf{YC literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/config/GameConfig.class b/bin/main/dev/loki/config/GameConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..f15ca2661cafb9ef3d04fc0203c67162363babe4 GIT binary patch literal 5573 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 Lafw(WTB!Vgt0X&x literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/config/SkillCheckConfig.class b/bin/main/dev/loki/config/SkillCheckConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..d162c855efa56ed0d7bcf3df39004d4128ccbd41 GIT binary patch literal 4548 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/core/GameManager.class b/bin/main/dev/loki/core/GameManager.class new file mode 100644 index 0000000000000000000000000000000000000000..f5f5d659972532dde36f55f8b3321bd25e2843f8 GIT binary patch literal 2519 zcmaJ?ZBr9x6g^K8TuD}hL=;g9Vv8goi(0KMh()c6f-gm|*f%%H8W+ND-0affU-WDL zgCE)%g`v)L`pM4pH+4EacXyktfPP@}?A`lv?m73l{Qd9me*l<8pdqDjylQP2b$87+ zDz0Z4x6E~G!F0@;)L71E={IsC3lP^i7Wf9$NIx${Nwf zU=FUjwi8tu7@c>$no$nc)@1;_Leg;wpE17TI=*Q;&AZm7Lhoo4o)|--(eOEev_>!* zJ!3KOHtY@8%i=Pogo0^>LL48CVOYMnEX2&{xQZ`1lV-IVHK{O|7>+pQHM42`&%v?) zzoz3lZcvj(Ksqn)gKi(Zdrbo2rjA>CO zzR~cQinl<>?bES>C%ibEn0dEc-i+s8lqk00{^WY~s*!Y<%Hlixpy7L7qgKMbZaRJx zeh>Rr-D{s;Ge7oQp5mKBLIyGeKZe@9y2VgeI1Y_-k#svwNqx&C{Oh(!&cKo@kk7GOm?H zH}ERfO z)T3l^$zm9zWXF~;7FXP18X@DMWd19x_zHbvI~Z5k!TA(^5!)MFUWshm_+mj^$G32W zzpyj&;j09~k&xFxA{^prn8;3(f-{6LO6f{m597Gc#Vd%1A}}qI9%2r6 z2z3l2xQlsGC|zWb>MYQ@&}!pnevvjN+n9E6FNHrbyfFS2{o@h(EqqOf!WNc@@!QPH zbeqTia1zc@tn*~@0;l96ab3a$*K8ZvWDD73jI6+3o|5SZ87Jl+Ola&z*+RLbB1QXlz(JJ>N=iCS!me=mW(esj%g!bw9e7vLlg$1cc3jQiuT<-h zGQaYW3J2vtXuOfg(h+A-SjAc#e3jlZR1meJ87w`h6A`!xaK26®#>9XWE4S6C^tmgcIA#^*QGD)SA18j38ftA z6<1xpC;Zpa@m{orrwt4-3~%!`w_WaS+V2E08Vu=XXvZ*FJbg>XA84O5F^=;LPmiPBON_iday&;rW|&TB9qm+kBZomuo0!DKFvksQ`x~LR zWMh^4G#^^{6mo7&w*0zy=>&ZlPRz}G&;WuKq|{3Lycuy-4p&h!FiZZsE%IBQc6Nmw z?aH4cx|~O?8thFdkt5pVpYnWRC4RPr;yPhTdlA zWC3b@LH09U25^F&=@9%5Gem$9+P70NWtMCLieYt-2M&{{JO`u#PWK><0-r*YuBRkv z9A{%vi98LEWyYH8V4@$3epk3awn0i(%*t8cFlEhsMRxz6-Y(IXR8WtgE|){ID=5-w nQV4TYIfiSvj(I`~B+Fn^MJI3zcW{r+`ys=|13EMGHLUP&O9on& literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/core/GameSession$PlayerLeaveEvent.class b/bin/main/dev/loki/core/GameSession$PlayerLeaveEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..932a9700c8ee2265720956c7db9c7ff533324ea5 GIT binary patch literal 1432 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 c+yB7i_@% literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/data/DataStorage.class b/bin/main/dev/loki/data/DataStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..8f9df8e5c7cc04b4f9bce4de36a3a6c6b14f05ee GIT binary patch literal 499 zcmah`%SyvQ6g^W-W9y?)L2%>7O|r1_0TEFsrG-_`39Zp^J1kO{{NL{?;G9^QD!cT09k}~CDSHN3RLsHW!lMgRT zl^B6hMU8sYv{q$o$W#JjKeDvi}+b5S3Kfc;Bv!t9&|>Dm>05FoM$UCb*Thy|F5{-(#;La zIf*VRmfG>#RSe^zE)zA)HA7x!{o{6}eE}x&xd4Z+;h>N9DlYbH9AIeUJ`R|7$gCcY OI6s2Ne}Q9*oO}bb2#eqV literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/data/GeneratorDataManager.class b/bin/main/dev/loki/data/GeneratorDataManager.class new file mode 100644 index 0000000000000000000000000000000000000000..64dae9ee2c9b4e0c5090ae9578b1a2edd1b5cb84 GIT binary patch literal 5924 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 Bg+KrR literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/data/MatchResult$Role.class b/bin/main/dev/loki/data/MatchResult$Role.class new file mode 100644 index 0000000000000000000000000000000000000000..29e2424f3e16ec8b5e3d95135ecbeead60e7f851 GIT binary patch literal 1115 zcmah{T~8B16g|V1Zo8~dtAKpShoH6vyMiAtZ3u+a*sws-l_rf(LmA8BvTJs?P5Q62 zJU}!OpZ!tBJ4>bef^D*$xp(e4bMD;p`_K1l06Tc4VuWGgM05j~&5~HN7Tx>fE>z^ zsU6U*9qzORZB}ymp`B=0!V?wC44Ih1ZV-xd9V=L6NORxk-KO`Y%TS2-ad>c@@f3N6H*tbphX+9^cIz$Upaba!8n9-0ZNDkr z+4A8sF$)!CDfMRAEtiLFpN=%ExzlwtAZc7O>46Bs z_g)ZgZ_uO_^1QM=BV7Q{N(KNjvvT}&lAu+?7}e<%)hL#~;t#M!_MUQy@e5?5;9(*P zCP#nLk_zCckT3D00)gC27;${T+H(Q5Ua literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/data/MatchResult.class b/bin/main/dev/loki/data/MatchResult.class new file mode 100644 index 0000000000000000000000000000000000000000..0469a614fe956aa739d3036eedb9edc3b7db63f1 GIT binary patch literal 1354 zcmZ`&ZBNrs6n-x2R@e%Ru?b^iZi=RM2Du&@jM+Z{2nS#jYi7hvC=w2Q<;d zMdJs5fIrH3?(HN}%7^xx(|ewCo^zkm-+zAo0`LOQRP-M2A%Qp7* zs_V-Pis#y#As3#=LbbrNoI^TGd~hAAalkNCw_Ue+;#yANzcM|CQ!!R$$hQQa^|ogQ zmh04b!*!ZILu$oxtYDR)T#k0U+~=TLt?Uz#HMhyrNFc8vivo2oSN78wK~cr%g+Xg) ze!yEA#!w<=jkf1;C)lN-w=CPXs68P!`oJ)uA&Hdmu4_=yE4*n9eMk%MhK39@;oa2G zj{)J$YZ$};!{Dan@a=Z1&b?i;9$t{!FztQQvqaqes02r%UupA7k?0n+LoV5MCCO0u z_FR!%xe~o029;8Fq%8S=#}|c3TK+pB4Gl`-4pMMe2U3yTWoI)+r zdSy7?sco3T7sg{pd~c1P_`;u*NL8r*QoIs|Bit9pSH~}{fv?cQNZ#2uae5$+r@rkN z&z|k?-BL*NJzqG7!XKPi6NQw0g-X_BAV&ODG%ewuU{N@=9S3ve*zr7b=Wt?^TF>{tpl4!nVIj>OpJ z=WtW?Pi*9`AN+4IQJKmM%MZ%SrEByy(`rD6D^KU@2QjE%-F63KYiPNCRM^@ieO2x4 zb3IDKS?w2rc7Im-7$Vv#<9siCA+?BMwzGiKFN3#KjSgoUIJ=j8b5&uQa~nl5^rkM{ zQlE@0cm9kM{YIfBxNLBGC`Pl&0+j1BX8`Dj1sZ_=&ym`D80ejuWeEU*xUYqeSB2QU z;_h>p9Y2K@pLo;pzU;)8tfaaa_ky8!!vS*W8@6K$Qf>t zGrWTN0uX9c$9MrxKL9O#4>}KR9yDE{?i?&v$*=!KaWm=&BA`e(HI8x}cY znxfoXmoQpzA%szAlls_U8Oh+aH>u!OX7Cnr41#Z<2FzUPKR=^2^*iW~Wd{5g6A+b% z|2n-JLfk~QT*hKw&xqC&MJPr^DAG1w42w20b+pntE+vvEL`l4tt)s;{T4^2a1VpUk z{Y-v6&3`!&9P@vW&95`Rp62f)AY%RxGx^(T{ws;#nE#_}{x?{`lzFWzmw*_Dj|Y)nDN7S^hxN1PwBJJQQwAOO|(Nt|A}gB&W>&Z zRDF}@)bg@F8fZX*85Yo54Ybn=x*~45X5_YJ$Z=CfD(wARbUP$7VBT5pb$`K)WbbWd z%Kn`0guy##X8t5e+1-wq`$`1ub3Kt#QuYqM8r%T8_@fVc@iF9ZCOTxV{fMv88MR*X m`n9)0_fCH%wfd`65PuuC6Zz?(URGJ4Tx*v*dk+sey8kb8bT5(s literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/data/SQLiteStorage.class b/bin/main/dev/loki/data/SQLiteStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..e360f2c9d2e4bee5d387f35497939ba7f8ba1a20 GIT binary patch literal 7559 zcmb_hX<%H{b^h*XX5MJ@WXa==u}yfy1|)f8QDYmB@SrLvm+Yxhu8^Fw z4R{qgPbJSJ`!dPwT;IgZDSNhLz^@Q)95%wS?jQw!K2x4cXB9f))n4l;mHxTNcGgMl|Gv^VV9goPW~IA`mnjOH>ayFjycbvxU4hYtj> zNx_h*wx(u+SdW`ze>W>^>T2xhylIC_l?v(X+(7pc>EC6d8$H}6XBwO-<}&4yeK1)% zNqbc0svi_02qGqWu~lK+eDbtSAIv68N7JQ~d@7cb*%GaAvpaeHNO$4&O+nm>Z3cco zVQtl?BZc%CyD*l_5=jLUw_&?ug_^Gwy05N&2`t3JJ597A*oHgMZ{SXaRn@s_I!z4V zE*fFBU?&C0yv*C#5*Jo6f+()G)9eJ=w}&UAgNdk>7#xa6t=OnFK9R7Z_r#_WQ&v8c zJZBe9&>*Fv)fKe(uUt;2tVHylgmrK-Ha0jpZQUK6j#%@_((FmQXvM}8(S6ZLYa}{4 zcsQQ0ZjIMb)vdOlabpAi`mm-$-GOE9mV7s`=AaC0StL! ztBVf3^uvc^BLhq5v#vM!Du9&2gR$|c=w!m0n6xIN2jhdo488HhL_@>{yTtd^*os(g z6w$9bW+Il3j!1nhM6?F+a(D2^VEk}&%Iew^v6lW4|99YrP0WE5*_kic`DCG6BaP+KJXgLnc@8hC#tQ)sg#P8M?aOS(7l0eq0-lBv{GIZyu=i#AbtUA^0@or&2H zJWiAv~?4`=gUl zCn4^#_K4L#W#U;p$KuHK$Dy)apnDq9@1$KUXG&9cX`l_C!3zeSug^hMsfi1?Nao7g zX9-Ax;g}$1LF%GQ^l9@>bSQkz#EZh?o#`x#07?EX*aLWpPII%gO#B5Czm6{w^TeLU z{IWSNCX@cAiI*Fdx{(mTmn2Kp!s5#&z9Kz4s?$5c5x{Q?Jy!$ecTN1B^jlHwr^6+H zKOkZ>sRi&=g|@n+CJXsv6JNt?97fpIg%YjQ#c&Pa8!j3pj%1I2YU0oE=UgK9=!DL) zn>--8zh&Ze`~_V>-A%FR?P9=%Sa(MV$N~Xbmr1G~W3EtX{>6m2m?O0172Z@=$m?QS zw>zVBHuy({teXvV3eZlfR1Lu{C%jHLsX!_Ko&1-OekIXIY6<@8{NEkK75s~Ve{Lep zx}}-;SNt1Y;8K%akN^)g6aYHaiLU=J@t;ESV&_S&P};s@;tc_?FI_yE%Sy|4O?*$t zYBhV+c`r&Lu~X9Fe@y(ZbXdm@dL<)n`7&kC=CUcW=@l%R3PPDC`y?v0ObA}_jK82m ztC?)-wnZnct?_~u?04$3+F_%{Uop4b*DZ1OFH>b23p-1<(;t-0h)82AY@TRY8YKL3I$Z$V4nEMp%LmP1nG{dVFfw zipR!c32RS4tzgIqlo%wc(^MMaE%;8Bl8&Q59^_{AwNfM_s4T)wJh9xB4>a`7}AuaNNu2tIsp8 zSJpP3X3ym-C)(b+oFsj(?GKhk>Sj~jBFGJ-i^Eb4r=(WeAA(;N6P(JG3$wOUXNDTS z7;Kg7#l;Qfa;0Lakj#(SrIR_rR&70 zSgLrIe7|d9oekaIj>7%PY${_HH^+0i)8+g?v*GJn8U`k4m1Vjguj^m2eO;5QVmO(} zO!4!`K!;!T2Gn*I52sQyv;EB6Z0%P8wUhP3Xp#kZ$|~h7`TSrx_UX4My@PRGlL|jt zx-`(j{sy7MXPuBI+NC3P5a^LSz=msT^+@-;rNw(2#QJbkTNGIྒྷY^a{Ptj1r z3O6;mXgQ-BDoSF%c31L|<00J0b50BYd@Q0u@|}iXA3SoJ=iOj?8%$o?`8LjW5AQ2_ zF7j{73s~860jr+V{nzp;L2f#pi#IZg$hokw{TY~iASo4HI`-bya>MlNp)7r31tg?3Rgj9ah| zT{wmwy@?*Zx#R98R$?0^$Ek4(TYeBf#Leu(D!c_J*mf_qw!-rUMh#4?VnY%$ywZm1 zd8#oeel;{ZuKK;I-zWR&U4ZRDzd!8va>eNdWLpsS`yv-mTEJW7+0W-6bDs@9zs-FP z@c9w?q z&)aC}?fka219xI4qPQK0NMLW_+iCPu&j6msUHB4qYpd@juhCdl=)8)L;G;C9w0#U8 zr`20n{rw`I(yMp?zr>CCsbRJDgjaiF5XK^xXAsN=P8ld0c-p`d`Zp(SPkayU{MzzF zd;204dh7d%cw!AF`~-g4@u25JoQkkfy`f(jQ{qE$V8n5tFYK#xpl<=csgO4s=smXq$B73D-_G(4;Tg|fH zsmOl6A`2Uw;ScrO1^khI`}zX@#6uT;lW#r&0@q7qJS#5;+?Vs%J67l3G-c#*c@yd`siU$9X=5zrtS=NxSetjWdHE&|1M%4R{7VLnso-#wz`@$VdoWt((BG{9Q7z z2CF&9TU*;A0ohU=p^++F^LO}r2dQd-TqEK0V(1^PhSYzmvW?G2=J|Jrd3=68fBQ)o z-t+LbIE3Oe*!ExUbAZqP?LK!(=kGg2<8z7T{{umawsHAoHNE#BHxj_R`6GyVnm-kO z*~SC~euQhGXI7JmH!=46$iu_*zyzuHILY@UW~n2EXJF%V{H`R3*iKB+I2Ab+=PBsBcm_*WX}#A6_*7O8hRA-$DT>J98&-i@NE;zs3FOvp;y z=b`hNIy?`Nb|hcDepv;kFRI}9D%GYli0bzX2Zg;32^nFdj)V-~M#oWx!$zc?q29~5 zGQA}nSf$z*REG!h6w=(_{fO)IaKL2?k*(IUi)!tH3Nzh?1Del1uy`qKNJgP%H>3EZ zA?P-QeJ?Si`6Q$G`+bs8d||(26y7AGP%O!hnVxJToS|;e9`AjYF0k+z2@^E?C-?&z z;8p%i5Ydvjhgdg&2_t|ECG+f^MTB2CcF@VYaUTZxg>IC|c&0JACzN%s2KD{CWznx6~sCJT5K5loNWVw;(R9XCw(i6JI5*n9K s*`gx6M_{OJQ0g{)-J!3y>+7BRI-sw+^mUIKz>% literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/data/YamlStorage.class b/bin/main/dev/loki/data/YamlStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..8a6b0ba441c549aafb35304c894c93cb26f6b07d GIT binary patch literal 6362 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/gate/ExitGate.class b/bin/main/dev/loki/gate/ExitGate.class new file mode 100644 index 0000000000000000000000000000000000000000..0ff450ddef60ed3e204e74667812a305a8a918ed GIT binary patch literal 3276 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/gate/GateOpening.class b/bin/main/dev/loki/gate/GateOpening.class new file mode 100644 index 0000000000000000000000000000000000000000..e11f5616c07d214c6ba5774eeb83ff5d22ba9f5d GIT binary patch literal 4412 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 HyJY-74WT0- literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hatch/HatchCondition.class b/bin/main/dev/loki/hatch/HatchCondition.class new file mode 100644 index 0000000000000000000000000000000000000000..30223bd85085d5dde565435906cf0e17197fb911 GIT binary patch literal 3904 zcmbVOYj+dZ72Q{_!SV>3hm8TtC=L)?7(|;Cl8Qi#Y_NljDWYym)5o=AP0}W9)7E@yR~M^a_|mSF7C!U`boD2tUETMNJeDmjvl@FzGjrzLbN1PHpL6xE z|33LAfJxjp5EIDOthIvUt=NTS8B~`GGwQqKxivemJ=Z`&p#QF1lLbe*ONIHxyH+(2 zIIwEFm1bkjUh^9M6|XU0w_E`+E0DTiyLNC?KzQ%?6Xc*xm8MR=&C;*R4k3vh=MR`nGsc zg-NrPArpsjgtSz>rW;H;_L>#3BXGET=;Ao(GQy~=Y_K~}($TQ$(r#F_tCnjuWI)Er zp4^dSa64)1^-bbl=o+Ao|lBb~4 zte?b~f#(Dcb`yk&apWmR+YbR#blj+um@si#z1U;>CCBrvnlctloNXCr>{`uo)s}wV z!~q->Nb363_H@fby%|;Msw8Qg$4drYXg|23D~bv$$s9Re?iW>9>V7QN|n*+_9a&Y6!g4UTBwy zyWtamk-LzIE2fn-1 zVr{SOm!%(UPQP7-ALs99R6SSjtu9;Dl}WdD(^|8nqq?|Z!dK@@s-aD6u}z<_I|bHE zd;!lY-+Lz3m2bk+=hhxat}fQ(@v~}AziZ-qt!Z%0=6ONUin>6$;x!vp>x!*Tr~}(i z$umm)JSQ)EUO@HB`kWOkdo@3epWrP6KNT3=8VR<$=B-$TvQ9}yc}G?`)7MSBjdyr_ zt!|kF{@rR9efYLkhQVi~TXQV`c-iw-n)TM?)o$!(?nk?2+rnEs8a~_0Fy-!RTaDL_ zwVsl#brSM~cf%cNZ-xJ00+x_^Nn!4|scoPeBe6Jr1E!#&XzD%2e4{77J&bmAX zOOEt?%Qx^_ffF6%cB9C^?*&G7ccpqlKJg5}#5oap{HmWRyzAw?fj#{0;nNkw_z$G> zf9L1u-;ntWpJM3a_g=lS7YUg3&7hyQ!O$D~7*GABbyP}AoicnkKwFGnD)u_>61?{1 zPd&n+i`n5nA(?m>e@Ih8CrImH{e-no2hWG@QSd$-#V|uN1hVvs@zaA5e#dc)Rr^qNcqj;A7A)MnH&ih=Y;N*zr#0HY_hrBs;A0{tn?yKkgMD`Irw}mex zV1TO!`MYSS4P!3Cn8WjULF342w2I7}M%#{2y~`1g!k9p;r;jVx!#fauqALU@LPQD} z@o8Wr@LVGQ2{HqTf8gA?WOg9=#~p0$*VPRZ

UupHXI0TXvDGFlK~!B0@Y7A)aU< zK19Y8zX`5R;{xxJZA>fw%_{aF*8d+I7K&^BW{fI%S#y1l&x(oBQ;)&l&`&T0JjP56 z`6syEx_yi<3B0S=j%zgxG8b@yIZqPzbIdiy3Qp)6LfMT*HH>QHJcYO-RDrT66~t7N z@u~#)CZCk}M@ZyX<|h7%Z#=*OUaAjZ@^a@v#9%vu3F0`-sAnkY0xLVM5#+*15rPre zxXV0AR=S00w)zyq22Ujcr-PL;y%Z}c-4I)qQ?;}{-&U#Wh_Jy@9hEAJs#IVV zF5`t7_jJXtwK8OMhQuGD0>g$26P<5Ml!+2$Iua?%W@E)6)ZnOhX!e~}R}Cr6ZeV}d zLmTMf^XuEXJ=ABB$uDqJyv&}uq=AH8KNJBOiu5_8At}a&Iyy?d+teb#4H8_?0q$c8 zS+#sNe@eA>a{~uMn1({f&l}qi9?_jrqVlJRW}3`i3RL_Xm>wX>~Xdu+r#dUInk2{3Cp414jJMNF;VjLp8*v&@=cxg$FISBx1d1Bd?yp>sa* literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hatch/HatchEscape.class b/bin/main/dev/loki/hatch/HatchEscape.class new file mode 100644 index 0000000000000000000000000000000000000000..ef5738b6df001d93456d843346f7ca829cbb728b GIT binary patch literal 3644 zcma)8Yf~HN6@HeRg#2O)VMu&ygmXjUBJ703F0Nw&!d5IU0gP)}hb+<}*2ofFEjTp2 zI8NInb)7c1HX*6gHq+7zZEX_c$eHnUm`*#>Ps?BEFX+d9NSi+I?ji|Wo~aqHcHe!^ zInQ~{bI!j1`0uUT0DADT2Neo-C$)u0IyhmV6FDKT(Og2E(>$nB;6JA>sFAdq zNkxXH&S?o#L0xpTw`VvyInvV?J2k36>El{&Hj^{ej5)5R=e3%r{>>2lr=Z$)tDq@f zE>O3Enj?BfH;*dV)lz;-Xk0;6Z#Jpme6=D-8TsMuuZ{^xSr7l=g&`R z#+W*l))WNd*@T)NR}Ec0yNgxkjGj}lw`?RQYeK3ujYa1{!M+kyb7^%^Ga{q&#)7_( zHM&C+KJ39h5B4h9SuQ<+FW~{EsON^}w2Y0KCJLGb_G6cVdIlQN7Bn^8lS%f@Xo*=L z9>OCYJgngUg2Ow)3OtGyf=p@Vunma$w1nbWBNdsNpPkjsh?X&Rb1~w)?cRnk+B|5b z%X{q+Xh(;FZFDJFGxaRN-nZ51=8JBbK&QX~93%)m*JIj}q4$r-n@-rfpYpKZKu-P(A$Sz>-d;7J@Js+^Wd4rsZY znqpZSTjE7Uj+%y^Np*+DC8jS6bmIu6IHwuYS>ycwRY7XYn{(^QW+>|74$`Gioh7;J zUOaMF-KeQ1W(U+cS8=roHRB+WTImyrN=10}+zCCI)G}TiC)4Z8Pg?KG)Pox@G5?Dj zmp3kTbaY6In7}ixMQ=Kr(~@4qZHt6!VcoQ@ZQ3+Ti$Q@Q4BNGdWk%SzWR1O5g1Jze zzR(1*qzff)EW1lO9TPYuB~nL;JTrfu*%`c(WjZbJRVf9psin2KtYOOS69Qk8ZR(et zIq65Ir#U^O#aV&pFi8t~IGr`pNp{axt=X&HwNR1pV2W-^z>j9u$IG{h@I$ z&a;)*m(}&I_ zZwMIRe5#d_AJa`a$HHXd^>2*3CY&SWq4wB+1&|EPSpOaQS7bn3;aN8uEww@s+8fY z0=O+Sh;7tWSYSy(R z5USQ5M)Rhgj>PqxNtwNkpL+0)g6&)12>cB1l0n_n4AsmU{333#j=Agfu!Ijhc%SZz z9yZ?!{2W)APeyxzA7a@x#bM}to>{Le_=UhP@he745|f%qP)7Hf&V4n zw!W-M89UR+y3HZ&&ZB18j=vT7oou|Or{hDtCnpDo#-fwX?QlFccwBb3E)!T0_@kU! zo*6YaXk+!-=Kxa5Bf$ly>9=&L)AA&k9mwkT>r(svlG8|s%oNQW^p(V0f!(M^4WB&r zlNSMb5a7K$6$sSvx}8t`+*!e2U-%|=gj;VQaNXX&lh^IGryZz*pH}r~HSAtOZMby}!4+N}9BBJHsw-E*ZFz(gtRb?5y0*Y$ zd34ceMeaLXwL;@cNC=NGFnH%!7N8x*S8$Y& z8rh&v;TS>n&=(I${?Fm_Al$@vPZvPH=z`u~08Nx-0T3o#*w2+c;36lK< zB>P8@24u{q3jPy`W{ z{Qz+tBwvr=0X%^aIXi$ueCjU2+f~5Z<>IX-$3?tk?sIG-aSaWG$m5L*_!wD`5)zWR z)}8RKVL;-juq!Af2zn`sM-<`+Jc|*&uaE~5*W2GHS}C59&Gf6Tw>c#l&11X*r=5p0 z)X&%X9kNxlisyyMW4an`fpj3__xX?beR<5)pmi1I8onuI^&Kf}M^znmBlMD+KI);L zx;jo?Vrb=2qLaT}ILTwk0OC9-Jd5EHjz$XDM+zJblyKyQQYa}WyPMN2Gn6?sl;jk6 z$*x%ulq055f*K>JarW!!lE4jxzzv1K+sg)4@G@oQba#rslKuxB(kLLGbN4;xhpp)@ zyix?xL0DId5zqT1_ciyaGS=8n6`)Wv| zKPXuG;;%)_j@lFO^4wDgjpU_xWS?RG>#XlNQkmj(K5yp`w!3!9&B4n||75GMjwiT3 s;~Hz#&OVm9ue2uy=gNN&@ZgFEsV}et)gCC$6KCrZ@Hn%VNGh=UKV^VyMgRZ+ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hook/Hook.class b/bin/main/dev/loki/hook/Hook.class new file mode 100644 index 0000000000000000000000000000000000000000..42db737cfedd45080fb5201b0f6f708eeb799380 GIT binary patch literal 2265 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 VCS{A8xJ5Q2drx7Sycu~v^$!~WBAfsK literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hook/HookRescue.class b/bin/main/dev/loki/hook/HookRescue.class new file mode 100644 index 0000000000000000000000000000000000000000..c1194238c34743f90494ac22d1c283ecd7ce0d7f GIT binary patch literal 5418 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 U|1T}5gq3ncl?sjrxpMda0fgFdKL7v# literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hook/HookSacrifice.class b/bin/main/dev/loki/hook/HookSacrifice.class new file mode 100644 index 0000000000000000000000000000000000000000..730a908afe9a97b44af915903b57c5acbc6fbae4 GIT binary patch literal 4049 zcma)9`F9i775<(jd%R2liyaa$ghk#MLVzZSK#Y)U2ipWon3A+LW9iu*EYG;3k-=S( z?)#dyDe0PS>Ar*p$EHoXr#(IGkNpSwH}uE0r{9~AXJjlv>~qF%-rRTZcfY&5>%aZ) z_Ui!p@K+5D0y_(G-Y7aVmND%(GsXZPSu^iilU818hzo4EYR;QR(X^+G^AlHP-VfL*jRCA}woodWkKJBJ*1%9tq6%vhcwZ8ExG1Yc8a=)hhLd#JLWjE)DfPoUW< zowti5!)NQMR&sPe$3Y|oHYpHckTa8$45}g{S>LXry9+%Ux~ns$;!J=o>zSU^(ThV2 z*x5|q*;Vwe6-_C64(oUbM~Jp0Jzs%9$6B7N4EVGj#c>VC7}}85FnT)Pq7r0X*;ZRC z0aD&Ss^bJ0({|IgowA*mAp^eap{fefm7_GM;8h|mup^4~os#rh870AyObAS6esDnP zs24m+-A5ksGsEVbpQ?>4RsM*7x1t{d8s18;{etwYS!tXtyQXJ3wvItOL72|uuvILo z%-))OqH}1iV5*`IF{N)r$9Z+G#hJ{?yki$iZMcA}hEak2w)Bjd1;@1vvoOyrEW6V1 zi#w?0eK`Us>B!-tK%+uKt1?;3=9}H?9C}kWQ_Z-1^NVx$)5qOXP5EpOwv;8rT6OrZh~loa@?Ng;vKjEQToW5P-mi z8!)<0eDPHLG@FV-@DUv!#m5L=^(OzDK+md+AT(dyv;r;t{pwzL z2A|OJNo8K|8$L5g2;=F#u}u8*(BJ>TTfTNgA}T6u3+%aohGq!WhR_MQ= z<2ihhd*n}58e1>9iw2fTVYlMT_=<+-*<8amuO<#1H}FDm`(~v(FIgU&S92e1rxIlA zYdXG;Z!kKu=8Q}`HluaP@}{{ed8Vx{&;vDl${I9n_!hpc;YD6W)nW7j==cu4OGFc{ zV;1seiTTelsb-<577^uiCnv7B?Ng9gO8_-aTDDnK9BKIBs-Z66h*=WW?BHbP`kdv; zLMx8qCpvzLpK-7v#p$x^vXkI6QWzRb^(g@rS;@NNJJ;z;8fqqTkMs+wV(t*MO(=HTcY2Ofym*-Mz`L5bo zbuhOuCu@j5T_qpP*la#)kfzOIF>84;wY~|<&G?tnOhCm$Y%m^J~#5YiN`i$9ky@Kuauz%8epPS%skI`r6<|Fi0vc2Z=k(*8M_5uKyz2`BKCLRMCT%mo<%&|MUh98 z{g`im7hwb2seK2r?4-_J{N0Vcbnzgc3QJd@JH(R2Njyf&w1-nTP1}u}#vkWDTQQvB zZZpJxuvMcE4QdpxVEiYg6h?Cs(o4u}!nq|32kRv~Ih+_0yR0#)uV`^4BxZ-W4BVOU<`Ufd5=8^nLHQNs^Z zv;=+>X4DlLR~gvOocZxh{QM=fbaiw6N`!KqFOVVDer&)%Rob?PNZP|xX|JS;N{|@D n20j+KY{08z!p|AJP6WTj@A;PC{vYrsyur-8z)|WiO)dWiC`3os literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hook/HookStage.class b/bin/main/dev/loki/hook/HookStage.class new file mode 100644 index 0000000000000000000000000000000000000000..b8af002cf98b7143d37de16b984dfb399e573ffb GIT binary patch literal 1730 zcmaJ=ZBrUo6n?I|uz(w-m_j6KY)dR`jA+u>7l;)J1S0B8*XS^Q$gHr%jmTzJaOzL# zFL0*Q4;I_T>5J1({m>uP_MBw{OsBdtd(WPG&&%^X_v~MP|8fN&hl+v`fmq!$>XATD&*i@= z7t8sAz<9mm7;VdL>1NGt)sF>4S>S#`-z{(FORu(bYn4KRiY6FMg3%=UXaq*~D0sB6 z`Enz%ldHTe=mPP*8!!a2wWigw+A9K5GPNTh=k2-~fG-4r+bZ5iRKTD0LSo6vfU4eh ztX3maE~j>a6nsa85B>lYcJ8WB*a@&Rqapx5f6c16g)!n-v0CP4=V;$_wvGL!DG;gH zHKVy>I2QZvW(X1zjNraN^#2<7`hKh;h!6p9A6O(-q+zz7{Z~PvMzY8)^P4tdOQxJ1dZ;?cIsBkXbRk-yRRK?7;ilE{u86wF{%3$<=jyGQ+%%A zGlB4sil@hI^GL-Ppos_?j$@qG>^G+Z+A!s<{nuu#ohc8=|89%qCulB!t*-?h4ySon zbQ50*U#iGrRp7~RX1-}0A7_Tz^-B$)^Q>q1TGv=Hm8E*7;uAbkP^7UN1a8`Tr*=@Z z%x1mdIJToe6$t5e$Ele`i?4sIKf()~#(#v>Xc_H}Lx&HBU~tduwF<9fR+k8cL_e;7 zb&}^1AWNg@TAD&SiSWDt;TH^=Y@BD3_7$4aafB)VJ@OpN=BM~8L^TqT!r8Z&xIoNx zCuPr#yY7@vau28dzf-W(MNF^CUBvaOuZwB@0{4EPN+bAy)(B);W$NU^4B?q4v>&>s z96`UE*S|#j9I0v#rrzQsZTct74XTW}97B{p>aySpQOc)yBwd#L#XKddmxAV1O_LQA z<J!ACB&QV3$%~hGsQrw^h409rCqXaobNf5=&Jgu8 zs6_n?ep=6IPjbmeT~Q}6i`$qZvhxHwjftVYi(cQyloNzJ>+`KCR6NLI<-u5{B7DQq zF78#=CGD!3W!X2RyO&s==VrsCL|@$?jrmirhUQTTMTB;Vl|LY^%?k%eVb+bO;#*fw z;At1R>YtF$cQ28@`Yp7s5l@oDzjX$Amz)?m@;fI^j<4rbFOWN@B4JEo3I$A)4k@x4 p9%GqoPp95}3;GG4fL{a^CvN|OKp literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/hook/HookStruggle.class b/bin/main/dev/loki/hook/HookStruggle.class new file mode 100644 index 0000000000000000000000000000000000000000..f30fe785b8e34f7e9140ba8462b73b281cb50a41 GIT binary patch literal 5280 zcmbVQXLuCX6+N?BF-RJa1PCLHY{0^nRuT)23-MxNSYZ$d38RAT6d0{Wt3jh#Wp-9J zNu1t$b%GP8J5F&5ju944oK6yl^j@4^ou2%Sk-?3tm1wQks~s{d6%mZjF{4%S-Q41L7dFg9aPQ zE)RNzyk`~Z^{SX5dYx}Kin_=3t-R$aOBW3c9va%Sr+4>}p1#4|hlY3d9vSS(?jO*g zG2~_0f?M=W*B>^Wl2t{L+sH#@%i*5B?*7BU2ANz%Cb!$J?eEZVMO#FdqB44ovDZGV zA(<_VTD7P`vwkL$5i9B6mK*v%Y>oqh+{6JT4bjAx6iclIuzuWUA>>{L#w|?0X{q=AF%7HRdg3O^twY1oVwme}xQi>m z>K4H?tcuoD6l6^$ODf450^q7;subspPeL_ph*P;BGfd$D-^@+008}~aVAU*-3PbEs zqM~1zifXqdmQm+tP5ZErJ#N6pF*Y>Mnk-DSb6mav-*IX}!gV+rF1f_ZAkQg5u}=6t*0rsdcxv6eHncr9M9<8>NVR&Ynh zmw`9njZC)Uc;U84H4T|L4PXxSnVt*!lkIgPfPV`|cP`3@ji`&I*Q zlNKSpx8Liw#>|rAOTph|;O%&aXdWKsN^>6ZOQ$MVh?TMS5f!>IX4+1fNakVD%z5^h zowI82Uc6t&`>1?{n~>cg6)C-M8Mp@@U^#d1-pMj-iA0^hlx%n5g9bi?4@-aH=^+L* ztdB{%z%HrRY20VvqxhKMv;4i5>GnD#xDE6VBm{V+xoa!?Bi02_tQEK%wO2tQ&2)zcucSUFSCoDBgy- z)-U>=Id#DD#|xvyTKp7`>iC(4jS+0yoi0pR>0ZSF7n);cj%pk?@N@ivx2DNxNW-~! zvk!L$#`l`;sACmddx@ho6+h3JVz!%)kIdOPcznwG|0V;M7v38`i9)wo({TovbeZ}k z_(=oS3g^Eu@MUz=>-aSX7P%Y_H{kcO_D=>L!PmI4O**ZQaU~rsw z|H}JvtVKN<_}-}ISMYsh?0psYkqE5j=S5s`8@-61O{vpZlj=Byi&LGa(2{xxm)>$3 z8%|+k^w@e*nY^5zYZas>Bx$IIhL&Run)$btGgokaeP9%AXy+Tvs~|M>Bw-}zK821D z#G?#N?xaH1n4#Z{b#xLHc}vB4OX$3j zt3{4PR0r#H-dQw!9G?h@=pm2JgAEmTO)5hE&y5`S zq1n6nEfMaZ*^RTfU&AbBG#t1WD_KvU(xlFMJ5-JF{qxM_CmsuyekrKBS@7X}3QUGP z!bV}TL`K;XEavK14AYJf(>iuVX#koEyb*~f*qy6%zU#cJpuQm?$59A%Ybb`!jy8j@ zh|hS;8u$?|OI zX6w8$2EHjq==bphnw9RAM5115<%bH^kMLuDivYjm*st(g{7yan0gvG?_$%k+1o|8P Ifq$X-e{iQJ`v3p{ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/BaseItem.class b/bin/main/dev/loki/item/BaseItem.class new file mode 100644 index 0000000000000000000000000000000000000000..420dba252e16572729ac1747ba942f9a8737def4 GIT binary patch literal 463 zcma)3%TB{E5FD4bA%W5YYx15PeRTY`S&RG=-J|p|qtX2@!kb5L5|TAw^n1qE*j0yC!k7StG}Z;P3DY zio{37fgiw+LX5Y8lml?F=h^e-%{=@2kFVbVJVx6`fnhz7(=gRT6)G!7;lV(TZKSpJ z;W1QC#Z-i;$ok=n-l>c&L&=CN(IbXhlwVG)O2e1=S%+>PsZ7~@hGL_6!r&d~LEP27qznhhESO@>2d zLzPWw25sJjT{7~>ig?%wa1(VOw|+T!$t;fB*rd@i`POzbD(5x2&2E4#?D*JbSo^bw z!zYKX?3m*&cFE_FOh}YrhgkpbVhi^;8jcvePQ`eTs{Vk;OL>>i#GBdt!I7SrSUy$G zp~~;C@W4G5HAb&WABVhirczX(m|m6E1w#8d26*cWg4Q|sC)7UVSyySTDD!@)6Q@m8?#z{%650{)<@K;$!FZCK73CRceqUO)j95*RZ9+*F5uo7ZCN+YR|Nqc`mDyNQ=S(?*9b)X0xdP literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/DBDItems.class b/bin/main/dev/loki/item/DBDItems.class new file mode 100644 index 0000000000000000000000000000000000000000..28f8c11609ad997e8691100f502335e89111a98e GIT binary patch literal 6655 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/ItemFlashlight.class b/bin/main/dev/loki/item/ItemFlashlight.class new file mode 100644 index 0000000000000000000000000000000000000000..7ad4ef2647820ad4040037c37ecfb9e52d76ae5c GIT binary patch literal 4510 zcmbVQ30oW26+Mq_gfuopHjZ)ZRE{x5fUUS~N@5&0m{qX=2Voq@;ttX?j1iKo8Qju6 zZMwPXzNKlC?xl;{xFi9Cn=Z6<+jMV#Py6+}nL!%a!k^nOUq+gz`|iEx-g6iH#(&m- z0iXx}(oiL^H!Uy4GPyZ3X4-N-7UyFiV_35pb7t1oP$STI!MJ3^GDdbLHadMlrg&N> zu&eyuNyC!ru0S9@-amZqRR5&Fo1ab#;I0{I_sR3dLdNdhj2uH157NaB1-6sHXp1|svu91l_1+3qsXCU*D)hiQvZ⋙q)6@f=veQNK$G9%rVN2~;SmL_hoNn& zC=#7eLcKcr&`)9#vx@n!v<-pQt$@t)X9tavqZNTc9dE%~RhHs99>pnv?J7&AmCqQ9 ziv9vSsqGftg;|cnIz})maQD11Cwp_*lwqGW?OA@aY$Izkf2|c5TR~X}k0GgHj4AL% ztQ7w;w{?u;4BfPDaX3 zw8i5Ud=B6p0tYshx_Zp{h+#)gnVF0%M2u`Y!ak6ii`coyG#f%Xh-suXq&D4Hu+2=Y zr%*5!Egcf)S>T41FfCi)VA~VENV|=z+q3OlQ)1mJTC+M#Tp-sO1=53A+Tp=3$weoW zBndZ`U3oW}=rd{E)m;v?hzgZ*PcdoW9ah zS+cA=+4idQX|nx(zwp+{EoOulw>kEPjl4IV>QYAbj74(qE5k(on)YJsG&__mI7sSL zw^Bqdo8IMe?76u+&^8gkS7~r#NlxY#BIngw5n0SF6x^@QhOs|{ui-@vUoW5RW#)9e zq`DMSlT8mx%Q9vNqdu4IllhFarPA;%9pA=x1a!sb%~>PRR$hyx1iE;OlI#QD!;*&Y z3$#>B_)YRUet;j6avoXY*W7E2U}GAuu4d)`<|F)aRIM5YZ}O*Uyo z(xy!B=VCxS#rYnjxzdYidH89RlYc6J7UDOp(oDZ2XQtHXdsWA4c$p!dHLOkct9G!e z;~LhepKb_DmO=Z!OWR+9USAGk0@ro?9IvyZ$%_j{h6Ar`2yHfSmRc~$sHNn9sg|xC z%H0y=BdQ5-I-JbqY|Abfc@F2LmZHYh z?*yLrk3mn`Rj6{Ekrs}h@=4V)Kl>FSrH=R$e9enFS4WGci>u8t^-xc1m zil$f4?7iLNyzTuN1*&i_pFw_t`}}q^;!VyesEA9er|u#CE_fblUq)mFt*dCi`EnDL z>~b#at|$)U2(KtLot~Njs!@i5?W>5j-}4%dmb7dqHefgXZYHulj;39%w5LhAsj%{I z8MP34I*&N-Kn*>+N)0ZcI-Y{i6d2c^nxa1s;BD?*(TqALPS0IO*W@xDTE*KF9V<9F z+<60wo$V_aSi#Ub62KZxSD~}+bxcfFyXTLu;|U-+S=0V1j=D#!>v&Qf)rQX{ufbTu z4DYOgYx~IIWi&4%N4bSHyoaedZedyu zVkcVp-yz~?!*N70igt|geTpXrV|@`ZJd2~a%;+fG?JhPCcL>kmlX#BE8@X3}3ZG`A z3~KodK1+L_qdX(~Z(P>UrEw<{_&mPgh6zLbRA~z-cV9wn&6VmaMK9e*Kj_O>$g`+4 zei2{dWu=|`Reu3}8DH_Vo}o^qwb9iY>Igr-h8L=!DB%XcrNqM|{0VaN5ub_1qKU?G z6Ae`UjiQOiJQGbFYxpKE!B%+~^YK7`wTB`6% h{EDAD`F?}0{N8!~(Ruy}f8j6ckH^2_@AxO0{|m1wY5M>G literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/ItemMedkit.class b/bin/main/dev/loki/item/ItemMedkit.class new file mode 100644 index 0000000000000000000000000000000000000000..2d06dfb9c8a1f97613a334f13e20302191909c6b GIT binary patch literal 4470 zcmbVQ30oW26+Mq_gfuopHjW{2D%%(%z$k8;k{HJgX0a6`Ab@coi#tfqFh)qSW}u~e z+H`Z%eM{3O-Afm@aY+IOH(hA!w&~vfp7!f`GlMj;g+I5SKaVss_uYHXz2`3CjsI-? z0zeP`rJ+J#Z%Qu4(%CsPX4-N-7Uv})Q*)-Rp-Q0sqOoYi(ne+`HavY%Ci%2RU{C3p zlZGYLIe|cYygzaNO#h@n(_l6~6PsR`qpH}DF)yv0k(8-3a;aM&)O)&T^i=)hDCg~^oD8B4 zdvx55y#h7IJ++5h2aB-A?7W$o>Av+zbfOl7p+iF;fS|hBr=u1Dfx1C6BZn5|r)7TJ zm`+Q9@L)D+q$iBLsqUSJwb+k?8V=kNE)}YA`lh29hv-(Kzwb{*jBZ7QSI%`g>L;(m2#heG#e z9YKTyG@4NU@n~zb%whG8Ijl?OrC~dXAG3|*oWKE!`!Zx^7G=iH=9e5&IWpZE9u&Cm z_CmEdhT|G&VwX=aL0gP&TF1j6HL6E?M*2qu8vGWwWC*Mak0@Y03~Osyk?4dH>ebPQ zeiD+HRlF0@HUwI>12WIoUWwQStq7db@fN&QWhk!WQJfLjsWN0*xwNsQXfLpv+HT=n zm?fCdF@#}(yXTEL*_+KI4f~vF&+?mP8yTCqYbnFjGRi`D3}YG?jsw1k72{vxwvKU} zrJL4GZZ?#&HKE~LNf&U-Md6*)F;&1Ttz_QJ*=9BqW>6AgRNyIv?rE~WH6AbHa{%w) zyUpdUQFCV2KEj$$&PD8OWL6sKAf}PhkleDoV4LY!Pd;xfSvn*xuxJcx(6nrUL#Ua5934+2tWF%0(xXBsn&Z4C&8Ij>x=44J2}(VH-@1 zZLs$9td>%aPyr1C*3AtfiP>v#z*5rr&!~DGT;8F!_P$> z?^Ic;^#~qMg|LM8Xn40k=N)-bz^voFcpsZG<0mjxQdOn>{eN(=OzzlrbNGOc4=UVR zd}zG?RR3rYAHuU5KFkJKETwqHmNPQ1<0JSeMHh|qf*d9}$T&aYJTa#!d|byTaGCW^ z5XE}uK=6fPo4VNHGI8ve3ux~@sesuOiCt|kd|f45I}7<(Y&w79`mLzK3NE-xp{uo9dh7b^HK7B-uQg#4`z&{b?hU z5;#~A*rLT^@}msMj|KK`E+-j~d}Q9)ry{e46`7VY6G^$SQu_shgj1N~L0T)`n3e~h zHaX#^0%+!PWLoa*z9T=T)QEdk$7^_*(WU(@%Bvo*rsEpcshchcOqQVfzw6mwcV06N zVglE7{2Z^djmb+3Mw)}IWY}zVZPr(Ci~&o^0aGnib*{T=8SPY6&v9@vo3$-FZ{!lv zp3SDLAU5$^4ZmSpi+zDP$hg{dH<;Mq+Nw7#c64=YO`|- zxiVX!uVIxObe1CDOK+{*emFThwWp%jNT=Ao|*xw zQHFwTYlyYo^BRs8wd^D|U@!e{B(f$)(;ipa)1=%~Sou3eEq$KOPUjw|qGwmB!39*q zryw*1#`UMF;Lihin|oF?qQ;5SbJx)|xq^q*@bRh&$8+`v*t+bRZDae4!Tz&b`M z&{6X`CMGN0=Z|mT31Dops_j)Absx2C;7RqUI(&ZY8jN+!@XR{6nhzaWLE{Rtlv`NG zyXeab?p?wA)!A!!#(C7PqF6f|qWjAN1ub-lXqhR7O&qPD}I=)HT ztmC^CXb=CWV81U7!e0CZNb{af80#_I`x5#4rR5Ytr2vkJ;+^pgRv20$(d|qtj#g`54rk<`N zp03L9)tjs6ai5M#&!JkTX~jF5CC^kMqir`>*{gWv1yomF;g^#R_XopQ+g{i z*eH_6jr^1BGf%NiJncgsb;t@n4LcNdNkl^-)e6;LP%7|C{EDBud4Geh{NB0#(YgK! Rf8iVT1M#o;JN}8r{{p5=T0H;& literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/ItemType.class b/bin/main/dev/loki/item/ItemType.class new file mode 100644 index 0000000000000000000000000000000000000000..d0d11c459968be07a8bd0ec6c61a9574a23d76a2 GIT binary patch literal 1593 zcmZ`&SyK~15dMbTVZmfM;f3d{C6q z(vtGoA7$CIEaetS_F-qHr~B)#`|J7h_s1oG6>Nsk!!TSHXKAB;qNjCRoTl^i+if*O z2!4kCV}8cd2Cr4pxmxp-A-J7e-^%YYj1)SDWf-Cxg_YuFA^&cZ{Cdl})i8K#ho1@t zweTOXXq$SiLjJvFVU_Vqkf4$?fcIPwuZ2_Hspr(GT5| zhqEO^uj%#@gD;udXYjAp%OZ?G7=x0&D4*zd7{gTerr?H^sMkcIN;|unuxxIND5y9E zqZlLitP7P%wiC~{o7ye;)P95j?x2lF-sS=Y14DnT>T(%N+RV21_ z!w{y7d8iMP*tBgpbo`i-*Ed2#vRjLzj{wi#KMkgBJhjceCHT19{A5OQT&3* z&lKH*Df;(2jQkiNMpLwZ?A*v(dQ)z`2H7Rc5pDX;Hzc*$3ruUH{tL`%LxBsV|Dz2P z3TP~Y#J-of#|i&7F_)+s{1O9C9W1$%HOqdC$dPt$W!(YF`wY+B>}gsVc?GnunEphY zE8;=N7v;YG*b*_**?$KZJ^5S;9@H*@;qjm!fbf+Ki|S8nhEl_858KF8$2 zmQTAp$VwfyedFKpdgdk-=AiYEe}o2i*~QSPR#|#fW!iVF{08eD*MoJ3VGbM4`tBbE CK|S68 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/ItemUseListener$1.class b/bin/main/dev/loki/item/ItemUseListener$1.class new file mode 100644 index 0000000000000000000000000000000000000000..de8869d26649f69ceaa910d1451f83f850110060 GIT binary patch literal 4008 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/item/ItemUseListener.class b/bin/main/dev/loki/item/ItemUseListener.class new file mode 100644 index 0000000000000000000000000000000000000000..fed4b91464e25bd8cbf5af2952c193c7f547f0e8 GIT binary patch literal 8575 zcmb7J2YeLQng4&%O0$v%BP80=EEx=Hu&!Whu|N&9APJ&I06Tb)25GI;uGpd=Cr$vH zIEkGQJC0+paf%@%cTQpyBP3&E9N#&))YaYPdiC|@yIjdN;@tnu>`F7J#HSzZ&b;@% z?|tR}mG}00@4j*cK&?EhAxp5b#~kv9qx~U&C}9rxgZ$`>o6Vtk!i<m{S4PNzBsv{5i%08ip*_s?UXvR8>gJIgF zs5#nggu9GbNWG^AJ&C>$t$E{=cr*E*#_-0>UWJBOKFUy`p`4OAoNAj+MFGx8gRz4H=ml74WEr+W~Gkx_s_p z8c+_%PewA_@^L3NY1k-O;gG}T)?`F_2o;5K9e3ewLSkxRZ8$7g9tXqG?tZ^bLdi_@YBVE={YWNt7>!kkEsC0ZBpI~T&;yXi3AdFF#m3>O#$8fVAsPqe{6<>nw<>VDP~vyRP+g8$*zFkSS-yG^04ej7aFSlDw;? z%w!-^CMJ^<|Ep!?p^uU&D8G z{06?qxM#R=-vmLc8iebCWSh_;V21tyex%`tY{KUt)A3`Z7z@GH9i45BEKDosWa`Cl z3YMgvoOrAx^;+s;$;8prOX?x@+Qeg}dH8Moj)tEw^F_>rzkis;+i&zJN3wksfp8vc+~c-EEm(SgBego5b! zWBiG7EcX`lI&*kBu7BzFlVS(TXQ#D^(wkZZ>CbfhIo@U!iJOt07M_9FMhn)J&CX*| zX!cSnas8!^zrtVJ)vvzKi1n(j@;zk5pcjA3M4Nh!etJ3eN@{H4cuDH@iH9eSO&l-v z;_n4jsWYjUCLT?V(U&i!E>0X*u06)bS5sF~mpSmLaxtebZrHFvx%nS;{F8E7&i1y( z##RmgOgv7a%u3`c`W@%ZHMi#D9sE=sh5psD`<&E)peswf*Mv9K2;0?`R(l8kuH!%O zGnRu`GNKNG9qdP0Hn+H9&V72=vBPz=nejNO8iW7R@!$9#0(US;F!88j3E*r9rjMl0 z08S!?bv#`GRCb%ROgb-4CUnA9nU-J4WQY~5(B^I(m@S1F$K4rRcoNi=t)kPAGb*Bq zhvzQ0>8PCK>Y|C4c{gSbM285~wKM29gEpG*tm-`O&9rNQoi#_D0bAA%(O0LQf_yA z4WXEQnk0hUyexQhaWWbU2b77qDt#$>3yRJG9u9IiS-7&K# zL5$S=TbDcJPL9Wn;SL@n%|;c=A(glyuKhA9xw;mo=nW3A&me*; zV6Am+=^fk5cru)zB{#|4n%w2C(lb!%QZ4K|R2$tCN?7s|i8G&E?Ad@O_qf>(MwMIr zyREOrLx*VnJlP_(nrwBS6=xt+EvYVbQqLZ+t~uD+(AwDEe%*m_mSt3Ovotct$~GQ= zUG|-AMKHLJZLz{;lg{g~9XtyfJv~mruP-q(aN@Z~sn@JaixS)0&frl}E4I6I*{vY2 zPFfi!=SiD%XhN-=cxjI&BR#rw3cJMxjjbKQj=cx!nrrtp9%$-p>#%OSrYqa~>)8SBSNQdbz|EPbih zS@sy~B@>UZ7P34t4~#JjTuHrJ>J=X7*S!7QQzfbAucKCZg3DCxWQ#;fgC<}F9#bXN zE~3({OOHx7p6zY5dwKklL%Q?|?`jtCO7TrfbyiyIt8^`v`Z65Cr+~X zQzlmZlN;DhNLZHvVPlZ>c5dw*yILC$bnI%Y zZ#q!d+19$Nv%^z!>eOk^maAan%QB+k@Vcv<8RCzzm)93cWRAD=D{>R6+2Pte)*>D= zdHf>E!p6YC9%Id|f=w<@yHl65{-tNqQL9di**MQ@U=}ymeYTs979vh!-R8ECx^!K5 zU1zgFl};kLE*ee56ES13#Z2@?d*b=>u$<835eEEJTR?M0`%QndB{~U>LpFGjwk|{kH;V&QcL_2?<(Bx^s&9j)vZC_2EVS1mNlpwX8K_|Adp0=3ko<5FJLO+}T zbKqgo<&C~oe0iU5eel z^-va0lU$A3L!&rW?eTfuLV?dSibqayk`td)w4Y`RmE+49!&7QWC8tlTx96*Ki@xm3 z9mUyGD5_ZR^IXN(d^w}|)$>?b^v(1{J|{SKL8+b%<-s~40l1sRt(s2(+=zRqZVlhI zB8Xb-K|OlVfB|gdjbjsrIr=bm@D6V$Z@-%H0!^a4-DK-N>Fu+)h*27-5KrL}LNwbN z9K{&r&nAcc^v7k|tB1S1ir0vuVWQ>=UPmsjlG|!{3$CG9gLw_hG#t5xi*nAWnZI$)R2Kc+2>u~Mcp2~Ptyq*(S>^Lw!oP5fReAZN z__yj@dpBS1IQ}ymd#0?r&5E&hMpzePWe=9~2Y?mSel6}L%N(sg6AC;J~3(G6P7hq6r8~S(llAt)6Z$mZ0`3E-o-Cy;Q)wqdLf6r z=8H&H+QRdYeGMx#$zFO5K3-?3+alYRc$y4U0@$duvh6u8Ia#JpQF;}Ersj^v2jwNjcJ97vDy-p zJ90gf(>2_wNgie7g`q8D);^Bs(eGQT=(?JfXHZNrmbpAPE-NVIxRhi*M`g`Isi=HK zs+bAnmRwYOvNz_aAUn+F0YKd|wBUFW>*XMl;gFdenj(xt| z%d&azh}0Br_GD*Yl7?~Fo`pS`;hlxI<+z5)NLqR8Deu#ZWzV?0KL@_tV!790Ico3$ z$E!yn@-z`yEccJd!Hj)ZdU`f`7kSU1l&)byka00BCxjf@pQk;n*+t$l>9;9p3QK@! zvBZicZiz7EtOv1*#(t4F`8o~z4QA7CGLwIc`QT;d?~Ba5qx|Lc5;k$HhS6Kg_}$Og z?I+%jFmg{acE3W0UB(;uKEBPXvNw4H_8q*9@8YMtA^aJBNR<9aH2hc=^Cr-T2`T4M zxCTG5z;Lha&I}l2O9tJ1Qkc#{4$n&p$=RqOJQ9*5x@+;S49N#6^?n?eBg`(jlqhCp z7cch=$}m@WEg-E!j)MBn@utQjTJbNi4tW|V&=KYoUO{XkcmA7Sn6HX`Iu>?tV-;A7 zDlKTtudEoA51)qSIS)_vi=42tXs%jG>!?gb{tm3U~zvZKR$&#aT vjNgm-^l@a%C*?8ul=bv!c|txbPjRk@d%nYO{>kU$^Ky!EpXQ5)4Bz=b{72TV literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/killer/HitValidator.class b/bin/main/dev/loki/killer/HitValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..ad3e3c536de713ad267f4bababacc0fe838eed23 GIT binary patch literal 3470 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 F{|6AlMz#O| literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/killer/KillerController.class b/bin/main/dev/loki/killer/KillerController.class new file mode 100644 index 0000000000000000000000000000000000000000..9ab4c7f58f6b65402af7a81732f8c8283598f86c GIT binary patch literal 4977 zcmbtWX zw&}j_OVWKw(2G>zcl#CoSF1CeJTiGt!=d z)`C^anzn-7DaXww7fQLD=_P~7+g5=M?OX?CuKsn7>ZT zO=;bAmlgCkFr1QQ+O_4KB_nUxlw+WQ>2zp8>(0P`$}D<@EumHI2}27Qlr4nw+7YEaQ8 zzXmk4BPPG@*U$k?#SjfEIjP*KDC#>bXE26C7?mxDHEczd1BYb74VmW{IG_P;0n8D(bHY;g3JD9+H8e=Ym*jinuyN}rv(jZWE7~2 zdU3{g&r?kJc^T)rE$O?aAty~DRya14Ic|UeL}-0#ZyPAkkLJ3 zu3#9VB&|=lPGMc`$vKYCX!tB%X5KTtx#rk`wC5bTPB)i7Q-;38zIzB?)bJ(orxiV? z5T&@YtZ%TJmvkg~c}g>j=j|!Sv4Zpr;_Di|D!#W-jPm@f>ttO&>UFB-gsA;(4d1{w zrA-z6Hq26!fWD{UI|3?4OXf|{<8Z^A#v7+V&|cN>ef&VdR-#=rvsue16O`2-Yxtp1 zXy?(#X`6XF`|3#tX{@*qkS}wBq*)hO0vg9>Q4v|2C7mOe5;qyZP4d5k$AMdTas^ZTmcPDLoRsBNoV|_n3Z`Gj zj?vrrkb=MAxfEB%53J%cXLxvCeg9t)PctN*`+cnk`TQJWRD+CTKYtDLaWz6l!#IzG zAInak?Q9s!BzGCON|sq-Y(>-i47OS2x5`_V6N=n>VGucv67-O8{X1eZtit3lyb6oM z*eYxe%SR7bE{m4cy>V3&$RD zbzpQA?qvTf=nz*_!|Q*;-y|w@`*x2o6OYo_V^rdZ?<5iIuVk<%jGCCZPW&eB=)^K! zpeLcw3gzF}DdFw5L{zQ!MV&EQ&MK{hUu?AlP1!Vpk|ddniCtB)|?4;B&YVx;{qNQtIuY@Ry_0 z6!RBmSWV}BCqb39SDdtmP858;0yh)Fb%$_YC`WWL!tM0QK26*?7UP8~?CuJ7cLn>) z73>YEUL@o*RdDsFex(9eP1P6uVwrO-)#s@9^Q3yY3cDUvzG6aEk5;KV%!GbTQrP65 zX;vYBU#WtsN0U#Q22kI6vj!@&0TiD>b)Y2T@7A(f+yIJipaxK{yj8=>+5n0VrUpT literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/killer/KillerMovement.class b/bin/main/dev/loki/killer/KillerMovement.class new file mode 100644 index 0000000000000000000000000000000000000000..38f20886e2f275f5efff473c73ee6c248800c69a GIT binary patch literal 5205 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 I|Gc&RzofBZOaK4? literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/listener/GeneratorSelectListener.class b/bin/main/dev/loki/listener/GeneratorSelectListener.class new file mode 100644 index 0000000000000000000000000000000000000000..b60077204b9cf020a048940a298d954579bc0cdb GIT binary patch literal 3019 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 qPr17#$F5LVH-{z9S=CooVng0U~UC$=~ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/listener/PlayerMoveListener.class b/bin/main/dev/loki/listener/PlayerMoveListener.class new file mode 100644 index 0000000000000000000000000000000000000000..296e980572da324bfd10ce766dbf6eab22cf9ac5 GIT binary patch literal 6649 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/listener/PlayerQuitListener.class b/bin/main/dev/loki/listener/PlayerQuitListener.class new file mode 100644 index 0000000000000000000000000000000000000000..205b765acde1980a767cb21d35b55798fbb112ba GIT binary patch literal 4991 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/map/MapTemplate.class b/bin/main/dev/loki/map/MapTemplate.class new file mode 100644 index 0000000000000000000000000000000000000000..797cde60c4b4d23917e10f1b014368d9132743dc GIT binary patch literal 5621 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/map/TemplateManager.class b/bin/main/dev/loki/map/TemplateManager.class new file mode 100644 index 0000000000000000000000000000000000000000..c134187a634ccf5fc4cb5d6974ab347cb591d41b GIT binary patch literal 6014 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/mdbdBootstrap.class b/bin/main/dev/loki/mdbdBootstrap.class new file mode 100644 index 0000000000000000000000000000000000000000..04e844c9125d4301fe9cabb13614a9895e4583bb GIT binary patch literal 541 zcmbVJO-sW-5Pj3Hv^BL_wRrVbJ-7&phl-#DPeBEx_f4|Yt!Xx-o8sT{BzW)#_@l&0 zQVWV8c-S{PZ}tsuXWl{Oyxp~NX8R! z<4;v!9W)3>+K5CZDxC#o6iJj#bS(TYvA8XWRWm~4Ovl=u6RLy#F`+gxp=zUwH5U$= zgs!J!b)C(8mEKD~QiPso0vU~Es`GqF*6f3x6L!7dO%DmJl?lS>!28?k%H+tzRz2Ba z?#~IzgmCEbKjCVQ9<6?@=W@Tv1EDjazVj4jRtN8(sNctQKQD7%b} sf^4G0cei|ib#yu7JzDPd)Q(mY!||vPrO@#zyJUM literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/mdbdLoader.class b/bin/main/dev/loki/mdbdLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..cd5429f63e311f33b4706b501ae975649b802631 GIT binary patch literal 534 zcmbVJO-sW-5Pj3H)U-9)+TOiY1@|O^6+sK0f(lCSn`CLXZj+EE{a>C05B>mulsKCd z1o0pq_RYSTeZ$+CkI%Pv0M{5fs1XK{+6a?8Yq5%g$WLUXG6xO9-coL)FfyKt`(UZU z+(CaJJ?DtnTFQG~vqgwo7prY+wl8~H-72}A!EuMCLPwhZ)2%ZL?Chwrek>|j;!%T1_j?Lp&xG!b7 u%h)QDZS?rwtsY<(9y8t%_8G1Cj8DzxehPb~a8wnyLM!cKz(_bKg~KmmDShPt literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/objective/Generator.class b/bin/main/dev/loki/objective/Generator.class new file mode 100644 index 0000000000000000000000000000000000000000..e9bc4dfed9412fc4392bc9f0f306d0f34975bf04 GIT binary patch literal 3846 zcmai0ZF3XX89i%Dev#KU$Y3yUAxUG)i(?UoLK+AKth~696UTr99`dr5Zp>nNSFBbJ zkT$ewo0rKCNGF~4Lq9Xqb_NsL5B=B=`B9mi=k98?Ue<|ctb6zB-t(O2x#u~n?|=C3 z{{URXSN-TQaHOub$_;PBDSK*crg76Uy_ z-GH%RV4&gE?7;C{1N*CHBh+cxoX+2JM9+FRCuQ8d+WYx@o~s$ z&3l{8h6&iEA2!{;}ud84+kzH?Tx>A6FqbA01%)p^tf>tEzXw`AmTkXv?g5MH8dgBWu4ju{T6HW1@&*19@h>z}hkn6)?o7&TShwP@2vxvw;z( zwbZchDu2P1lCemo#p!`Gcw zV7oPDbZ|#Tod{>AD}-+9+$o9Olct_72X<{^(QZa}zsG5HP&!rHEe2bsx8c>o`&jBW zSW5-nr(B83>$`BB?a#jg-opp|c%OIE?eIlAxM|`;*u>j(*w*<{r6Q_+4>c3@aNWMc zICj0>K^D!go4AJS%+%iW+HOElUu}9@s>P_Ou4@niKj6m(GD>?$6tE(DQ z)c(|QAOm}y)>XHz{O)Nf&L<{XxJ7FsZfs2(kw*>JZ1@S3WLM~kP+I~&F z=7=ke#BYOHxdc4Te0nLLLAn9`g|ni#iyrAM9DBrB^hjUPBV9$0^b|ePQS?YZ;dqFM zW7x;f{d}qtRqzYe;hD!6{|-m~t@l19Ys3b|8T$Z^b9Ox3Nlwr3Nxm0GhMozh9*uk~ zLjDJL=lR{7^&OtI4sT=9n%PFln%;(GjcjAa>fOeye4Mn5ZEoZ2lzg1-GMHs3A74a=| zlw9)GLrgy4q=x|zB{->}&2U2mZHPH#94`GUb=b;0%y(LRSSlArw*HwqJezs=9A1eI zH<_-aG<)Jd;G37^OOH@_gx9}CzV`ta-|Q?d@;mDoQL;(*AMIui$DF-HD=4onX*(?C|-g!k*!6zLW?ncNuDH3M*7p9CmCk z=kI1#Y$jc?bD0&RT}GS(%0MJPWsU5^>eOT0c#JjC<3r4F;hVo=)Z!>BIVx1t7?x^W z>-hrT)fcJ9OXNC_Nxtunb4OUVB!B73kUw=c$*GDN%o9i$3|SI$s`dyUbu}Me$QwMp zkU$=aD>H7*J=YIB#QKGsfX;0~UPuoi_I85Wt;slQ{`y3R3Ir;7`2*fJwp=S_CpZT_%rCD;`s zc2SPf-*@ABRrw^)6Cv~%huLpoT90s#wzk8+!s=}$kSBH`A0SdOMotR*bh>)?5-8p3 z{We>hiPu!vvY)bg_ccOj21#xHF4E?wF_BlJ6s3APw}&{Ho!e&#R;j9q&iIRhMg9Y; z1$@STDaao=%G-S|3NpYTd@cMb-2-1Fpa){Pe2yialk=}c%{VCMY4M9`ul+ia?_dNV PKUPBXHt+>Odhq3sQhRS= literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/objective/GeneratorManager.class b/bin/main/dev/loki/objective/GeneratorManager.class new file mode 100644 index 0000000000000000000000000000000000000000..102258556f11e62976174d04dd1a85710152778c GIT binary patch literal 5609 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 L|3US6_~-utAb!cx literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/objective/GeneratorRegression.class b/bin/main/dev/loki/objective/GeneratorRegression.class new file mode 100644 index 0000000000000000000000000000000000000000..5675bb5fdb6bf8b1c19716cf9f46a3a7a597c790 GIT binary patch literal 2679 zcma)8ZBrXn6n<`4vLq~|&`_YIX$zKyq;0Cj)|%E92*pTvF;G-|!6n&-ElD;e8`}D= zRja?iflPbIx;~b8r6o=Z`-DjNw}q z9)aPku@TE#>t@Vay=7!HNiok(e`i36M>&0Ab&M_A7 zW~|~(Gbb>RsynJp#isOvG2yJn1rE>7rDw)cE9uFp^yI=qa&C5IeloqXn4Fjv5D9?} znpSMRXfNscs^Pu*-KKoD1p20Fv)4ZF)hEn@52Ltj7ESvVfn(wQ!WdZ+P$sOb;YSM& zY6u`G&=MY5^3lg34XyAB1X5#u7_%dol`)-#~0L>tTJsmlF@HKP~xoKbf4wS+fS zydf}Dr(zH4-3=Pv!ZMEmf)l1rIrHrfkEEQ#p=z7?Sjw!}@pim}_f)*g((hi;u!8pm z+DyB4$guTx?M}M$^stJoiVWR1JnXD$FmRJZ7mYi%Kyb%H)8Q1C)UIim!hrO2OT)S> zfx4zwW}QuHp~i#2$$f>lLlfo>Dr;6XpQT{S zO$GZOt?#t%9SwISPCIcLozu(HC{xW7ts#MwRbd&t;Y4y-_U0$}OvR@=)H|fi=r+mt z9A7Yvf=MB_h7*Yqp1f_PdQS$*^#k7(vPklHX3hNzR<)cluAA~e?5mf)5x`klA|6BZ zP6ArcEl*SaIt&$Uob~ay2Y$Y5P469?XOrOozq@F0oi-kh{>X3WjzoV&&m(7FFTXn- z&+Sm?!G{j?aqdvf8vXPuAHRdjkYz);KJRg#!nJU88%MX`=PO(Jb$iGMz@c!8&Nr1r<`{Zn`#o zOYb4(_v#k&jPS=aKQsKy|A@9|3sD_z$Iu0yAT)E@sY8In&=%Sv9CKVW1-734 z-H5A3ew2kc&1lXb!aM0a&NY!gT90QGc@&7=OQwn}Lyi0(JWrX9qC%)xVuGt6OCEV= zxshIAoPv>RwHjDKl&zon?s3ZRb=J;1h+56gMfAw~ac>{?UOq1F;lqb2He4UeZX8Fb zLQ1rU1F7lcaJ%#SpU|p2YV4r)KXq)6n`k9+va evFWEszUHm~yH6@#aj;wA@sCU0e?wyr?*9vUB`-Mu literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/objective/GeneratorRepair$RepairSession.class b/bin/main/dev/loki/objective/GeneratorRepair$RepairSession.class new file mode 100644 index 0000000000000000000000000000000000000000..71881c8dc16824ff412c826fc79a7cf83aaaa8c8 GIT binary patch literal 718 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 CwsLR) literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/objective/SkillCheck$CheckState.class b/bin/main/dev/loki/objective/SkillCheck$CheckState.class new file mode 100644 index 0000000000000000000000000000000000000000..e49e9e45567952f6ae6559a41c039f2d9b44442c GIT binary patch literal 1990 zcmaJ>ZEqA+7(KVU)7`dHx|CgLOKG82?M{Kkl%n=!DYT_jON(q<1mBqM-n7$QX4aWm zpjA|qpoxizU&O?iNHpOKQAt=xH1WIs3;7}9xic#*Se>MM&wV@3d7kIo{_)o@zX3Rg z*JG#?=qt!enUYhqGS1Sf%=^|QnaLHcQfYie=8L_-Z_YP;8ADVcv1(p2GbPhr&ddeJ z1>)tBxhCD|0(WPE?TT-eG7AgS6T<=x%hHyv={v4K*UT2NrvBMihu0ljGMMWNhzWt1 znortfZYevK?MwHx<5|At*aFS2Lsf*ivXnfb`BuK@@!qsR{fK2-epXhlKmbD^{r>-8hcWDa#e;={U~KHBP^bV{${^TPog^j*~dVMc)ZC5zrqSltv_5&7a|9!=eIp z-V!bHpIT^Bi*09}Pe1KzHf4g$Ij7?0VX;m)tW-ICnjMBe!%c?ZcdI21}1y(Cv{zpRLpc%k^k z2vKK%MpcjiWq-xMxz@o4cyTBiIilUhk(9RQJ8Wx@whrCL$l2TINol)pA(_%TzYmtj z!sRBOIIiGzO{BC$^46o@xiX6ORiH) zeLs0;xu(%fz%FQy7_gqk;TOXI%bwU7Q_Y;i>9Atl51Xs0>ioo8q2a@(e!i*hT1`s? XuLY;hAjh$hG=fdP6^E*Tkn{+eF!jAcEOD;cIayr>sS3St87*R*9VV`|nyX3F0q z&|Eev3x*}oHeUOFsW@NEa%MrdbVu`SXId|7h9l4y?g?$2Tfd7Rs+w=zx9dt|-)zM* z%*=#V=7!dsv0!Ol#nA;WtY1A|_j>8l*hsdK$5WJUx3tBIlrMyjjhx=*=hpcF6w;B&VllPS1=@P0r;mj*gBrpK76${85qPhGlps1djBF zwtY#$*9Uu_niYr*+eJN&D7sW^#SVdJe`>as&^uK$p;?Z0sZh|OV7I{LP@VIdyGVuN z=s}mSA)S&Y|LVXZqM&wnz zPu5a%rCg*oa_R#rK8QJLXt<--%Z8&w z*C5NJ6Sj)7bfVR^a+N|scNwfrh8v9Y%ocXJd@H5!RJ;c#q_JfcAC|_N9ev4OrcNvP zh=Lc{XKZI7GhZo{3@>xWf2jBinulrgFHfa4nhAEzs{nA*~OQR{nJrpdQdoW!X(zJpg3d{>~iK~JuAr|PM%;(NHk z!et89E)&zbTQQl+LmQ~&8&Rtvvask{K-7%4 ztb(8C!DZ@h-?(j;D&_ig$a#)oE!5Af`*3EZtp9(DRg(|@w!RJmv%{Kc=Gb$yZO!;m zJ9fxUaZANFP-s)|D^3J+w^iKq=YGctmid^)>)f!Zxvp&b@$lxP;77Ju(nY~zl1amON2CGL*&Dz>Kw?&68`;9Yd5-$c)qRqVNo-q(DbKK|WC%hGNP zTX?nVBA zp43amw4bI@BszdW{yWI`VET|V zH-ov-UQmaxtt3r6;r_%(jxkA92a;}7^F*E+a1M3b+w0lkJl<1Uly K9_M468~PuE*38%d literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/objective/SkillCheckUI.class b/bin/main/dev/loki/objective/SkillCheckUI.class new file mode 100644 index 0000000000000000000000000000000000000000..ee59db9195ba54ad459536266f3477ea4f499a98 GIT binary patch literal 4797 zcmd5=>t7Vt8Ga78ncW>_rQ!`u)`$uytg*&KAT%hbD4>R$*VBoIEWkLXcLPYy&6 zxVr?jj<(LWlO3&HUCn!11-7;)4JVoyOW9^rkB=BhCu18?$2j9ehs>loWTeyjfD!HB zxWgMa2&j!QixW@%Fq7ch8EQLycoIx`!u(tgP zAQOwl>A}=!4tRk*RqZKzAljcvBupntKuu>XdeG9x47*`|d6jPHx*Xjx8mfDP^klV$ zHF$=0_h(Ei-fN~ay47N)hbc{jsE-&jI)2^Wn`xpUZXxL#!*34J2x_L5Z zb^z_@RM5cyxcECPwb7Q0txE(o9KbF`{YF1JrMKuNgWx@oEC7g*M48*y^!N+f%2@*Jzz zEtbCfYgNPrs{CqrE&D*$!O3%zA4anOba&n6^Umb?$@AHpb#--qKno)TJ7yWWEmOnP za9Z}GpgZFhj{qzr6%0}Iyv=D^GtrR3FbmLGR%vz@+Yt~gQjV=5Emst|(wdA1IhWBe zf>F|Pz;F(x%%o%32UBTN($ekrEego=#6Mj?wh+$~!9FlJ9;7Uw&7`J8Z*^aotXw zbX(8E%a^3ucQw3+iwu^N@&q!Kn4mK)XE>E%&r#lv;$C;{Gvm%6VQS;l6l}zSihZoS z7yqF9QjjJWR?d?D$PG#}S>zaiSfWE8b}t_)E(?@D>WzoGTk9jfpT|`Ef~I@S`s6DW zpE7_Rqz^BDq~fYv^dLFG8xMn(tGTk$xaHGzHRG68w5O-7rJ<#zC6D_mz90gg=wlMM zU&%|*m$WNilvqE1GZSr^b7M*btx>(U)y7DNJveeUklmvmwnf7(Y9(iVN*0|Z0~P#* z(jT{*n0KWzcFfpq%I>}-=V(t`o!rV8wI!2=z01i5)@GW;n3g9i$KNRJ+JXTzD z7v(dL1l=Q=w*kwsf*S)^N&TM2i?l};hN?{ysOY$b@aB7Xwg85mVt11?WjPU9;VO@K2d9*mPbm-k$^&S| zP9K1{kL`vU>GCeuk*j- z`3B#L0KPY+G2v^hbv5d)MyWgIkEqyqqT+Q_TuH_2QO;IYNnAG*Wr@8P>)I*B15=83 z5_d_IaLqli^bpk6yl`%!ftwkj+G+B_zPzCPx!^%3-eAlYQQn6&Un8-XkJt9qjKkSc z94_6iY%EtUBtF=#R(s!p6~*2lcpqnu+{M}Y(8^HR>*M%-U*UG`26mKd<-sqon3Lz_ zC%T16#owiBaVJI@>2d)VVjJ4H!! z+2s^-4i{zXBOpP%En6KmhuMpM%uz9Qy^f#YeJ1#7u6@7}f4?BX)9;h)wdluBISSH- zBlrlH7|v#D{+M$benu@7DE@|q1r=C@g@uA21!ow+B`cHy9^;kwiIE5{FcLq{7l|ti zh{PweBJoQ(lQ$CkiAg&R?;u78h|WRca)^k$N-VmGLJ#rpqr-<8i6e}}QAXkzBXOJ< zpI{{V7zv$`=>PwUL;#=Rb3YQjeol;qwI?87cI_^%*N3Lqug+qBz+-=K7W;oa3-hn? zVBW+O22RnS0rF{(c$-Y#1j~elIt(!nlH_~}o#bjSUL)c*(Y3fEL$;1g!*~q8#qTH! z7;~8|i^!PEds(8#T;3N`PX@mycljSQl>P^fRO&SFM~(v2d>nt`C`kQ>e70|z&GtIU f_CL>NdjVux%hG>~-(?(GxQ#m$e3~H9|^!N literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/Pallet$PalletState.class b/bin/main/dev/loki/pallet/Pallet$PalletState.class new file mode 100644 index 0000000000000000000000000000000000000000..a08f42c6be1324a7806575e020b27c64efaa0306 GIT binary patch literal 1196 zcma)5TTc@~7(K(b-CmZ9MXOxAVUe~V6%jOPL#VWBLum;MO&Xt;GUDQPOLn&;{3|UF z5RJrVf0Xf?X@z~j*nQ~iH*>x-=X`tm>-V=y00q2KF~l%)z)!MP`?HxnHY|&K*=@Nb zdyDQF9#;`y7&$UdjI3qYhuM*Ny{%-uP}wW#46`2wBMRr6mT8;b8iSHb*BJsE?E@Z0Fbak-4Yv@dJMw)F%$#hA=iD7j(z09T316hkAiKi-N$%Rkysq68UhB>4dB8KA_ zr_J{9DMQ9@thRr|n_jN$^ZIv-%+m0smfA;#*Z#KtJko;t6 zck>nNwF?m%%0N_acbq1FYl;EJdLdgBD6*!ThqmE$96DL`k%`XyAo|vbUn|=-ccdWh zs(8texH+3wx66oAoU7dR-nU(EeThE0LjRD!`h-XaKr019u9OL2Y*HjbASfd-XoMf8 zsztSU3g5vR@e$=5qh}bG#hrjG60*1#l*L5o2jP@1#`Q*^i-g_?b}^x!Vd^W94B7q0#6pc&`D2DkBwbPh)@N+%~w(KB?)3o3aV_SA`EL*N^Y)EO$SeiH!O(aDc zr%C#tr9gPLKua2j1&cl)EEX)lD>j%9?YDmD$Mz5OACw=!g6?}~B#&H$YT3GX&YZi? zYoBxVk1s#_D}WKatD#O{PsY3$xAR#mUNCIibmFsW(GV19IcHon;qE#T! z+qW1+JN9Vk5NN9rijKYL6bPm5e2&iS?d_|H9)Z9<9U+7xxC7l9zA13$|My$Rx1bBu z&o7M3BqnE0NSFgU8lXqH`?ijQ(#z(I=`ic_PH`>mtQF}-bJEJ0Gi&Ep%;JKvVpGy8 z1GN{8q9va_VbD2im1O>Fd%~>MTcueRHcPGjReAH5sqa(+25`5AL*$7sM?M`Laoi)I zt(wll<--3aYMMo&YxYnChjB#1V0E_3uXTJ6M+Ks(k*Vd`1CxRbo3!6ksi{apcpuR5NY~)Dam#qNiWSwhEs6G6I}5GkxR37VbQQH z8WX43KUa31qb1Wx6!V3GnUU;zSjVDdjh2{8&CZS|WN{wR@hEsqqpDkg>Ncq4t#2_r z{BIScit@CMWjyYtYAIi|X}!HVRZ7YvtstX;p|to2FrQz`WptQ0L-}YjH8!=plu9L* zN9V>zrW7Z4W`oil3Jwnr4mQ9-R>Qe!Fl9)Gjq{AYU>ld!34wtsURL_q--a&s#6;g> z1bJN0P^hNYtWk8Vv~B7rf=mx7S9dY1tTPlI{uh1ZCp^5pE`IDTC6Co= z4!Lf#`7>6DnrU+(fBRvckX`o&9WS9%&hvF0H}E^Rqv&j zn}!*)4#NSAPc{s!20A+*X{g1b67DAdZ)qgIX!wQ~G(ZRCkYH1WHcPmfW*j%#P^ z6STzox6rnUuGj|lZ=xr*g*!i1C%?n*J;VoZtspvy(}gzd6fZBAW6= z5Sio4vo!5lYU$rbzrY6WeFvf7`+@hVAAqzFrY6wsLu{!aw&44WLf{8VTQm`jcbE$; zUiU)&G)*r!?n7HUhMStUFhcpXCu%MWW;{Vt6SZ8O`-2r(vnL6~2DUK1 zj^@}QwQ9ke2nLRZV_iY@+!E^w`Cn)q;dLf+U=t@|hc+>J69+o9b+l4nin>Bd*0`e} zlkBG8Bx3>-P|v^{nYN9v@*!rLhOsk>sw9=vOh#U4S-9nBgu+O9oQhg=p_2X7NLo z<|;MkxYJY#`k;M%KdPM3 zU0lx@foE&lR9$-uv{^|cZ9Z4FPn)iMx6Q|B^E7QP)8^x}Y1Fj&BKz8%8i%>cIP1Mi zeZ+m8uZPe2&PyuGsUYM~_0AusJ$b&pMx}RSo%dn2SFnDA-+EYat`aLmte)M6FZd3J zDu-WY@3?`Ccm->che^oVBgyfhG%Ozwc*yj9`1LygL|?z+{Lel`#oOs zf?Z~?virI@*ssYx;{O(|-+Jk6| literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletBreak$BreakTask.class b/bin/main/dev/loki/pallet/PalletBreak$BreakTask.class new file mode 100644 index 0000000000000000000000000000000000000000..61e03f44a9dbf73edd1ffa85a3ea902c81a40407 GIT binary patch literal 1786 zcmbVMU2_vv7=BI@nkL;sNmJxYL`WqcrQxHX5=3Y%5(y>H(hIKKZV&0Q+uh85bf)Tz zpyQ9wf5A)}MlZbN!k^?gj?Xy>!$wVIyx4uu$9vxQd7t+==eIw9`4zw|Jj!51U}i&Z z*IeJRYaP>dWmIcvvk*wrDeC{K89EuH1tS<=m79#=ECA~3s8s@~m5NYlWF_(+kfQ4PvJ3AC#UL~ zHBf=eLs1TCY`y$gLA_z%Q`}_HRvZLma@DpR%0V<#o&^Jo_>5BOux_1b>B$pmMFLk# z!@D#rVMFmXkJ|=5S1n3MOr^3k419sR0uz?M)!`c=|9?rmE0m|w%HQNUpb?6AVkI&y z=bqW=--6tV9|xAaZL2qEGVzGbJvFyY($nxf87#VH7)sKU)ezN%ptl|;TFJgF%P_j* zhY?OwASu3=Ddg4tZ-S#u&JWNQD%Cw4th~fzWp)o!mGgU; zexbeJ;XjWw{|+O#IEXDw!NXCmRP=fQ$8el8M$tJ{hJwzjkQ8tNC+Wu*ka2ohf9G6z zJ+JIys*6+2>MI!4pHUR}iOF|~L~m3oU0itadQLmNi_2YnJjAKm_vo2Vy11oAT`c{G zV;t$AeU~oo=-332f-3PE3j+dD6=E8S$QVUz^8wi5-d9+{*J$7yD(72#iRXBV?>PG& z&+vn$;z+NcJ{4m;)xHc2)0J F{{k-^&gB3A literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletBreak$BreakingProgress.class b/bin/main/dev/loki/pallet/PalletBreak$BreakingProgress.class new file mode 100644 index 0000000000000000000000000000000000000000..0de3310a9cf810cb2bdf5f496dde7eba69cb9e75 GIT binary patch literal 846 zcmaJ<%Wl&^6g@X~lhnA>Z6Qr4fdDC_rmESZA|$AUh!jesR*`r!aYw<8u`7Gh|6$(^ z5)l%Men3A8acAlULJ5nRxzBU%V=jLGItTC!oeD~X?IU>_#OXK+PDC6_74*&XJd4WS&=G6TD+_DuP%fqu}-MScZyFzRV@md$Zwo364sYh!3N1oD--^aKlNK z$wU>VvicI`?MH;>91K$o1C^gdNu-_<9(Vp5Imfx%-5L<=z4S;fg1d3y;EDqat1euu z5vnz)WZ zb4r;#WNy(`JSJ1gTf)+T65;rjI4MA#gLIOG@IrRh9@DX)L a9IbQk9TrQti+d)Ce=gd%&z1+q-u?p%kG7%! literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletBreak.class b/bin/main/dev/loki/pallet/PalletBreak.class new file mode 100644 index 0000000000000000000000000000000000000000..c43d1289f45ee63622c2ce997a7f3840da90fac6 GIT binary patch literal 3964 zcmbVP`*Rc589i5$Elb|`A&jvBH>M5PmLH;Vco1gA zlq4;A^_8|s14&BX`GuLbnPSEzp`HAY&UDC(_$&HPFrA)zcP;JWIHk2`ywcr!?{~g) z&iCExfByTg_W&HjAA;}+>{v2ZV(CoEjAiw7+9Ltz>L^ z@v@O92!t2q+c`6l$_t1wfqFGyTFG&fd*nD;KcSWt3uZbtsb}K?p;4jp>5SaG9 zJ?#2==FHegeBx6;J*A*A)=Vyw%o+K7{0MiiK5SZM;fTPKot4FjjCIjW#!l$V#<2Pr z@0u3~3}=>%F#M?3P>Tiue`nWx7!foDu|;5eIrfI-8n&WYU`x^{xL9&{;4Wh!2()OZ zLUj<^1sW?HoYeD|$U_*dsF$~f|FyKyM!_rO38k7F&#(oV4 za8MvfuxEo>YUQ zERhf2O_bg$-7CFc`cvt4>HYT7-}vD!e{Vl{zOS#Z7DE^bVwhfbsqEoV!*PrX)aDIq zX_7UlC+Xa+Zd9{{9BY&XC*5#T!x&BpG)e809cHBgk6*l~`pLe|%>}C%+2eR_9K?jc z?*A&~oSsjGF^(yz;k3Zj$JX$13PB~a!84y$9wcNOU(|3KvjSSKXi0!`=CY9!81xX~ zt*cX~Jhsj!E*VQjHrv>cszSMo>;Ng%fhnDfI8P#+V>9WU<94&$#}3YR=$6KdNX?Q} z^~fxbQ@B@6*6Gv&eJ)h)h?~&JBA`(cDf-`Ogj&9k$*S3O7f&y@n4UDd=4B-E zR-H4JGb{Ay9=AvB^DO>}b#jqz{qWrbrJE0~vMjEa-eZY;P`bB^r=OXBECA;ufXfm9{r;14aXZ`IdvsJ@ z5bDcaYP~`2_iW(x_a=^xv*`y0C+>e7ICB5~$24*xvz+Dq%23|N#L6ru1l&K zTvQF6K7MRGFxYziMh)KPEkXA8o0XQ{{@^+GcDvnwuuCfbOAR;W%_o#Mcnip+3_2uC z3UUc!)RdQy2G{+jPo6_;Rb!TAk1{t|PI?`=IMeM)yq_`NE_j?=^Ys z;t}AdYCc}FcsJswh`jx9G^9qu>T@kLjy%DUFLAby&z9&N)J3~j(Rdr%qIc1H_6~O3 z#?C*hRiEMC2m;REEnMA%ZM>m9$&qGzJ=z&t{yJr=9 zZlKD4i?O1I0n zC+=eWY_z+zs`m~idqd$>%q#?MaeqG~(mg8I7FNx6G-3x4wV{J=4iMu}qC7!-=ZH?C zKVsu5qd$*1oFQsr#XJ^NZs*C;S?=A))8rh!OddM0kMF-ihQG?0A^2(^LJP7;1uo!O zC+XL?SW?!pp3NF`AO4QLlRY1yNv1#5`w?n;BZf*%GHv7Et}t~nUKcrzGK+4a?_pjs zg*j?(TgKesU~Z%q5|xiDG=R(Wh9f<~-nO zm&SGFh;>dxpS*cG`@Kz6GTnX(w5$}CcFJF0*Ltc~Dc#e%hN8eKt~B90Z@z=7z%748 zx@J-e>?frMumuB@?hwHocBS242GL)Zs^5{Sg9Y(X zYoxh*4c}$UTEz?R;d_x+v^Bh1g-0EK6k+}c*FfiNrNGiN?e^+2kY*KB$Q>OZKD>sX zI?-Nb{YhS;Z4Ke<4eWj-Xyj*Y*QD>SS&^S#UMwT9onX^(oI8xt4JYW?QSv?Jq9a;H z5iO&LmYo}=AF3TX{19EF;dQ*>0Q)0pkiZ7kt=LX!%6$Ani`-CXdLwTsf0CwmDpsMB z7b=dmD{g`tPExulN;l2_zNRSM3|)Jg9-hTP$|c#e-8)dmJy4c$z`FnR}`FoC6tMR@60T?gonE(I) literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletDrop.class b/bin/main/dev/loki/pallet/PalletDrop.class new file mode 100644 index 0000000000000000000000000000000000000000..2ae340ff5d086f7058d56c991f11620ae80bf29b GIT binary patch literal 4376 zcmbVP`&$&}6@I_ng@I)diYRIn5z(?-Tuq`;*A|h5iY%83freh}ush($vb)djKtiuE zy(LZBwCOFewfELuY^yY)XoIc2*rujk+NS-r{XddEeZQGmm@%Nw)758p=6vTn=RN1V z=X@Wp{`dMKfOh;#flpvdLZ1mI)00Lxqa~BN86L2HqSM+0=gk3dy--%#ht_KuLPVhWh>A#E(F6L2gY*OJ3p){yUxFkqfGaspe|a4B;|Y>Jtk zm5&13+~AVhtey=IPG@I~nRGT18V#Zrbqcl%Y+4D|tEFNG>IF(CbaTL3q4UO2ES;SQ zk4;Zb8fI8enT9zVwpSx%Xuxg-yJ&JP9Tjg!BWp*KGDOozrvz%eMhgp(AezvkpqZhp zKy=f?sfdbJ>=D>JZln@@x|Y>*<{)X1Fj5mXjRf{Kx?wMSh=$fkW~2mr1@_#!5YL~_ zUs-ypE`KwBDSw0i_>#XQUl;S2`FbsXHNUuYmcna0Wc&}RcnA+O!knH;^y;}BIVG^6 zF}6bBK{HEak?VYPaZ@Z6r@LdvRBJk zou#0g`FAn4U`;^}n{*{&x0N7HV0RG5(Wjyx1B@|Y$k`KTwKsXHRbX zNDw_+-1cvKpcl6-yd*#8N->Sc70h^D^=ec$w4{nBFw1oJxA&YHh_(0i@DTBEs-Q@J z)A+E8kKm&m)$y!O1ILo-_+(TwHG!SpYK+O1aDq$WWhD;AF??LblQ>K6?@`yWoWQa8>Bi&JcT$98;3fW>M_=G^itqWTIg{5cf@|R_2FP)VwpTFkmZmYLH zrQ*~041>`!ndEHe6Q{N5oIP)NWVjgNZM@L1f@cJ3T?(1B+!h|Nemcj;c`ldYS$s~x zb37aGtvEEBVYxq#=gIBCSpP_0=O8Q4;P$_YdAW-Pc^Y4oXXy(9%^t*S?da|v9Ssf3 ze)_VCui&dP_C&&sTNd&@zIkYpN=8l|F;0gT2ID>R#-p|g=Tv+h-(dMk*!E=7-pJFu ziuAFLhH2AChGU!|WXm`4Z3W*FSm#|)@g01Z6E0_xgi`_!c=p=TFi#gQMyl8h-&gSi z{E!zAlP97;okx9qIu*C8m(>#n38vHWkMI)(Kjw+N;@D$W#ZPgO2*!;hyGY=WbFNw7 zSFz}h&0~o81b!~@{enl8C-Zl)&Xt{297xEQRm|a+q>+}IWz)t_3+%WbE>^N6sZEU~ zw1$0hp3JMbDyMj`FvW+`yi@WL737f1#`P{kUdt-%vdQA_kr|RhHJvsYnU?9*&C}^b zE{IofQ^6wnZ{^UsvKpzG^rRk+Sq`bFjcai;ot;(jYy5_Hg{c*hz#aEp!P#jWKh8T% zQqQqR(v#Dfh-(nA=<-V8l6W>+UGsk}+Ai;H*eS9*(hi<%g9a&8QH)>Rb^R#}t1nJX%qN-%F0Kb&Q8-;8n|pz+Y6njDvLc8f5}%cPgc4JCa&1 zr{@&>U0~N+im_Ts6}-*?cW+g)-_AdFkivepnIBtFgkruaeDk4%??Kml8LH$xpKA(r zDp1MqxACoux<38}o35g&srd>vT(AZpNTd)m#P=|v|%Td(h7 zyDi`k+mM!l_n?hBJm#5#c53=)=@2>)rJwDz)Jb^&@1n0N_}@U8f`&Iyui&_X6YHtX z3$qjMGfud*&323}^N1Y|v`XN;4E4qHC<wFxwa(*{k|uUV_OK4XUS@J1 z>F^L~vmZNgfRQ~yFb9eB0IP7A=pz`$5i8y%8`^TbBTh94*NL}?G0M95ts0a-yn!HV zzz}(Da6%j*%_Vtjns4Cg$L8?a%IYG&|0=$)fG_zlvclvl%Uv5G9wqbJNS$^IhRx=h zWf(P1+6BIb7ab>KbRnJ8OYY9&r3IW9xQ_1u3%KAz^L6}8K3?)cme^;J)b$(Jql7F{0v8Z)@klniY+%`zs`XrhYkU`0 v#){zEa8%BQ1q;=6+~BW__ZDTp!=LbH>*)^uiaeIMCja328~%ZRV)Oq1cCV%T literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletManager.class b/bin/main/dev/loki/pallet/PalletManager.class new file mode 100644 index 0000000000000000000000000000000000000000..bca417af91b85c198bb6e0d99bb4c90f85f313cc GIT binary patch literal 3730 zcmbVOX>%Oa6+KV0v}V+@WZ^|4V{D9NM)ES2B?$5e8(YFy&PWKP7;KiLHPe#YYITdA z9>pdkYzbS!ngz#!@KIm*099a@?J6ptsr-iI59Bu>&U@YJ=@BEjDm7KTym#+?_ndR@ z?fL$P+us2=g)cO;2<)zy%LUtAunJ3tZJT~!O5G+5$Cx)g4M~B{%f_-%unlLv@Z{`e zv+N6KfpL|aCAC}gExS;%s(w)*Gi}W~hF|kcf&O*dBcf4SwTYrjo^GEvJWIZZi%I{IMe9BF zRGTp<`LNe=7r4J}y#cT+?!#UUdl)&Qs=29-`>{_TJ8$|??p^u5b&MC=upb9B^a^aL zvmy!6@gVX7t(I?khVOa;I~u&l!*xdJ#~}>|Nkl!u+OCenI6^HP^9l=N+ggNJxfC@V zCF`y?Uzn{eELeUdriNoYG=kZ{Uls!xlDa-5(48+e@n#K3Y(LZS2!<)XQK?YUe1JcG ze&0ojpr~U6kFs_z8P!RZEX(C0{U{Ipnw}ugKJ6Rjg$ZLRR6WB}0=5Nq#mclHcU7I~ zV2Rn+HE*;M&^>d}T{eS&63i1i&Pp)pV1wsV-BY$5Sg_mJRo6DzUyH_-r^67M6S%Uc7cFNj z%!TDC)8eTNtN4_`3>~v_YNXU6J<2wnPkZiy>2z^KnmXn%PhX$82<&ZOey-*y{t8o` zS+O{qOx0+Xj>}k32T5Va=h*Ub;+we18k8!}xV~YJx;2Mqu`yfjn@+5Yo%lF({;Q6^N#~4J4Xcgbf8jm{ z*0|%C-l%OlHAH0EWUn`fLymleUtIlgX2jUiNYl_!sVUnB*8OB@epH=3tOU9e!5rb(67N47MJfs$&#mj3n^*h7r#Y*!qa~ zGUD#LL>$LHo*t-oPHFZqF$io?=6ZcsWr%pWJhW(uYo)y9#3*b>b^or z(!38zek5wLTBFppoOT1xUPpQbyKO;hPLj^a4M$}9nBS+(TJY~!0!K*CQPMbogM>85Uy+HQ#6wK^C?@!aNrF79gqey!PDLQ6@SFmfpzZSt zWE$u20@qTE`hWtiF={7XP8p%DCu4Qm8v@=*L4wMEj7Mw@ zx-7x;gGAc-P>wP=LCK~3oidZ#r~tQcsYz3u=4=^_m2YQwn1GE%MvxUS#Jh}@4Ny4( zU-B*90B2$mvQdPWq6o6#WrUs}0zc8Wu`E;ibqg=Q6?kWT#B;HTJyFEhH;t%3ZWwX0 qNyG%+P)Ody?|GN=^^er=PxuI*sHZ>UQ(VK}xhLoAb$o_@BKITaP%ZTU literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletStun$1.class b/bin/main/dev/loki/pallet/PalletStun$1.class new file mode 100644 index 0000000000000000000000000000000000000000..57b782359d8846ab21bbe7d40ccc881472d5675c GIT binary patch literal 1254 zcmZ`(O;Zy=5Pg%xBqR%o5fBj&Bxt^10r4}43TjE202;w6ZkuE(ELnC_`;jV+dexIR ze}PxEKtW3m9zBIWWZARCVxfxK+U=g1p4UCE-|U~iKMnvq!a@i>hJh+?%9>GE<%XhZ z+?H2dQ?eaBITb>HVbm~da@ncZRa>?y8@%dh+?40tiI~nYJe_X?zWauw=YT&x9+S~GqyGD`0Syfl7**Z@hM0tN2nz4Kgb>2QyC9(hkqG?gkq|{MgFhuU#R{si+`(Oj zsKxbakz1BhJ6%)BHdVcr7me#I*-E8eR2uCLMM{QaR`^p@C_Hw2GbY4|Y37Mu(F}`r z7rDJ*R3$vXL(+`kpP}fLqnBN;6uk}4d!^XWoSLeW%7t-@lNPC|=7OeJ7N@3$m$+p= zGc22$PSntq_Q&Hwqd+_%6zW>iC$0GCjY6WhPV(kx93b1B$?l>nliNi+Gro&N<~zE- zxX~Bs8>DDp9DVc^J1HKQ&`*}(GJ4xsb;1&Bxy%l_b}&FD{tZ|6k@Dd+4HEm9VE9OB z$WP4d%%PWlMT?7n4|v~=!ncM Lf?Ukg>%-tbEGR+i literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/pallet/PalletStun.class b/bin/main/dev/loki/pallet/PalletStun.class new file mode 100644 index 0000000000000000000000000000000000000000..31e8b1883dd18c1fdecd1590e67c5d028650d902 GIT binary patch literal 3184 zcma)8*>@9F9R6+-nl>F;2((ZZDNt(Dg^02TTDsCeD21dg#RaFyvR7e!G~ z@u(CKjz?d3;Q>&JwMQO!@f@GR|Ksua-APDhK+*JcmV57S`M%#afBg09eE?m!=0Taj zs}lDJ^CSRA#st)nii`0TB|Y zmhXlZKd4hdnu|4IODJpVi9kd%gA|GAlZI+$)0)6~=k6Zc>+o=>H`u}R<$H8PH#-E@ zHHV81#*)T_J{j1rp4NJ-$Dn^iz}=IKYhJieqo4{)1YFJj5ifjL?!huUz9+;L)S^zn zH>sH=&;?vn5~_s2N(GBh?!hX7r6o`UYUU(?c~OrVd1|c!4=N;Z-OvWJr^mH)R2@$c ztS_95sfiIat;_eqqT4*FlcqH#Xiso2ImkQgIQIkw$*rD|(P97uR@>-GCDdsx9mq!| z=s)hov+#S+EKpaZ)Nw{Z3t9y{d*wqY~KoUv?O2iT#LzqY_hP zcQ`cID?v%CQ3bvYiF$sSpS7&H&) zpIx2hoPr5V5|}I?OG2Q{K}yjldqncO`}_SP70^lSgB!62HxjuYazExS=B}@=z?6Xh z!Hpfc?{l|u3;etL@NC1wncVH%FS&(=+@0L5hckR{$o-bPpZiJjb6SCcBpu0UMm(yU zvgfqeD=%WEbz?GUtHr`fC=~LKc<>t2zSIuv#Uz_b;}$Pc$jJ0!<3D1r$H$KbZ8hmA zXFCCo^s;I)g)<6X#~T7lno~v1OodfbOAB;3=yVqI0Y{x?VkfnDmZK-oZB@QhBKv2) zsX7~t-D~TN)g3q{>|Q#JNlk?Y;W*{Q!iE?z)!5V_HT9_V%O)0@7|_k`>E3iQmD1u~ zoW+M8eBfxoc9#^K!$*v!o+(IJxSlapBc?@}Q7avai|Op|E#Jq|kU#nvOK56ZI`h=g!(P*l zOA2OX?<`Mir;}&sxtG^TGpnmKgR^P>% z+m_Tby!zngbs4YADP4;dsKYw0)aB*TK-==S5*x6Q+S#PBsbHm>XQY+tmY=bPMw;f) zR)(8gDTCB4eF8rjO8Tmc`l|6fUa<5rCV72gClM{8#H{pq`xUrv^S*PpyWagfpG!ve zlwq{qy@1ZKJLux_iX~o`>mK&c=CXkGV=154lKge3A*5Q1oJROb%?=W@7ftBl z%pKx=gsX9WXq@6biB`-oH7*eHC2Y5d*_wx3Bxbfi3~9hL-n0mw#ann=e(~Wv-od*J z)_b&HiL%N+QRQJ*6nOs;i@3&Z$zoI69A>UQPGY^A%O78Xx23hMeGZ?MK&`U!Y8PV= zL^bv>A36xOlaRV>jy4q?Z7Mq2RCKhd;Al1TrQ|3-Rx9$3E+HHibw1vlU2ZF@Yuj3_ zkj&xp<@oCIbu4n3TFZ>!+1i2=k{K7oGTQhW-xMtEr(Kz; zH4J7UQ@>@Zl*+(sZ4VH5$g-19e;M2L6r*4PtP7XwD_rC!k C5*x|@ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/phase/EndgamePhase$1.class b/bin/main/dev/loki/phase/EndgamePhase$1.class new file mode 100644 index 0000000000000000000000000000000000000000..75e938095229414f3877a01d3cf24bcdf3caad61 GIT binary patch literal 785 zcmaJwA3e@o|3r{r&^M8$5AQVpxvFFiiA7hR1zwM7XQs9zPPF zY!Ym{a2VEg+6%k+U?8*5M12wGiAck@qm9qGQoNf8hDz3#CU{Pao&Qj_8D@q&35+mC zYQ?Zrpd+1%@I5s@xGWO3@=7Y1y=G`{6u4=j?V>nEvU$kh?C4n3z;M&Y4ODDY_u-=I zp^P~nH8dH@8x~scNG103qpnE5Twbi%(GgD$c`9u_-gNA38CHwN)2f1PxRvc8U8JRmQx z*r&z#SVuto;+xDERwnGcuB2^k@INXg(w&4GdMSqLzA)JbZ8EHpcV+s2N{xoK5@hh4Ib5JD0)e`#noF+&)~P7onf|hfyT)Qc#Gx=0fC>Gr`aFHb=<}RWej)F9Mim@ z)#9qHQ_P;@ZgJilHT+G@|4eXH#~cop=~M|TSf$k=*$?rEA}i1G+3zup64w3!fZesR literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/phase/EndgamePhase.class b/bin/main/dev/loki/phase/EndgamePhase.class new file mode 100644 index 0000000000000000000000000000000000000000..fe9c66efc90e1d86a6c275176dcad3eb84b9639f GIT binary patch literal 8421 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/phase/LobbyPhase.class b/bin/main/dev/loki/phase/LobbyPhase.class new file mode 100644 index 0000000000000000000000000000000000000000..2f408529c7724c43a8effa82cd5b2c81bb08cb21 GIT binary patch literal 5285 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 Px;!-wg(1=GfKy`gv literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/phase/RoleAssignPhase.class b/bin/main/dev/loki/phase/RoleAssignPhase.class new file mode 100644 index 0000000000000000000000000000000000000000..19b62eec07486c6459a7ec8d670919b11ec2285f GIT binary patch literal 1858 zcmb7E+fv(B6kW$Q2pgGOoV4L$%q4(DgOc=Kr%A&ll-40BWau=VKFIdLC^i-&3x@Ou z`p_@vLudNdmp(L|5SVn559pKgL!GW8X=I0#bo!uk)81>Xz4zJYufLzY0B{SN8e#(3 ziaapuPR%y=cC4l}H=Me>)oj|;#yz#ykPsMnXdPH)-D*_LyQPP+>}lv0$ei-@?FD)) z-&?u@qs7R?C2R+_bPEDW&o0-RMY-(>h&6hao!z~<^dz?r_`6xN_m*YddL+<&-EP?4 z4T15wH(}i)$NQKR=nbxl!eLsq zW)P{sNT53Qrt^OrwPByj_uX}Bq{(2$;4d*rybX;ltbhRhqihnt>j zH>!pIq>qFb@@LxyMjQv)kA!|VyX%J znVrOWNc9otZrb&spW^^`H|ZDStQqt1V+=m#GKLJtlz%)x^Ff^F{z72J`7Q3~;M4FG zQV&Q7R-#Ru|1!og-ZtisFk-}yFlLM%VZ4oefigj#1bLFg?jzb`Uo?!eZ^eVQgUomLRKgFe|m>Wk&5p_71M!=q>*6EkBx7hU@B1w_@{nG zPjDP*$dVmo)c8#4m}PW%=D?tmc}(GQhmPq;$MmZ@(&wq;lSs!3v#&~-9xD8SPfxIP zg0-*PX%7l|m1NgCz|#?UIs_NEi+f>$P0oUlT?}pPH!gy^p{@{Uu5zUZ1|f{VSH9K8 EKdG~w-v9sr literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/player/BasePlayer.class b/bin/main/dev/loki/player/BasePlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..03e7710b75168bc6bf99661e5e644165450ba466 GIT binary patch literal 1548 zcmaJ>Sx*yT6g^+JX-lCCP%4XnqILmBaX|%9a0$jL8kR)k%d|{z=-4*x6vI#PKk%SN z+#Y=N!QW(z=bMi0v@B`zeKU7C_uO;u^!MK%KLIS`o&t}+@V36Enw65FR!wbRuc<3q zU4L#rD)0%!cC|fCHMR1Nx>nfLi#bL{cjbJgs98p(EHId_)OOTDqf|01^}m^MfkmTiSW5!^>F#2gEfTq3+1A7G zA{s#tVglZDW-A1NLi(mp51*VUxbuyknkfrU(2#mAxDO$0OV7(PQkv=t6 zPADd!J7+!A*<5SdQux^jLI^WW7U@h&rQI#GvSg8<*;=HaQC};YoSMB0ufoK^^=)o}01R;Pvo>3;p_={tNmSi&#qZs2GA?$*Jz-KY;z^l9keg5oc#6R$%2^p}B z12&9g!T<+GNHuAZ+~#;oUr;80!@2JKlq)~j%D;rPlkYB`>P{YYCAW)bkad!mNL30G zkfONM2;0^P5}tIa5NN3ou;rG-bC^Dc$V@kpsbh(#xO^Ounf6$kMA9UZIf2L(&RY`U z-Z@yWdCR7f*)O=3&;3GQ?mKP>yocX+;60$nYmdB%Jx%Nx7k1KV($7)f#saYx<#Zta TU_ik<|IP2P5@=uI>A~H9aoZ?K literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/player/Killer.class b/bin/main/dev/loki/player/Killer.class new file mode 100644 index 0000000000000000000000000000000000000000..6af8a1ae516feae6bf88a86d91e9a2067ca947c7 GIT binary patch literal 630 zcmZ8eO;5r=6r62Kfwl^Q0>a4~ps_yyL!uaskr)$&1GfSjU9HsggM|O&#YAJ`!5`p{ zGQMpIV$)>%=Jn0IneF$_=NEuuG_p__DpNkUUGGuY&#trJzI`cNm-|_04E6N46DQ!; z@fbsH;`shT%%{MNeby-#TNLGnD$?#Bqm?FC<l0xbY%?!q0>>WG3uG84P>mU8NgjP-FnAG^!~Soq0m% z)K}>@SyYVlE5qGN;qqY`7 QUq#U4n~@QAiLIdi3(&`8egFUf literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/player/PlayerManager.class b/bin/main/dev/loki/player/PlayerManager.class new file mode 100644 index 0000000000000000000000000000000000000000..566c87292f786803e6c530343d97d41b45cc938c GIT binary patch literal 6301 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 g2q8kEN literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/player/PlayerState.class b/bin/main/dev/loki/player/PlayerState.class new file mode 100644 index 0000000000000000000000000000000000000000..75eb76572e6d5ccb530731d32601ea2714b13cc8 GIT binary patch literal 1775 zcmah}&vz456#iZ($xPCrjRO{;P$PmS10_}g#l+f>3?wv7YNstuSxu9%PDzuV{OCE| zRo%OA<3>GtJnUGM0KzG!Ij&tzw)`<3?|Th0$7;}{u+oEOGy+igcifMI0a-m;T5yS|n*>YWV+Id5c&i+PLTZ1ITV z6lE4lx0e=-978BqzEcv5e7QW!7jibUuu$NuK+eeUfMI4c^E@zIbz7WF$=+}nwBjoQ zX1nRu*9dvoC@syMU(OVl43lBv?*9-`(v_N9ciYnpQarItXJ#8!M?p}*7=!A4?>+W< z{T;98bt7PSL&YhaCf4aeQ9OQ_MB#8Ku^guAGb(}zDUcPs$q?~=_IAB}?}@k1H{Vhr z^G!v;d4}WOcQM-Qd3!`)xBm^#<5};hPLNcxVtW^__R~*YphD7kVfKd+;1~3e_kf#VAy+H@?Voj%J?-Mg>_CA8rgTModN}}BZ zq?0}*ZGcn|IV?(j-=^*lAg|F>xLU@#NLjOz-m}tt)^pPMGZZiVlOX$hQek=l<^V$< b(28hGe}={1!T!5$2zThTA$$%?*pc(YN=Srow!)M61qThNoSeb{HyMAD|DsMU<7lVeCTNF#SLje-n8;u* z3qsCB3TZ;2DLru>4(>#7<=nY~P-^-e$89@-jBwJ_Mm;%XSIt>lzovJ1OBl*7p*ZV+ zFeis+(se~ZP}l1>y!~E`PNy<(ms8}W*9pWxc$2$$nBD7_ei(Gbv5eg1eiv>{FjSD|Gapm4Ow{=^P~hIuWE@4zGh!l2 zD6<%00gH*~W{g=yeddXYR+@WYg-FAUYbDVj)~qBufy0xXP^16@>hPdk*6tY!+%XJJ>+t{cqmKl;wQ{U&3 zVX%546r{9y-R3L)F4g4=#ZGX1K{R+b7*rJrBpEVQ!{W>CUX9Cjy=HR4RYhGlH+5-v z>o7S)WS6LUj5!qwQVc0atU1!KwitSkKfym*kS*uQsy-EY++>(9v|0bdta5mwC>;rI z>-M&HE{3i`vEuO$sJMkY3{zL-uaLj|o2#2PLti2A&sY0g+u?PmT>RqE533l&J%)uV z(x1mif-{C?II|2|DA>O3wmY3ST-;2f3nMD-W7I$SCbi2a?re+3iZ1m%?r=$`NUsT3 z*7--nyW3o(|Kz0CT7;Pw!m%BxHv_Pp#yB1;m|z%g_oZ|#$Jpaq;6qrcViFodckP&g z;UH?7VYS3A*MjOL-D;TJ9;phk>o&^~FT%!%WJ2Kjev>b9yDp8UBV-h^VCuFVO@tg@ zJ4vGIry3}{(o7Pi6rM8lcq3O1jLy)KepwonibaF#>v3DbONN1yLFj1N(+(d`_#1}N zwv(5bqF{z$=<-tPm%u@4{AF%COTu<27yNHviUzTZIy6S}Me|K>d2cEyCTS-DZ&1^; z8l}i6CQ3ii^MhVuxE2-xEnN3Apb`a{b0FD^AvsdK5kkg@)>BbRN9YC4g4l^pj>h%& zIiP;v`a{L%u76tB~_JVBhEQ+S5wctN>5DKJdq75ecSWxS<0>tm+z&c}Fc J-aYxZ^bf{ZekA|^ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/role/RoleAssigner.class b/bin/main/dev/loki/role/RoleAssigner.class new file mode 100644 index 0000000000000000000000000000000000000000..914d852e85e3b21efbe1d25c3f0ea43fef1890a9 GIT binary patch literal 7007 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/role/RoleQueue.class b/bin/main/dev/loki/role/RoleQueue.class new file mode 100644 index 0000000000000000000000000000000000000000..0acb0b598646aa740bb310a930ccd3c00f05e5f1 GIT binary patch literal 2192 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/sound/SoundLevels.class b/bin/main/dev/loki/sound/SoundLevels.class new file mode 100644 index 0000000000000000000000000000000000000000..2e35833f398eb7c3e9bc747f9c5c5b4a3147ba43 GIT binary patch literal 1628 zcmaJ>U2hXd6g}fzuRpR0$pRs9oDT?4djl9+(U#hclg2ip? z5r)*Z)z3NZ13TAsd!6lEoqr9hZ#mrmI{M`Sxb*d}GzvEY}%kzZni0FSH!HWBbcQ zA(L$o^qRYE#SxX4_xB&mMdSBBl3+NkViITQ#zGi8l`-CwQ1?B%vy-n@D%nPYqNi0v zp~MlBi_`m$xo1{IjC@fM1;-7OzU;h1YUMc<+YzS`qbv`SR**3qwLv1FwsAu}N%P?B^ z&DMjOxf@og^i8K{5x4nFc4)VfC}K5+6^8Kv?f1IA)mHHt)~Gtu^US@LySvAr52~}V zb>C|F`RYK^{&!V**JFai#$AT1gK1%7hl;>Ea#KYKG?3Q^lh+)x+szN$_!{jEdp`U$ z*hzXHUdyW3yzAowkL3yvrMl|&PRI0n9vxp9K;-F#VI5k|uUw-ckmzYDE7N=`0a|Gm z#Yz)MCmNp>vC^af<0(FmWXEVi$8du3$I1Fm!~*L-gEh4YNz=5GFL3G^ri3FUYcr~_ z)54yMs@lA;7nENpLpsD%y(u3eU2jGYu~2`8b5992g7e~PnZ7b6h~ing=o(SJAWnG% zJ-v{`x8#rVczr4T0vGiQ&ym&7$j`C#Hr5EC@X;S7%rSwrAY{;RIV>b7n@gkdCqlQA zxX6V!@s-h8RR0OtCxQwmstD(V091p35RgXa*yN?RlTRO$oS=%|Cpa$j55$DGW$|Lh zy&+G@r|`j}9}y$X4!ChWFwzGk=mCXELco+r;T=vRDN5h}ley*n?0s=)jl>tZ$j14%PKVgLXD literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/sound/SoundManager.class b/bin/main/dev/loki/sound/SoundManager.class new file mode 100644 index 0000000000000000000000000000000000000000..ca6579e3f0225e28be255986307dcc276b92f4b8 GIT binary patch literal 3764 zcmbVOT~`}b6x|mRhK8Xv&<0Xl+FGs9P@^q=v{Y&eNlTjsgb04)03%G9CNT`y`u+Lh zi_i5B_^fML7e2Ur)8*1%;9qfB_qj6+Gi|KZ#bQ=w?!9~ObM`rB=GVV|_z^$>pBrdX zcyQU?%)9k9C%<0bs4eGb<$A@cSu1waKtkbxtJbEKcdgn=eroZmz2qr$G~A69r>1bU zTyL)A7dO_{953%b%1Ytgk8ddl@B%bl~Dj@$CGNG_9x-W!RNb1tk9_^HipDQl9k{N{q_ez_><(T%kh$!v- zSRffYVd6356}p(lZK(=$c%c zJcXxyqvz{QcUfU?T%LY9+J)2N{~5Mw1SB|-eA_?C_Si|ie@>x$*0Yw@u2_wrU3P~t zR_g_qo?I9#>vrDo95+8+cU`vs|EYOa@~pE`v%HNaD|x9k>e;BoxWQxpxy!mRj-r7H z=B!l&CQ7)#)HM`IU(%i?|>Qv7vXP zu|4=swmfmq3>$bgUO~EmIdVnDyyLBI527bxwI4SsYN6i%!6?}brkE zgI7(gV2uMVcGeG2b4nx^ZL8@m+7`n&9ou&Y$3IVfz8!Yq71T{MFvww4tW+nfFD=X$ zW+sZ2g^R_)O!a)RP-QI&-vzto7caZGNz(opX_zP<(=)Lln7!xAQ{$HxrYC2sQU#y^H~{CocAzC-snylcZAUU%!0dyv2b+?(bVe4*;y zyzAkeq(D$vHf+qj0j9%eNv`$ghEHS@x3Etx4{l)~i5>8i2HH!QeHwVgKN14>;wT;_ zAYt$bj_KXKcoc(LR4;~boWg`Q7tk&eA;JBbTy6`)e0`rFHUC>P_melPnFU7z+YTuc zGG{cO1f0=)?PPi!PXv5l1Yr*3ZsFvaL^km=65nJK3_9d}#*esNr?W@%9ALT*!eo~m z#NkNf10nx_j#nZd2>AyB{tonG6laO_EZ1q`pD+!+&=kgSjyZacPuuvhD%SqOU1InM z({WzmO!8|S$tJgOQQ;>X62V)jDBMKX@oYjw&&Vp<<*VC&h))TvI-`9#iaxq=gvy4P zol|r{ioy46Bvd|vdAvw1vLa4N=0*bLeRNtJP2eRyHG^IAc$vQ>mi=hEjV^Q;PzJ^g zykaov1}8o9r0^PE=T)Lw39_EvcKMM$#?hj*a+Ek6k(mxOb=k~`LA{&ax1|m9G z-{N=jF29$s9Ef|3!bF_fX)ftV@N-B^@`*Vdf{s-ou?mS*NUQ>4nHVpi}2HxIf;yL-6h(Sqks8 whJ3f@gO-p*LYDpo^1~2vB2a0H%8$&R%@!gj*&UZ6h-N6#3`Ks*NZat)-!?TU2mk;8 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/sound/TerrorRadiusSound.class b/bin/main/dev/loki/sound/TerrorRadiusSound.class new file mode 100644 index 0000000000000000000000000000000000000000..cdddeb46e3daaea2a1efa88ecbac109d8f5b6026 GIT binary patch literal 3415 zcmb7F+jA3T6#so~l5Nv1NGYW$0#y{+v=HT{ZLkGeE-j&jHWUFBx5-+TrklFiRO|gN z-e!DLad3R&QJm2#J~%$fjDHiO{?50#woFI!u=y_M{Lbxn&iB{fzx@v27``yjpwOMQ zmlC=Bypt&8i*7cNwmmQJO<7r|SeTX*10jW7d2cQ;Tb!SF{6ryh&CV8cwwE}r52lK) zYt80th1T?msj11St5e5D$1Y4Os8ODckb9HQjIy1*o z6dn%;S7=v=Ear-Hj!VO-8q2|9;<~kDCC2$Vr-hOVruO};DkvRD>6+q^ zc_&Bz6*{Yei#cnVA)V1TlxZ#$y(MQU?-dj}QrcwEcXEl5JXJHklXpdE+L?1Lzvwae z{SOp6vc|%62{$<;o*Z#p#~)G{>G=78k2 zvUi%;fQ_|O&CnH zVEbvyo3njtJlRuKsn6{L^OO|#&;CE1b#oiU9XHX2%@TLNiFRy}TGmCmyjYGjOqP0n zl%h|VcoO@`DzE6Kt-^fTSrD=eKd3|{3XYHW*4A%ziwFu66e{@nMX_+m#9=8A*7^C7_YFk9<+QxyfK_HFs{)4pjI)F!dda$ zw>`_xGnpL(s!EQP&WSUL^9If-w5`20F$GSQkZZr{(@+^9XSs8U$=U1dN~Z4uLt34_ za?3@LMp8b{nz)3^bcn%C`+F7wV9K|d+O*0CcYjR#rp$Qu=(W9(G9+DIcqmFN7xn%EX6xVRwfTPe=aiwM; zr0gX-S1>UT63cwa%P)*pFuQw3M{D9-qs1^4ToZXLG74c|(CB*7C=ArOR7aO&HG6AO zduODuo{55F$GBz{CUgzWU=Wun+f~~`_2}ewAj>=`Y^fEjWQN%*4{fHV>W_rM(OzbO zo>UydWvhlLY1nX1QpeV*>aLB2FBch+nLleS>KPfuJ9y8)yS2oq(JH+lcvh63nrM1v~4I*#W37U4<-x(P~20 z3s>fHl;!s__DM$``HosQdEsXFNvq-!GN+L*cm!Pt^UFGO*MKJOqiCt@Wg_z};$54( zL|TS3TK{uGQ?5g=w?f8tCu00|@#GS*1b<`v7i^37{fr&){-4qPqZWRY-!_E!-O6t# zRbw>Lg}YO>xq`&SYIsq~ zgVtMVO~MM0Hk9ls9H<~2Afng}$5(K0HNbA>XHN}4xB~E089;qcnJ59ir6;|AqE-G@ z@bpcDehijFslI#M^xegAzS=zF>a@aO=r*p#LU%Et@CVWpdsi@X6Or2(=j!4Lu6!e# zXSjKBFdPftlU*Vf)+mFK{#axM)_~Dzw4>?kTiBu(zhZ8%IUWngnpdzO*e@&G{O4A+ z7AG}_`uOc<#uLot6RgO7mh>QoaflDoVa(uZj_(0vk;DQsUBnRH;_VGSn_p7yCZ9ve z=@i+@uuCcF!n^P(EA%L039qmM!#IyuvCR5EN4?j09wy>0yw2MQciT9|BV_&!BE5k( zNyN8^IEkiBxDV67$Uh`Q*nr~F;DccB4)tdS()!fAk5;YFw?=`Ea6*@elcF=y7*W=t zyRUx*Z?CTTNxE@L2N?81v_jG-KF|SDTe~a0@F6}bA@9=^1wt&y546yr$uF%9jMs1| zRN>Ia3_PIoMRG{IYTHBQuf9WA-H{c`d55R9Z8X7DP162(jo3je(#z#;ZPN)=I*pA` z@;-fnPfJGLA&@kEtWPtIj3l)t_6j%Sdzp!aDor|ADBuEZU1SSAOAD7dC$4Cl@c^V^ jGp0){QN~JHX=S@frW&;$&1h)4k7gE!etbr;27LZ6Y7`Qd literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/state/StateHandler.class b/bin/main/dev/loki/state/StateHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..91cad30350f22878f3ae86dca72b15c310cd7c0c GIT binary patch literal 3959 zcmbtWTUQ%Z6#ga&3501$OK-Mdv5l65OR9pcLXiMzNl8fs3eu|W5T-C?Izw}zQt$V> zc(+!4b}jY6yT#?|BM<%q|4Wzpota4(2#t1`wPw!jefBxuzI9#o8JUCjpIlMuR~EGRKuF=k@vsS9c*FJY5uSZ4jR)T$Ep zrYxI6Uejae3q~fdnMSNn>o<*D;i8)Dl29|M%@|6)kfrtM%GTYfl1KBpvZ!WbeM(L} zX?=E;&Dna(o30)LZ8i;CHDF#g)M*Kg8=<*8>#8(g(U&!FgQhtr;7a&Inyw2)UD2UL zE~Cr~O(Z-zksRwEJUbTeOC`dLHZ1ZVwxbQZB9h=ala%1^)(kD*Bf;Ao8JFPeH>cGg zyx1;d3$_v>r5WmQ;o_8<9aE-srg&@0%qaS}lGTLlD1G@^EhiFE%5Sc$;>=(ur{>dZ z>$|Ucqa?WsEZlnhUyLf|a@8k03o%y~Sl7sS4J6ztqY8cr)r?J_QZjQAcB~C_alRPr z7Ap#Smm(FKHuSK>1rbC~MU#pl6urD#Mh$`z+#cBM5HU2%kk`-JR1vc+GB%0XtuF5! z-iYaT8Jn%eJa;^wYtCSIb6F1m>$!=X4&pv^1aQBE-6e83g;?E0MkgL%_Gi?*h0Jr` z94P~J7cPjycqo7eS-R4;F3yc*6(gsKW+9^s-Ru%tF0Sk5WpPT5l*i-Vx+1O}P>+m< z(MyM!Ovhm|pyY@XpL^5Dc#v7{lhKa>7Eqa=*B7moiSy^#_;`5!PnO4PaTJ3A9OD_R z*e_)yah%6q$z;@dw%Y>^DP29-=~`}$?R-kc3CsC>R-2hov$p#Ss=LYcSPO#r9dcT4$VLAePTk7AN_C#CE<&^L0* z%+AE73UhN>K1Rp2{G!tix@vI-j|cFWgk86?k?{o1(lITUHgxtyt80?r5)>JAm}38I zj+{vbF@|XwD$Yv?nAvH~P;|>Q>F@2}^~j$9yC7o@oTwp(231AR&x-W}k#T=-*tYWb z+M{Kjm5~E8Ez>+{END5+YRA6j)1tXlbtQ}i1;@y?vUBpuXTwy9VU`(-d3BEin zVfzL&u^Z>JBJz+3`FR;H;6+klLD35;3EjkGl(E6~%&Kcw4OhJ^;}tx@MD@oq6%nNW?A0n=;-K3jaWQV%WBMN5;F>y2NOI{G_dWPsaO}ZZHu~jSWtUy*`xj zk+pO%ogT8yK9TXMWtJR1erhB!5Wr__POE=KhRxAJX7;G2>eGpA*5qH6kc8lTok5W55|Z9N0oX6>}YwsLk7D0?lWCfeF4LQ_o)iHX=pYa3;MIZAjv%1)x}x+RJT zdM!$=g>p}2lmqKg_7J7vwoxLLQKIWn_7bJ(wozIuqqMC@*-w=4ZKK3+keL(I`G!^Y zaqMXM1@{iOwO+@eYpC*m+tT_Ajzq;f9{mZ8E7&ZCmeyq?ys-2`zHhnC=EyyyHE@8w zMEJ)dN|LsbE$w94L2}?;w4#G;xYP18YU7po(}7{6=?#6rNjyTnRFTjl{PJRy+8TIn zqAq~322Sz9v>lhWJB}~W@$uod707MNI4$8CeBWQkIXa$c|C-Ble8lF0gb_ZSeB#b? zg5xBgOxrfhEJO3+E5!MI(fRJ=x9NOGT;Gjtn;mU^X=R&t8J9d*txr2o9`GQed5D?r zrsGE#Uk@JRzlB-!B2PD-Wk9cS=3N|f*~v`^H8-&}zzgJH zEq^t2OcAeTr?!7m5^d;;J0FxU@ez8F5^=j6<|A||KId5G@CuS*Xj#US9;T$5!hscZ zilL}$rVw4hU1BKewozaqHi^O3t!864djxQtOh_^IG@J1Vvv3NFyqQIRYO*~oMSi6e z`4xv1f(rpuwbs|yheFljiglRaJuM9EhaKA=#V`IthLJu~?up81X*h1gLWa21W@f0Sbjd3=cD zVe}!v@hGDm;W*05pXGQC8g!2K$#M5+(S1df_o0q|->&^l+DIJ5>nc*>HMI8260H{# K@Htm{@WnqCv}HE{ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/state/StateMachine.class b/bin/main/dev/loki/state/StateMachine.class new file mode 100644 index 0000000000000000000000000000000000000000..38bf1583d8c42ade2cf20cd094737b90b46020e6 GIT binary patch literal 4046 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 JRQmT}>tAN~G`9c% literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/survivor/SurvivorController.class b/bin/main/dev/loki/survivor/SurvivorController.class new file mode 100644 index 0000000000000000000000000000000000000000..ca4925bf9edaa8bfc1ab9b5c9e4c020858636601 GIT binary patch literal 2548 zcmaJ>+fv(B6kW$Q2pe%Tg%AP>Av7^|8mFWUZAp_-8v=>BH0Dy$tFRRi7LrGn$?!vc z%0tsBWZKU3wKM&uPN(Zg0(o59FOrVV-fOMB_Sxs}e}DfIz#>cq5rLVqev&oqijl3= zofG54cCy9bBWGK#W1FV#D2NFR9%(09*3_(n?8g3)UUCI`E^-9M3ztAuQ#;i|m<7fi z+b8<5ZZTyhjJrs_BwP!kn4ui%nrT=E0=GIOtoT8U?|x)hhWl7xG8M)*3z^*!h~@0E zoDta*}5KYbQ#37JW(S>dW?+Hv_meN*Y0>c=U2v-DV8z}#m5SqB)^ITP-phv+q zft&4lg31yY$EZ|yT}2!Tfq{Zy>Ff35ecjp8_D!9-3wB8}cQnV4>)>b1Jv3?pw?i*F z2@~kEtzy+NEVt-tjw_3MU&SqHPw&Ofl2w-fQz~xD|ICmY7hP9BuClN6-F6PL`}Io2 zaIf$SVt2RaeP+XJv|u2HH;{y7!*F(~oo67=O` z6%Rd`^=esj^JQ9eL*w-j9k(zBUKr%m8@dRJ61x(7- z9fvh~blwqK?!}kLE69-CfPB1j(_~vOJgFzCwYnnyf)UFtm^DC{@<9 zYS32MCYNRA4mpMF{Zzxr3o7)>@uEE6hq12WISL#?OMmVCXS2d{(ISo0#}c>e22~{K ziZ}Ol*D$l&+pGBnY44VbukeDWgMr21y6`P*=eWEDWU!PkaD%YTk&VhF$4eEv_?l@( zEpNZJq$ix!mvMZL9~Jx{aIFJ^3JsfdHNUaDzLaODjoPYpRCn~U%rC3Z<+ifA{%re2 zurE)fdw44M4^su~VQXbiAW^jIPDx)jFB5(x z<*<8ijxXQ+jOc~RXCGIu5JQCT>GV7Fr!!|5O8>u%@uJy6+BCFmIKa*d<*XNq<_WOIc7rSgr{YMibp*( zsgiL48gG+!7gyiJs2_M)Rvh<`^~&H? z5WuZ^Yhc(f>qCipjtA*;d=vsF=^6;5(3yUElEh4d%He<@BCnJH_LS7Jqm#rNI>&q= z^A}=oeU8tUGBdwnF#<^tZD`INDo?S&X*MT=3EcHarhK4)q=$P?y(&f+y@FK|JtIyJ z#6Rd$c$)}0wtjHg&^mvwIsZw^{BQ7Wke_F% zf<+GbE#3PC-~EKH*qi7Z{`A}EyO3)Dk~1b}O13BpF+ha<4v3}Jh)+8szUqK@&>Hc1 LXT&4QjiB-$80zN& literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/survivor/SurvivorHealing.class b/bin/main/dev/loki/survivor/SurvivorHealing.class new file mode 100644 index 0000000000000000000000000000000000000000..d4e33e682276217d8ddf5e6b38497930fe80bd2e GIT binary patch literal 5528 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/totem/DullTotem.class b/bin/main/dev/loki/totem/DullTotem.class new file mode 100644 index 0000000000000000000000000000000000000000..598632ff3e80f749f9f4a54716ef096469568a0c GIT binary patch literal 2957 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/totem/Totem.class b/bin/main/dev/loki/totem/Totem.class new file mode 100644 index 0000000000000000000000000000000000000000..744f580ab36072d741588396a3ac9ecfee874596 GIT binary patch literal 2664 zcmaJ?ZF3V<6n<{=)@(0rX#*5U3s}K4AgiK+7LdLKT1{IdX+V6zZF4P4HrcwnDOCL> z{s2EQqjW4<$8r3`2Y-~~IlJ4iiCd;Kxp&V!FV8vWIj8^p`^R4ZX7ED>eFC|<+R`n% zVd|dksit1#-wcuh!;g$DL${39hQ6})NUeJUeP*5HW&fe=nU=n~x;Q^A&~Mr6hG*I> zfg@$x+0fV8jfUyz8ts^3;lW06p$ubM5>yDl(Ri2Cm!n5qdR=j^)Dkidwg2Zc(glT@Y zTxQGHB?ch*c243D(gH(ev!#~X%{ApzjWvrZGQ#OtHN!FaI}|3pho&oVG`3oPIX8{R zEq45-L>AfrbiAFxTLSq=tNzyriFa^`>T0_4%Af*Mt?p}h50^7|Utlz1x?f|7EBJuO zu%W!Wwqub^j>;8L^rh2TOygPxS7YOsd_GjSHxWmFM36~6~p&XW0C01FQBk5e* z_3Y-d(Ntk1jkZgZMQxxLFFZ39+ChbGfBVJRXS3!9hF~<2` z<4du|Ygmslp6oTg9BW)Bh6S*15>95C#`K!p?@fR`sLV7m_$smXn(rx~lGdS;#{c}t zm%ul%r8wIQ=teA{4XS4V=z0h!&43~t*L;}s1f~=LlI{RW^Z#BS$U|HTea(;!GhvW= zGPwiuC!~^36HiGJkS}P?LIlxZcgs05>mYZ{cz5MjyW2d--M8`XZok@{hjy6kwXkqm fN;ZG~IktZ8Az?LAw``|wS!~l{;s$=_>wo_rHpcin literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/totem/TotemManager.class b/bin/main/dev/loki/totem/TotemManager.class new file mode 100644 index 0000000000000000000000000000000000000000..62dacdc847129f4a68bf5ef1a0555b4664a630ae GIT binary patch literal 5112 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/ui/ActionBar.class b/bin/main/dev/loki/ui/ActionBar.class new file mode 100644 index 0000000000000000000000000000000000000000..fba075c05640e3ee9ec84b61dfd0ae68d6b01cc2 GIT binary patch literal 6705 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/ui/ProgressBar.class b/bin/main/dev/loki/ui/ProgressBar.class new file mode 100644 index 0000000000000000000000000000000000000000..85ab360d81e758e38023625a512bd3099f35d607 GIT binary patch literal 3358 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 D998Ur literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/util/LocationUtil.class b/bin/main/dev/loki/util/LocationUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..681f3efde4ccf9ab3cbf5885d7b0a8f3bfa49db6 GIT binary patch literal 5507 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 H4gUFGN_V`V literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/util/MathUtil.class b/bin/main/dev/loki/util/MathUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..511e2d2d1a96055b188b1689f67118f624ddd552 GIT binary patch literal 4573 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 literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/util/ParticleUtil.class b/bin/main/dev/loki/util/ParticleUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..2a909a304d4d534c2ff84aefd2a101d99ea7e26b GIT binary patch literal 5937 zcmb7IX;@s<8GbLbTxPgoiA=&^025<`0YVH424V+6m$Ycg*hQ!#~ zH8!=2-SlZq?V?SauC}Hv3HsDpyQ%F{+uFr0wpzQ}n#IvbBBV!L>u!>ytG7W0tV zk}#7KErVmX#G+XZ-p%o3JiA4MtG;1WgS#g+9`nNmp8*fN8p`_P$=JZm!Le96VvZ$Z z8kYB`qGn>$OvmLqchjAnjAt~g>R%c`rv^`E+B}@pu)e-Om7ZuBo0*!5XKk3B&YR*S z8&4%W`x-|5sK7-!mTS1k@mPL^fl3546i>vmyHn}JxQ5F52B#@?x3dH*5!6vd6&yy? zoPlbTX;`Mv$rk8ZaOiF%YeuJb zn$tN6H@+58!hAK13a52~eyxV0%x!cQmcbGEbGwo|7NZ_MMJzm%A*99vFE(Z;&7M>u zmG0c$FzQ1KuF$ceQ1`qF1~y_9GbX%iB%jssyHm1RV~m)t3))+b2s#tLovEyC*U(hp=0bun6TMw? z_sQ$H0PPW=6g*sD;Z=Z2;LZ=Wcsy+$mTJ?`^BOEV>DlO2(YSD(fj(T%B9GlVVuj6&2CayMyjP)bDe$+VOYoO7)Xb@jui$*5TUiq%vd&U zN~0-EZ^zQkf?{<}h?h|VyKw_4Bx1>l?4;^bVVT%#;6?%LOQzBX%>?5qH1->KJq}0( zCQ_p0%0dpdKz?X24V0oxY(?d%0U5;%+>8kVKRA=f#-|f3rHkvs7eH8nxPeRnEXV?J#@C<5J4*Og6?A<%-U5xfa*p zmkjEOr`hrs1G#Wkh9$MP23P+#5^k;%8E-f622tJ3rh0=Pci_!B-lU;)p~`le*+~O$ z!CM7Dim2U`iGiuW+YKDeKf6b6yu-k;{0-*X9k|QDyVQf3cv2R;N1DQWNx48ft52#v zM|z~Vtzi1q7&+y$`-_DA0|uJVtY9aYC}T5e5wkFE7dGC<*6Zzhfg3MhR7IJHq=pja zkyx5ibS(i?si#8O&j2pb$!MENJrbWtn%S8&19{{BWo@&QZ!DROXOFa4fI7D?Jsfb>iX+2EK?dY0xLl%z(1S^U7XcPv=E1cc4@9aub|p zfUB1lhTTi*aN#U-WIBJIXL(Gf~ufbbbCGFM?R?1`P4h;@Ry8GqU-wga+xgG8u?HwNJJz!0-wU4A`($U!VxU}|) ze0$o(gZ+9bDGf$nG8s$vB+N`E#weCJ&Rw{II9w|56)2KpJ+F0MxA0rzw}a{Z$KiwTxFj*)Vetr{U&5pt5lmnE?H*P)LSpn-**&wKkI491@wm9QBGtEgCrT zs3$@kiG;OiLtWuBIcmn!*B?ZCV|r74!V_iZb4I1iLKVV z)PZZ;vU70NQp!5gzeGuSrDe~?)nwyp%Hg6nC8~>Jty2iy=ZMvd?G{3;f?UsToeSTKtOLOl5pg;^L63yb)#g2kYbtR#;5{}KaElh9M^UjS=;5j( z^;P;Aym2bZ@!R;hQ(eDvDta347Kx5}wSYI^eqjEI#hNrS%uQHM{B>B*|4uaVWWPaa za-FJxh^PV`58C+)}HFFjoZIhz= zz8u~Ea8iOWs_5!L-J)B35?w;KI7io~*h&JBt#1)qUR!K~o|WD+c>mF2El@0kA74zk zm4vS(;j0L+4LdmAg{vJ&FlrMXwF!^fghz9Pi54GZWlEKestWK@gdrt@P7$^%5sK-f zNr~V)SAs0)4Z;V?S82-7il~QD&WJ{ z@O3Ve_Wl^lSqiO{qVMbQviXd$)l|9JNIG;^8#6Ev3VKzK@dnvm*jps8Y95$>c_FQ= zJuu9Du9rWVY*(zTou}1i)r#3%?X;@iA*@<)ns9_wE6%V^q>7qV@9@%A9s9{NL9V0? z=_19s1S)z3)vA9CX%)mihevW;j#FNVP_w&@!C4b(td}Mc(2q@3;!!o8l8d{~;2TGE zEuaV7C+44DU}42Y>i>F2T$*hL&2}O+hK|n-RyC7dU<@R9;z$A6oCyQ~1#=el~}K{cwe<@?p9kp&Su98sYY_%K_tZ z8^)R?U_58TNaXmhDS+{-P_ex+b8ub(ZXkj^w7=Kkd5!J4W(m)~wLM?OP-zsPBy%G2(@;QJq6DCt)K literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/util/PlayerUtil.class b/bin/main/dev/loki/util/PlayerUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..86472fdf562fc62356d371e726a1597213eaf084 GIT binary patch literal 7267 zcmbVR349z?9sb^4lVfrxP0}>IlD3;o+bsbpkRFDnp{YqzNE*_j;3ki1@5cW0X2q}X4(JM-qf@B82X|7;(A z_MZCybcnD5k3ik1HXV*8CiL)>p-02}qmdacd4QJ+d;;Z{N2Vj;Xe2%s?i;>b8!-d| z+w{0@>=5tX5xgi=;YUEAtVfS)`=(;UT5=#V9MuFWdlDm&=wKwN%X@p# zXN>D9f#p5<_}c}F^i+Rbi%jV8F@eTlPa-)M9-f+*(2cMbH*{mh7Pr0SP%$b{rJ#}u z<=dsA6xF8KhXll=*Q+LcqFwy zVd#nY?!$*oH*_pw4yRs|=Bcpr@W9NZW}B>4MGzYWHn`C8pP|1Eo)&069S+9Nm}c}Q zrnMOT)jz3eqf7X)Q`)di#hExupqPgTwP<35o~E~gEly4|S_f&0M6$gIXX6|NTLqRm zJnGn?;#{0Z*$FsgMnI=LvQ5SI^zxx1>_mrx=L?i(W46=PCZGNnQEWqf;c6goj^`?q}vY3LURcVQLwwayJb+C=|w6o zl@X(o#z9fR+kr^Z4`BV^4Vv#F4X;g+0O;e($q-B`!orxn1hn0&8$T;mmOhp_CGE$iRx-l|t#&j3) zh{-}_;~ij)D@$p{#gV9lxASi?{H~Tk-~CqsMVQ7F3XU+L-0>k3!itRkx>~xVp<@?f#`$Uaw;)Oc^- zEZPDFeLH$iJmTAa;>07g%(yv)R-Rcjl?5k606CLHEBL&Q*&%;FTlH4 zc4DK$>@PRsW(7A1ta5PVI;7&=xWy9N0u$IA?8(-(euJHC%v~H@IMk;Cx2kwAZexp+ z#w_vjWOB)+G*<vZge<43rfsgV)~O!U4#q(<}n3oj%L8nFUIgJSlg7G+{7*7tO+M zDct8&d>&u0+F(C@$6((@G3iGhXUt!+6sfe$msC86hgdC1FDI4-jgqxU<4750H~R{{ zs^DRFqf9?maY9Z|em&KpGv@pw(uAx+-3lHPShJ)o43v?m7D-xzS4sx!H&uKK-)3=? zE@3;H)|}%Nb*y77nb~Icu3d>})arVSo$uoN3ce>$o$I-ZAK-^_UZiFb8jch$B>K=? zC(h&eiGm-~##x;7Qx!kO&*$f zEW~UU-SN1V+!c+aQZhLFX2jqOP)IXs>*0~Vlki^QeVE^jX!t{Squ@9%Je<8@J_ZU= z%xl%!!0!^?74k=nGW&3+eYhg@AWB2?C>OX1e%~?gF>drafQlVJ6{x{7KCdW^v2=07wRsVn@*$Qjj<_x_;`)4u<%=T*(PI0$ zkCEY_%PQ&XvQX9q7-});WT+v-OEL@xY=$~A)HoQ9+;~e)iuDePx(r2~n_?L$l1SM~^pPSR$mOA? zN<*E))I475;cJq+Y6TtOl^O6#yb@PsEmT49S1kqp>V@Dfrwe`!uC*oKL%C&q)X+Fp zp~}~qLWe3}H;)|nArs%K-8HuGwo|Jq^6T*i8&zlcNP9F9RcU<)zT>Sl{2K-4@fOZC z@0`aC9vM*Y@j47-rQRk2ZDt^a9lA8(cC)+_5bxua6-qRDf$Sacf6lZYSV-GOpfgE( z)@joo#fNQeQ?|BSY;FDCW7O>$a8k=2P>S^WtW3k1yNNtPI-9?skrY ze@iAlw%{}PtgW^m-U87?aqq+Zwg8XO*a4b*r_5LHG4HlC{R09A&-34Rw$HocC|1<_ z8{2v}K8TWyv-sjHzI+n`R||2qS2Wi6Za?{CLslMHjeu?Z+>Qe5pxJlQGCO$JVam7K zEDt+v`3kTVkKj=X)5KRLDXGWI^>g75oa9wN;keD&UBTCYldRh2f`Yp;OBCO^$3yMD zo(a)w2`9&lHfrZPPSw64E&CmT-lM49IFBC*Jb)*9LbUFa^Z2C)T>GuS%_pDACZ82s zyID88IJR8iFmju%#7Y|f5BQ^P z@PEVKZ7%i;*}0yMcLQuEe1{AXTxoOy5Q)k8^pIq~dsaMfpm zr(XCoT+A5`T!kV)XPCp9D5Znt&^F{IYn6$66oD#HKvo8gvN3blculn^(&vO)V+95f!XQ)bVg}U^J#qkh`TKnz4szv?smC5m zu8bZ-Vuh&(Wfg0AB~3KMOnB6cjv>*^E1$Wxj#qwS6=G7XXAsL8#qSa*=PP2vUPZK= m!_YQ20M2{+r+c literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/util/TextUtil.class b/bin/main/dev/loki/util/TextUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..1bedf31b25c148a9c787acac3d22f42d29549758 GIT binary patch literal 1068 zcmb7D+iuf95IvilKbAUOFc2>j&~sWD3A`{6>oy) z6lh2= zLvd#kHyF}Q+o43T$q+A<_ZSjeUQc9^g{i?{sGSwlz&R{1WEEvZ!|>NUO6>KmqwBD#X{*tt@@-@-L|T)UcP_$p`1pE{Ad=| z>YEujY>I+iV3jx!@OGH;%@Jf9+*9dG2@Vq2e7yo`GVXh3S-FAGZntbVlm99EKNgH#A#J!$;vle zoGmfK5@YfKE@7EI)Nz^kCyb8>N)?-*k*geG;582l0d literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/util/TimeUtil.class b/bin/main/dev/loki/util/TimeUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..07f1a3148dfe037eb6969490d8ee15920874045f GIT binary patch literal 4581 zcmbVPYj+dZ72Tt^W!cEWHdvM&lVV~Mz~b3}u?rTah}hu758{x9jHSUEENO%^c0!)z zk(QLCZTd*lHl&5LrOl%?ZFtlveCz63{bcu7boG0`m9+cb8OxHTrfbzK-MMq`J?HGR z&*Kh%{e0m*fP?s>7Y+r@No}qtZOrIBv!$xb81go%})0mpE{!@ zOfHSZV~>xX8X0`@)aYRB__0F@l(>Srn2{}*YSx@k)3chB`Wws64#$s;j}3C&HLsvy zI6gEKU!~-zn?n3^{=NKwC24Q|<2ePM{d!h6`xQ95x+fI4Vn$N)!-?hqLRhO{&5)ke zj?HGKwEUPlmDUu5hKz)oo>23;c()f_W=bz8SU*(V|6clZ+Q?^Ab5u(h*(8rPb;Y}f zRu~yI^Llo=*N1k3i0+Fqi$hd(mAM2+M2$k75hCuplbf+f|9|WXX~hzTT?%w^2`2f>sbP4O2}Q zUG`@5?5wHLd2eBvhPqKxP0S3dIh)AFGMYy6T0$>qKJ2E9U_}!1WoovGu?@LX#%!K? zZIWX~CZ{G$AIQ5STJWJyQkm)KO!DO`3^peUYHeF7BX5S7ECT_=5K*u$qt0kd!Gvm_ z(9P6xG8RHmFc5+R0}5=M!6qQ&e17Q#>)Or_&j~%;L%A4X%h2W!8=gYaVNZ$zwS@k~gOFTA?tY<`uMb z#pCf)()S+UJsv1)ni$4Pw6i)Si2z_4njLPT}jT_1yThkW1E=G=d~>1xn;&N2vcf)NXt%}DcU+sUbG}z zONH`C_dOE4){V?&oXh<(u;hzu-F9z@uUZ#6$E~jPbUZkr^ z6m1QxeiN?-@EX3Zz-JnkeWr0&RYH}72$eA_D0LJVoR$jg%Zf>>PT!_A^I$HQH(t=$ znkv#@k=@!sO6KJb7awJ@S=?beOI>`IxDaOiJ$&=>%>f_ZYf9eze6K~IxL?QjH6`ys zG*F6P8a&ZR4Ly7+e7ZN^LDNmCaveuu0PtfyN1==d&_Y$9u~tO5B81=PssPm=eh;2d z+k7~a=S_Yqa=O{$=&vU(tn_c^(=!U(kLqFmsqdEA6~#gK*r)a>O}f1;E=t*=^&>? zVny=<>F_eBjo8JH(A_2J8MVn23BaWE27-+K;iCDM?M&^i$kfnRtJAc~?q1sMB`f>M zN?!>Z-Nj^VD<gJ3{@3Q ztri|E6BhL#s&%+19JMWb!VRwZ3h8)>v`4xkq>tgaje9%k7XkE!UvEU6{>duj!zJQg z>Aw&ksV*L@5PzafTvW9Xe*#aISa%5P?KGabyxR5gGVxKyNr>~i$QJ*I#VPt_wDl_d zO`;V|%!ebX*0ht;r}wxcP446#Pg|3l8%?ez4<8G7t}^>3*;`LCUeBxv@9nTr})pmWzvJ!^4>Gmk8EW=k!B&me6Bzse)xKaV@Z zt&xV#%MG1x-$mva`&1wtOcMVMxSV@jA;Zeyt!%SRuH{xmF{>rjOWRXyM+w?XO5D3F zwME=Ji@0~%xa+V9XOX9D8=F{x2wf7RAC7+^%pP%opBLg|-G=%GPl^iN@EOd>);pLR zcJ|*uU`zNm&YigARN7jv{rjI=ZsV1el5UnDQuJ6yJ!xp1m11=DP z=;`Zm5tm48Elcrru30^jupXe^3zJuR4ZcyV{I~3^XNPaU&Rgo6Y?Dum$s24tct^~x zh}qx7>@CieEn@Z^&KysP+1vA>@2^0%+Ix;B&hm1~(@cRpnT+u)_F+y!w=T>+y9%r; z$y4L2;UDFGScLW$LKD~LcsS_K@!m}4`Xa&FYY0YyYd?_9@g1gM>xaVqD1RcW1jFt8 zJ+k~`3;hvr10hb{6_XlHeq5Tmn`jhxkzBvTfW5+CzRHlEXDhqF4ttR`eu<@WUP8BS z*m23VXrv?fiDcc+X7p3etQ)o-?gwa7ly;wQP+S&HyhjTTT;&&mXwg3Wf?$6s#~X6| djT}Fc<0o?bog8o4D}SJz_}|Q@xQ)AL`42dQ%@+Uw literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/window/Window$PlayerContext.class b/bin/main/dev/loki/window/Window$PlayerContext.class new file mode 100644 index 0000000000000000000000000000000000000000..44f0b33a465dccea6a13e87759f51c2a0161655b GIT binary patch literal 1643 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 BjKcr` literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/window/WindowVault$VaultTask.class b/bin/main/dev/loki/window/WindowVault$VaultTask.class new file mode 100644 index 0000000000000000000000000000000000000000..68491dc05ba934eadc03a4ac63de6ae526e47fd1 GIT binary patch literal 960 zcma)4T~8B16g|@|lr9U@rS$_)P>Qtc$NJzKhD1n=CJiA%>hrW6+p*i(W_K3i&oXH> z@xdS9k22nwlD0|J_^>l`?>&3ZnKSq2ukSwqyhgo%9K%6JT!m5Gm*KTko%lNZV7DgE zB3-rXB~SYWl$5v~gdw>+%EXK-rurm2)YEMeK4ZhI(Tg|H2ΘI ziR5zPmv62dHF+XUe3Q&;x;w++O!DH*XRl*CnCN5J`nzb-m1N4rE*=)J$FMzppT*`L z9$}whtsM`BkjHWhyT+=W0iXmXGvSUk!Cr#MI7Dm=oi(WyuA67A*S$r$UwH zV{8V`#;AO;=sUFf$kY0fI&`s4|7=3yE@c9nFXJAzD55Tw(=e1Rt5H(MHg*U{BT9WH ztjDB}QLPk=h;&4JBUHZP!Hm(hItSQ*vP?!V;cu86R4K~g0FP;RsmAER4k=T!`Q6{L C0qL*+ literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/window/WindowVault.class b/bin/main/dev/loki/window/WindowVault.class new file mode 100644 index 0000000000000000000000000000000000000000..8d7d31c1ca5e20a52b53b7f6e598ede034847f33 GIT binary patch literal 4343 zcmbVP`*Rc575=VXYs>2=Ho=61caUT|N(zC&q8R)t1{u4^*tJ4{MPAHeS#qV7fu@gy zHffu<>H9(3(0A#BmOz7zp&_0A!c3=~5&ul5Kct<0_pXpvV3SPzgZA#-d(S!FcfND( z^*{c1`!0a}_?rfgz>^c^Y&4ynvZCj#%tZEFbWA-)jY8Vi;1g&#Ys?zaw2_&N4xKt{ zrfh*)XX&7kF(%EN!20;|MoJ4}0`;@fo|Ty#P8%1@T%I#=Ww&5k>1e{Vxu!Z{O=b+c zkTV4~R({>%dOdn{pf|Rc>jQhNjAic?*cAE@|KU*qUr%oJup)rg%1Gq(_aMCErVv zKKqPCkWZ};m|~X@s_fhaH5SPKL|i~Yy25bF)EAd*-W_6dakekE0WyLj{d#SO)~ z#oNXAitlVFzR%(H;+^8H;zIH6{a5c_EZ*8EIqTNZgI={nI*T6OF08@K2zT-?4Zf&S=lq41PCUzHenm7sX=2#^%xB=39MdTp0ct|=r{>O zKx0Oa7OV+2Di+65gHvs^1}T^t__22B3)`NK(_jOsO0iN6E5lA!p&{oSD779-$5~8K zI##~l$lEHt`)3U+?X<^_DIL|-rgdbH6{tI77kH>lML5M^#I{C zEQd6&!7Nm-;M|BKZf%pap(hdXY8%^zlosh8;9)G;Tc4jw!@IDDdeXecov z4Zo%1oA?&Nki)TTF3o&2S2kuf8>_~5@I4LRWx8AhC9;LggpTjy2Rx9w<3l}%PQ>^3 z_Vyh)kr?S4R_E=~S*RArd|k|C4KCp)8h%`9O?lGsQ@qWBlKN0P1llVgmhJ%L8?91=Pxo2P@>APn|I*3Ot3Q-Ri0#jj$1Ed6SJ`f?dFGTd65N z#Qq(j1#uw0X6RWSQEo=DO1RsB!`P)K6 zt2ufCt(;lyY{ptV$v2u&PMKS*!&8n6v5sNLJJDpMZ5~fwg5P_UgH4A!?#baDgvR+A z=~%?G0t?vD>5IIJ##Uc5cFkjVr@z&I549alU5nW7f!Z3mgz9GWT|qF?*6N?fr*;SA zU`?QX9*2Ba>BH*mC(XWM#S=eA%cwj##cX%Duc4-veG zHkiClN^l3r9K$Yyo5T=?2};g=8b=7d9-l!1BlH(S7r7iIK|Aq0#yIb%Egj=X68?+a zLu!H_AgCewUqm&8G#u0Wy)?%=x5E^=X;LPmjts0ODaRLa$^!|=qW}ez^XFX5*Oh~- zD+T9~cd(MZ;|xrSp+3?^YR-`Q`fDWa8mAnF>eS~QOz8{kHoKJJ4bGOb;rcS_dWFlQ z&@k{CM#V$B8nv@`S?82m!NsCz~{<`6MoF)rLpX#vFxSM<;4$A{XRj!qi(k zwRWk^d7SI4Y7N}M%i}ljg%+(L==Cn(%ZqrOD<90i!TEnz%rD{_{7)gEgna|wZu+6V zh#&cJ2bagG*Q!?k0)F1=Z_!?x$FIg@tvN~QMgzw^lua)M)K4S_u!&i1$07c^631RX zdwCr`NIau_9-}DFQjjxz7AVIzDM%^bBdY4=%1q3aDV{4)Oa^d;0+o52Q<9b~<8>wJ z0DYdt@9=vTK|4<35BMYPNg=bDd;py~W*)BMPo=!vqTpqZ=wIUT&tyk3EGyl2y`y~* z*Ez#NCoS!Ykfxi8kq)xDhIQHNKi}s{K z8*#js(e{_o_N&-E+`YY2tYs8yBnmHXGj0#_@>f2aI116nd$f9)*zWTEea`zhzWjgo C_fSUw literal 0 HcmV?d00001 diff --git a/bin/main/dev/loki/world/LobbyManager.class b/bin/main/dev/loki/world/LobbyManager.class new file mode 100644 index 0000000000000000000000000000000000000000..ec7652905be099cc0ce0abfd9713888987a2e450 GIT binary patch literal 5206 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 literal 0 HcmV?d00001 diff --git a/bin/main/game.yml b/bin/main/game.yml new file mode 100644 index 0000000..34f4812 --- /dev/null +++ b/bin/main/game.yml @@ -0,0 +1,138 @@ +# ============================================ +# Mdbd Plugin - Игровой баланс +# ============================================ + +# Лобби +lobby: + # Минимум игроков для старта + min-players: 5 + + # Максимум игроков + max-players: 5 + + # Обратный отсчёт (секунд) + countdown-seconds: 60 + + # Задержка перед назначением ролей (секунд) + role-assign-delay: 5 + +# Генераторы +generators: + # Всего генераторов на карте + total-count: 7 + + # Сколько нужно починить для ворот + required-count: 5 + + # Время починки одного генератора (секунд) + repair-seconds: 80 + + # Скорость отката без чинильщика (%/сек) + regression-rate: 0.25 + + # Скорость отката после пинка (%/сек) + kick-regression-rate: 2.5 + + # Длительность отката после пинка (секунд) + kick-duration-seconds: 30 + +# Крюки +hooks: + # Длительность Фазы 1 (секунд) + stage1-seconds: 60 + + # Длительность Фазы 2 (секунд) + stage2-seconds: 60 + + # Интервал борьбы на Фазе 2 (секунд) + struggle-interval: 2 + + # Максимум крюков на одного выжившего + max-hooks: 3 + +# Скорости (% от нормальной) +movement: + # Киллер + killer: 115 + + # Киллер с выжившим + killer-carry: 92 + + # Выживший шагом + survivor-walk: 100 + + # Выживший спринт + survivor-sprint: 150 + + # Выживший в нокдауне (ползком) + survivor-crawl: 30 + + # Длительность истощения (секунд) + exhaustion-duration: 3 + + # Кулдаун истощения (секунд) + exhaustion-cooldown: 5 + +# Лечение +healing: + # Самолечение (секунд) + self-heal-seconds: 30 + + # Лечение другого (секунд) + other-heal-seconds: 16 + + # Бонус аптечки (0.5 = в 2 раза быстрее) + medkit-bonus: 0.5 + + # Прерывание при движении + interrupt-on-move: true + +# Киллер +killer: + # Кулдаун атаки (секунд) + attack-cooldown: 2.5 + + # Дальность атаки (блоков) + attack-range: 3.0 + + # Длительность оглушения паллетом (секунд) + pallet-stun-seconds: 2.5 + + # Время ломания паллета (секунд) + pallet-break-seconds: 3.0 + + # Радиус ужаса (блоков) + terror-radius: 32 + +# Окна +window: + # Быстрый волт выжившего (секунд) + vault-survivor-fast: 1.0 + + # Медленный волт выжившего (секунд) + vault-survivor-slow: 1.5 + + # Волт киллера (секунд) + vault-killer: 1.5 + + # Блокировка после 3 волтов подряд (секунд) + vault-block-seconds: 15 + +# Эндгейм +endgame: + # Время открытия ворот (секунд) + gate-open-seconds: 20 + + # Время до коллапса (секунд) + collapse-seconds: 120 + + # Открытие сундуков (секунд) + chest-open-seconds: 3 + +# Люк +hatch: + # Минимум живых для открытия люка + min-survivors-for-open: 1 + + # Условие: живых < починенных генераторов + require-more-gens-than-survivors: true diff --git a/bin/main/locations.yml b/bin/main/locations.yml new file mode 100644 index 0000000..d52f930 --- /dev/null +++ b/bin/main/locations.yml @@ -0,0 +1,58 @@ +# ============================================ +# Mdbd Plugin - Координаты объектов +# Устанавливайте через /dbdsetup set <тип> +# ============================================ + +# Лобби (спавн перед игрой) +lobby: + world: "world" + x: 0.0 + y: 100.0 + z: 0.0 + yaw: 0.0 + pitch: 0.0 + +# Генераторы — настраиваются через /dbdadmin create generator +# и сохраняются в data/generators.yml + +# Крюки (обычно 4-6) +hooks: [] +# Пример: +# - "world,120.5,65.0,180.5,0.0,0.0" + +# Паллеты (много) +pallets: [] +# Пример: +# - "world,110.5,64.0,190.5,0.0,0.0" + +# Окна (много) +windows: [] + +# Сундуки с лутом (3-4) +chests: [] + +# Тотемы (5) +totems: [] + +# Ворота выхода (2) +exitgates: [] + +# Спавн киллера (1 точка) +killer-spawn: [] + +# Спавны выживших (4 точки) +survivor-spawns: [] + +# ============================================ +# Команды для настройки: +# /dbdadmin create generator - Войти в режим выбора генератора (сломайте блок) +# /dbdadmin list - Список всех генераторов +# /dbdadmin remove - Удалить генератор по ID +# /dbdadmin clear - Очистить все генераторы +# /dbdsetup set hook - Установить крюк +# /dbdsetup set pallet - Установить паллет +# /dbdsetup set chest - Установить сундук +# /dbdsetup set totem - Установить тотем +# /dbdsetup set gate - Установить ворота +# /dbdsetup set lobby - Установить лобби +# ============================================ diff --git a/bin/main/messages.yml b/bin/main/messages.yml new file mode 100644 index 0000000..d866caf --- /dev/null +++ b/bin/main/messages.yml @@ -0,0 +1,119 @@ +# ============================================ +# Mdbd Plugin - Сообщения +# Поддерживаются цвета в формате &#rrggbb +# ============================================ + +# Префикс всех сообщений плагина +prefix: "&#FF6B00&l[DBD]&r " + +# Сообщения игры +game: + # Старт/конец + start: "�FF00Игра началась! Бегите от Киллера!" + end-victory-escape: "&#FFD700Выжившие сбежали! Победа!" + end-victory-killer: "&#DC143CКиллер победил!" + + # Ожидание + waiting: "&#FFFF00Ожидание игроков... (%s/%s)" + countdown: "&#FFA500До начала: %s секунд" + countdown-short: "&#FF0000%s..." + + # Роли + role-killer: "&#DC143CВы Киллер! Поймайте всех выживших." + role-survivor: "�CED1Вы Выживший! Почините генераторы и сбегите." + +# Генераторы +generator: + repair-start: "�CED1Вы начали чинить генератор..." + repair-stop: "WCEEBВы остановились." + repair-complete: "�FF00✓ Генератор активирован! (%s/%s)" + repair-progress: "&#FFD700Прогресс: %s%%" + + skillcheck-success: "�FF00Отлично! +%s%%" + skillcheck-super: "&#FFD700Великолепно! +%s%%" + skillcheck-fail: "&#FF0000✗ Провал! -%s%%" + + explosion: "&#FF4500⚠ Взрыв генератора!" + regression: "&#FF6347Генератор откатывается..." + kicked: "&#FF4500Киллер пнул генератор!" + +# Киллер +killer: + terror-near: "B0000Сердце колотится..." + terror-medium: "&#FF4500Опасно рядом..." + terror-far: "&#FFA500Киллер где-то рядом" + + chase-start: "&#FF0000⚠ Киллер преследует вас!" + chase-stop: "�FF00Вы ушли от погони." + + hit: "&#DC143CВы ранены! Ищите укрытие!" + down: "B0000Вы в нокдауне! Ползите!" + pickup: "󃕐Киллер поднял вас..." + hook: "B0082Вас повесили на крюк!" + +# Выжившие +survivor: + heal-self-start: "�FA9AЛечите себя..." + heal-self-complete: "�FF00Вылечены!" + heal-other-start: "�FA9AЛечите союзника..." + heal-other-complete: "�FF00Союзник вылечен!" + heal-interrupt: "&#FFD700Лечение прервано!" + + sprint-exhausted: "&#FF8C00Вы устали... (Истощение)" + sprint-ready: "�FF00Можно бежать!" + + pallet-drop: "&#DEB887Вы бросили паллет!" + pallet-stun: "&#FFD700Киллер оглушён! Уходите!" + + vault-fast: "�CED1Быстрый прыжок!" + vault-slow: "WCEEBМедленный прыжок..." + + rescue-start: "�CED1Спасаете с крюка..." + rescue-complete: "�FF00Союзник спасён!" + +# Крюки +hook: + stage1: "&#FFFF00Крюк: Фаза 1 — Не двигайтесь" + stage2: "&#FFA500Крюк: Фаза 2 — БОРИТЕСЬ!" + struggle-success: "�FF00Успех! Держитесь!" + struggle-fail: "&#FF0000Провал! Этап ускорен!" + sacrifice: "B0000☠ Вы жертвованы..." + +# Предметы +item: + found: "&#FFD700Найдено: %s" + + medkit-use: "�FA9AИспользуете аптечку..." + medkit-depleted: "&#FF6347Аптечка закончилась" + + flashlight-blind: "&#FFFF00Ослепили киллера! Уходите!" + flashlight-depleted: "&#FF6347Батарейка села" + + key-hatch: "�CED1Ключ открывает люк!" + map-reveal: "WCEEBОбъекты показаны на карте" + + chest-opening: "&#FFD700Открываете сундук..." + chest-found: "�FF00Нашли: %s" + +# Эндгейм +endgame: + gates-powered: "�FF00Ворота запитаны! Бегите!" + gates-opening: "&#FFD700Открываете ворота..." + + hatch-open: "B0082Люк открыт! Сбегите!" + hatch-escape: "�FF00✓ Вы сбежали через люк!" + + collapse-warning: "&#FF0000⚠ КОЛЛАПС ЧЕРЕЗ %s СЕК!" + collapse-start: "B0000КОЛЛАПС НАЧАЛСЯ! БЕГИТЕ!" + + escape: "�FF00✓ ПОБЕГ!" + +# Ошибки +error: + no-permission: "&#FF0000У вас нет прав!" + not-in-game: "&#FF6347Вы не в игре!" + already-in-game: "&#FF6347Вы уже в игре!" + game-full: "&#FF6347Игра заполнена!" + no-game: "&#FF6347Нет активной игры!" + not-survivor: "&#FF6347Только для выживших!" + not-killer: "&#FF6347Только для киллера!" diff --git a/bin/main/plugin.yml b/bin/main/plugin.yml new file mode 100644 index 0000000..2e11e04 --- /dev/null +++ b/bin/main/plugin.yml @@ -0,0 +1,26 @@ +name: Mdbd +version: '${version}' +main: dev.loki.mdbd +api-version: '1.21' + +commands: + dbd: + description: "Main DBD command" + usage: "/dbd " + permission: mdbd.player + dbdsetup: + description: "Map setup commands" + usage: "/dbdsetup " + permission: mdbd.admin + dbdadmin: + description: "Admin commands for generators and objects" + usage: "/dbdadmin " + permission: mdbd.admin + +permissions: + mdbd.admin: + description: "Full access to admin commands" + default: op + mdbd.player: + description: "Basic player commands" + default: true diff --git a/bin/main/skillcheck.yml b/bin/main/skillcheck.yml new file mode 100644 index 0000000..74cde8e --- /dev/null +++ b/bin/main/skillcheck.yml @@ -0,0 +1,120 @@ +# ============================================ +# Mdbd Plugin - Настройки Skill Check (QTE) +# ============================================ + +# Цвета в формате &#rrggbb +colors: + # Зона успеха (зелёная) + zone-success: "�FF00" + + # Зона супер-успеха (золотая, бонус) + zone-super: "&#FFD700" + + # Стрелка (белая) + arrow: "&#FFFFFF" + + # Фон трека (тёмно-серый) + background: "񑘕" + + # Текст титра (жёлтый) + text-title: "&#FFFF00" + + # Подзаголовок (белый) + text-subtitle: "&#FFFFFF" + + # Цвет провала (красный) + fail: "&#FF0000" + +# Размеры зон (в градусах) +zones: + # Зона обычного успеха (±градусов от цели) + success-size: 15 + + # Зона супер-успеха (меньше = сложнее) + super-size: 5 + +# Вращение +rotation: + # Скорость вращения (оборотов в секунду) + speed: 3.0 + + # Направление: CLOCKWISE или COUNTER_CLOCKWISE + direction: "CLOCKWISE" + + # Случайное направление для каждого скиллчека + variation: true + + # Случайная начальная позиция + random-start: true + +# Тайминги +timing: + # Минимальный интервал между скиллчеками (в тиках, 20 = 1 сек) + min-interval: 80 + + # Максимальный интервал (в тиках) + max-interval: 200 + + # Время на реакцию (тиков после входа в зону) + reaction-window: 20 + + # Задержка перед показом скиллчека (тиков) + pre-delay: 5 + +# Награды и штрафы (в процентах от прогресса) +rewards: + # Обычный успех: +% к прогрессу + success-bonus: 5.0 + + # Супер-успех: +% к прогрессу + super-bonus: 10.0 + +penalties: + # Провал: -% от прогресса + fail-penalty: 10.0 + + # Радиус алерта киллера при провале (блоков) + fail-alert-range: 16 + + # Визуальный взрыв при провале + fail-explosion: true + + # Громкость звука взрыва (0.0 - 1.0) + explosion-volume: 0.8 + +# Визуальные эффекты +visual: + # Показывать трек движения + show-track: true + + # Показывать стрелку + show-arrow: true + + # Анимация при успехе + flash-on-success: true + + # Тряска экрана при провале + screenshake-on-fail: true + + # Альтернативный режим через BossBar (вместо Title) + use-boss-bar: false + +# Звуки +sounds: + # Звук при появлении скиллчека + appear: "BLOCK_NOTE_BLOCK_PLING" + appear-volume: 0.5 + + # Звук успеха + success: "ENTITY_PLAYER_LEVELUP" + success-volume: 0.6 + + # Звук супер-успеха + super: "ENTITY_PLAYER_LEVELUP" + super-volume: 1.0 + super-pitch: 1.5 + + # Звук провала + fail: "BLOCK_ANVIL_LAND" + fail-volume: 0.8 + fail-pitch: 0.8 diff --git a/src/main/java/dev/loki/item/ChestLoot.java b/src/main/java/dev/loki/item/ChestLoot.java index 7219825..0d15efb 100644 --- a/src/main/java/dev/loki/item/ChestLoot.java +++ b/src/main/java/dev/loki/item/ChestLoot.java @@ -13,14 +13,12 @@ public class ChestLoot { this.random = ThreadLocalRandom.current(); } - /** Roll a random item with weighted probabilities. */ + /** 55% медкит, 45% фонарик. Заряды чуть рандомные. */ public ItemStack rollLoot() { - int roll = random.nextInt(100); - - if (roll < 30) return DBDItems.medkit(12 + random.nextInt(5)); // 30% - if (roll < 55) return DBDItems.flashlight(6 + random.nextInt(4)); // 25% - if (roll < 80) return DBDItems.toolbox(10 + random.nextInt(7)); // 25% - if (roll < 92) return DBDItems.key(24 + random.nextInt(9)); // 12% - return DBDItems.map(8 + random.nextInt(9)); // 8% + if (random.nextInt(100) < 55) { + return DBDItems.medkit(12 + random.nextInt(5)); + } else { + return DBDItems.flashlight(6 + random.nextInt(3)); + } } } diff --git a/src/main/java/dev/loki/item/DBDItems.java b/src/main/java/dev/loki/item/DBDItems.java index 171f002..eb68449 100644 --- a/src/main/java/dev/loki/item/DBDItems.java +++ b/src/main/java/dev/loki/item/DBDItems.java @@ -10,8 +10,8 @@ import org.bukkit.persistence.PersistentDataType; import java.util.List; /** - * Central factory for all DBD custom items. - * Items are identified by a PersistentDataContainer tag "mdbd:item_type". + * Central factory for DBD custom items: Medkit and Flashlight. + * Items are identified by PersistentDataContainer tag "mdbd:item_type". * Charges are stored as "mdbd:charges". */ public final class DBDItems { @@ -31,7 +31,7 @@ public final class DBDItems { charges, ItemType.MEDKIT.getDefaultCharges(), List.of( "Лечит одно состояние здоровья.", - "ПКМ — начать лечение" + "ПКМ — начать самолечение" ), "MEDKIT" ); @@ -55,54 +55,6 @@ public final class DBDItems { public static ItemStack flashlight() { return flashlight(ItemType.FLASHLIGHT.getDefaultCharges()); } - /** Ящик с инструментами — ускоряет ремонт генератора. */ - public static ItemStack toolbox(int charges) { - return build( - Material.CHEST, - "<#00CED1>Ящик с инструментами", - charges, ItemType.TOOLBOX.getDefaultCharges(), - List.of( - "Ускоряет ремонт генераторов.", - "Держите в руке во время ремонта" - ), - "TOOLBOX" - ); - } - - public static ItemStack toolbox() { return toolbox(ItemType.TOOLBOX.getDefaultCharges()); } - - /** Ключ — открывает люк (hatch). */ - public static ItemStack key(int charges) { - return build( - Material.TRIPWIRE_HOOK, - "<#FFA500>Ключ", - charges, ItemType.KEY.getDefaultCharges(), - List.of( - "Открывает люк немедленно.", - "ПКМ у люка — открыть" - ), - "KEY" - ); - } - - public static ItemStack key() { return key(ItemType.KEY.getDefaultCharges()); } - - /** Карта — показывает объекты на карте. */ - public static ItemStack map(int charges) { - return build( - Material.MAP, - "<#87CEEB>Карта", - charges, ItemType.MAP.getDefaultCharges(), - List.of( - "Раскрывает объекты поблизости.", - "ПКМ — активировать" - ), - "MAP" - ); - } - - public static ItemStack map() { return map(ItemType.MAP.getDefaultCharges()); } - // ── Helpers ─────────────────────────────────────────────────────────────── private static ItemStack build(Material mat, String name, int charges, int maxCharges, @@ -111,7 +63,6 @@ public final class DBDItems { item.editMeta(meta -> { meta.displayName(TextUtil.color(name)); - // Build lore: description lines + charges bar var lore = new java.util.ArrayList(); for (String line : loreLines) { lore.add(TextUtil.color(line)); @@ -148,51 +99,18 @@ public final class DBDItems { return c != null ? c : 0; } - /** Обновить заряды на существующем предмете и вернуть обновлённый стак. */ public static ItemStack setCharges(ItemStack item, int newCharges) { if (item == null || !item.hasItemMeta()) return item; String type = getType(item); if (type == null) return item; - int max = getMaxCharges(type); - return build(item.getType(), - getDisplayNameRaw(type), newCharges, max, - getLoreRaw(type), type); + return switch (type) { + case "MEDKIT" -> medkit(newCharges); + case "FLASHLIGHT" -> flashlight(newCharges); + default -> item; + }; } public static boolean isMedkit(ItemStack item) { return "MEDKIT".equals(getType(item)); } public static boolean isFlashlight(ItemStack item) { return "FLASHLIGHT".equals(getType(item)); } - public static boolean isToolbox(ItemStack item) { return "TOOLBOX".equals(getType(item)); } - public static boolean isKey(ItemStack item) { return "KEY".equals(getType(item)); } - public static boolean isMap(ItemStack item) { return "MAP".equals(getType(item)); } public static boolean isDBDItem(ItemStack item) { return getType(item) != null; } - - private static int getMaxCharges(String type) { - return switch (type) { - case "MEDKIT" -> ItemType.MEDKIT.getDefaultCharges(); - case "FLASHLIGHT" -> ItemType.FLASHLIGHT.getDefaultCharges(); - case "TOOLBOX" -> ItemType.TOOLBOX.getDefaultCharges(); - case "KEY" -> ItemType.KEY.getDefaultCharges(); - default -> ItemType.MAP.getDefaultCharges(); - }; - } - - private static String getDisplayNameRaw(String type) { - return switch (type) { - case "MEDKIT" -> "<#00FF7F>Медкит"; - case "FLASHLIGHT" -> "<#FFD700>Фонарик"; - case "TOOLBOX" -> "<#00CED1>Ящик с инструментами"; - case "KEY" -> "<#FFA500>Ключ"; - default -> "<#87CEEB>Карта"; - }; - } - - private static List getLoreRaw(String type) { - return switch (type) { - case "MEDKIT" -> List.of("Лечит одно состояние здоровья.", "ПКМ — начать лечение"); - case "FLASHLIGHT" -> List.of("Ослепляет киллера при попадании.", "ПКМ — направить луч на киллера"); - case "TOOLBOX" -> List.of("Ускоряет ремонт генераторов.", "Держите в руке во время ремонта"); - case "KEY" -> List.of("Открывает люк немедленно.", "ПКМ у люка — открыть"); - default -> List.of("Раскрывает объекты поблизости.", "ПКМ — активировать"); - }; - } } diff --git a/src/main/java/dev/loki/item/ItemKey.java b/src/main/java/dev/loki/item/ItemKey.java deleted file mode 100644 index 1737c3e..0000000 --- a/src/main/java/dev/loki/item/ItemKey.java +++ /dev/null @@ -1,96 +0,0 @@ -package dev.loki.item; - -import org.bukkit.Material; -import org.bukkit.NamespacedKey; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataContainer; -import org.bukkit.persistence.PersistentDataType; - -import java.util.Arrays; - -public class ItemKey implements BaseItem { - - private static final NamespacedKey ITEM_KEY = new NamespacedKey("mdbd", "item_type"); - private static final NamespacedKey CHARGES_KEY = new NamespacedKey("mdbd", "charges"); - - private final int charges; - - public ItemKey() { - this(ItemType.KEY.getDefaultCharges()); - } - - public ItemKey(int charges) { - this.charges = charges; - } - - @Override - public ItemType getType() { - return ItemType.KEY; - } - - @Override - public ItemStack createItemStack() { - ItemStack item = new ItemStack(Material.TRIPWIRE_HOOK); - ItemMeta meta = item.getItemMeta(); - if (meta != null) { - meta.setDisplayName("§6" + getType().getDisplayName()); - meta.setLore(Arrays.asList( - "§7" + getType().getDescription(), - "§eCharges: §f" + charges + "/" + getType().getDefaultCharges(), - "§7Opens the Hatch instantly" - )); - - PersistentDataContainer pdc = meta.getPersistentDataContainer(); - pdc.set(ITEM_KEY, PersistentDataType.STRING, getItemId()); - pdc.set(CHARGES_KEY, PersistentDataType.INTEGER, charges); - - item.setItemMeta(meta); - } - return item; - } - - @Override - public boolean canUse(Player player) { - return charges > 0; - } - - @Override - public void onUse(Player player) { - if (charges > 0) { - player.sendMessage("§6You use the Key on the Hatch..."); - } - } - - @Override - public void onDeplete(Player player) { - player.getInventory().setItemInMainHand(null); - player.sendMessage("§cYour key breaks!"); - } - - @Override - public int getCharges() { - return charges; - } - - @Override - public void setCharges(int charges) { - } - - @Override - public boolean isDepleted() { - return charges <= 0; - } - - @Override - public String getItemId() { - return "KEY"; - } - - public static boolean isKey(ItemStack item) { - if (item == null || !item.hasItemMeta()) return false; - PersistentDataContainer pdc = item.getItemMeta().getPersistentDataContainer(); - return "KEY".equals(pdc.get(ITEM_KEY, PersistentDataType.STRING)); - } -} diff --git a/src/main/java/dev/loki/item/ItemMap.java b/src/main/java/dev/loki/item/ItemMap.java deleted file mode 100644 index f099f5d..0000000 --- a/src/main/java/dev/loki/item/ItemMap.java +++ /dev/null @@ -1,96 +0,0 @@ -package dev.loki.item; - -import org.bukkit.Material; -import org.bukkit.NamespacedKey; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataContainer; -import org.bukkit.persistence.PersistentDataType; - -import java.util.Arrays; - -public class ItemMap implements BaseItem { - - private static final NamespacedKey ITEM_KEY = new NamespacedKey("mdbd", "item_type"); - private static final NamespacedKey CHARGES_KEY = new NamespacedKey("mdbd", "charges"); - - private final int charges; - - public ItemMap() { - this(ItemType.MAP.getDefaultCharges()); - } - - public ItemMap(int charges) { - this.charges = charges; - } - - @Override - public ItemType getType() { - return ItemType.MAP; - } - - @Override - public ItemStack createItemStack() { - ItemStack item = new ItemStack(Material.MAP); - ItemMeta meta = item.getItemMeta(); - if (meta != null) { - meta.setDisplayName("§d" + getType().getDisplayName()); - meta.setLore(Arrays.asList( - "§7" + getType().getDescription(), - "§eCharges: §f" + charges + "/" + getType().getDefaultCharges(), - "§7Right-click to reveal generators" - )); - - PersistentDataContainer pdc = meta.getPersistentDataContainer(); - pdc.set(ITEM_KEY, PersistentDataType.STRING, getItemId()); - pdc.set(CHARGES_KEY, PersistentDataType.INTEGER, charges); - - item.setItemMeta(meta); - } - return item; - } - - @Override - public boolean canUse(Player player) { - return charges > 0; - } - - @Override - public void onUse(Player player) { - if (charges > 0) { - player.sendMessage("§dThe Map reveals nearby generators!"); - } - } - - @Override - public void onDeplete(Player player) { - player.getInventory().setItemInMainHand(null); - player.sendMessage("§cYour map has faded!"); - } - - @Override - public int getCharges() { - return charges; - } - - @Override - public void setCharges(int charges) { - } - - @Override - public boolean isDepleted() { - return charges <= 0; - } - - @Override - public String getItemId() { - return "MAP"; - } - - public static boolean isMap(ItemStack item) { - if (item == null || !item.hasItemMeta()) return false; - PersistentDataContainer pdc = item.getItemMeta().getPersistentDataContainer(); - return "MAP".equals(pdc.get(ITEM_KEY, PersistentDataType.STRING)); - } -} diff --git a/src/main/java/dev/loki/item/ItemToolbox.java b/src/main/java/dev/loki/item/ItemToolbox.java deleted file mode 100644 index 8d86a2e..0000000 --- a/src/main/java/dev/loki/item/ItemToolbox.java +++ /dev/null @@ -1,98 +0,0 @@ -package dev.loki.item; - -import org.bukkit.Material; -import org.bukkit.NamespacedKey; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataContainer; -import org.bukkit.persistence.PersistentDataType; - -import java.util.Arrays; - -public class ItemToolbox implements BaseItem { - - private static final NamespacedKey ITEM_KEY = new NamespacedKey("mdbd", "item_type"); - private static final NamespacedKey CHARGES_KEY = new NamespacedKey("mdbd", "charges"); - - private final int charges; - - public ItemToolbox() { - this(ItemType.TOOLBOX.getDefaultCharges()); - } - - public ItemToolbox(int charges) { - this.charges = charges; - } - - @Override - public ItemType getType() { - return ItemType.TOOLBOX; - } - - @Override - public ItemStack createItemStack() { - ItemStack item = new ItemStack(Material.CHEST); - ItemMeta meta = item.getItemMeta(); - if (meta != null) { - meta.setDisplayName("§b" + getType().getDisplayName()); - meta.setLore(Arrays.asList( - "§7" + getType().getDescription(), - "§eCharges: §f" + charges + "/" + getType().getDefaultCharges(), - "§7Hold while repairing for bonus speed" - )); - - PersistentDataContainer pdc = meta.getPersistentDataContainer(); - pdc.set(ITEM_KEY, PersistentDataType.STRING, getItemId()); - pdc.set(CHARGES_KEY, PersistentDataType.INTEGER, charges); - - item.setItemMeta(meta); - } - return item; - } - - @Override - public boolean canUse(Player player) { - return charges > 0; - } - - @Override - public void onUse(Player player) { - player.sendMessage("§bYour toolbox speeds up the repair!"); - } - - @Override - public void onDeplete(Player player) { - player.getInventory().setItemInMainHand(null); - player.sendMessage("§cYour toolbox is empty!"); - } - - @Override - public int getCharges() { - return charges; - } - - @Override - public void setCharges(int charges) { - } - - @Override - public boolean isDepleted() { - return charges <= 0; - } - - @Override - public String getItemId() { - return "TOOLBOX"; - } - - public static boolean isToolbox(ItemStack item) { - if (item == null || !item.hasItemMeta()) return false; - PersistentDataContainer pdc = item.getItemMeta().getPersistentDataContainer(); - return "TOOLBOX".equals(pdc.get(ITEM_KEY, PersistentDataType.STRING)); - } - - public static double getRepairBonus() { - return 0.15; - } -} diff --git a/src/main/java/dev/loki/item/ItemType.java b/src/main/java/dev/loki/item/ItemType.java index c18e593..e3a7986 100644 --- a/src/main/java/dev/loki/item/ItemType.java +++ b/src/main/java/dev/loki/item/ItemType.java @@ -2,10 +2,7 @@ package dev.loki.item; public enum ItemType { MEDKIT("Medkit", "Heals one health state", 16), - FLASHLIGHT("Flashlight", "Blinds the Killer", 8), - TOOLBOX("Toolbox", "Speeds up repairs", 16), - KEY("Key", "Opens the Hatch", 32), - MAP("Map", "Reveals objectives", 16); + FLASHLIGHT("Flashlight", "Blinds the Killer", 8); private final String displayName; private final String description; @@ -17,15 +14,7 @@ public enum ItemType { this.defaultCharges = defaultCharges; } - public String getDisplayName() { - return displayName; - } - - public String getDescription() { - return description; - } - - public int getDefaultCharges() { - return defaultCharges; - } + public String getDisplayName() { return displayName; } + public String getDescription() { return description; } + public int getDefaultCharges() { return defaultCharges; } } diff --git a/src/main/java/dev/loki/item/ItemUseListener.java b/src/main/java/dev/loki/item/ItemUseListener.java index fb9f891..e78dc82 100644 --- a/src/main/java/dev/loki/item/ItemUseListener.java +++ b/src/main/java/dev/loki/item/ItemUseListener.java @@ -27,14 +27,13 @@ import java.util.Map; import java.util.UUID; /** - * Handles right-click usage of DBD custom items during gameplay. + * Handles right-click usage of DBD custom items (Medkit, Flashlight) during gameplay. */ public class ItemUseListener implements Listener { private final Plugin plugin; private final GameSession session; - // Medkit heal: survivor UUID → task private final Map activeHeals = new HashMap<>(); private static final int MEDKIT_TICKS = 160; // 8 seconds @@ -68,33 +67,28 @@ public class ItemUseListener implements Listener { ItemStack hand = player.getInventory().getItemInMainHand(); if (!DBDItems.isDBDItem(hand)) return; + event.setCancelled(true); + String type = DBDItems.getType(hand); - if (type == null) return; - - event.setCancelled(true); // prevent block interaction - - switch (type) { - case "MEDKIT" -> useMedkit(player, (Survivor) bp, hand); - case "FLASHLIGHT" -> useFlashlight(player, hand); - case "TOOLBOX" -> { /* passive — handled in repair */ } - case "KEY" -> useKey(player, (Survivor) bp, hand); - case "MAP" -> useMap(player, hand); + if ("MEDKIT".equals(type)) { + useMedkit(player, (Survivor) bp, hand); + } else if ("FLASHLIGHT".equals(type)) { + useFlashlight(player, hand); } } - // ── Medkit ─────────────────────────────────────────────────────────────── + // ── Медкит ──────────────────────────────────────────────────────────────── private void useMedkit(Player player, Survivor survivor, ItemStack item) { UUID uuid = player.getUniqueId(); - // Toggle: if already healing, cancel + // Повторный ПКМ — отмена лечения if (activeHeals.containsKey(uuid)) { cancelHeal(player); return; } - PlayerState state = survivor.getState(); - if (state != PlayerState.INJURED) { + if (survivor.getState() != PlayerState.INJURED) { player.sendMessage(Component.text("Вы не ранены!", NamedTextColor.RED)); return; } @@ -106,11 +100,10 @@ public class ItemUseListener implements Listener { } player.sendMessage(Component.text("Начинаете самолечение...", NamedTextColor.GREEN)); - player.sendActionBar(Component.text("⚕ Самолечение...", NamedTextColor.GREEN)); BukkitTask task = new BukkitRunnable() { int ticks = 0; - int chargesLeft = charges; + final int startCharges = charges; @Override public void run() { @@ -121,29 +114,40 @@ public class ItemUseListener implements Listener { } ticks++; - chargesLeft = Math.max(0, charges - ticks); - // Update action bar progress - int filled = (int)(8.0 * ticks / MEDKIT_TICKS); + // Прогресс в action bar + int filled = (int) (8.0 * ticks / MEDKIT_TICKS); int empty = 8 - filled; + int pct = (int) (100.0 * ticks / MEDKIT_TICKS); player.sendActionBar(Component.text( - "⚕ " + "█".repeat(filled) + "░".repeat(empty) + - " " + (int)(100.0 * ticks / MEDKIT_TICKS) + "%", + "⚕ " + "█".repeat(filled) + "░".repeat(empty) + " " + pct + "%", NamedTextColor.GREEN)); - // Use 1 charge per 10 ticks - if (ticks % 10 == 0) { - updateItemCharges(player, chargesLeft); - player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.2f, 1.5f); + // Звук каждые 20 тиков + if (ticks % 20 == 0) { + player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.15f, 1.8f); + // Обновляем заряды на предмете + int usedCharges = (int)(1.0 * ticks / MEDKIT_TICKS * startCharges); + int remaining = Math.max(1, startCharges - usedCharges); + player.getInventory().setItemInMainHand(DBDItems.setCharges( + player.getInventory().getItemInMainHand(), remaining)); } if (ticks >= MEDKIT_TICKS) { - // Heal done survivor.setState(PlayerState.HEALTHY); player.sendMessage(Component.text("✔ Вы вылечились!", NamedTextColor.GREEN)); player.sendActionBar(Component.empty()); - player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 0.5f, 1.5f); - updateItemCharges(player, Math.max(0, charges - MEDKIT_TICKS / 10)); + player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 0.6f, 1.5f); + + // Тратим заряды + int remaining = startCharges - 8; + if (remaining <= 0) { + player.getInventory().setItemInMainHand(null); + player.sendMessage(Component.text("Медкит израсходован.", NamedTextColor.RED)); + } else { + player.getInventory().setItemInMainHand(DBDItems.medkit(remaining)); + } + activeHeals.remove(uuid); cancel(); } @@ -162,7 +166,7 @@ public class ItemUseListener implements Listener { } } - // ── Flashlight ──────────────────────────────────────────────────────────── + // ── Фонарик ─────────────────────────────────────────────────────────────── private void useFlashlight(Player player, ItemStack item) { int charges = DBDItems.getCharges(item); @@ -171,7 +175,7 @@ public class ItemUseListener implements Listener { return; } - // Ray-trace to find killer within 15 blocks + // Луч 15 блоков var result = player.getWorld().rayTraceEntities( player.getEyeLocation(), player.getEyeLocation().getDirection(), @@ -184,10 +188,10 @@ public class ItemUseListener implements Listener { BasePlayer bp = session.getPlayer(target.getUniqueId()); if (bp != null && bp.isKiller()) { target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 60, 1, false, false)); - target.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, 60, 3, false, false)); + target.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, 50, 2, false, false)); target.playSound(target.getLocation(), Sound.ENTITY_BLAZE_HURT, 1.0f, 0.5f); - player.sendMessage(Component.text("✔ Ослепили киллера!", NamedTextColor.YELLOW)); target.sendMessage(Component.text("☀ Вас ослепили фонариком!", NamedTextColor.YELLOW)); + player.sendMessage(Component.text("✔ Ослепили киллера!", NamedTextColor.YELLOW)); hitKiller = true; } } @@ -196,69 +200,15 @@ public class ItemUseListener implements Listener { player.sendMessage(Component.text("Мимо...", NamedTextColor.GRAY)); } - // Spend 1 charge per use - updateItemCharges(player, charges - 1); + // 1 заряд за использование + int remaining = charges - 1; + if (remaining <= 0) { + player.getInventory().setItemInMainHand(null); + player.sendMessage(Component.text("Фонарик разрядился.", NamedTextColor.RED)); + } else { + player.getInventory().setItemInMainHand(DBDItems.flashlight(remaining)); + } + player.playSound(player.getLocation(), Sound.BLOCK_REDSTONE_TORCH_BURNOUT, 0.3f, 1.5f); } - - // ── Key ─────────────────────────────────────────────────────────────────── - - private void useKey(Player player, Survivor survivor, ItemStack item) { - int charges = DBDItems.getCharges(item); - if (charges <= 0) { - player.sendMessage(Component.text("Ключ сломан!", NamedTextColor.RED)); - return; - } - // Actual hatch opening logic is handled by hatch system - // This just plays the animation and spends a charge - player.sendMessage(Component.text("Вы используете ключ...", NamedTextColor.GOLD)); - player.playSound(player.getLocation(), Sound.BLOCK_IRON_DOOR_OPEN, 1.0f, 0.8f); - updateItemCharges(player, charges - 1); - } - - // ── Map ─────────────────────────────────────────────────────────────────── - - private void useMap(Player player, ItemStack item) { - int charges = DBDItems.getCharges(item); - if (charges <= 0) { - player.sendMessage(Component.text("Карта использована!", NamedTextColor.RED)); - return; - } - - // Show nearby generators / hooks in chat - player.sendMessage(Component.text("═══ Карта (ближайшие объекты) ═══", NamedTextColor.AQUA)); - - var genManager = session.getGeneratorManager(); - if (genManager != null) { - genManager.getIncompleteGenerators().stream() - .filter(g -> g.getLocation().getWorld().equals(player.getWorld())) - .sorted((a, b) -> Double.compare( - a.getLocation().distance(player.getLocation()), - b.getLocation().distance(player.getLocation()))) - .limit(3) - .forEach(g -> { - int dist = (int) g.getLocation().distance(player.getLocation()); - player.sendMessage(Component.text( - " ⚙ Генератор [" + (int)g.getProgress() + "%] — " + dist + " блоков", - NamedTextColor.YELLOW)); - }); - } - - updateItemCharges(player, charges - 1); - player.playSound(player.getLocation(), Sound.ITEM_ARMOR_EQUIP_LEATHER, 0.5f, 1.0f); - } - - // ── Utils ───────────────────────────────────────────────────────────────── - - private void updateItemCharges(Player player, int newCharges) { - ItemStack item = player.getInventory().getItemInMainHand(); - if (!DBDItems.isDBDItem(item)) return; - - if (newCharges <= 0) { - player.getInventory().setItemInMainHand(null); - player.sendMessage(Component.text("Предмет израсходован.", NamedTextColor.RED)); - } else { - player.getInventory().setItemInMainHand(DBDItems.setCharges(item, newCharges)); - } - } }