Боевые дроны, поражающие врагов электрическим током. Включает в себя снаряжение, улучшения и капсулы в виде гранат. Combat drones that stun enemies with electric shocks. Includes equipment, upgrades, and grenade-style capsules.
Version: 2.2.1
Date: 2025-01-31
Bugfixes:
- Fixed crash in multiplayer when a player throws a stun grenade before the host's on_init runs.
The startup settings cache (CACHED_BASE_AOE_RADIUS, CACHED_BASE_STUN_TIME) is now lazily
initialized on first access, ensuring it works correctly for all players in multiplayer.
Исправления:
- Исправлен вылет в мультиплеере, когда игрок бросает оглушающую гранату до того, как
на хосте выполнится on_init. Кеш startup-настроек теперь инициализируется лениво при
первом обращении, что гарантирует корректную работу для всех игроков в мультиплеере.
Version: 2.2.0
Date: 2025-01-31
Optimizations:
- CRITICAL: Removed global enemy search every 20 ticks that was searching ALL enemies on ALL surfaces.
Now tracks only stunned enemies in a cache, reducing CPU load by 90%+ in late-game scenarios.
- Implemented player data caching system: equipment status, quality level, and energy are now cached
and only updated when armor/equipment changes (via event handlers).
- Replaced inventory slot-by-slot iteration with get_item_count() for drone ammo checks.
- Optimized find_nearest_enemy: reduced search limit from 20 to 10, removed unnecessary table.sort().
- Added periodic cleanup routine (every 60 seconds) for stale projectile data and disconnected player caches.
- Cached startup settings to avoid repeated settings.startup lookups.
- Local references to frequently used Lua functions (pairs, math.random, math.floor, table.insert, table.remove).
Multiplayer:
- Player cache system now properly handles multiple players with separate data per player_index.
- Cache invalidation on equipment/armor changes is deterministic and synced across clients.
Bugfixes:
- Fixed potential memory leak in drone_projectiles storage (added cleanup for orphaned entries).
- Fixed edge case where equipment_ref could become invalid between cache reads.
Info:
- Added remote interface function get_stats() for debugging (returns stunned_count, projectiles_count, cached_players).
Оптимизации:
- КРИТИЧНО: Убран глобальный поиск врагов каждые 20 тиков, который искал ВСЕХ врагов на ВСЕХ поверхностях.
Теперь отслеживаются только оглушённые враги в кеше, снижение нагрузки на CPU на 90%+ в поздней игре.
- Реализована система кеширования данных игрока: статус оборудования, уровень качества и энергия
теперь кешируются и обновляются только при изменении брони/оборудования.
- Заменён перебор слотов инвентаря на get_item_count() для проверки наличия боеприпасов.
- Оптимизирован поиск ближайшего врага: уменьшен лимит поиска с 20 до 10, убрана ненужная сортировка table.sort().
- Добавлена периодическая очистка (каждые 60 секунд) устаревших данных снарядов и кешей отключившихся игроков.
- Закешированы startup-настройки, чтобы избежать повторных обращений к settings.startup.
- Локальные ссылки на часто используемые функции Lua (pairs, math.random, math.floor, table.insert, table.remove).
Мультиплеер:
- Система кеширования игроков корректно обрабатывает нескольких игроков с отдельными данными по player_index.
- Инвалидация кеша при изменении оборудования/брони детерминирована и синхронизирована между клиентами.
Исправления:
- Исправлена потенциальная утечка памяти в хранилище drone_projectiles (добавлена очистка осиротевших записей).
- Исправлен краевой случай, когда equipment_ref мог стать невалидным между чтениями кеша.
Информация:
- Добавлена функция remote-интерфейса get_stats() для отладки (возвращает stunned_count, projectiles_count, cached_players).
Version: 2.1.0
Date: 2025-01-05
Features:
- Reworked stun drone and stun grenade behavior: damage and stun are now applied exactly on projectile impact via scripted handlers, not instantly on launch.
- Added full quality support:
* Stun drone equipment quality now increases damage, radius and stun duration.
* Stun drone ammo quality increases per-shot damage, radius and stun duration.
* Stun grenade quality increases AOE damage, radius and stun duration.
- Added energy mechanics for the stun drone equipment:
* Equipment now has its own internal energy buffer (500 kJ by default).
* At normal quality this buffer is enough for 5 drone launches without recharging.
* Higher quality effectively increases the number of shots from a full charge by lowering energy cost per shot.
- Added a toggle for the stun drone system:
* Shortcut button "Stun Drone System" in the shortcut bar.
* Hotkey: Shift + T.
* The system can be turned on/off per player.
Changes:
- Disabled the built-in active-defense attack of the equipment; all attack behavior is now fully handled by script to avoid double damage and ammo-free shots.
- Separated projectile visuals:
* Drones use stun-drone-moving / hr-stun-drone-moving.
* Stun grenades use stun-grenade-moving / hr-stun-grenade-moving and appear smaller than drones.
- Equipment tooltip now shows a non-zero "Energy per use" and a reasonable max power input, matching its scripted energy behavior.
- Reworked stun logic to use only stickers and scripted AOE, avoiding engine-side create-sticker in projectile definitions.
Bugfixes:
- Fixed crashes caused by accessing invalid entities after they were killed by damage (added .valid checks everywhere).
- Fixed errors when trying to create stun stickers on entities that do not accept stickers.
- Fixed ammo consumption logic so that stun drone ammo of any quality (including legendary) is correctly detected and consumed.
- Fixed desynchronization of visual effects and actual damage/stun application for stun drones.
- Shortcut state:
* The stun drone shortcut is now greyed out and unavailable when the player has no stun drone equipment in armor.
* Shortcut toggle state is correctly updated on armor/equipment changes and on load.
Новое:
- Полностью переработана логика автодронов и оглушающих гранат: урон и стан теперь происходят строго в момент попадания снаряда (через on_script_trigger_effect), а не сразу при выстреле.
- Добавлена поддержка качества:
* Качество оборудования оглушающих дронов усиливает урон, радиус и длительность стана.
* Качество боеприпасов оглушающих дронов влияет на урон, радиус и длительность стана конкретного выстрела.
* Качество оглушающих гранат усиливает AOE-урон, радиус и длительность стана.
- Добавлена энергетика для системы защиты:
* Оборудование имеет собственный энергетический буфер (500 кДж по умолчанию).
* При обычном качестве буфера хватает примерно на 5 выстрелов без подзарядки.
* С ростом качества фактическое количество выстрелов от полного заряда растёт за счёт снижения стоимости выстрела по энергии.
- Добавлена кнопка включения/выключения системы:
* Ярлык «Система защиты оглушающими дронами» в панели ярлыков.
* Горячая клавиша: Shift + T.
* Состояние (вкл/выкл) хранится отдельно для каждого игрока.
Изменения:
- Встроенная атака active-defense-оборудования отключена, всё поведение реализовано только скриптом, чтобы избежать двойного урона и «бесплатных» выстрелов.
- Разделены визуальные эффекты полёта: дроны и гранаты используют свои спрайты, гранаты визуально меньше.
- Подсказка оборудования теперь показывает осмысленную «Энергию за использование» и максимальное потребление энергии, соответствующие скриптовой логике.
- Логика стана полностью переведена на скриптовые AOE и стикеры, без create-sticker в определении снаряда.
Исправления:
- Исправлены вылеты при обращении к невалидным сущностям после нанесения урона (добавлены проверки .valid).
- Исправлены ошибки при попытке создать стикер на сущностях, которые не поддерживают стикеры.
- Исправлена проблема, из-за которой система не видела/не тратила боеприпасы улучшенного качества (включая легендарные).
- Исправлена рассинхронизация между визуальным полётом дрона и фактическим моментом нанесения урона и стана.
- Ярлык системы теперь становится серым и недоступен, если в броне нет соответствующего оборудования, и автоматически обновляется при изменении брони/оборудования.