Особые переменные карт в моде Норвежской Сёмги

### Характеристики юнитов

Через переменные сценария можно влиять на часть характеристик юнитов в зависимости от расы владельца. Для этого нужно поместить на карту переменную с названием %RACE%\_%STAT% - такие переменные будут называться глобальными.

Пример глобальных переменных: ELVES\_REGEN\_FLAT, CLANS\_INITIATIVE\_MULTI, NEUTRALS\_ARMOR\_FLAT

~~Также можно задать локальные переменные, которые будут влиять только на отряды в локациях, к которым эти переменные привязаны. Подробнее о локальных переменных будет рассказано ниже.~~

~~Пример локальных переменных: LOC1\_ELVES\_REGEN\_FLAT, GATE\_CLANS\_INITIATIVE\_MULTI, L123\_NEUTRALS\_ARMOR\_FLAT~~

Идентификаторы рас (%RACE%)
 Горные Кланы
 Орды Нежити
 Легионы проклятых
 Эльфийский Союз
 Нейтралы

В таблицах с переменными характеристик юнитов и лидеров в обозначениях есть MULTI и FLAT, они обозначают следующее:

* MULTI означает, что базовое значение будет умножено на (0.01 \* значение\_переменной)
* FLAT  означает, что к характеристике будет добавлено   (значение\_переменной - 100) [в игре нельзя без танцев с бубном задать отрицательное значение, поэтому так; если очень нужно сделать переменную отрицательной, то можно вставить нужное значение из блокнота]

#### Юниты

В таблице переменных характеристик юнита встречается первичная и вторичная атака. Что это значит: у Призрака атака Паралич/Мороз и в его случае Паралич - первичная атака, а Мороз - вторичная.

#### Лидеры отрядов

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

Переменные характеристик лидера отряда (%STAT%)
 Дальность обзора
 Скидка у торговцев
 Сопротивление действиям воров
 Получаемый отрядом опыт в бою

#### Пример:

EMPIRE\_REGEN\_FLAT = 102 - все юниты под управлением игрока, играющего за Империю, получат +2 к регенерации

EMPIRE\_REGEN\_FLAT = 97  - все юниты под управлением игрока, играющего за Империю, получат -3 к регенерации

NEUTRALS\_DAMAGE1\_MULTI = 80 - урон первичной атаки нейтралов снизится на 20%

NEUTRALS\_DAMAGE2\_MULTI = 70 - урон вторичной атаки нейтралов снизится на 30% (например, праведный гнев)

CLANS\_XPGAIN\_MULTI = 110 - все юниты под управлением игрока, играющего за Горные кланы, будут получать в бою на 10% больше опыта (это значит, что сначала к опыту применяется Инструктор, Книга войны и т.д., а потом полученное число увеличится на 10%)

### ~~Локальные переменные~~

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

~~Структура названия локации: \_MAP\_VAR\_LOC\_%VARGROUPID%\_%NAME%~~

* ~~\_MAP\_VAR\_LOC\_ - фиксированная часть~~
* ~~%VARGROUPID% - ровно **четыре** символа. По ним движок поймет, какие переменные должны применяться в локации~~
* ~~%NAME% - произвольная часть имени~~

~~Структура названия локальной переменной: %VARGROUPID%\_%RACE%\_%STAT%~~

* ~~%VARGROUPID% - ровно **четыре** символа. По этим символам движок поймет, в каких локациях должна применяться переменная~~
* ~~%RACE% и %STAT% - означает то же самое, что и в глобальной переменной~~

#### ~~Пример:~~

~~На карте размещены три локации:~~

1. ~~\_MAP\_VAR\_LOC\_GATE\_FORT1~~
2. ~~\_MAP\_VAR\_LOC\_GATE\_FORT2~~
3. ~~\_MAP\_VAR\_LOC\_GG11\_MAPMID~~

~~И три переменные:~~

1. ~~EMPIRE\_INITIATIVE\_MULTI = 120~~
2. ~~GATE\_CLANS\_ARMOR\_FLAT = 110~~
3. ~~GG11\_EMPIRE\_INITIATIVE\_MULTI = 90~~

~~Что будет происходить:~~

