# GMP — Gameplay Systems

## Цель

Создать детерминированную клиентскую проекцию серверного gameplay и полный набор player intents WoW 3.3.5a без переноса authoritative правил на клиент.

## GMP-1. World model

- Typed entity registry и object hierarchy.
- Components/read models: identity, transform, unit, player, item, gameobject, corpse, dynamic object.
- Ownership, charm, pet, target, creator, transport и group relationships.
- Reducers применяют domain events; presentation подписывается на changesets.
- Snapshot/replay позволяют восстановить состояние без live socket.

## GMP-2. Input and movement

- Remappable action layer, keyboard/mouse и optional gamepad/accessibility mappings.
- Walk/run/backpedal/strafe/turn/jump/fall/swim/fly/autorun.
- Camera-relative или character-relative policy строго по original behavior.
- Ground/collision query abstraction, slopes, water transition и falling.
- Prediction/reconciliation только локального movement; corrections имеют smoothing/snap thresholds.
- Debug flight/speed отделены от production profile.

## GMP-3. Selection and interaction

- Mouse/world picking, tab target, target/focus и target-of-target.
- Hostility/faction/dead/visibility/selectability filters.
- Facing, range, line-of-sight и interaction intents.
- NPC flags определяют available services; client не выдумывает доступную функцию.
- Gameobject use, gossip, trainer, vendor, mailbox, auctioneer, binder и flight master.

## GMP-4. Combat

- Auto attack/auto shot, swing state и attack stop.
- Damage/heal/miss/absorb/resist/block/crit feedback.
- Threat presentation, combat state, evade и unit flags.
- Resources, regeneration presentation и combo points/runes where applicable.
- Combat log canonical events отделены от floating text/UI formatting.
- Server validates hit, damage и death; client показывает pending/cast state.

## GMP-5. Spells and auras

- Spellbook, ranks, passive/active, known/disabled spells.
- Target requirements, range, facing, resource и client-predictable validation messages.
- Cast/channel/interrupt/pushback, GCD и cooldowns.
- Aura add/update/remove, stacks, duration, caster, dispel type и visibility.
- Totems, shapeshift, pets, tracking, tradeskill casts.
- Spell visual/audio descriptors separate from spell mechanics state.

## GMP-6. Death and recovery

- Death/release spirit, ghost, corpse, graveyard, reclaim delay.
- Resurrection request/accept, spirit healer penalties.
- Durability loss/repair и instance wipe/reset presentation.
- Failure during map transfer/reconnect does not duplicate corpse/player state.

## GMP-7. Items and economy

- Inventory slots, bags, bank, keyring, equipment, ammo и currencies.
- Stack/split/swap/equip/use/destroy with pending/server-confirmed states.
- Loot windows, group rolls, master loot, disenchant и loot release.
- Item fields, random properties, enchants, gems, durability, sets и cooldowns.
- Vendor/buyback/repair, trade, mail, auction и guild bank.
- Money formatting/display separated from authoritative transaction.

## GMP-8. Quests and progression

- Quest availability, accept, abandon, track, objectives, complete и reward choice.
- Kill, item, gameobject, explore, spell, escort, timed, reputation objectives.
- Chains, prerequisites, exclusive groups, repeatable/daily/weekly и conditions.
- XP/rested/level, reputation, honor, achievements.
- Skills, talents, glyphs, professions, recipes и trainers.
- Quest state drives view models; authoring graph compiles to server-supported representation.

## GMP-9. World activities

- Area/subzone/exploration state и rest areas.
- Taxi discovery/routes/flight, transports, elevators и boats.
- Fishing, gathering, tracking, world events и scripted gameobjects.
- Weather/time events feed render/audio but are owned by world state.
- Minimap/world map POI and quest markers are projections, not quest logic.

## GMP-10. Social

- Chat types, channels, whispers, system messages и links.
- Friends, ignore, who, AFK/DND.
- Party/raid invites, leader, roles, loot rules, ready check, raid targets.
- Guild roster, ranks, notes, MOTD, event/calendar.
- Presence/reconnect updates and privacy/error handling.

## GMP-11. Instances, PvP and vehicles

- Difficulty, instance binds, lockouts, encounters, reset и transfer aborted.
- LFG queue/proposal/roles/teleport/vote kick/rewards.
- Duel, PvP flags, battleground queue/status/score/resurrection и arena teams.
- Outdoor PvP objectives.
- Vehicle seats, enter/exit/switch, possession action bar и transport-relative movement.

## GMP-12. Cinematics and scripted presentation

- Cinematic/movie start/stop, camera control и skippability.
- Server-driven scripted sequences reflected as safe presentation commands.
- Loading screens and map transitions preserve session state.
- Gameplay input contexts prevent actions during restricted states.

## Testing order

Для каждой системы: reducer unit tests → packet/domain contract → offline scenario → live core integration → original-client comparison → latency/reconnect scenario.

## Gate

Gameplay state воспроизводим replay-ом; UI/render не владеют authoritative values; все intents имеют pending/confirmed/rejected lifecycle; core gameplay loop проходит end-to-end без оригинального клиента.
