Funny little NPC behavior upgrade#355
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive squad command and ability system for NPCs, including systems for healing over time, self-healing, throwing weapons, dashing, and reviving allies. It also adds a squad manager (NpcCommandSystem) that handles recruitment and relays orders (Follow, Attack, Retreat, Hold) to minions, along with several HTN preconditions and operators to drive these behaviors. Feedback on the code changes highlights a critical compilation error in HealOverTimeSystem where EntityUid is passed instead of Entity<DamageableComponent?>, a logic bug in PickHidePointOperator where a zero radius is passed to InRangeUnobstructed, and performance concerns regarding LINQ allocations in the NpcCommandSystem update loop. Additionally, minor style improvements were suggested, such as using generic TryGetComponent calls, fixing XML documentation tags, and correcting typos.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
Сделай фауну по которой магическим образом оружие заклинивает, и по нему стрелять невозможно, только в ближний бой |
|
Хотел сделать больше но заебался, позже в других ПРах, и с этим можно прикольные данжи делать. |
|
Головная боль... |
В целом это фундамент а-ля конструктор для будущих улучшений, тут будут новые ветки поведения для НПС, новые абилки для НПС.
С этим можно будет делать намного более интересный ПвЕ контент.
Сейчас сделано:
Синдикат, наймы, панки, аргоциты - используются для тестов.
Прото мобов наследуются от офовских и им "вживляется" базовый прототип умных мобов, как итог мы получаем новых НПС с двумя пэрэнтами, сравнительно мало строк кода.
Убегать от лазеров если нет возможности атаковать в ответ
Юзать абилки (по себе, области, целям и разным условиям)
Поведение - хиллер, приоритетно лечит раненых, оттаскивает тела критованных союзников
Поведение - держаться бугра выполнять приказы
Поведение - быть бугром отдавать приказы, патруль
Поведение - держать оборону
Поведение - шахид (бежит во врага и тригерит абилку взрыва)
Поведение - строитель
Отряды - Командир со своей веткой поведения. Отдаёт приказы свите. Озвучивает их.
Отряды: Свита - медик, держится командира, лечит, поднимает на ноги и лечит, оттаскивает раненых и лечит, дерётся в крайнем случае.
Отряды: Свита - грант, штурмует по приказу, держится комы, юзает абилки по пути если они есть. Лечит себя если нет приказа штурмовать, нет врага рядом и есть урон.
Приказы сейчас есть:
Отряды: Свита - инженер, держится комы, строит турель при команде держать позицию.
Личные ветки гуманоидов (вне отряда) делают всё то-же самое, минус приказы.
Самолечение если ранен - моб ищет безопасное или удалённое место и бинтуется.
Медик ищет раненых и лечит, лечит себя если ранен.
В целом особых чудес тактики я из них выдавить пока не смог, сс14 всё таки.
Есть нюансы с окружением, на пример экспы сейчас это набор прямых коридоров, там буквально негде маневрировать, что тривиализирует бои с НПС, однако значительно бодрее идёт драка с умными.
Абилки: (отмечу что все абилки гибко кастомизируются в компоненте, не меняется только выбор цели, так что базовые темплейты можно использовать почти на все случаи жизни)
Самолечение - цели нет, бинтоваться, лечит 50хп за 5 секунд, во время действия -40% мувспида и нельзя стрелять.
Дэш - цель враг, прыжок на 3 тайла
Метание - цель враг, метается любой прототип.
Лечение цели - цель союзник, инъекция, лечит 50 за 5 секунд.
Дефиб - цель союзник, лечит 120, медик применяет только к критованному
Полевой дефиб - цель союзник, лечит 120, применяется только если медик оттащил раненного в крите.
Аура - цель селф, накладывает эффект на АоЕ союзников (для фауны, типа ферамоны лечащие)
Самоподрыв - цель враг, эффекты разные могут быть под разных мобов
Стройка - устанавливает при условиях прототип (пр. турель), будет строить до лимита.
Пэты
Добавлен конструктор пэтов, предусмотренное поведение:
Пэты вылезают из капсул(покеболов):
Первая активация навсегда привязывает к хозяину (активировавший)
Вторая активация возвращает пэта в покебол, вещи из сумки пэта выпадают.
Если пэт мёртв при возврате - выпуск потом стоит 25 биомассы/100 скрапа
Если пэт гибнут - выпуск 50 биомассы/200 скрапа
Если капсула уничтожена пока пэт призван - он одичает. Если пэт спрятан, ну, вы его больше не увидите.
Добавлены тестовые петы, спрятаны по миру.
Пока нет лимита на кол-во петов, задумано что они редкие, но если кто-то хочет сильно напрячься и собрать
несколько, почему нет?
Если кто поможет со спрайтами покеболов - круто.
🆑 Lanc