Skip to content

Combat

Концепт боевого баланса: stealth должен побеждать силу, но прямой бой должен быть читаемым и переживаемым.

Принципы

  • Backstab - главный способ убивать цель выше своего Power.
  • Прямой бой - длительный, но не мгновенно смертельный: ошибка наказывается, но дает окно для dodge/extract.
  • Ranged-мобы стреляют редко, сильно и с telegraph.
  • Melee-мобы давят позицией, а не безостановочным DPS.
  • Rival raiders скейлятся от игрока и остаются PvP-угрозой.
  • Power влияет на прямой урон, но не отменяет stealth.

Power

playerPower = ATK*6 + HP*0.9 + Crit*4 + Speed*2
mobPower = mobHp*0.9 + mobAtk*6 + visR*0.8
raiderPower = playerPower * random(0.62, 1.25)

UI-оценка врага:

Условие Цвет Значение
enemyPower <= playerPower * 0.8 Green Можно брать в прямой бой
enemyPower >= playerPower * 1.25 Red Лучше избегать/backstab
Иначе Amber Рискованный бой

Power-check damage

ratio = attackerPower / defenderPower
damage *= clamp(ratio ^ 0.35, 0.55, 1.70)

Исключения:

  • Backstab не проходит Power-check.
  • Урон моба по игроку не демпится Power-check: если игрок был раскрыт, попадание должно быть страшным.
  • PvP с rival raider остается симметричным.

Player damage

meleeDamage = ATK
backstabDamage = ATK * (1.5 + Crit/100) * backstabBonus
rangedDamage = ATK * 0.6 * weapon.dmgMult
mobSetDamage = damage * 1.30, если активен Hunter и цель mob

Backstab arcs:

Параметр Значение Смысл
backstabArc 0.55 * PI Широкая rear/side зона для committed hit
autoBackstabArc 0.72 * PI Более строгая зона для пассивного auto-backstab
meleeReach 25px Добавка к радиусам удара
meleeCd 0.9s КД игрока
meleeToFireLock 0.5s Пауза автоогня после silent backstab

Weapon timings

Архетип Mag FireCd Reload DmgMult Роль
Assault 5 0.26s 1.8s 1.00 baseline
SMG 6 0.13s 1.3s 0.85 close sustained
Shotgun 5 0.55s 2.0s 0.45 x 6 pellets close burst
Sniper 2 1.0s 2.8s 1.90 poke / punish

Mob combat timings

Система Значение Смысл
enemy atkCdMul 1.5 Все враги атакуют реже, но не слабее за удар
mobMeleeCd 0.7s * atkCdMul Базовый melee swing
lunge windup 0.65s Читаемый старт рывка
lunge lockLead 0.18s Момент фиксации направления
lungeTime 0.30s Сам рывок
lungeSpeed 480 px/s Скорость рывка
lungeDmg ATK * 2.0 Тяжелое попадание
lungeCd 1.7s * atkCdMul Окно между рывками
simpleMelee ATK * 0.7 Ближний простой удар

Armor / weak point

front cone < 0.95 rad: damage *= 0.25
rear angle > 2.1 rad: damage *= 1.60
flank: damage *= 0.65
backstab: armor ignored

Это делает прямую стрельбу в лицо плохим решением, но оставляет понятные альтернативы: фланг, тыл, backstab, dodge через wind-up.

Detection timings

detectionFillRate = proximityMultiplier / detectTime
detectTime = 0.9s
proximityMultiplier = lerp(0.5, 1.8, closeness)
inBushFill *= 0.5

Suspicion/spotted threshold сейчас общий: alertSpotted = 0.5. Чем ближе игрок и чем хуже cover, тем быстрее моб переходит в бой.