Skip to content

Funny little NPC behavior upgrade#355

Open
TryHardo7 wants to merge 10 commits into
SerbiaStrong-220:masterfrom
TryHardo7:Advanced_NPC_Behavior
Open

Funny little NPC behavior upgrade#355
TryHardo7 wants to merge 10 commits into
SerbiaStrong-220:masterfrom
TryHardo7:Advanced_NPC_Behavior

Conversation

@TryHardo7

@TryHardo7 TryHardo7 commented Jun 20, 2026

Copy link
Copy Markdown

В целом это фундамент а-ля конструктор для будущих улучшений, тут будут новые ветки поведения для НПС, новые абилки для НПС.
С этим можно будет делать намного более интересный ПвЕ контент.

Сейчас сделано:

Синдикат, наймы, панки, аргоциты - используются для тестов.
Прото мобов наследуются от офовских и им "вживляется" базовый прототип умных мобов, как итог мы получаем новых НПС с двумя пэрэнтами, сравнительно мало строк кода.

Убегать от лазеров если нет возможности атаковать в ответ
Юзать абилки (по себе, области, целям и разным условиям)
Поведение - хиллер, приоритетно лечит раненых, оттаскивает тела критованных союзников
Поведение - держаться бугра выполнять приказы
Поведение - быть бугром отдавать приказы, патруль
Поведение - держать оборону
Поведение - шахид (бежит во врага и тригерит абилку взрыва)
Поведение - строитель

Отряды - Командир со своей веткой поведения. Отдаёт приказы свите. Озвучивает их.
Отряды: Свита - медик, держится командира, лечит, поднимает на ноги и лечит, оттаскивает раненых и лечит, дерётся в крайнем случае.
Отряды: Свита - грант, штурмует по приказу, держится комы, юзает абилки по пути если они есть. Лечит себя если нет приказа штурмовать, нет врага рядом и есть урон.
Приказы сейчас есть:
Отряды: Свита - инженер, держится комы, строит турель при команде держать позицию.

  1. Штурм - свита исключая медика бежит пушить цель которую обозначил кома, если цель пропала - идут туда где последний раз видели, сражаются там, потом отступают к коме.
  2. Держать позицию - Сидят в области, дают медику время всех поднять на ноги, либо охраняют тело врага.
  3. Отступать - сваливают подальше, ищут место куда не видит противник.

Личные ветки гуманоидов (вне отряда) делают всё то-же самое, минус приказы.
Самолечение если ранен - моб ищет безопасное или удалённое место и бинтуется.
Медик ищет раненых и лечит, лечит себя если ранен.

В целом особых чудес тактики я из них выдавить пока не смог, сс14 всё таки.
Есть нюансы с окружением, на пример экспы сейчас это набор прямых коридоров, там буквально негде маневрировать, что тривиализирует бои с НПС, однако значительно бодрее идёт драка с умными.

Абилки: (отмечу что все абилки гибко кастомизируются в компоненте, не меняется только выбор цели, так что базовые темплейты можно использовать почти на все случаи жизни)

Самолечение - цели нет, бинтоваться, лечит 50хп за 5 секунд, во время действия -40% мувспида и нельзя стрелять.
Дэш - цель враг, прыжок на 3 тайла
Метание - цель враг, метается любой прототип.
Лечение цели - цель союзник, инъекция, лечит 50 за 5 секунд.
Дефиб - цель союзник, лечит 120, медик применяет только к критованному
Полевой дефиб - цель союзник, лечит 120, применяется только если медик оттащил раненного в крите.
Аура - цель селф, накладывает эффект на АоЕ союзников (для фауны, типа ферамоны лечащие)
Самоподрыв - цель враг, эффекты разные могут быть под разных мобов
Стройка - устанавливает при условиях прототип (пр. турель), будет строить до лимита.

Пэты

Добавлен конструктор пэтов, предусмотренное поведение:

  1. следовать за хозяином
  2. хранить вещи (как сумка, открывается только хозяину)
  3. лечить хозяина абилкой
  4. боевой (атакует вражеские фракции, тех кто атаковал хозяина, тех кого атаковал хозяин, хозяин не дамажит)

Пэты вылезают из капсул(покеболов):
Первая активация навсегда привязывает к хозяину (активировавший)
Вторая активация возвращает пэта в покебол, вещи из сумки пэта выпадают.
Если пэт мёртв при возврате - выпуск потом стоит 25 биомассы/100 скрапа
Если пэт гибнут - выпуск 50 биомассы/200 скрапа
Если капсула уничтожена пока пэт призван - он одичает. Если пэт спрятан, ну, вы его больше не увидите.
Добавлены тестовые петы, спрятаны по миру.
Пока нет лимита на кол-во петов, задумано что они редкие, но если кто-то хочет сильно напрячься и собрать
несколько, почему нет?
Если кто поможет со спрайтами покеболов - круто.

  • Петы, утилити и боевые.
  • Спрятать петов по карте.
  • Разные абилки на некоторые случаи жизни
  • Я прочитал(а) и следую Рекомендациям по оформлению Pull Request и Changelog.
  • Я добавил(а) медиафайлы к этому PR или он не требует демонстрации в игре.
  • Я подтверждаю, что мои изменения находятся под лицензией Exodus CLA и соглашаюсь с её условиями.

🆑 Lanc

  • add: Добавлено умное поведение некоторым мобам.
  • add: Добавлены разные способности некоторым мобам.
  • add: Добавлены петы, утилитарные и боевые.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread Content.Server/_Exodus/NPC/Abilities/HealOverTimeSystem.cs
Comment thread Content.Server/_Exodus/NPC/Command/NpcCommandSystem.cs
Comment thread Content.Server/_Exodus/NPC/Abilities/NpcThrownWeaponComponent.cs Outdated
Comment thread Content.Server/_Exodus/NPC/HTN/Preconditions/HealthPrecondition.cs
Comment thread Content.Server/_Exodus/NPC/Command/NpcCommanderComponent.cs
@ytkaed

ytkaed commented Jun 20, 2026

Copy link
Copy Markdown

Остались добавить [голова, глаза]

Uploading pmc-komap-1.gif…

@ytkaed

ytkaed commented Jun 20, 2026

Copy link
Copy Markdown

Сделай фауну по которой магическим образом оружие заклинивает, и по нему стрелять невозможно, только в ближний бой

@TryHardo7 TryHardo7 changed the title [WIP] Funny little NPC behavior upgrade Funny little NPC behavior upgrade Jun 21, 2026
@TryHardo7

TryHardo7 commented Jun 21, 2026

Copy link
Copy Markdown
Author

Хотел сделать больше но заебался, позже в других ПРах, и с этим можно прикольные данжи делать.
Если кто-то будет тестить ещё и видосов подкинет того как это работает - будет охуенно, а то я не могу нормально больше 8 секунд записать.

@Lokilife

Copy link
Copy Markdown

Головная боль...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants