Кастомные объекты
Утилита поддерживает кастомные объекты в модулях и отдельной папке data/. В модулях разработчики могут создавать готовые способности, героев или целые расы. А разработчики карт, использующие эти модули, могут переопределять части параметров этих объектов.
Создание кастомных обьедков
Для обьедков используется формат lni из w3x2lni или обычный JSON. Вы можете создавать что-либо в соответствующих директориях в папке data/:

{
"abob" : {
"_parent": "Agyb",
"Name": "Тестовое имя",
"Health" : 12,
"list" : [
"test", "test2", "test3"
]
}
}
Преимуществом является возможность полностью рассортировать обьекты по папкам, а также возможность использовать наследование и форматирование полей.
Однако тот же JSON формат просто автоматически конвертируется в lni файл, так что в них доступно лишь то, что будет доступно в lni.
Для проверки корректности написанного файла вы можете использовать команду:
Если файл написан корректно, вы увидите вариант на .lni, который будет в итоге записан в карту, ежели в файле обнаружатся ошибки, команда укажет вам на них.
Проверка также будет происходить и при компиляции карты.
Наследование
kuniwar позволяет использовать наследование, чтобы сократить количество самоповторов в коде, а также упростить создание обьедков.

Для этого в любом обьекте может добавлено поле _customParent = 'айдивашегообьекта'. Все параметры, которых у вашего текущего обьекта нет, будут заимствованы из параметров обьекта с указанным айди. Может быть достаточно удобно, когда у вас много обьектов с большим количеством одинаковых параметров.
Форматирование
Если вам, также как и мне, не нравится постоянное редактирование описаний обьедков, вонючий варкрафтавский хекс и тому подобное, вы можете воспользоваться форматированием строковых полей.
Цвета
Вы можете задействовать стандартные цвета для форматирования текста, поместив нужный текст в следующую конструкцию:
Для примера:

На данный момент доступны HEX (c=00FFAA), RGB (c=rgb(12, 100, 255)) и следующие заготовленные цвета:
- black: (000000)
- white: (FFFFFF)
- red: (FF0000)
- green: (00FF00)
- blue: (0000FF)
- yellow: (FFFF00)
- cyan: (00FFFF)
- magenta: (FF00FF)
- gray: (808080)
- orange: (FFA500)
- purple: (800080)
- pink: (FFC0CB)
- brown: (A52A2A)
- navy: (000080)
- teal: (008080)
- lime: (00FF00)
Все они автоматически преобразовываются в варкрафтовский хекс при компиляции карты.
Русские символы
Как известно, русские символы занимают больше места и бывает возникают проблемы с тем, что у вас просто не влазит описание в строку. Многие частично решают эту проблему тем, что незаметно заменяют в описаниях русские символы на схожие английские. kuniwar делает то же самое, но автоматически. Нет нужды использовать сторонние программы, поскольку все кастомные обьедки изкаропки это поддерживают.
Вставка полей
В стандартном форматировании варкрафта есть возможность вставлять в текстовые поля параметры из других обьедков, например: <Abil,DataA> и тому подобное. В kuniwar вы можете использовать похожий конструкт - {f=Abil.DataA}.
Кастомные поля
Структура файлов позволяет добавлять кастомные поля, которые в дальнейшем можно вставлять в текст или использовать в коде карты, о чем речь пойдет ниже. Например:
Перезапись полей
Представим ситуацию, вы добавили в свой проект модуль с кастомной благодатью, всё четко, сразу абилка есть, но, к примеру хотите поменять стоимость маны у спела. Как же это сделать?
В проекте есть отдельная папка data, с различными папками под разные объекты. К примеру, присутствует папка abilities, в которой вы можете создавать свои способности не прибегая к редактированию самой карты. В этой же папке может быть создана папка overwrite, в которой уже будут хранится переопределения.
Пример .ini файла в модуле:
[SHhb]
_parent = "ANcl"
-- Cooldown
Cool = 1.0
-- Mana Cost
Cost = 0
-- Follow Through Time
DataA = 0.01
-- Target Type
DataB = 1
-- Options
DataC = 1
-- Art Duration
DataD = 0.01
-- Disable Other Abilities
DataE = 0
-- Base Order ID
DataF = "corrosivebreath"
-- Editor Suffix
EditorSuffix = "[Paladin]"
-- Name
Name = "Holybolt"
-- Tooltip - Normal
Tip = "Holybolt"
-- Hero Ability
hero = 0
-- Levels
levels = 1
-- Targets Allowed
targs = "enemies,friend,notself,organic,allies"
Предположим, что я хочу заменить стоимость маны, ведь она тут ваще нулевая. Для этого мне необходимо создать файл data/abilities/overwrite/название.ini. Название файла ни на что не влияет и может быть любым.
Файл будет содержать следующее:
Таким образом в объекте с айди SHhb заменится параметр Cost с 0 на 100. При компилировании утилита также предупредит вас о том, что происходит замена.
Подсказка
Комментарии (строки начинающиеся на --) использовать необязательно, это лишь пометка для вас, чтобы было легче ориентироваться.
Генерация файлов с обьектами
kuniwar позволяет автогенерировать файлы с обьектами: