# Melee weapon

## Основные сведения

### Характеристики

Оружие содержит следующие данные:

* Направления атаки: оно сохраняет информацию о различных направлениях атаки, их скорости, модификаторе урона и общей эффективности.
* Тип урона от направления: оружие также определяет тип урона, который будет причинен в зависимости от выбранного направления атаки.
* Длина: оружие имеет определенную длину, которая указывает на дальность его досягаемости.
* Вес: каждое оружие обладает своим весом, который может влиять на скорость и маневренность персонажа при использовании оружия.
* Заточка: оружие может иметь определенный уровень заточки, который влияет на его эффективность и силу удара.
* Состояние: информация о состоянии оружия, такая как целостность, изношенность или повреждения.
* Нанесено ли зелье: также может быть указано, было ли применено какое-либо зелье к оружию, влияющее на его характеристики или эффекты атаки.

### Направление атаки

Процесс выбора направления атаки включает следующие шаги:

* Движение персонажа: Во время активного перемещения персонажа в одно из направлений (вперед, назад, влево, вправо), выполняется действие выбора направления атаки.
* Нажатие кнопки атаки: Пользователь нажимает на кнопку атаки, используя левую кнопку мыши (ЛКМ). Это инициирует процесс выбора направления атаки.
* Позиционирование оружия: Персонаж автоматически позиционирует оружие в соответствии с выбранным направлением атаки. Например, для атаки сверху, выпада, атаки слева или атаки справа, оружие будет установлено в соответствующую позицию.
* Выполнение атаки: Чтобы персонаж осуществил атаку, пользователь должен отпустить кнопку атаки. Это действие сигнализирует о начале выполнения атаки в выбранном направлении.

### Направление блока

Процесс выбора направления блока аналогичен процессу выбора направления атаки, за исключением использования правой кнопки мыши (ПКМ) вместо левой кнопки мыши (ЛКМ). Важно отметить, что более тяжелое оружие имеет преимущество при пробивании блока и более эффективно поглощает атаку, по сравнению с оружием меньшей массы.

### Заряд атаки

При продолжительном удержании клавиши атаки происходит накопление Силы, которая является модификатором урона (от ×0.5 до ×2) и зависит от характеристик конкретного оружия. Скорость накопления Силы также зависит от параметров оружия.

При достижении максимального уровня Силы атака способна пробить блок противника. Однако накопление и поддержание Силы требуют затрат выносливости персонажа. Более тяжелое оружие требует более длительного времени для накопления Силы и при этом снижает выносливость персонажа в большей степени.

Если персонаж удерживает клавишу атаки слишком долго, уровень Силы начинает уменьшаться. При снижении уровня Силы до нуля персонаж опускает оружие и на некоторое время теряет возможность эффективно использовать его (налагается штраф).

Таким образом, удержание клавиши атаки позволяет накапливать Силу, что влияет на модификацию урона, но требует затрат выносливости. Важно контролировать уровень Силы, чтобы избежать снижения ее до нуля и связанного с этим временного ограничения на использование оружия.

### Заряд блока

Заряд блока представляет собой числовое значение, которое уменьшается от 1 до 0 после нажатия правой кнопки мыши (ПКМ). Уровень заряда блока оказывает влияние на способность поглощать атаку от противника. Максимальный заряд блока позволяет полностью поглотить атаку (за исключением случаев, когда противник использует существенно более тяжелое оружие), в то время как минимальный заряд блока позволяет пропустить атаку полностью. Поддержание блока требует определенного уровня выносливости.

## Приемы в бою

### Удар ногой

Удар ногой предусматривает использование отдельной кнопки для его выполнения. Во время выполнения удара нельзя перемещаться, однако, если удар выполняется во время рывка, он не будет прерываться, а урон будет увеличен.

Удар ногой наносит значительный физический урон и отталкивает противника, если тот не находится в положении приседа или не защищается щитом.

Воздействие на щит приводит к принудительному сбиванию [щита](#shit) без наложения штрафов, противник просто опускает щит и может затем поднять его снова.

### Чембер

Чембер представляет собой сложную технику, объединяющую блокировку и атаку. При выполнении удара противника через несколько миллисекунд после него в ту же сторону, вы можете выполнить чембер. В результате атака противника будет отбита, а затем, через краткое время, автоматически нанесен удар врагу с минимальной возможностью его блокировки.

Например, если вас атакуют сверху и вы только что отпустили кнопку левого клика мыши (т.е., атака запущена), и в этот момент вы быстро нажмете левую кнопку мыши с той же стороны, вы сможете заблокировать атаку противника и нанести урон ему.

### Клинч

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

Если ни один из игроков не сумел опередить противника в выполнении N-количества нажатий, клинч завершается, и оба игрока автоматически производят рывок назад по обычной цене выносливости. Однако, во время клинча игрок может совершить рывок назад, чтобы прекратить состояние клинча, но это потребует двукратного расхода выносливости по сравнению с обычным рывком.

#### Механика мини-игры во время клинча

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

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

{% hint style="info" %}
Для того чтобы показать игрокам их текущее положение относительно противника, необходимо отображать информацию о том, насколько каждый из игроков опережает или отстает от противника в выполнении нажатий кнопок. Это может быть представлено визуально, например, в виде прогресс-бара или числового значения, отображающего прогресс каждого игрока к достижению 10 нажатий.
{% endhint %}

### Рипост

При зажатии кнопки атаки (левая кнопка мыши) и последующем нажатии кнопки блока (правая кнопка мыши), заряд атаки преобразуется в заряд блока, но не будет продолжать накапливаться. Если персонаж в это время находится в движении, направление атаки автоматически изменяется в соответствии с текущим направлением движения.

Если во время удержания кнопки блока (правая кнопка мыши) и отпускания этой кнопки (но при удержании кнопки атаки - левая кнопка мыши), заряд блока преобразуется в заряд силы, но не будет продолжать накапливаться. Если персонаж в это время находится в движении, направление атаки также будет соответствовать текущему направлению движения.

## Ведение боя

### Направление блока/атаки

Оружие обладает основными и второстепенными направлениями атаки. При выполнении атаки из основного направления применяется основной тип урона, соответствующий данному оружию (например, для копья это выпад и колющий урон). В случае атаки из второстепенного направления используется второстепенный тип урона (например, для копья это все остальные атаки и ударный урон).

При движении мышкой в направлении атаки наносимый урон увеличивается, а при движении в противоположном направлении урон уменьшается. Это позволяет игроку контролировать силу удара, основываясь на движении мышки.

Длина оружия оказывает влияние на радиус поражения. Оружие с большей длиной имеет больший радиус, что позволяет достичь целей на большем расстоянии.

### Рывки и движение

При нажатии определенных кнопок игрок может выполнить рывок в определенном направлении, что позволяет использовать его для уклонения от атак. Если игрок совершает рывок в направлении врага или просто приближается к нему и атакует, то урон, наносимый врагу, увеличивается. Однако, если игрок совершает рывок назад или отступает, урон будет меньше.

Некоторые типы урона могут остановить движение и атаку игрока, если они проникают сквозь защиту и превышают определенный порог урона. Если удар приходит в область головы и наносит урон выше определенного предела, то возникает эффект оглушения, в результате которого игрок не может атаковать и выполнять рывки.

### Индикаторы заряда атаки

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

Во время зарядки атаки видно мерцание на оружии, начиная от рукоятки и до конца. Когда это мерцание достигнет конца, атака будет полностью заряжена. Если игрок упустит этот момент, мерцание исчезнет. Этот эффект виден как для игрока, так и для оппонента.

Будут использованы индикаторы попадания. Если игрок попадет по врагу, будет проигран специальный звук. Если попадание произойдет в голову, звук будет более "сочным". Если будет нанесен критический урон (урон, превышающий базовое значение в два раза), персонаж издаст звук "хыхыхы".

### Индикатор уворота

В случае, когда противник промахнулся по персонажу из-за его рывка, персонаж будет издавать звук "хыхыхы".

### Выносливость

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

### Реакция на полный блок

При блокировании атаки персонажем, камера оппонента будет немного смещена в направлении блока, а персонаж игрока издаст звук "хыхы".

### Острота&#x20;

Острота - это параметр, который отражает внимательность игрока к своему оружию и влияет на урон, наносимый режущими и рубящими атаками. При изготовлении оружие имеет 100% заточки. Однако его можно улучшить, докачав до 125%. Если уровень заточки понизится до нуля, весь режущий и рубящий урон будет потерян. Значение заточки снижается во время ударов по противнику.

### Бекстаб

В случае, когда персонаж наносит удар по противнику в спину, когда тот находится в стоячем положении, урон будет удвоен.

## Промежуточная формула

```cpp
TArray<float> arr = { 
    PowerCharge, Sharp, AttackSideMult, 
    MovementSpeedMult, MouseSpeedMult, JumpStrengthMult 
};
float Damage = BaseDamage;
for (float element : arr) {
    Damage *= element;
}
```

<table><thead><tr><th width="223"></th><th></th></tr></thead><tbody><tr><td>BaseDamage</td><td>Базовый урон этого оружия некого типа</td></tr><tr><td>PowerCharge</td><td>Модификатор от уровня заряда силы</td></tr><tr><td>Sharp</td><td>Модификатор от заточки</td></tr><tr><td>AttackSideMult</td><td>Модификатор угла(стороны) атаки</td></tr><tr><td>MovementSpeedMult</td><td>Модификатор от скорости (рывок).</td></tr><tr><td>MouseSpeedMult</td><td>Модификатор от скорости движения мышки</td></tr><tr><td>JumpStrengthMult</td><td>Модификатор от прыжка</td></tr><tr><td>Damage</td><td>Проходящий урон (что дальше взаимодействует с броней)<br></td></tr></tbody></table>

## Щит

### Описание щита

Щит имеет постоянный хитбокс, который защищает от стрел. У щита также есть прочность, которая тратится при поглощении урона. В зависимости от типа щита, он может либо сломаться и исчезнуть, либо потерять всю свою эффективность (при этом оставаясь в инвентаре для возможной починки)

### Работа щита

Для поднятия щита необходимо нажать правую кнопку мыши (ПКМ). При поднятии щита появляется шкала, которая заполняется при блокировании атак. Чем больше заполнена эта шкала, тем быстрее расходуется выносливость персонажа (даже при нулевом заполнении шкалы выносливость все равно медленно уменьшается). Когда шкала достигает максимального значения, рука персонажа принудительно опускается, и щит становится недоступен на некоторое время. Кроме того, шкала начинает медленно заполняться через три секунды после поднятия щита.

При блокировке атаки щитом, когда шкала пуста, атакующий оппонент не может атаковать в течение нескольких секунд. В этот момент игрок имеет возможность перейти в контратаку.

Примитивные щиты предназначены только для защиты от стрел, они не способны остановить пули. Однако продвинутые щиты обеспечивают полную защиту от обстрела.

### Удар щитом

При зажатии правой кнопки мыши (ПКМ) и одновременном нажатии кнопки атаки, персонаж совершит удар щитом. Радиус этой атаки небольшой, и сразу после удара персонаж не может продолжать держать щит. В случае попадания этой атаки по противнику, он будет оглушен.

### Баш щитом

Существует разновидность атаки щитом. Если во время поднятого щита и пустой шкалы выполнить рывок вперед, персонаж совершит резкий прыжок, преодолевая большее расстояние, чем обычно, то это действие оглушит противника и нанесет урон.

\\
