Описание мода «Loji DEX»
Loji DEX улучшает геймплей Age of History 2 путем правки игрового кода, цель проекта — создать базу для создания модификаций на системе Android. За основу был взят изначальный код The New Order.
Список вносимых изменений:
- Поддержка GIF-анимаций для главного меню, лидеров, событий и HOG.
- Можно переименновывать города.
- Улучшения альянсов/фракций.
- Система группировки подразделений.
- Система волонтеров.
- Ядерное оружие / Ядерная система.
- Шпаргалка по определению размера провинции.
- Обновленные читы.
- Извлечение данных в документы.
- Шаблоны TNO / TFR / RF
- Улучшен пользовательский интерфейс для копирования, вставки и многого другого.
Описание обновлений
16.07.26:
+ можно переименовывать города для получения результатов событий.
+ улучшен пользовательский интерфейс для копирования, вставки и многого другого.
18.07.26:
+ Суперсобитие отделено от событий.
+ Мир только с одной страной.
+ Исправление для клавиатуры.
21.08.26:
+ Шаблоны TFR/TNO.
+ Главное меню.
+ Экран загрузки.
Релиз (11.09.26):
+ Поддержка GIF-анимаций для главного меню, лидеров, событий и HOG.
+ 3× очка передвижения.
+ Улучшения альянсов/фракций:
Переименовать альянсы,
Изменить цвета альянса,
Вновь созданные фракции автоматически наследуют цвет лидера фракции.
+ Система группировки подразделений.
+ Система волонтеров.
+ Ядерное оружие / Ядерная система.
+ Шпаргалка по определению размера провинции.
+ Обновленные читы.
+ Извлечение данных в документы — спасибо @Noiru
Мини обновление (15.09.26):
+ В меню «Аудио» теперь есть строка поиска, и вы можете выбирать музыку напрямую.
+ В разделе «Редактирование провинций» и «Подключения» теперь больше кнопок, что упрощает редактирование карт.
+ Улучшена работа с альянсами. Теперь вместо названий стран будет отображаться название альянса.
+ Функция «Белый мир» была восстановлена. «Белый мир» теперь представляет собой отдельный результат, называемый «Peace All».
+ Система добровольцев исправлена. Подразделения больше не исчезают.
+ Исправлена проблема утечки/сбоя событий.
+ Сделан мод The Bozo Rises с кодом Loji DEX.
16.09.26: пользователь B𝚘𝚌𝚔𝚟𝚘𝚗 сделал мод The New Order с кодом Loji DEX.
29.09.26:
- Звуки юнитов:
— Как и в HOI4, у войск/дивизий теперь могут быть голосовые реплики, специфичные для каждой страны.
— Поддерживаются как базовые, так и TFR-пакеты голосовых команд.
— Вы также можете настроить собственные звуки юнитов с помощью Editor → Game Editor → Unit Sound Editor. - Управление событиями:
Теперь событиями можно свободно управлять во время игры, а также создавать новые результаты.
— Сменить флаг — цивилизация не требуется.
— Переменить лидера — Гражданские лица не требуются
— Формируемую цивилизацию, в которой может быть до 6 цивилизаций.
— Очистить войска. - Обновление информации о ядерной системе:
— Максимальное количество ядерного оружия: увеличено с 5 до 20.
— Максимальное количество реакторов: увеличено с 2 до 5.
— Теперь ИИ может располагать до 10 ядерными боеголовками. - Режим карты реактора:
Добавлен новый режим карты, значительно упрощающий поиск ядерных реакторов. - Обновление режима карты «Разделение»:
Теперь вы можете видеть свои подразделения на территории цивилизаций, куда вы отправляли добровольцев! - Кривая названий альянсов:
Графики названий альянсов были немного улучшены и теперь должны лучше отображаться на карте. - Также добавлены шаблоны экранов загрузки и событий Red Flood!
30.09.26:
— The Bozo Rises и The New Order перезалиты с новой версией Loji DEX.
— Добавлены еще 2 мода для быстрой установки: Red Flood и Brave New World.
Внимание: сначала запускайте тестовый сценарий, чтобы избежать ошибок.
5.10.26: в моде Brave New World для суперсобытий (не всех) добавили пользовательский интерфейс SE.
Руководство для модеров (ENG)
Loji Classes and Files Guideline
Installing event features with MT Manager on Android
This guide is based on the following donor APK:
D:\Gameapk\Input\The Millennium Shift_0.1.apk
SHA-256: 5D7E7C905FEA4CD4515BA53F0B38370F9308AEB2AF8AA24C642141CC615C35C3
The APK contains two DEX files:
classes.dex = game code and every feature covered by this guide
classes2.dex = MTDataFilesProvider and MTDataFilesWakeUpActivity
classes2.dex is an MT Manager integration component. It does not contain the game features described below.
Covered features:
- Rename City.
- Update Leader and Head of Government.
- Animated GIF leaders.
- National and base ideology titles, descriptions, and pictures.
- Peace out with one country.
- Android native UI keyboard.
- Separate Super Event renderer.
- Normal Event and Super Event selection.
- Unrestricted Trigger Another Event selection.
1. Prepare the files on Android
Install MT Manager and create a working directory:
/storage/emulated/0/LojiDexWork/
Put these files in it:
donor.apk = The Millennium Shift_0.1.apk containing the features
target.apk = the APK that will receive the features
target-backup.apk = an untouched backup
Use MT Manager in dual-panel mode:
- Open
target.apkin the left panel. - Open
donor.apkin the right panel. - Open
classes.dexand choose Dex Editor++. - Use class search to locate each class listed in this guide.
The game package is:
age.of.civilizations2.jakowski.lukasz
The corresponding Smali descriptor is:
Lage/of/civilizations2/jakowski/lukasz/ClassName;
Example:
Java name: Event_Outcome_RenameCity
Smali name: Lage/of/civilizations2/jakowski/lukasz/Event_Outcome_RenameCity;
Option A: replace the complete classes.dex
Use this option only when the target uses the same engine/base and should receive every donor feature.
- Extract
classes.dexfromdonor.apk. - Open
target.apkas an archive. - Replace the target
classes.dex. - Copy the required assets listed in this guide.
- Sign the APK.
This method overwrites every custom code change already present in the target DEX.
Option B: import and merge selected classes
Use this option when the target has its own code changes.
- Extract the donor
classes.dex. - Open the target
classes.dexin Dex Editor++. - Choose Add, Import classes from dex, or the equivalent command.
- Select the donor DEX.
- Import new classes.
- Back up existing classes before merging modified methods into them.
Do not replace central classes such as CFG, MenuManager, EventsManager, or Keyboard with versions from an unrelated engine fork. Merge the required blocks instead.
2. Dependency map
| Feature | New or primary classes | Existing classes that require merging |
|---|---|---|
| Rename City | Event_Outcome_RenameCity, Menu_CreateScenario_Events_Out_RenameCity, Menu_CreateScenario_Events_SelectCity | Menu_CreateScenario_Events_AddNewOutcome, EventsManager, MenuManager |
| Head of Government | HeadOfGovernmentSupport | Event_Outcome_Leader, leader selection menus, EventsManager, MenuManager, Menu_InGame_CivInfo$2, Ideologies_Manager, Event_Outcome_ChangeIdeology |
| Animated GIF leader | GifLeaderSupport, GifLeaderSupport$GifState | CFG, Menu_InGame_CivInfo_Stats, Menu_Civilization_Info_Stats, MenuElement_Hover_v2_Element_Type_Leader |
| Ideology content | HeadOfGovernmentSupport | Ideologies_Manager, Bundle.properties, assets/game/hog/ |
| White Peace | Event_Outcome_WhitePeace, Menu_CreateScenario_Events_Out_WhitePeace | Menu_CreateScenario_Events_AddNewOutcome, MenuManager |
| Native keyboard | NativeKeyboardBridge and its six inner classes | Keyboard.setVisible(Z) |
| Separate Super Event | Menu_InGame_Event_Super, $1, $2 | Event_GameData, MenuManager, assets/UI/events/ |
| Normal/Super picker | uses the Super Event classes | Event_GameData, Menu_CreateScenario_Events_Edit, MenuManager |
| Trigger Another Event | trigger outcome and event selection menus | Menu_CreateScenario_Events_AddNewOutcome, MenuManager |
3. Rename City
3.1 Import the classes
Import:
Lage/of/civilizations2/jakowski/lukasz/Event_Outcome_RenameCity;
Lage/of/civilizations2/jakowski/lukasz/Menu_CreateScenario_Events_Out_RenameCity;
Lage/of/civilizations2/jakowski/lukasz/Menu_CreateScenario_Events_SelectCity;
Merge the compatible blocks from:
Menu_CreateScenario_Events_AddNewOutcome
EventsManager
MenuManager
3.2 Required outcome fields
Event_Outcome_RenameCity must contain:
.field private applied:Z
.field private cityIndex:I
.field private newName:
