SkillSwapper for Sekiro
=======================

English
-------

SkillSwapper is a Sekiro dinput8 proxy mod that lets you switch Combat Arts
directly from a controller without opening the equipment menu.

Main features:
- Switch between up to four Combat Art slots with controller hotkeys.
- Assign Combat Arts to those slots from the in-game menu.
- Save assigned slots to an INI file.
- Suppress the original game input for the hotkey combination, so pressing the
  hotkey does not also jump, dodge, interact, etc.
- Optional fullscreen-compatible overlay notification when a skill is assigned.
- Optional dinput8 chainload support for running another dinput8 proxy mod.


Installation
------------

1. Put the mod DLL in the Sekiro game folder, next to sekiro.exe.
2. The DLL must be loaded as dinput8.dll, unless another loader or chainload
   setup is being used.
3. Put skillswapper.ini next to the DLL.

The game folder is usually:

    C:\Program Files (x86)\Steam\steamapps\common\Sekiro


Controls
--------

In normal gameplay:

    DPad Down + Y    switch to slot Y
    DPad Down + A    switch to slot A
    DPad Down + B    switch to slot B
    DPad Down + X    switch to slot X

In the equipment/skill menu:

    Select a Combat Art in the game's menu.
    Press DPad Down + Y/A/B/X.
    The currently selected Combat Art is saved to that slot.

If overlay is enabled, the mod shows:

    Skill assigned to DPad Down + Y

or the matching button for the selected slot.


Important Notes
---------------

- A slot value of 0 means the slot is empty.
- Empty slots do nothing when pressed.
- If the INI file contains a Combat Art from an old save, the mod checks whether
  the current character actually owns that Combat Art before equipping it.
- If the current save does not have the Combat Art, the hotkey is ignored.
- If the selected Combat Art is already equipped, the mod does nothing.
- Hotkey input is suppressed before reaching the game, so the button combination
  should not trigger the normal game action.


INI Configuration
-----------------

Example skillswapper.ini:

    [General]
    IsDebug=false

    [Slots]
    Y=0
    A=0
    B=0
    X=0

    [Overlay]
    Enable=1

    [Chainload]
    chainDInput8dllPath=


[General]
---------

    IsDebug=true
    IsDebug=false

Enables or disables SkillSwapper logging.

Default:

    IsDebug=false

When enabled, logs are written to:

    skillswapper_log.txt


[Slots]
-------

Each value is a Combat Art ID.

    Y=0
    A=0
    B=0
    X=0

Default value for every slot is 0.

You normally do not need to edit these values manually. Assign skills from the
in-game menu with DPad Down + Y/A/B/X and the mod will save them automatically.


[Overlay]
---------

    Enable=1
    Enable=0

Enables or disables the short on-screen assignment message.

Default:

    Enable=0


[Chainload]
-----------

    chainDInput8dllPath=

Optional path to another dinput8 proxy DLL.

If empty or missing, nothing is chainloaded.

Relative paths are resolved from the Sekiro game folder, next to this mod DLL.

Example:

    [Chainload]
    chainDInput8dllPath=randomizerAP\SekiroInjector.dll

Absolute paths are also supported:

    [Chainload]
    chainDInput8dllPath=C:\Path\To\OtherMod.dll

If the chainloaded DLL exports DirectInput8Create, SkillSwapper forwards the
game's DirectInput8Create call to that DLL and then installs its own hooks on
the returned DirectInput object.


Russian / Русский
-----------------

SkillSwapper - это dinput8 proxy мод для Sekiro, который позволяет переключать
Боевые искусства прямо с геймпада, без входа в меню экипировки.

Основные возможности:
- Переключение между четырьмя слотами Боевых искусств с геймпада.
- Назначение Боевых искусств в эти слоты прямо из игрового меню.
- Сохранение назначенных слотов в INI файл.
- Подавление оригинального ввода игры для хоткея, чтобы при нажатии комбинации
  персонаж не прыгал, не делал уклонение, не взаимодействовал и т.п.
- Опциональное всплывающее сообщение поверх игры, работает и в fullscreen.
- Опциональный chainload для запуска другого dinput8 proxy мода.


Установка
---------

1. Положите DLL мода в папку Sekiro рядом с sekiro.exe.
2. DLL должна загружаться как dinput8.dll, если вы не используете другой loader
   или chainload.
3. Положите skillswapper.ini рядом с DLL.

Обычно папка игры находится здесь:

    C:\Program Files (x86)\Steam\steamapps\common\Sekiro


Управление
----------

В обычной игре:

    DPad Down + Y    переключить на слот Y
    DPad Down + A    переключить на слот A
    DPad Down + B    переключить на слот B
    DPad Down + X    переключить на слот X

В меню экипировки/навыков:

    Выберите Боевое искусство в игровом меню.
    Нажмите DPad Down + Y/A/B/X.
    Текущий выбранный навык сохранится в выбранный слот.

Если включен overlay, мод покажет сообщение:

    Skill assigned to DPad Down + Y

или нужную кнопку выбранного слота.


Важные детали
-------------

- Значение слота 0 означает пустой слот.
- Пустой слот ничего не делает при нажатии.
- Если в INI остался Combat Art из старого прохождения, мод сначала проверяет,
  есть ли этот навык у текущего персонажа.
- Если в текущем сохранении такого навыка нет, хоткей игнорируется.
- Если выбранный навык уже экипирован, мод ничего не делает.
- Ввод хоткея подавляется до передачи в игру, поэтому комбинация не должна
  вызывать обычное действие кнопки в игре.


Настройки INI
-------------

Пример skillswapper.ini:

    [General]
    IsDebug=false

    [Slots]
    Y=0
    A=0
    B=0
    X=0

    [Overlay]
    Enable=1

    [Chainload]
    chainDInput8dllPath=


[General]
---------

    IsDebug=true
    IsDebug=false

Включает или выключает логирование SkillSwapper.

Значение по умолчанию:

    IsDebug=false

Если включено, лог пишется в файл:

    skillswapper_log.txt


[Slots]
-------

Каждое значение - это ID Боевого искусства.

    Y=0
    A=0
    B=0
    X=0

Значение по умолчанию для всех слотов - 0.

Обычно эти значения не нужно редактировать вручную. Назначайте навыки из
игрового меню через DPad Down + Y/A/B/X, и мод сам сохранит их в INI.


[Overlay]
---------

    Enable=1
    Enable=0

Включает или выключает короткое всплывающее сообщение при назначении навыка.

Значение по умолчанию:

    Enable=0


[Chainload]
-----------

    chainDInput8dllPath=

Опциональный путь к другой dinput8 proxy DLL.

Если значение пустое или отсутствует, ничего дополнительно не загружается.

Относительный путь считается от папки Sekiro, где лежит DLL этого мода.

Пример:

    [Chainload]
    chainDInput8dllPath=randomizerAP\SekiroInjector.dll

Абсолютные пути тоже поддерживаются:

    [Chainload]
    chainDInput8dllPath=C:\Path\To\OtherMod.dll

Если загруженная DLL экспортирует DirectInput8Create, SkillSwapper передает
вызов DirectInput8Create этой DLL, а потом устанавливает свои хуки на
возвращенный DirectInput объект.