* ~~В локациях \_MAP\_VAR\_LOC\_GATE\_FORT1 и \_MAP\_VAR\_LOC\_GATE\_FORT2 отряды Кланов будут иметь увеличенную на 10 броню~~
* ~~Вне локации \_MAP\_VAR\_LOC\_GG11\_MAPMID отряды Империи будут иметь увеличенную на 20% базовую инициативу (0.01 \* 120)~~
* ~~В локации \_MAP\_VAR\_LOC\_GG11\_MAPMID отряды Империи будут иметь увеличенную на 8% базовую инициативу ((0.01 \* 120) \* (0.01 \* 90))~~

### Изменение работы переменных, влияющих на характеристики юнитов

Через редактор можно добавить юниту игнорирование изменения его характеристик через переменные карты

С помощью %RACE%\_IGNORANCE\_MODE можно изменить работу модификаторов, позволяющих игнорировать изменения характеристик юнита в случае, когда рассчитывается эффект **глобальных** переменных

* 0 или отсутствие переменной - модификаторы на игнорирование работают как обычно
* 1 - модификаторы на игнорирование работают наоборот: переменные сценария действуют на юнитов с модтификатором на игнорирование и не действуют на юнитов без таких модификаторов
* 2 - модификаторы на игнорирование полностью отключены

~~С помощью %RACE%\_L\_IGNORANCE\_MODE можно изменить работу модификаторов, позволяющих игнорировать изменения характеристик юнита через переменные сценария в случае, когда рассчитывается эффект **привязанных к локациям** переменных~~

* ~~0 или отсутствие переменной - модификаторы на игнорирование работают как обычно~~
* ~~1 - модификаторы на игнорирование работают наоборот: переменные сценария действуют на юнитов с модтификатором на игнорирование и не действуют на юнитов без таких модификаторов~~
* ~~2 - модификаторы на игнорирование полностью отключены~~

#### Пример:

Какому-то из нейтратов добавлен модификатор, позволяющий игнорировать изменение инициативы через переменные сценария (или позволяющий игнорировать сразу все изменения).

Это значит, что на него не будет действовать NEUTRALS\_INITIATIVE\_MULTI.

Если не добавить в сценарий переменную NEUTRALS\_IGNORANCE\_MODE или задать ее равной нулю, то на этого нейтрала все еще не будет действовать NEUTRALS\_INITIATIVE\_MULTI.

Если же задать значение для NEUTRALS\_IGNORANCE\_MODE равную единице, то NEUTRALS\_INITIATIVE\_MULTI будет действовать на этого нейтрала, а на нейтралов без модификатора, позволяющего игнорировать изменения характеристик юнита через переменные сценария, не будет

Если задать NEUTRALS\_IGNORANCE\_MODE значение равное двум, то NEUTRALS\_INITIATIVE\_MULTI будет действовать на всех нейтралов независимо от наличия у них модификаторов на игнорирование

### Экономика

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

Для этого нужно добавить переменную следующего вида: %RACE%\_TIER\_%N%\_CITY\_INCOME

* %RACE% - раса
* %N% - уровень города (от 1 до 5, 0 - столица).

Если добавить переменную без указания расы (TIER\_%N%\_CITY\_INCOME), то доход будет увеличен независимо от расы (складывается с бонусом от %RACE%\_TIER\_%N%\_CITY\_INCOME)

#### Пример:

* LEGIONS\_TIER\_2\_CITY\_INCOME - дополнительный доход за каждый город второго уровня для Легионов Проклятых
* HORDES\_TIER\_0\_CITY\_INCOME - дополнительный доход от столицы для Орд Нежити
* TIER\_4\_CITY\_INCOME - дополнительный доход за каждый город четвертого уровня для всех рас

### Особые переменные

Как и переменные, влияющие на характеристики юнитов, могут быть локальными (см. Локальные переменные).

Пример локального варианта особой переменной;

GATE\_CLANS\_AI\_RANGECHEAT

Особые переменные
* Значение переменной больше нуля
* Указанная раса является играбельной и управляется ИИ
* Воины указанной расы находятся в бою против нейтрального отряда, нейтрального города или отряда в руинах

Эффект:
* Воины указанной расы атакуют все поле боя
* Противники с первичной атакой параличом, окаменением, ослаблением и замедлением всегда встают в блок
* Противники с исцелением всегда встают в блок
* Призывающие противники встают в блок, начиная со второго раунда

Проверить, работает ли переменная, можно с помощью такого скриптового условия:
require('targets\_filter')
-- в stackId указываем id отряда, для расы владельца которого нужно проверить состояние переменной
local stackId = 'S143KC0004'
return \_targets\_filter\_AI\_RangeCheat\_Enabled(scenario:getStack(stackId))