VanguardReMaster/AGENTS.md

77 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Правила работы
Это общие правила для ассистента и будущих сессий.
## Общение
- **Ответы короткие.** Не повторять уже сохранённое в документации, не
пересказывать код и не добавлять длинные вступления. Экономить токены.
- **Любое сомнение или вопрос — диалог.** Если есть выбор, неоднозначность
или риск, сначала показать 2–4 варианта с краткой рекомендацией, дать
пользователю выбрать или ответить самому. Не угадывать и не принимать
решение за него.
## Контекст
- **При работе с этим проектом всегда загружать скилл
`vanguard-remaster`** (`.opencode/skills/vanguard-remaster/SKILL.md`)
до начала анализа или правок.
- Перед началом работы читать `docs/SESSION-STATE.md`, затем
`docs/HANDOFF.md` и `docs/client-visual-direction.md`.
- Главное состояние и следующие шаги хранить в `docs/SESSION-STATE.md`,
подробную историю — в `docs/HANDOFF.md`.
- После блока: тесты, `validate`, `translations check`, коммит и push.
## UI и взаимодействие
- **Выбор делаем интерактивом по объектам:** клик/драг по карте, кругу,
зоне или полю. Не заменяем выбор карты, круга или цели списком кнопок в
интерфейсе.
- Кнопки допустимы только для глобальных действий и подтверждений:
завершить ход, сдаться, отмена, принять/пропустить опциональную
способность. Если выбирается конкретная карта/круг/зона — это делается
кликом по объекту.
- Информационные оверлеи (`ActionPrompt`, подсказки) не должны перехватывать
клики и не дублируют выбор кнопками.
## Способности
- Каждая текстовая способность карты должна иметь ровно одну реализацию:
`CardScript` (`Abilities`/`Continuous`/`Activated`), общий движок
(Sentinel, Heal/Trigger, Tejas) или флаг данных. Текст без реализации —
баг.
- **AUTO**: `AbilityDefinition` с `Trigger`, `Condition`, `Optional`,
`CanPay`/`Pay` и `Resolve`. Проверяй зону/источник через
`IsVanguardOf`/`IsRearGuardOf`/`IsInHand`; `OnPlace` не должен
срабатывать от VC, если текст требует RC.
- **ACT**: `ActivatedAbility`; флаги `RestsSelf`, `RetiresSelf`,
`RequiresDiscard`, `FromHand`, `FromDropZone`. `CanActivate` — только
проверка условий; оплата и эффект — в `Resolve` (или `Pay` для AUTO).
- **CONT**: `ContinuousAbility` для силы/критики; исключения вроде
«нельзя поддерживать» — через `CardScript.CanBeBoosted`, ограничения
передвижения/атаки — через `RestrictionType`.
- **Sentinel**: `IsSentinel` в данных, общий механизм Guard + сброс карты
того же клана; отдельный скрипт не нужен.
- **Trigger/Heal**: данные `trigger`; общий движок проверок и лечения.
- **Ключевые механики**: Tejas — `CanSnipeBackRow`; Restraint — флаг;
Boost/Intercept — `HasBoost`/`HasIntercept` и общий движок.
- **Выбор и цели**: только `AskUnitChoice`, `AskUnitMultiChoice`,
`AskHandCardChoice`, `AskEmptyRearGuardChoice`; клиент не выбирает
карты кнопками вместо объектов.
- **Клиент**: AUTO-подтверждение — оверлей; ACT — меню/оверлей карты;
стоимость способности (сброс/урон/поле) выбирается по объектам и
подтверждается кнопкой панели «Действия».
- После правок способностей проверять весь реестр `CardScripts.Default`,
тесты правил, `validate` и `translations check`.
- Полный аудит 66 карт и правила для новых карт —
`docs/ability-implementation.md`.
## Технические ограничения
- Не запускать `dotnet` и Docker на рабочем ПК; сервер проверять на
`ssh home`.
- Не открывать второй экземпляр Unity с тем же проектом; для batch-проверок
делать копию проекта без `Library`.
- `Vanguard.Rules` остаётся чистой библиотекой; сервер зависит от неё, а не
наоборот.