├── RiseQuestEditor ├── Assets │ ├── RampageCategory.json │ ├── SwapCondition.json │ ├── SwapExecType.json │ ├── QuestClearBgmTypes.json │ ├── SwapStopType.json │ ├── NandoYuragi.json │ ├── EnemyLevel.json │ ├── Icons │ │ ├── em001_00_IAM.png │ │ ├── em001_02_IAM.png │ │ ├── em001_07_IAM.png │ │ ├── em002_00_IAM.png │ │ ├── em002_02_IAM.png │ │ ├── em002_07_IAM.png │ │ ├── em003_00_IAM.png │ │ ├── em004_00_IAM.png │ │ ├── em007_00_IAM.png │ │ ├── em007_07_IAM.png │ │ ├── em019_00_IAM.png │ │ ├── em020_00_IAM.png │ │ ├── em023_00_IAM.png │ │ ├── em023_05_IAM.png │ │ ├── em024_00_IAM.png │ │ ├── em025_00_IAM.png │ │ ├── em027_00_IAM.png │ │ ├── em032_00_IAM.png │ │ ├── em037_00_IAM.png │ │ ├── em037_02_IAM.png │ │ ├── em042_00_IAM.png │ │ ├── em044_00_IAM.png │ │ ├── em047_00_IAM.png │ │ ├── em054_00_IAM.png │ │ ├── em057_00_IAM.png │ │ ├── em057_07_IAM.png │ │ ├── em058_00_IAM.png │ │ ├── em059_00_IAM.png │ │ ├── em060_00_IAM.png │ │ ├── em060_07_IAM.png │ │ ├── em061_00_IAM.png │ │ ├── em062_00_IAM.png │ │ ├── em071_00_IAM.png │ │ ├── em071_05_IAM.png │ │ ├── em072_00_IAM.png │ │ ├── em077_00_IAM.png │ │ ├── em081_00_IAM.png │ │ ├── em082_00_IAM.png │ │ ├── em082_02_IAM.png │ │ ├── em082_07_IAM.png │ │ ├── em086_00_IAM.png │ │ ├── em086_05_IAM.png │ │ ├── em086_08_IAM.png │ │ ├── em089_00_IAM.png │ │ ├── em089_05_IAM.png │ │ ├── em090_00_IAM.png │ │ ├── em090_01_IAM.png │ │ ├── em091_00_IAM.png │ │ ├── em092_00_IAM.png │ │ ├── em093_00_IAM.png │ │ ├── em093_01_IAM.png │ │ ├── em094_00_IAM.png │ │ ├── em094_01_IAM.png │ │ ├── em095_00_IAM.png │ │ ├── em095_01_IAM.png │ │ ├── em096_00_IAM.png │ │ ├── em097_00_IAM.png │ │ ├── em098_00_IAM.png │ │ ├── em099_00_IAM.png │ │ ├── em099_05_IAM.png │ │ ├── em100_00_IAM.png │ │ ├── em102_00_IAM.png │ │ ├── em107_00_IAM.png │ │ ├── em108_00_IAM.png │ │ ├── em109_00_IAM.png │ │ ├── em118_00_IAM.png │ │ ├── em118_05_IAM.png │ │ ├── em124_00_IAM.png │ │ ├── em132_00_IAM.png │ │ ├── em132_05_IAM.png │ │ ├── em133_00_IAM.png │ │ ├── em134_00_IAM.png │ │ ├── em135_00_IAM.png │ │ ├── em136_00_IAM.png │ │ ├── em136_01_IAM.png │ │ ├── em_delivery_IAM.png │ │ ├── em_tutorial_IAM.png │ │ ├── ems003_00_IAM.png │ │ ├── ems005_00_IAM.png │ │ ├── ems006_00_IAM.png │ │ ├── ems007_00_IAM.png │ │ ├── ems008_00_IAM.png │ │ ├── ems009_00_IAM.png │ │ ├── ems013_00_IAM.png │ │ ├── ems014_00_IAM.png │ │ ├── ems016_00_IAM.png │ │ ├── ems019_00_IAM.png │ │ ├── ems020_00_IAM.png │ │ ├── ems021_00_IAM.png │ │ ├── ems025_00_IAM.png │ │ ├── ems026_00_IAM.png │ │ ├── ems027_00_IAM.png │ │ ├── ems029_00_IAM.png │ │ ├── ems034_00_IAM.png │ │ ├── ems035_00_IAM.png │ │ ├── ems036_00_IAM.png │ │ ├── ems038_00_IAM.png │ │ ├── ems039_00_IAM.png │ │ ├── ems040_00_IAM.png │ │ ├── ems041_00_IAM.png │ │ ├── ems042_00_IAM.png │ │ ├── ems043_00_IAM.png │ │ ├── ems044_00_IAM.png │ │ ├── ems049_00_IAM.png │ │ ├── ems051_00_IAM.png │ │ ├── ems051_05_IAM.png │ │ ├── ems090_00_IAM.png │ │ ├── ems091_00_IAM.png │ │ ├── ems092_00_IAM.png │ │ ├── ems092_01_IAM.png │ │ ├── ems093_00_IAM.png │ │ ├── ems094_00_IAM.png │ │ ├── em_exploration_IAM.png │ │ └── em_unidentified_IAM.png │ ├── QuestLevel.json │ ├── IndividualType.json │ ├── BattleBgmTypes.json │ ├── Map.json │ ├── SpawnCondition.json │ ├── QuestCondition.json │ ├── QuestObjective.json │ ├── Languages.json │ ├── EmsSetNo.json │ ├── Monsters.json │ └── MonsterIcons.json ├── dSR3vpg.ico ├── dSR3vpg.png ├── App.xaml ├── AssemblyInfo.cs ├── App.xaml.cs ├── Properties │ ├── Resources.Designer.cs │ └── Resources.resx ├── QuestData.cs ├── RiseQuestEditor.csproj └── EnumHelper.cs ├── RiseSpawnEditor ├── em_exploration_IAM.ico ├── em_exploration_IAM.png ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── RiseSpawnEditor.csproj ├── CustomSpawn.cs ├── EnumHelper.cs └── MainWindow.xaml ├── RiseQuestLoader ├── rendering │ ├── shared.hpp │ ├── d3d11.hpp │ ├── d3d12.hpp │ ├── d3d11.cpp │ └── d3d12.cpp ├── Plugin.h ├── notes.txt ├── .clang-format ├── FunctionHook.h ├── QuestExporter.h ├── FunctionHook.cpp ├── imgui │ ├── imgui_impl_dx11.h │ ├── imgui_impl_dx12.h │ ├── imgui_impl_win32.h │ └── re2_imconfig.hpp ├── Language.h ├── OutputDebugStringBuf.h ├── .clang-tidy ├── Quest.h ├── RiseQuestLoader.vcxproj.filters ├── reframework │ ├── utility.h │ └── utility.cpp ├── main.cpp ├── Quest.json └── RiseQuestLoader.vcxproj ├── README.md ├── .gitattributes ├── RiseQuestLoader.sln └── .gitignore /RiseQuestEditor/Assets/RampageCategory.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "Normal", 3 | "1": "Apex" 4 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/SwapCondition.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "None", 3 | "1": "Quest Timer" 4 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/SwapExecType.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "None", 3 | "1": "Free Extra" 4 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/QuestClearBgmTypes.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "Default", 3 | "1": "SpClear01" 4 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/SwapStopType.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "None", 3 | "1": "Monster Health %" 4 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/NandoYuragi.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "False", 3 | "1": "True 1", 4 | "2": "True 2" 5 | } -------------------------------------------------------------------------------- /RiseQuestEditor/dSR3vpg.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/dSR3vpg.ico -------------------------------------------------------------------------------- /RiseQuestEditor/dSR3vpg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/dSR3vpg.png -------------------------------------------------------------------------------- /RiseSpawnEditor/em_exploration_IAM.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseSpawnEditor/em_exploration_IAM.ico -------------------------------------------------------------------------------- /RiseSpawnEditor/em_exploration_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseSpawnEditor/em_exploration_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/EnemyLevel.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "Village", 3 | "1": "Low Rank", 4 | "2": "High Rank", 5 | "3": "Master Rank" 6 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em001_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em001_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em001_02_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em001_02_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em001_07_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em001_07_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em002_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em002_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em002_02_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em002_02_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em002_07_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em002_07_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em003_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em003_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em004_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em004_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em007_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em007_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em007_07_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em007_07_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em019_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em019_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em020_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em020_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em023_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em023_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em023_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em023_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em024_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em024_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em025_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em025_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em027_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em027_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em032_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em032_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em037_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em037_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em037_02_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em037_02_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em042_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em042_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em044_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em044_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em047_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em047_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em054_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em054_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em057_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em057_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em057_07_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em057_07_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em058_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em058_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em059_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em059_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em060_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em060_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em060_07_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em060_07_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em061_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em061_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em062_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em062_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em071_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em071_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em071_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em071_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em072_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em072_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em077_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em077_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em081_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em081_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em082_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em082_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em082_02_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em082_02_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em082_07_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em082_07_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em086_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em086_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em086_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em086_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em086_08_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em086_08_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em089_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em089_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em089_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em089_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em090_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em090_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em090_01_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em090_01_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em091_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em091_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em092_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em092_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em093_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em093_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em093_01_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em093_01_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em094_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em094_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em094_01_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em094_01_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em095_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em095_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em095_01_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em095_01_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em096_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em096_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em097_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em097_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em098_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em098_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em099_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em099_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em099_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em099_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em100_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em100_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em102_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em102_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em107_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em107_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em108_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em108_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em109_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em109_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em118_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em118_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em118_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em118_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em124_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em124_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em132_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em132_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em132_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em132_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em133_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em133_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em134_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em134_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em135_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em135_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em136_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em136_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em136_01_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em136_01_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em_delivery_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em_delivery_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em_tutorial_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em_tutorial_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems003_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems003_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems005_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems005_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems006_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems006_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems007_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems007_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems008_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems008_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems009_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems009_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems013_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems013_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems014_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems014_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems016_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems016_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems019_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems019_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems020_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems020_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems021_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems021_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems025_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems025_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems026_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems026_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems027_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems027_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems029_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems029_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems034_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems034_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems035_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems035_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems036_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems036_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems038_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems038_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems039_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems039_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems040_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems040_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems041_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems041_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems042_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems042_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems043_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems043_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems044_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems044_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems049_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems049_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems051_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems051_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems051_05_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems051_05_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems090_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems090_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems091_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems091_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems092_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems092_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems092_01_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems092_01_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems093_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems093_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/ems094_00_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/ems094_00_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em_exploration_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em_exploration_IAM.png -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Icons/em_unidentified_IAM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Fexty12573/RiseQuestLoader/HEAD/RiseQuestEditor/Assets/Icons/em_unidentified_IAM.png -------------------------------------------------------------------------------- /RiseQuestLoader/rendering/shared.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | template using ComPtr = Microsoft::WRL::ComPtr; -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/QuestLevel.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "1★", 3 | "1": "2★", 4 | "2": "3★", 5 | "3": "4★", 6 | "4": "5★", 7 | "5": "6★", 8 | "6": "7★", 9 | "7": "Apex" 10 | } 11 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/IndividualType.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "Normal", 3 | "1": "Afflicted", 4 | "2": "Risen (Level 0)", 5 | "3": "Risen (Level 1)", 6 | "4": "Risen (Level 2)", 7 | "5": "Risen (Level 3)" 8 | } 9 | -------------------------------------------------------------------------------- /RiseQuestLoader/Plugin.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "imgui/font_robotomedium.hpp" 4 | #include "reframework/API.hpp" 5 | 6 | 7 | extern "C" lua_State* g_lua; 8 | inline bool g_initialized = false; 9 | 10 | void set_imgui_style() noexcept; 11 | void redirect_cout(); 12 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/BattleBgmTypes.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "Default", 3 | "1": "Stories 2 (Arena Only)", 4 | "2": "Okami", 5 | "3": "Street Fighter", 6 | "4": "Mega Man (Arena Only)", 7 | "5": "Ghosts 'n Goblins", 8 | "6": "Sonic: City Escape", 9 | "7": "Sonic: Live and Learn", 10 | "8": "Tense Ambience" 11 | } -------------------------------------------------------------------------------- /RiseQuestEditor/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /RiseSpawnEditor/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /RiseSpawnEditor/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace RiseSpawnEditor 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /RiseQuestLoader/notes.txt: -------------------------------------------------------------------------------- 1 | so this 100 HR points is actual 100 HR points, but 80% MR points, so 80 2 | 3 | couldn't find my quest in the quest list, so changed it from 5* to 4* after leaving the menu, loaded up 5* quests again and crashed 4 | 5 | 6 | 7 | @Silvris#5472 Regarding the text tags, there's a lot of them (31 in total), but I don't have the exact tags for them so idk. 8 | 9 | TODO: 10 | - make quest time a dropdown 11 | - -------------------------------------------------------------------------------- /RiseQuestLoader/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: LLVM 3 | IndentWidth: 4 4 | ColumnLimit: 140 5 | --- 6 | Language: Cpp 7 | AccessModifierOffset: -4 8 | AlignAfterOpenBracket: DontAlign 9 | AlignEscapedNewlines: Left 10 | AllowShortFunctionsOnASingleLine: InlineOnly 11 | ConstructorInitializerAllOnOneLineOrOnePerLine: false 12 | DerivePointerAlignment: false 13 | PointerAlignment: Left 14 | BreakConstructorInitializers: BeforeComma 15 | ... 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RiseQuestLoader 2 | 3 | A quest editor and loader for Monster Hunter Rise. 4 | 5 | ## Building 6 | Install the required libraries with vcpkg. 7 | ``` 8 | $ ./vcpkg install imgui minhook fmt nlohmann-json --triplet=x64-windows-static 9 | ``` 10 | 11 | Open the solution in Visual Studio, select x64 Release, and build. 12 | 13 | ## Usage 14 | Usage instructions can be found on the [Modding Wiki](https://github.com/mhvuze/MonsterHunterRiseModding/wiki/Custom-Quest-Editing). 15 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Map.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "Stage_Name_00", 3 | "1": "Shrine Ruins", 4 | "2": "Sandy Plains", 5 | "3": "Flooded Forest", 6 | "4": "Frost Caverns", 7 | "5": "Lava Caverns", 8 | "6": "Stage_Name_06", 9 | "7": "Red Stronghold", 10 | "8": "Stage_Name_08", 11 | "9": "Infernal Springs", 12 | "10": "Arena", 13 | "11": "Coral Palace", 14 | "12": "Jungle", 15 | "13": "Citadel", 16 | "14": "Forlorn Arena", 17 | "15": "Yawning Abyss", 18 | "16": "Stage_Name_42" 19 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/SpawnCondition.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "None", 3 | "1": "Spawn Always", 4 | "2": "Slot 1 Free", 5 | "3": "Slot 2 Free", 6 | "4": "Slot 3 Free", 7 | "5": "Timer 1", 8 | "6": "Timer 2", 9 | "7": "Monster 1 HP %", 10 | "8": "Monster 2 HP %", 11 | "9": "Monster 3 HP %", 12 | "10": "Monster 4 HP %", 13 | "11": "Monster 5 HP %", 14 | "12": "HP Monster x1", 15 | "13": "HP Monster x2", 16 | "14": "Spawn Random %", 17 | "15": "Swap Random %", 18 | "16": "FSM Controlled", 19 | "17": "Entry Time" 20 | } -------------------------------------------------------------------------------- /RiseQuestLoader/rendering/d3d11.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "shared.hpp" 5 | 6 | struct D3D11 { 7 | ComPtr blank_rt{}; 8 | ComPtr rt{}; 9 | ComPtr blank_rt_rtv{}; 10 | ComPtr rt_rtv{}; 11 | ComPtr rt_srv{}; 12 | uint32_t rt_width{}; 13 | uint32_t rt_height{}; 14 | ComPtr bb_rtv{}; 15 | 16 | bool initialize(); 17 | void render_imgui(); 18 | }; 19 | 20 | extern D3D11 g_d3d11; -------------------------------------------------------------------------------- /RiseQuestEditor/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /RiseSpawnEditor/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/QuestCondition.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "None", 3 | "1": "2 Player", 4 | "2": "HR2", 5 | "3": "HR3", 6 | "4": "HR4", 7 | "5": "HR5", 8 | "6": "HR6", 9 | "7": "HR7", 10 | "8": "HR8", 11 | "9": "HR20", 12 | "10": "HR30", 13 | "11": "HR40", 14 | "12": "HR45", 15 | "13": "HR50", 16 | "14": "HR90", 17 | "15": "HR100", 18 | "16": "MR1", 19 | "17": "MR2", 20 | "18": "MR3", 21 | "19": "MR4", 22 | "20": "MR5", 23 | "21": "MR6", 24 | "22": "MR10", 25 | "23": "MR20", 26 | "24": "MR30", 27 | "25": "MR40", 28 | "26": "MR50", 29 | "27": "MR60", 30 | "28": "MR100", 31 | "29": "1 Player" 32 | } -------------------------------------------------------------------------------- /RiseQuestLoader/FunctionHook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace utility { 4 | 5 | class FunctionHook { 6 | public: 7 | FunctionHook(void* target, void* hook); 8 | 9 | void create() const; 10 | void destroy() const; 11 | 12 | [[nodiscard]] bool is_valid() const { return m_original != nullptr; } 13 | 14 | template CallableT get_original() const { return static_cast(m_original); } 15 | template Ret call_original(Args... args) { return get_original()(args...); } 16 | 17 | private: 18 | void* m_target; 19 | void* m_original; 20 | void* m_hook; 21 | 22 | static bool s_minhook_initialized; 23 | }; 24 | 25 | } 26 | 27 | -------------------------------------------------------------------------------- /RiseQuestEditor/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace RiseQuestEditor 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | private void Application_Startup(object sender, StartupEventArgs e) 17 | { 18 | MainWindow window = new(); 19 | 20 | if (e.Args.Length > 0) 21 | { 22 | window.LoadFile(e.Args[0]); 23 | } 24 | 25 | window.Show(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/QuestObjective.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "None", 3 | "1": "Gather", 4 | "2": "Hunt", 5 | "3": "Kill", 6 | "4": "Capture", 7 | "5": "AllMainEnemy", 8 | "6": "Hunt-a-thon", 9 | "7": "FinalBarrierDefense", 10 | "8": "FortLevelUp", 11 | "9": "PlayerDown", 12 | "10": "FinalBoss", 13 | "11": "HuntingMachine", 14 | "12": "DropItem", 15 | "13": "EmStun", 16 | "14": "EmElement", 17 | "15": "EmCondition", 18 | "16": "EmCnt_Weapon", 19 | "17": "EmCnt_HmBallista", 20 | "18": "EmCnt_HmCannon", 21 | "19": "EmCnt_HmGatling", 22 | "20": "EmCnt_HmTrap", 23 | "21": "EmCnt_HmFlameThrower", 24 | "22": "EmCnt_HmNpc", 25 | "23": "EmCnt_HmDragnator", 26 | "24": "ExtraEmRunaway" 27 | } -------------------------------------------------------------------------------- /RiseSpawnEditor/RiseSpawnEditor.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net6.0-windows 6 | enable 7 | true 8 | em_exploration_IAM.ico 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /RiseQuestLoader/QuestExporter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Language.h" 4 | #include "Quest.h" 5 | 6 | #include 7 | #include 8 | 9 | #include "reframework/API.hpp" 10 | #include "reframework/utility.h" 11 | 12 | 13 | class QuestExporter { 14 | public: 15 | QuestExporter(); 16 | 17 | bool initialize(); 18 | 19 | [[nodiscard]] nlohmann::ordered_json export_quest(int32_t quest_id); 20 | [[nodiscard]] std::vector export_all_quests(); 21 | 22 | [[nodiscard]] auto get_quest_manager() const { return m_quest_manager; } 23 | [[nodiscard]] auto get_message_manager() const { return m_message_manager; } 24 | [[nodiscard]] auto get_override_language() const { return m_override_language; } 25 | 26 | private: 27 | bool m_initialized = false; 28 | reframework::API::ManagedObject* m_quest_manager{}; 29 | reframework::API::ManagedObject* m_message_manager{}; 30 | reframework::API::Method* m_get_quest_data{}; 31 | 32 | GameLanguage m_override_language{GameLanguage::NONE}; 33 | }; 34 | 35 | -------------------------------------------------------------------------------- /RiseQuestLoader/FunctionHook.cpp: -------------------------------------------------------------------------------- 1 | #include "FunctionHook.h" 2 | #include "Plugin.h" 3 | 4 | #include 5 | 6 | bool utility::FunctionHook::s_minhook_initialized = false; 7 | 8 | utility::FunctionHook::FunctionHook(void* target, void* hook) 9 | : m_target(target) 10 | , m_original(nullptr) 11 | , m_hook(hook) { 12 | 13 | const auto& api = reframework::API::get(); 14 | if (!s_minhook_initialized && MH_Initialize() == MH_OK) { 15 | s_minhook_initialized = true; 16 | } 17 | 18 | if (MH_CreateHook(target, hook, &m_original) != MH_OK) { 19 | api->log_error("Failed to create hook %p -> %p", target, hook); 20 | } 21 | } 22 | 23 | void utility::FunctionHook::create() const { 24 | if (!is_valid()) { 25 | return; 26 | } 27 | 28 | const auto& api = reframework::API::get(); 29 | if (MH_EnableHook(m_target) != MH_OK) { 30 | api->log_error("Failed to enable hook %p -> %p", m_target, m_hook); 31 | } 32 | } 33 | 34 | void utility::FunctionHook::destroy() const { 35 | if (!is_valid()) { 36 | return; 37 | } 38 | 39 | const auto& api = reframework::API::get(); 40 | if (MH_DisableHook(m_target) != MH_OK) { 41 | api->log_error("Failed to disable hook %p -> %p", m_target, m_hook); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /RiseQuestLoader/imgui/imgui_impl_dx11.h: -------------------------------------------------------------------------------- 1 | // dear imgui: Renderer Backend for DirectX11 2 | // This needs to be used along with a Platform Backend (e.g. Win32) 3 | 4 | // Implemented features: 5 | // [X] Renderer: User texture binding. Use 'ID3D11ShaderResourceView*' as ImTextureID. Read the FAQ about ImTextureID! 6 | // [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices. 7 | 8 | // You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 9 | // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. 10 | // Read online: https://github.com/ocornut/imgui/tree/master/docs 11 | 12 | #pragma once 13 | #include "imgui.h" // IMGUI_IMPL_API 14 | 15 | struct ID3D11Device; 16 | struct ID3D11DeviceContext; 17 | 18 | IMGUI_IMPL_API bool ImGui_ImplDX11_Init(ID3D11Device* device, ID3D11DeviceContext* device_context); 19 | IMGUI_IMPL_API void ImGui_ImplDX11_Shutdown(); 20 | IMGUI_IMPL_API void ImGui_ImplDX11_NewFrame(); 21 | IMGUI_IMPL_API void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data); 22 | 23 | // Use if you want to reset your rendering device without losing Dear ImGui state. 24 | IMGUI_IMPL_API void ImGui_ImplDX11_InvalidateDeviceObjects(); 25 | IMGUI_IMPL_API bool ImGui_ImplDX11_CreateDeviceObjects(); -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Languages.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Id": 0, 4 | "Identifier": "JPN", 5 | "Name": "Japanese" 6 | }, 7 | { 8 | "Id": 1, 9 | "Identifier": "ENG", 10 | "Name": "English" 11 | }, 12 | { 13 | "Id": 2, 14 | "Identifier": "FRE", 15 | "Name": "French" 16 | }, 17 | { 18 | "Id": 3, 19 | "Identifier": "ITA", 20 | "Name": "Italian" 21 | }, 22 | { 23 | "Id": 4, 24 | "Identifier": "GER", 25 | "Name": "German" 26 | }, 27 | { 28 | "Id": 5, 29 | "Identifier": "SPA", 30 | "Name": "Spanish" 31 | }, 32 | { 33 | "Id": 6, 34 | "Identifier": "RUS", 35 | "Name": "Russian" 36 | }, 37 | { 38 | "Id": 7, 39 | "Identifier": "POL", 40 | "Name": "Polish" 41 | }, 42 | { 43 | "Id": 10, 44 | "Identifier": "POR", 45 | "Name": "Portuguese" 46 | }, 47 | { 48 | "Id": 11, 49 | "Identifier": "KOR", 50 | "Name": "Korean" 51 | }, 52 | { 53 | "Id": 12, 54 | "Identifier": "ZHT", 55 | "Name": "Chinese (Traditional)" 56 | }, 57 | { 58 | "Id": 13, 59 | "Identifier": "ZHS", 60 | "Name": "Chinese (Simplified)" 61 | }, 62 | { 63 | "Id": 21, 64 | "Identifier": "ARA", 65 | "Name": "Arabic" 66 | } 67 | ] -------------------------------------------------------------------------------- /RiseQuestLoader/Language.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | enum class GameLanguage : int32_t { 8 | NONE = -1, 9 | JPN = 0, 10 | ENG = 1, 11 | FRE = 2, 12 | ITA = 3, 13 | GER = 4, 14 | SPA = 5, 15 | RUS = 6, 16 | POL = 7, 17 | POR = 10, 18 | KOR = 11, 19 | ZHT = 12, 20 | ZHS = 13, 21 | ARA = 21 22 | }; 23 | 24 | namespace language { 25 | 26 | const inline std::map s_language_identifiers = { 27 | { GameLanguage::NONE, "N/A" }, 28 | { GameLanguage::JPN, "JPN" }, 29 | { GameLanguage::ENG, "ENG" }, 30 | { GameLanguage::FRE, "FRE" }, 31 | { GameLanguage::ITA, "ITA" }, 32 | { GameLanguage::GER, "GER" }, 33 | { GameLanguage::SPA, "SPA" }, 34 | { GameLanguage::RUS, "RUS" }, 35 | { GameLanguage::POL, "POL" }, 36 | { GameLanguage::POR, "POR" }, 37 | { GameLanguage::KOR, "KOR" }, 38 | { GameLanguage::ZHT, "ZHT" }, 39 | { GameLanguage::ZHS, "ZHS" }, 40 | { GameLanguage::ARA, "ARA" } 41 | }; 42 | 43 | inline std::string_view get_language_identifier(GameLanguage language) { 44 | return s_language_identifiers.at(language); 45 | } 46 | 47 | inline GameLanguage get_language(std::string_view identifier) { 48 | for (const auto& [lang, id] : s_language_identifiers) { 49 | if (id == identifier) { 50 | return lang; 51 | } 52 | } 53 | 54 | return GameLanguage::NONE; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /RiseSpawnEditor/CustomSpawn.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace RiseSpawnEditor 8 | { 9 | public class CustomSpawn 10 | { 11 | public int QuestID { get; set; } 12 | public int Map { get; set; } 13 | public List Setters { get; set; } 14 | 15 | public CustomSpawn() 16 | { 17 | QuestID = -1; 18 | Map = 0; 19 | Setters = new List(); 20 | } 21 | } 22 | 23 | public class SpawnSetter 24 | { 25 | public string? SetName; 26 | public IndividualSpawn[] Spawns { get; set; } 27 | 28 | public SpawnSetter(string name = "") 29 | { 30 | SetName = name; 31 | Spawns = new IndividualSpawn[3] 32 | { 33 | new IndividualSpawn(), 34 | new IndividualSpawn(), 35 | new IndividualSpawn() 36 | }; 37 | } 38 | } 39 | 40 | public class IndividualSpawn 41 | { 42 | public class Position 43 | { 44 | public double X { get; set; } 45 | public double Y { get; set; } 46 | public double Z { get; set; } 47 | 48 | public Position() 49 | { 50 | X = Y = Z = 0.0; 51 | } 52 | } 53 | 54 | public int Chance { get; set; } 55 | public int Area { get; set; } 56 | public int SubSpawn { get; set; } 57 | public Position? Coordinates { get; set; } 58 | 59 | public IndividualSpawn() 60 | { 61 | Chance = 0; 62 | Area = 0; 63 | SubSpawn = 0; 64 | Coordinates = null; 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /RiseQuestLoader/rendering/d3d12.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "shared.hpp" 7 | 8 | struct D3D12 { 9 | ComPtr cmd_allocator{}; 10 | ComPtr cmd_list{}; 11 | 12 | enum class RTV : int{ 13 | BACKBUFFER_0, 14 | BACKBUFFER_1, 15 | BACKBUFFER_2, 16 | BACKBUFFER_3, 17 | IMGUI, 18 | BLANK, 19 | COUNT, 20 | }; 21 | 22 | enum class SRV : int { 23 | IMGUI_FONT, 24 | IMGUI, 25 | BLANK, 26 | COUNT 27 | }; 28 | 29 | ComPtr rtv_desc_heap{}; 30 | ComPtr srv_desc_heap{}; 31 | ComPtr rts[(int)RTV::COUNT]{}; 32 | 33 | auto& get_rt(RTV rtv) { return rts[(int)rtv]; } 34 | 35 | D3D12_CPU_DESCRIPTOR_HANDLE get_cpu_rtv(ID3D12Device* device, RTV rtv) { 36 | return {rtv_desc_heap->GetCPUDescriptorHandleForHeapStart().ptr + 37 | (int)rtv * device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV)}; 38 | } 39 | 40 | D3D12_CPU_DESCRIPTOR_HANDLE get_cpu_srv(ID3D12Device* device, SRV srv) { 41 | return {srv_desc_heap->GetCPUDescriptorHandleForHeapStart().ptr + 42 | (int)srv * device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV)}; 43 | } 44 | 45 | D3D12_GPU_DESCRIPTOR_HANDLE get_gpu_srv(ID3D12Device* device, SRV srv) { 46 | return {srv_desc_heap->GetGPUDescriptorHandleForHeapStart().ptr + 47 | (int)srv * device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV)}; 48 | } 49 | 50 | uint32_t rt_width{}; 51 | uint32_t rt_height{}; 52 | 53 | bool initialize(); 54 | void render_imgui(); 55 | }; 56 | 57 | extern D3D12 g_d3d12; 58 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/EmsSetNo.json: -------------------------------------------------------------------------------- 1 | { 2 | "0": "ems_set_none", 3 | "1": "m01_ems_set_base", 4 | "2": "m01_ems_set_tour", 5 | "3": "m01_ems_set_tutorial", 6 | "4": "m02_ems_set_base", 7 | "5": "m02_ems_set_tour", 8 | "6": "m02_ems_set_QN000313", 9 | "7": "m02_ems_set_QN000412", 10 | "8": "m02_ems_set_QN010212", 11 | "9": "m02_ems_set_QN010516", 12 | "10": "m03_ems_set_base", 13 | "11": "m03_ems_set_tour", 14 | "12": "m03_ems_set_QN000315", 15 | "13": "m03_ems_set_QN010213", 16 | "14": "m03_ems_set_QN010517", 17 | "15": "m04_ems_set_base", 18 | "16": "m04_ems_set_tour", 19 | "17": "m04_ems_set_QN000205", 20 | "18": "m04_ems_set_QN000209", 21 | "19": "m04_ems_set_QN010112", 22 | "20": "m04_ems_set_QN010412", 23 | "21": "m05_ems_set_base", 24 | "22": "m05_ems_set_tour", 25 | "23": "m01_ems_set_QN000104", 26 | "24": "m01_ems_set_QN000105", 27 | "25": "m01_ems_set_QN000208", 28 | "26": "m01_ems_set_QN000310", 29 | "27": "m05_ems_set_QN000410", 30 | "28": "m05_ems_set_QN000414", 31 | "29": "m01_ems_set_QN010111", 32 | "30": "m01_ems_set_QN010418", 33 | "31": "m05_ems_set_QN010617", 34 | "32": "m21_ems_set_base", 35 | "33": "m31_ems_set_base", 36 | "34": "m32_ems_set_base", 37 | "35": "m01_ems_set_base_MR", 38 | "36": "m01_ems_set_tour_MR", 39 | "37": "m02_ems_set_base_MR", 40 | "38": "m02_ems_set_tour_MR", 41 | "39": "m03_ems_set_base_MR", 42 | "40": "m03_ems_set_tour_MR", 43 | "41": "m03_ems_set_QN315211", 44 | "42": "m03_ems_set_QN315300", 45 | "43": "m05_ems_set_base_MR", 46 | "44": "m05_ems_set_tour_MR", 47 | "45": "m05_ems_set_QN315412", 48 | "46": "m31_ems_set_tour", 49 | "47": "m31_ems_set_QN315101", 50 | "48": "m31_ems_set_QN315107", 51 | "49": "m32_ems_set_tour", 52 | "50": "m32_ems_set_QN315314" 53 | } -------------------------------------------------------------------------------- /RiseSpawnEditor/EnumHelper.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows; 9 | 10 | namespace RiseSpawnEditor 11 | { 12 | class EnumHelper 13 | { 14 | public struct SpawnInfo 15 | { 16 | public double X { get; set; } 17 | public double Y { get; set; } 18 | public double Z { get; set; } 19 | public int Area { get; set; } 20 | public int UnqId { get; set; } 21 | } 22 | public struct MapSpawn 23 | { 24 | public int Map { get; set; } 25 | public List Positions { get; set; } 26 | } 27 | 28 | public static readonly Dictionary Map; 29 | public static readonly List Spawns; 30 | 31 | static EnumHelper() 32 | { 33 | Map = DeserializeDictionary("Map.json"); 34 | Spawns = DeserializeList("Assets/SpawnData.json"); 35 | } 36 | 37 | private static Dictionary DeserializeDictionary(string file) where K : notnull 38 | { 39 | using StreamReader sr = GetAsset(file); 40 | return JsonConvert.DeserializeObject>(sr.ReadToEnd())!; 41 | } 42 | 43 | private static List DeserializeList(string file) 44 | { 45 | using StreamReader sr = GetAsset(file); 46 | return JsonConvert.DeserializeObject>(sr.ReadToEnd())!; 47 | } 48 | 49 | private static StreamReader GetAsset(string path) 50 | { 51 | Uri uri = new(path, UriKind.Relative); 52 | return new StreamReader(Application.GetResourceStream(uri).Stream, Encoding.UTF8); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /RiseQuestLoader/OutputDebugStringBuf.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | /// \brief This class is derives from basic_stringbuf which will output 10 | /// all the written data using the OutputDebugString function 11 | template > 12 | class OutputDebugStringBuf : public std::basic_stringbuf { 13 | public: 14 | using int_type = typename TTraits::int_type; 15 | using pos_type = typename TTraits::pos_type; 16 | using off_type = typename TTraits::off_type; 17 | 18 | OutputDebugStringBuf() 19 | : _buffer(512) { 20 | this->setg(nullptr, nullptr, nullptr); 21 | this->setp(_buffer.data(), _buffer.data(), _buffer.data() + _buffer.size()); 22 | } 23 | 24 | ~OutputDebugStringBuf() override = default; 25 | 26 | static_assert(std::is_same_v || std::is_same_v, 27 | "OutputDebugStringBuf only supports char and wchar_t types"); 28 | 29 | protected: 30 | int sync() override try { 31 | MessageOutputer()(this->pbase(), this->pptr()); 32 | this->setp(_buffer.data(), _buffer.data(), _buffer.data() + _buffer.size()); 33 | return 0; 34 | } catch (...) { 35 | return -1; 36 | } 37 | 38 | int_type overflow(int_type c = TTraits::eof()) override { 39 | const int syncRet = sync(); 40 | if (c != TTraits::eof()) { 41 | _buffer[0] = static_cast(c); 42 | this->setp(_buffer.data(), _buffer.data() + 1, _buffer.data() + _buffer.size()); 43 | } 44 | return syncRet == -1 ? TTraits::eof() : 0; 45 | } 46 | 47 | private: 48 | std::vector _buffer; 49 | 50 | template struct MessageOutputer; 51 | 52 | template <> struct MessageOutputer> { 53 | template void operator()(TIterator begin, TIterator end) const { 54 | const std::string s(begin, end); 55 | OutputDebugStringA(("[F] " + s).c_str()); 56 | } 57 | }; 58 | 59 | template <> struct MessageOutputer> { 60 | template void operator()(TIterator begin, TIterator end) const { 61 | const std::wstring s(begin, end); 62 | OutputDebugStringW((L"[F] " + s).c_str()); 63 | } 64 | }; 65 | }; 66 | -------------------------------------------------------------------------------- /RiseQuestLoader/.clang-tidy: -------------------------------------------------------------------------------- 1 | Checks: -*,readability-identifier-naming,readability-else-after-return 2 | HeaderFilterRegex: '^.*src.*(RE|Mod|FreeCam|FirstPerson|Hook|Developer|Object|Flashlight|utility).*\.hpp$' 3 | # HeaderFilterRegex: '^(.*src.*REContext).*\.hpp$' 4 | CheckOptions: 5 | # Classes, structs, ... 6 | - key: readability-identifier-naming.NamespaceCase 7 | value: lower_case 8 | - key: readability-identifier-naming.ClassCase 9 | value: CamelCase 10 | - key: readability-identifier-naming.StructCase 11 | value: CamelCase 12 | - key: readability-identifier-naming.EnumCase 13 | value: CamelCase 14 | - key: readability-identifier-naming.UnionCase 15 | value: CamelCase 16 | - key: readability-identifier-naming.TypedefCase 17 | value: CamelCase 18 | 19 | # Variables, member variables, ... 20 | - key: readability-identifier-naming.ParameterCase 21 | value: lower_case 22 | - key: readability-identifier-naming.VariableCase 23 | value: lower_case 24 | - key: readability-identifier-naming.MemberCase 25 | value: lower_case 26 | - key: readability-identifier-naming.PublicMemberCase 27 | value: lower_case 28 | - key: readability-identifier-naming.ProtectedMemberCase 29 | value: lower_case 30 | - key: readability-identifier-naming.PrivateMemberCase 31 | value: lower_case 32 | - key: readability-identifier-naming.PrivateMemberSuffix 33 | value: '' 34 | 35 | # Functions, methods, ... 36 | - key: readability-identifier-naming.FunctionCase 37 | value: lower_case 38 | - key: readability-identifier-naming.MethodCase 39 | value: lower_case 40 | 41 | # Constants 42 | - key: readability-identifier-naming.ConstantPrefix 43 | value: '' 44 | - key: readability-identifier-naming.ConstantCase 45 | value: UPPER_CASE 46 | - key: readability-identifier-naming.ConstantMemberPrefix 47 | value: '' 48 | - key: readability-identifier-naming.ConstantMemberCase 49 | value: lower_case 50 | - key: readability-identifier-naming.ConstantParameterPrefix 51 | value: '' 52 | - key: readability-identifier-naming.ConstantParameterCase 53 | value: lower_case 54 | - key: readability-identifier-naming.LocalConstantParameterPrefix 55 | value: '' 56 | - key: readability-identifier-naming.LocalConstantCase 57 | value: lower_case 58 | - key: readability-identifier-naming.ConstexprVariablePrefix 59 | value: '' 60 | - key: readability-identifier-naming.ConstexprVariableCase 61 | value: lower_case 62 | 63 | # Other 64 | - key: readability-braces-around-statements.ShortStatementLines 65 | value: 0 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /RiseQuestLoader/imgui/imgui_impl_dx12.h: -------------------------------------------------------------------------------- 1 | // dear imgui: Renderer Backend for DirectX12 2 | // This needs to be used along with a Platform Backend (e.g. Win32) 3 | 4 | // Implemented features: 5 | // [X] Renderer: User texture binding. Use 'D3D12_GPU_DESCRIPTOR_HANDLE' as ImTextureID. Read the FAQ about ImTextureID! 6 | // [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices. 7 | 8 | // Important: to compile on 32-bit systems, this backend requires code to be compiled with '#define ImTextureID ImU64'. 9 | // This is because we need ImTextureID to carry a 64-bit value and by default ImTextureID is defined as void*. 10 | // This define is set in the example .vcxproj file and need to be replicated in your app or by adding it to your imconfig.h file. 11 | 12 | // You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 13 | // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. 14 | // Read online: https://github.com/ocornut/imgui/tree/master/docs 15 | 16 | #pragma once 17 | #include "imgui.h" // IMGUI_IMPL_API 18 | 19 | #ifdef _MSC_VER 20 | #pragma warning (push) 21 | #pragma warning (disable: 4471) // a forward declaration of an unscoped enumeration must have an underlying type 22 | #endif 23 | 24 | enum DXGI_FORMAT; 25 | struct ID3D12Device; 26 | struct ID3D12DescriptorHeap; 27 | struct ID3D12GraphicsCommandList; 28 | struct D3D12_CPU_DESCRIPTOR_HANDLE; 29 | struct D3D12_GPU_DESCRIPTOR_HANDLE; 30 | 31 | // cmd_list is the command list that the implementation will use to render imgui draw lists. 32 | // Before calling the render function, caller must prepare cmd_list by resetting it and setting the appropriate 33 | // render target and descriptor heap that contains font_srv_cpu_desc_handle/font_srv_gpu_desc_handle. 34 | // font_srv_cpu_desc_handle and font_srv_gpu_desc_handle are handles to a single SRV descriptor to use for the internal font texture. 35 | IMGUI_IMPL_API bool ImGui_ImplDX12_Init(ID3D12Device* device, int num_frames_in_flight, DXGI_FORMAT rtv_format, ID3D12DescriptorHeap* cbv_srv_heap, 36 | D3D12_CPU_DESCRIPTOR_HANDLE font_srv_cpu_desc_handle, D3D12_GPU_DESCRIPTOR_HANDLE font_srv_gpu_desc_handle); 37 | IMGUI_IMPL_API void ImGui_ImplDX12_Shutdown(); 38 | IMGUI_IMPL_API void ImGui_ImplDX12_NewFrame(); 39 | IMGUI_IMPL_API void ImGui_ImplDX12_RenderDrawData(ImDrawData* draw_data, ID3D12GraphicsCommandList* graphics_command_list); 40 | 41 | // Use if you want to reset your rendering device without losing Dear ImGui state. 42 | IMGUI_IMPL_API void ImGui_ImplDX12_InvalidateDeviceObjects(); 43 | IMGUI_IMPL_API bool ImGui_ImplDX12_CreateDeviceObjects(); 44 | 45 | #ifdef _MSC_VER 46 | #pragma warning (pop) 47 | #endif -------------------------------------------------------------------------------- /RiseQuestLoader/imgui/imgui_impl_win32.h: -------------------------------------------------------------------------------- 1 | // dear imgui: Platform Backend for Windows (standard windows API for 32 and 64 bits applications) 2 | // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) 3 | 4 | // Implemented features: 5 | // [X] Platform: Clipboard support (for Win32 this is actually part of core dear imgui) 6 | // [X] Platform: Mouse cursor shape and visibility. Disable with 'io.ConfigFlags |= ImGuiConfigFlags_NoMouseCursorChange'. 7 | // [X] Platform: Keyboard arrays indexed using VK_* Virtual Key Codes, e.g. ImGui::IsKeyPressed(VK_SPACE). 8 | // [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'. 9 | 10 | // You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this. 11 | // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. 12 | // Read online: https://github.com/ocornut/imgui/tree/master/docs 13 | 14 | #pragma once 15 | #include "imgui.h" // IMGUI_IMPL_API 16 | #include 17 | 18 | IMGUI_IMPL_API bool ImGui_ImplWin32_Init(void* hwnd); 19 | IMGUI_IMPL_API void ImGui_ImplWin32_Shutdown(); 20 | IMGUI_IMPL_API void ImGui_ImplWin32_NewFrame(); 21 | 22 | // Win32 message handler your application need to call. 23 | // - Intentionally commented out in a '#if 0' block to avoid dragging dependencies on from this helper. 24 | // - You should COPY the line below into your .cpp code to forward declare the function and then you can call it. 25 | // #if 0 26 | IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); 27 | // #endif 28 | 29 | // DPI-related helpers (optional) 30 | // - Use to enable DPI awareness without having to create an application manifest. 31 | // - Your own app may already do this via a manifest or explicit calls. This is mostly useful for our examples/ apps. 32 | // - In theory we could call simple functions from Windows SDK such as SetProcessDPIAware(), SetProcessDpiAwareness(), etc. 33 | // but most of the functions provided by Microsoft require Windows 8.1/10+ SDK at compile time and Windows 8/10+ at runtime, 34 | // neither we want to require the user to have. So we dynamically select and load those functions to avoid dependencies. 35 | IMGUI_IMPL_API void ImGui_ImplWin32_EnableDpiAwareness(); 36 | IMGUI_IMPL_API float ImGui_ImplWin32_GetDpiScaleForHwnd(void* hwnd); // HWND hwnd 37 | IMGUI_IMPL_API float ImGui_ImplWin32_GetDpiScaleForMonitor(void* monitor); // HMONITOR monitor 38 | 39 | // Transparency related helpers (optional) [experimental] 40 | // - Use to enable alpha compositing transparency with the desktop. 41 | // - Use together with e.g. clearing your framebuffer with zero-alpha. 42 | IMGUI_IMPL_API void ImGui_ImplWin32_EnableAlphaCompositing(void* hwnd); // HWND hwnd 43 | 44 | namespace imgui { 45 | void reset_keystates(); 46 | } -------------------------------------------------------------------------------- /RiseQuestEditor/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace RiseQuestEditor.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RiseQuestEditor.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /RiseQuestLoader/rendering/d3d11.cpp: -------------------------------------------------------------------------------- 1 | #include "../plugin.h" 2 | #include "../imgui/imgui_impl_dx11.h" 3 | 4 | #include "d3d11.hpp" 5 | 6 | D3D11 g_d3d11{}; 7 | 8 | bool D3D11::initialize() { 9 | const auto renderer_data = reframework::API::get()->param()->renderer_data; 10 | auto swapchain = (IDXGISwapChain*)renderer_data->swapchain; 11 | auto device = (ID3D11Device*)renderer_data->device; 12 | 13 | // Get back buffer. 14 | ComPtr backbuffer{}; 15 | 16 | if (FAILED(swapchain->GetBuffer(0, IID_PPV_ARGS(&backbuffer)))) { 17 | return false; 18 | } 19 | 20 | // Create a render target view of the back buffer. 21 | if (FAILED(device->CreateRenderTargetView(backbuffer.Get(), nullptr, &this->bb_rtv))) { 22 | return false; 23 | } 24 | 25 | // Get backbuffer description. 26 | D3D11_TEXTURE2D_DESC backbuffer_desc{}; 27 | 28 | backbuffer->GetDesc(&backbuffer_desc); 29 | 30 | backbuffer_desc.BindFlags |= D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE; 31 | 32 | // Create our blank render target. 33 | if (FAILED(device->CreateTexture2D(&backbuffer_desc, nullptr, &this->blank_rt))) { 34 | return false; 35 | } 36 | 37 | // Create our render target. 38 | if (FAILED(device->CreateTexture2D(&backbuffer_desc, nullptr, &this->rt))) { 39 | return false; 40 | } 41 | 42 | // Create our blank render target view. 43 | if (FAILED(device->CreateRenderTargetView(this->blank_rt.Get(), nullptr, &this->blank_rt_rtv))) { 44 | return false; 45 | } 46 | 47 | 48 | // Create our render target view. 49 | if (FAILED(device->CreateRenderTargetView(this->rt.Get(), nullptr, &this->rt_rtv))) { 50 | return false; 51 | } 52 | 53 | // Create our render target shader resource view. 54 | if (FAILED(device->CreateShaderResourceView(this->rt.Get(), nullptr, &this->rt_srv))) { 55 | return false; 56 | } 57 | 58 | this->rt_width = backbuffer_desc.Width; 59 | this->rt_height = backbuffer_desc.Height; 60 | 61 | ComPtr context{}; 62 | 63 | device->GetImmediateContext(&context); 64 | 65 | if (!ImGui_ImplDX11_Init(device, context.Get())) { 66 | return false; 67 | } 68 | 69 | return true; 70 | } 71 | 72 | void D3D11::render_imgui() { 73 | ComPtr context{}; 74 | float clear_color[]{0.0f, 0.0f, 0.0f, 0.0f}; 75 | 76 | const auto renderer_data = reframework::API::get()->param()->renderer_data; 77 | auto device = (ID3D11Device*)renderer_data->device; 78 | device->GetImmediateContext(&context); 79 | context->ClearRenderTargetView(this->blank_rt_rtv.Get(), clear_color); 80 | context->ClearRenderTargetView(this->rt_rtv.Get(), clear_color); 81 | context->OMSetRenderTargets(1, this->rt_rtv.GetAddressOf(), NULL); 82 | ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); 83 | 84 | // Set the back buffer to be the render target. 85 | context->OMSetRenderTargets(1, this->bb_rtv.GetAddressOf(), nullptr); 86 | ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); 87 | } 88 | 89 | -------------------------------------------------------------------------------- /RiseQuestLoader/Quest.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | enum class QuestCounterTopMenuType : int32_t { 5 | Normal_Vil = 0, 6 | Normal_Hall_High = 1, 7 | Normal_Hall_Low = 2, 8 | Hyakuryu = 3, 9 | Training = 4, 10 | Event = 5, 11 | FreeSide = 6, 12 | Arena = 7, 13 | Challenge = 8, 14 | Talk = 9, 15 | Urgent = 10, 16 | Special = 11, 17 | Normal_Hall_Master = 12, 18 | Mystery = 13, 19 | Kyousei = 14, 20 | Item = 15, 21 | Kingdom = 16, 22 | Network = 17, 23 | ServantRequest = 18, 24 | NpcSideQuest = 19, 25 | Normal_Hall_HighLow = 20, 26 | Max = 21, 27 | None = 22, 28 | }; 29 | 30 | enum class QuestText { 31 | TITLE = 0x0, 32 | CLIENT = 0x1, 33 | REQUEST = 0x2, 34 | TARGET = 0x3, 35 | MISS = 0x4, 36 | ENV_INFO1 = 0x5, 37 | ENV_INFO2 = 0x6, 38 | ECOLOGY1 = 0x7, 39 | ECOLOGY2 = 0x8, 40 | ORDER_TYPE1 = 0x9, 41 | ORDER_TYPE2 = 0xA, 42 | EM_INFO = 0xB, 43 | MAP = 0xC, 44 | HYAKU_INFO = 0xD, 45 | HYAKU_INFO2 = 0xE, 46 | HYAKU_REWARD = 0xF, 47 | }; 48 | 49 | enum class QuestType : uint32_t { 50 | INVALID = 0, 51 | HUNTING = 1 << 0, // 1 52 | KILL = 1 << 1, // 2 53 | CAPTURE = 1 << 2, // 4 54 | BOSSRUSH = 1 << 3, // 8 55 | COLLECTS = 1 << 4, // 16 (Gathering) 56 | TOUR = 1 << 5, // 32 57 | ARENA = 1 << 6, // 64 58 | SPECIAL = 1 << 7, // 128 59 | HYAKURYU = 1 << 8, // 256 60 | TRAINING = 1 << 9, // 512 61 | KYOUSEI = 1 << 10, // 1024 62 | }; 63 | 64 | constexpr bool operator&(QuestType l, QuestType r) { 65 | return (static_cast(l) & static_cast(r)) > 0; 66 | } 67 | 68 | constexpr QuestType operator|(QuestType l, QuestType r) { 69 | return static_cast(static_cast(l) | static_cast(r)); 70 | } 71 | 72 | enum class QuestLevel : int32_t { 73 | QL1 = 0, 74 | QL2 = 1, 75 | QL3 = 2, 76 | QL4 = 3, 77 | QL5 = 4, 78 | QL6 = 5, 79 | QL7 = 6, 80 | QL7EX = 7, 81 | MAX = 8, 82 | INVALID = -1, 83 | QL_V_LOW_START = 0, 84 | QL_V_LOW_END = 5, 85 | QL_H_LOW_START = 0, 86 | QL_H_LOW_END = 2, 87 | QL_H_HIGH_START = 3, 88 | QL_H_HIGH_END = 6, 89 | QL_H_HIGH_END_EX = 7, 90 | }; 91 | 92 | enum class EnemyLv : uint32_t { 93 | Village = 0, 94 | Low = 1, 95 | High = 2, 96 | Master = 3, 97 | Max = 4, 98 | }; 99 | 100 | enum class QuestCounterLevelMenuType : int32_t { 101 | Lv_01 = 0, 102 | Lv_02 = 1, 103 | Lv_03 = 2, 104 | Lv_04 = 3, 105 | Lv_05 = 4, 106 | Lv_06 = 5, 107 | Lv_07 = 6, 108 | Gathering = 7, 109 | Random = 8, 110 | Max = 9, 111 | None = 10, 112 | }; 113 | 114 | enum class QuestRank : uint32_t { 115 | Low = 0, 116 | High = 1, 117 | Max = 2, 118 | }; 119 | 120 | enum class MapNoType : int32_t { 121 | Stage_Name_00, 122 | ShrineRuins, 123 | SandyPlains, 124 | FloodedForest, 125 | FrostCaverns, 126 | LavaCaverns, 127 | Stage_Name_06, 128 | RedStronghold, 129 | Stage_Name_08, 130 | InfernalSprings, 131 | Arena, 132 | CoralPalace, 133 | Jungle, 134 | Citadel, 135 | Stage_Name_14, 136 | YawningAbyss, 137 | Stage_Name_42 138 | }; 139 | -------------------------------------------------------------------------------- /RiseQuestLoader.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32505.173 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RiseQuestLoader", "RiseQuestLoader\RiseQuestLoader.vcxproj", "{7C38E2CA-A0BB-4E31-A73B-BA65808AC609}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RiseQuestEditor", "RiseQuestEditor\RiseQuestEditor.csproj", "{DFB09114-BB12-452C-A454-CA4FD1EF94D4}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RiseSpawnEditor", "RiseSpawnEditor\RiseSpawnEditor.csproj", "{6BD6ACCC-2C81-4F5C-8117-849162A1E37E}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|x64 = Debug|x64 16 | Debug|x86 = Debug|x86 17 | Release|Any CPU = Release|Any CPU 18 | Release|x64 = Release|x64 19 | Release|x86 = Release|x86 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Debug|Any CPU.ActiveCfg = Debug|x64 23 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Debug|Any CPU.Build.0 = Debug|x64 24 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Debug|x64.ActiveCfg = Debug|x64 25 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Debug|x64.Build.0 = Debug|x64 26 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Debug|x86.ActiveCfg = Debug|Win32 27 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Debug|x86.Build.0 = Debug|Win32 28 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Release|Any CPU.ActiveCfg = Release|x64 29 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Release|Any CPU.Build.0 = Release|x64 30 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Release|x64.ActiveCfg = Release|x64 31 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Release|x64.Build.0 = Release|x64 32 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Release|x86.ActiveCfg = Release|Win32 33 | {7C38E2CA-A0BB-4E31-A73B-BA65808AC609}.Release|x86.Build.0 = Release|Win32 34 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 35 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Debug|Any CPU.Build.0 = Debug|Any CPU 36 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Debug|x64.ActiveCfg = Debug|Any CPU 37 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Debug|x64.Build.0 = Debug|Any CPU 38 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Debug|x86.ActiveCfg = Debug|Any CPU 39 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Debug|x86.Build.0 = Debug|Any CPU 40 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Release|Any CPU.ActiveCfg = Release|Any CPU 41 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Release|Any CPU.Build.0 = Release|Any CPU 42 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Release|x64.ActiveCfg = Release|Any CPU 43 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Release|x64.Build.0 = Release|Any CPU 44 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Release|x86.ActiveCfg = Release|Any CPU 45 | {DFB09114-BB12-452C-A454-CA4FD1EF94D4}.Release|x86.Build.0 = Release|Any CPU 46 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 47 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Debug|Any CPU.Build.0 = Debug|Any CPU 48 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Debug|x64.ActiveCfg = Debug|Any CPU 49 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Debug|x64.Build.0 = Debug|Any CPU 50 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Debug|x86.ActiveCfg = Debug|Any CPU 51 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Debug|x86.Build.0 = Debug|Any CPU 52 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Release|Any CPU.ActiveCfg = Release|Any CPU 53 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Release|Any CPU.Build.0 = Release|Any CPU 54 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Release|x64.ActiveCfg = Release|Any CPU 55 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Release|x64.Build.0 = Release|Any CPU 56 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Release|x86.ActiveCfg = Release|Any CPU 57 | {6BD6ACCC-2C81-4F5C-8117-849162A1E37E}.Release|x86.Build.0 = Release|Any CPU 58 | EndGlobalSection 59 | GlobalSection(SolutionProperties) = preSolution 60 | HideSolutionNode = FALSE 61 | EndGlobalSection 62 | GlobalSection(ExtensibilityGlobals) = postSolution 63 | SolutionGuid = {F5133FDF-FC7B-4433-B67B-C2C97D6E8357} 64 | EndGlobalSection 65 | EndGlobal 66 | -------------------------------------------------------------------------------- /RiseQuestLoader/RiseQuestLoader.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {08305932-eff1-4ff7-930b-afc0b87d29bc} 18 | 19 | 20 | {396b50cd-cfe8-4a2c-b1ad-50946d424c2b} 21 | 22 | 23 | {9ac8a2c5-4487-4de4-ad2f-7a8daef5ef11} 24 | 25 | 26 | {d7f00d27-412e-4f01-966f-7e6e4d500a70} 27 | 28 | 29 | 30 | 31 | Header Files\dependencies\imgui 32 | 33 | 34 | Header Files\dependencies\imgui 35 | 36 | 37 | Header Files\dependencies\imgui 38 | 39 | 40 | Header Files\dependencies\imgui 41 | 42 | 43 | Header Files\dependencies\imgui 44 | 45 | 46 | Header Files\dependencies\rendering 47 | 48 | 49 | Header Files\dependencies\rendering 50 | 51 | 52 | Header Files\dependencies\rendering 53 | 54 | 55 | Header Files\dependencies\reframework 56 | 57 | 58 | Header Files\dependencies\reframework 59 | 60 | 61 | Header Files 62 | 63 | 64 | Header Files\dependencies\reframework 65 | 66 | 67 | Header Files 68 | 69 | 70 | Header Files 71 | 72 | 73 | Header Files 74 | 75 | 76 | Header Files 77 | 78 | 79 | Header Files 80 | 81 | 82 | 83 | 84 | Header Files\dependencies\imgui 85 | 86 | 87 | Header Files\dependencies\imgui 88 | 89 | 90 | Header Files\dependencies\imgui 91 | 92 | 93 | Header Files\dependencies\rendering 94 | 95 | 96 | Header Files\dependencies\rendering 97 | 98 | 99 | Source Files 100 | 101 | 102 | Header Files\dependencies\reframework 103 | 104 | 105 | Source Files 106 | 107 | 108 | Source Files 109 | 110 | 111 | Source Files 112 | 113 | 114 | 115 | 116 | Resource Files 117 | 118 | 119 | 120 | 121 | Resource Files 122 | 123 | 124 | -------------------------------------------------------------------------------- /RiseQuestLoader/reframework/utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "API.hpp" 4 | 5 | #include 6 | #include 7 | 8 | namespace utility { 9 | 10 | std::string narrow(std::wstring_view str); 11 | std::wstring widen(std::string_view str); 12 | 13 | } 14 | 15 | class REString { 16 | public: 17 | void* object_info; // 0x0000 18 | uint32_t ref_count; // 0x0008 19 | int16_t _0; // 0x000C 20 | char _1[2]; // 0x000E 21 | int32_t size; // 0x0010 22 | wchar_t data[256]; // 0x0014 23 | 24 | [[nodiscard]] std::string to_str() const { return utility::narrow(data); } 25 | [[nodiscard]] std::wstring to_wstr() const { return data; } 26 | [[nodiscard]] std::wstring_view to_view() const { return data; } 27 | }; 28 | 29 | template class SystemArray { 30 | public: 31 | void* object_info; // 0x0000 32 | uint32_t ref_count; // 0x0008 33 | int32_t _0; // 0x000C 34 | void* contained_type; // 0x0010 35 | uint32_t _1; // 0x0018 36 | uint32_t count; // 0x001C 37 | T elements[1]; // 0x0020 38 | }; 39 | 40 | template class REArray; 41 | 42 | 43 | namespace utility { 44 | 45 | void log(const std::string& msg); 46 | 47 | template REArray* to_re_array(reframework::API::ManagedObject* obj) { 48 | return reinterpret_cast*>(obj); 49 | } 50 | 51 | template const REArray* to_re_array(const reframework::API::ManagedObject* obj) { 52 | return reinterpret_cast*>(obj); 53 | } 54 | 55 | template reframework::API::ManagedObject* to_managed_object(REArray* array) { 56 | return reinterpret_cast(array); 57 | } 58 | 59 | template const reframework::API::ManagedObject* to_managed_object(const REArray* array) { 60 | return reinterpret_cast(array); 61 | } 62 | 63 | template 64 | T call(reframework::API::ManagedObject* obj, std::string_view name, Args... args) { 65 | return obj->call(name, reframework::API::get()->get_vm_context(), obj, args...); 66 | } 67 | 68 | template T call(reframework::API::Method* method, Args... args) { 69 | return method->call(reframework::API::get()->get_vm_context(), args...); 70 | } 71 | 72 | template std::string str_call(reframework::API::ManagedObject* obj, std::string_view name, Args... args) { 73 | const REString* res = obj->call(name, reframework::API::get()->get_vm_context(), obj, args...); 74 | return res->to_str(); 75 | } 76 | 77 | template std::string str_call(reframework::API::Method* method, Args... args) { 78 | const REString* res = method->call(reframework::API::get()->get_vm_context(), args...); 79 | return res->to_str(); 80 | } 81 | 82 | template std::string get_enum_name(std::string_view name, T value) { 83 | const auto& api = reframework::API::get(); 84 | const auto type = api->tdb()->find_type(name); 85 | const auto inst = type->create_instance(); 86 | 87 | *inst->get_field("value__") = value; 88 | return call(inst, "ToString()")->to_str(); 89 | } 90 | 91 | template std::string get_enum_name(reframework::API::TypeDefinition* type, T value) { 92 | const auto inst = type->create_instance(); 93 | *inst->get_field("value__") = value; 94 | 95 | return call(inst, "ToString()")->to_str(); 96 | } 97 | 98 | template std::string get_enum_name(reframework::API::ManagedObject* value) { 99 | return call(value, "ToString()")->to_str(); 100 | } 101 | 102 | reframework::API::ManagedObject* get_main_view(); 103 | 104 | reframework::API::ManagedObject* get_current_scene(); 105 | 106 | reframework::API::ManagedObject* get_primary_camera(); 107 | 108 | using Pattern = std::vector; 109 | 110 | Pattern make_pattern(std::string_view pattern); 111 | 112 | std::vector scanmem(const Pattern& pattern); 113 | 114 | REString* create_managed_string(std::string_view string); 115 | reframework::API::ManagedObject* create_managed_array(reframework::API::ManagedObject* runtime_type, size_t length); 116 | reframework::API::ManagedObject* create_managed_array(std::string_view type, size_t length); 117 | reframework::API::ManagedObject* create_managed_array(const reframework::API::TypeDefinition* type, size_t length); 118 | 119 | } // namespace utility 120 | 121 | template class REArray : SystemArray { 122 | public: 123 | using iterator = T*; 124 | using const_iterator = const T*; 125 | 126 | [[nodiscard]] size_t size() const { return SystemArray::count; } 127 | const T& at(size_t idx) const { return SystemArray::elements[idx]; } 128 | T& at(size_t idx) { return SystemArray::elements[idx]; } 129 | 130 | T get_item(uint32_t idx) const { return utility::call(utility::to_managed_object(this), "get_Item", idx); } 131 | void set_item(uint32_t idx, const T& value) { utility::call(utility::to_managed_object(this), "set_Item", idx, value); } 132 | 133 | iterator begin() { return &SystemArray::elements[0]; } 134 | const_iterator begin() const { return &SystemArray::elements[0]; } 135 | iterator end() { return SystemArray::elements + SystemArray::count; } 136 | const_iterator end() const { return SystemArray::elements + SystemArray::count; } 137 | 138 | [[nodiscard]] bool contains(const T& value) { return utility::call(utility::to_managed_object(this), "Contains", value); } 139 | 140 | const T& operator[](size_t idx) const { return at(idx); } 141 | T& operator[](size_t idx) { return at(idx); } 142 | }; 143 | -------------------------------------------------------------------------------- /RiseQuestLoader/reframework/utility.cpp: -------------------------------------------------------------------------------- 1 | #include "utility.h" 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | 8 | #define DEBUG_LOG 1 9 | 10 | void utility::log(const std::string& msg) { 11 | #if DEBUG_LOG 12 | OutputDebugStringA(("[QuestLoader] " + msg).c_str()); 13 | #endif 14 | } 15 | 16 | std::string utility::narrow(std::wstring_view str) { 17 | const auto length = WideCharToMultiByte(CP_UTF8, 0, str.data(), static_cast(str.length()), nullptr, 0, nullptr, nullptr); 18 | std::string narrowStr{}; 19 | 20 | narrowStr.resize(length); 21 | WideCharToMultiByte(CP_UTF8, 0, str.data(), static_cast(str.length()), (LPSTR)narrowStr.c_str(), length, nullptr, nullptr); 22 | 23 | return narrowStr; 24 | } 25 | 26 | std::wstring utility::widen(std::string_view str) { 27 | const auto length = MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.length()), nullptr, 0); 28 | std::wstring wideStr{}; 29 | 30 | wideStr.resize(length); 31 | MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.length()), (LPWSTR)wideStr.c_str(), length); 32 | 33 | return wideStr; 34 | } 35 | 36 | utility::Pattern utility::make_pattern(std::string_view pattern) { 37 | auto hexchar_to_int = [](char c) { return c >= 'A' ? c >= 'a' ? c - 'a' + 10 : c - 'A' + 10 : c - '0'; }; 38 | auto to_byte = [&](char upper, char lower) { return static_cast(hexchar_to_int(upper) << 4 | hexchar_to_int(lower)); }; 39 | 40 | std::string str{pattern}; 41 | std::erase_if(str, isspace); 42 | 43 | const size_t len = str.size(); 44 | 45 | Pattern p{}; 46 | 47 | for (auto i = 0ull; i < len; ++i) { 48 | const char c = str[i]; 49 | 50 | if (c != '?') { 51 | if (i + 1u >= len) { 52 | break; 53 | } 54 | 55 | const char other = str[i + 1u]; 56 | 57 | p.push_back(to_byte(c, other)); 58 | 59 | i += 2; 60 | } else { 61 | p.push_back(-1i16); 62 | i += 1; 63 | } 64 | } 65 | 66 | return p; 67 | } 68 | 69 | std::vector utility::scanmem(const Pattern& pattern) { 70 | std::vector results; 71 | const auto module = GetModuleHandle(TEXT("MonsterHunterRise.exe")); 72 | if (module == nullptr) { 73 | return results; 74 | } 75 | 76 | MODULEINFO moduleInfo; 77 | if (!GetModuleInformation(GetCurrentProcess(), module, &moduleInfo, sizeof(moduleInfo))) 78 | return results; 79 | 80 | const byte* startAddr = reinterpret_cast(module); 81 | const byte* endAddr = startAddr + moduleInfo.SizeOfImage; 82 | const byte* addr = startAddr; 83 | 84 | constexpr auto pred = [](auto a, auto b) { 85 | return static_cast(b) != -1i16 && static_cast(a) == static_cast(b); 86 | }; 87 | 88 | while (addr < endAddr) { 89 | MEMORY_BASIC_INFORMATION memInfo; 90 | if (!VirtualQuery(addr, &memInfo, sizeof(memInfo)) || memInfo.State != MEM_COMMIT || (memInfo.Protect & PAGE_GUARD)) 91 | continue; 92 | const auto begin = static_cast(memInfo.BaseAddress); 93 | byte* end = begin + memInfo.RegionSize; 94 | 95 | byte* found = std::search(begin, end, pattern.begin(), pattern.end(), pred); 96 | while (found != end) { 97 | results.push_back(found); 98 | found = std::search(found + 1, end, pattern.begin(), pattern.end(), pred); 99 | } 100 | 101 | addr = end; 102 | memInfo = {}; 103 | } 104 | 105 | return results; 106 | } 107 | 108 | REString* utility::create_managed_string(std::string_view string) { 109 | using namespace reframework; 110 | const auto& api = API::get(); 111 | 112 | return reinterpret_cast(api->sdk()->functions->create_managed_string_normal(string.data())); 113 | } 114 | 115 | reframework::API::ManagedObject* utility::create_managed_array(reframework::API::ManagedObject* runtime_type, size_t length) { 116 | const auto& api = reframework::API::get(); 117 | 118 | static auto system_array_type = api->tdb()->find_type("System.Array"); 119 | static auto create_instance_method = system_array_type->find_method("CreateInstance"); 120 | 121 | return call(create_instance_method, runtime_type, static_cast(length)); 122 | } 123 | 124 | reframework::API::ManagedObject* utility::create_managed_array(std::string_view type, size_t length) { 125 | return create_managed_array(reframework::API::get()->typeof(type.data()), length); 126 | } 127 | 128 | reframework::API::ManagedObject* utility::create_managed_array(const reframework::API::TypeDefinition* type, size_t length) { 129 | return create_managed_array(type->get_runtime_type(), length); 130 | } 131 | 132 | reframework::API::ManagedObject* utility::get_main_view() { 133 | const auto& api = reframework::API::get(); 134 | 135 | static auto scene_manager_type = api->tdb()->find_type("via.SceneManager"); 136 | static auto get_main_view_method = scene_manager_type->find_method("get_MainView"); 137 | 138 | return call(get_main_view_method, api->get_native_singleton("via.SceneManager")); 139 | } 140 | 141 | reframework::API::ManagedObject* utility::get_current_scene() { 142 | const auto& api = reframework::API::get(); 143 | 144 | static auto scene_manager_type = api->tdb()->find_type("via.SceneManager"); 145 | static auto get_current_scene_method = scene_manager_type->find_method("get_CurrentScene"); 146 | 147 | return call(get_current_scene_method, api->get_native_singleton("via.SceneManager")); 148 | } 149 | 150 | reframework::API::ManagedObject* utility::get_primary_camera() { 151 | const auto& api = reframework::API::get(); 152 | const auto main_view = get_main_view(); 153 | 154 | if (main_view == nullptr) { 155 | return nullptr; 156 | } 157 | 158 | static auto scene_view_type = api->tdb()->find_type("via.SceneView"); 159 | static auto get_primary_camera_method = scene_view_type->find_method("get_PrimaryCamera"); 160 | 161 | return call(get_primary_camera_method, main_view); 162 | } 163 | -------------------------------------------------------------------------------- /RiseQuestEditor/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /RiseQuestLoader/rendering/d3d12.cpp: -------------------------------------------------------------------------------- 1 | #include "../plugin.h" 2 | #include "../imgui/imgui_impl_dx12.h" 3 | 4 | #include "d3d12.hpp" 5 | 6 | D3D12 g_d3d12{}; 7 | 8 | bool D3D12::initialize() { 9 | const auto renderer_data = reframework::API::get()->param()->renderer_data; 10 | auto device = (ID3D12Device*)renderer_data->device; 11 | auto swapchain = (IDXGISwapChain3*)renderer_data->swapchain; 12 | 13 | if (FAILED(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&this->cmd_allocator)))) { 14 | return false; 15 | } 16 | 17 | if (FAILED(device->CreateCommandList( 18 | 0, D3D12_COMMAND_LIST_TYPE_DIRECT, this->cmd_allocator.Get(), nullptr, IID_PPV_ARGS(&this->cmd_list)))) { 19 | return false; 20 | } 21 | 22 | if (FAILED(this->cmd_list->Close())) { 23 | return false; 24 | } 25 | 26 | { 27 | D3D12_DESCRIPTOR_HEAP_DESC desc{}; 28 | 29 | desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; 30 | desc.NumDescriptors = (int)D3D12::RTV::COUNT; 31 | desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; 32 | desc.NodeMask = 1; 33 | 34 | if (FAILED(device->CreateDescriptorHeap(&desc, IID_PPV_ARGS(&this->rtv_desc_heap)))) { 35 | return false; 36 | } 37 | } 38 | 39 | { 40 | D3D12_DESCRIPTOR_HEAP_DESC desc{}; 41 | 42 | desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV; 43 | desc.NumDescriptors = (int)D3D12::SRV::COUNT; 44 | desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE; 45 | 46 | if (FAILED(device->CreateDescriptorHeap(&desc, IID_PPV_ARGS(&this->srv_desc_heap)))) { 47 | return false; 48 | } 49 | } 50 | 51 | { 52 | for (auto i = 0; i <= (int)D3D12::RTV::BACKBUFFER_3; ++i) { 53 | if (SUCCEEDED(swapchain->GetBuffer(i, IID_PPV_ARGS(&this->rts[i])))) { 54 | device->CreateRenderTargetView(this->rts[i].Get(), nullptr, this->get_cpu_rtv(device, (D3D12::RTV)i)); 55 | } 56 | } 57 | 58 | // Create our imgui and blank rts. 59 | auto& backbuffer = this->get_rt(D3D12::RTV::BACKBUFFER_0); 60 | auto desc = backbuffer->GetDesc(); 61 | 62 | D3D12_HEAP_PROPERTIES props{}; 63 | props.Type = D3D12_HEAP_TYPE_DEFAULT; 64 | props.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; 65 | props.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; 66 | 67 | D3D12_CLEAR_VALUE clear_value{}; 68 | clear_value.Format = desc.Format; 69 | 70 | if (FAILED(device->CreateCommittedResource(&props, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, &clear_value, 71 | IID_PPV_ARGS(&this->get_rt(D3D12::RTV::IMGUI))))) { 72 | return false; 73 | } 74 | 75 | if (FAILED(device->CreateCommittedResource(&props, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE, &clear_value, 76 | IID_PPV_ARGS(&this->get_rt(D3D12::RTV::BLANK))))) { 77 | return false; 78 | } 79 | 80 | // Create imgui and blank rtvs and srvs. 81 | device->CreateRenderTargetView(this->get_rt(D3D12::RTV::IMGUI).Get(), nullptr, this->get_cpu_rtv(device, D3D12::RTV::IMGUI)); 82 | device->CreateRenderTargetView(this->get_rt(D3D12::RTV::BLANK).Get(), nullptr, this->get_cpu_rtv(device, D3D12::RTV::BLANK)); 83 | device->CreateShaderResourceView( 84 | this->get_rt(D3D12::RTV::IMGUI).Get(), nullptr, this->get_cpu_srv(device, D3D12::SRV::IMGUI)); 85 | device->CreateShaderResourceView(this->get_rt(D3D12::RTV::BLANK).Get(), nullptr, this->get_cpu_srv(device, D3D12::SRV::BLANK)); 86 | 87 | this->rt_width = (uint32_t)desc.Width; 88 | this->rt_height = (uint32_t)desc.Height; 89 | } 90 | 91 | if (!ImGui_ImplDX12_Init(device, 1, DXGI_FORMAT_R8G8B8A8_UNORM, this->srv_desc_heap.Get(), 92 | this->get_cpu_srv(device, D3D12::SRV::IMGUI_FONT), this->get_gpu_srv(device, D3D12::SRV::IMGUI_FONT))) 93 | { 94 | return false; 95 | } 96 | 97 | return true; 98 | } 99 | 100 | void D3D12::render_imgui() { 101 | const auto renderer_data = reframework::API::get()->param()->renderer_data; 102 | auto command_queue = (ID3D12CommandQueue*)renderer_data->command_queue; 103 | 104 | this->cmd_allocator->Reset(); 105 | this->cmd_list->Reset(g_d3d12.cmd_allocator.Get(), nullptr); 106 | 107 | // Draw to our render target. 108 | D3D12_RESOURCE_BARRIER barrier{}; 109 | barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; 110 | barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; 111 | barrier.Transition.pResource = this->get_rt(D3D12::RTV::IMGUI).Get(); 112 | barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; 113 | barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE; 114 | barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET; 115 | this->cmd_list->ResourceBarrier(1, &barrier); 116 | 117 | float clear_color[]{0.0f, 0.0f, 0.0f, 0.0f}; 118 | auto device = (ID3D12Device*)renderer_data->device; 119 | D3D12_CPU_DESCRIPTOR_HANDLE rts[1]{}; 120 | this->cmd_list->ClearRenderTargetView(this->get_cpu_rtv(device, D3D12::RTV::IMGUI), clear_color, 0, nullptr); 121 | rts[0] = this->get_cpu_rtv(device, D3D12::RTV::IMGUI); 122 | this->cmd_list->OMSetRenderTargets(1, rts, FALSE, NULL); 123 | this->cmd_list->SetDescriptorHeaps(1, this->srv_desc_heap.GetAddressOf()); 124 | ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), this->cmd_list.Get()); 125 | barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; 126 | barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE; 127 | this->cmd_list->ResourceBarrier(1, &barrier); 128 | 129 | // Draw to the back buffer. 130 | auto swapchain = (IDXGISwapChain3*)renderer_data->swapchain; 131 | auto bb_index = swapchain->GetCurrentBackBufferIndex(); 132 | barrier.Transition.pResource = this->rts[bb_index].Get(); 133 | barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT; 134 | barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET; 135 | this->cmd_list->ResourceBarrier(1, &barrier); 136 | rts[0] = this->get_cpu_rtv(device, (D3D12::RTV)bb_index); 137 | this->cmd_list->OMSetRenderTargets(1, rts, FALSE, NULL); 138 | this->cmd_list->SetDescriptorHeaps(1, this->srv_desc_heap.GetAddressOf()); 139 | ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), this->cmd_list.Get()); 140 | barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; 141 | barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT; 142 | this->cmd_list->ResourceBarrier(1, &barrier); 143 | this->cmd_list->Close(); 144 | 145 | command_queue->ExecuteCommandLists(1, (ID3D12CommandList* const*)this->cmd_list.GetAddressOf()); 146 | } 147 | -------------------------------------------------------------------------------- /RiseQuestLoader/main.cpp: -------------------------------------------------------------------------------- 1 | #include "Plugin.h" 2 | #include "QuestLoader.h" 3 | 4 | #include "imgui/imgui_impl_dx11.h" 5 | #include "imgui/imgui_impl_dx12.h" 6 | #include "imgui/imgui_impl_win32.h" 7 | 8 | #include "rendering/d3d11.hpp" 9 | #include "rendering/d3d12.hpp" 10 | 11 | 12 | using namespace reframework; 13 | using REGenericFunction = void*(*)(...); 14 | std::mutex g_entry_mutex{}; 15 | 16 | bool initialize() { 17 | if (g_initialized) { 18 | return false; 19 | } 20 | 21 | ImGui::CreateContext(); 22 | 23 | if (!IMGUI_CHECKVERSION()) { 24 | OutputDebugStringA("[FEXTY] ImGui Version Mismatch"); 25 | } 26 | 27 | const auto renderer = API::get()->param()->renderer_data; 28 | 29 | DXGI_SWAP_CHAIN_DESC desc{}; 30 | const auto swapchain = static_cast(renderer->swapchain); 31 | swapchain->GetDesc(&desc); 32 | 33 | if (!ImGui_ImplWin32_Init(desc.OutputWindow)) { 34 | return false; 35 | } 36 | 37 | if (renderer->renderer_type == REFRAMEWORK_RENDERER_D3D11) { 38 | if (!g_d3d11.initialize()) { 39 | return false; 40 | } 41 | } else if (renderer->renderer_type == REFRAMEWORK_RENDERER_D3D12) { 42 | if (!g_d3d12.initialize()) { 43 | return false; 44 | } 45 | } 46 | 47 | set_imgui_style(); 48 | 49 | g_initialized = true; 50 | return true; 51 | } 52 | 53 | inline void imgui_render() { 54 | std::lock_guard _{g_entry_mutex}; 55 | if (!g_initialized) { 56 | if (!initialize()) { 57 | return; 58 | } 59 | } 60 | 61 | ImGui_ImplWin32_NewFrame(); 62 | ImGui::NewFrame(); 63 | 64 | QuestLoader::get()->render_ui(); 65 | 66 | ImGui::EndFrame(); 67 | ImGui::Render(); 68 | } 69 | 70 | void on_present() { 71 | std::lock_guard _{g_entry_mutex}; 72 | if (!g_initialized) { 73 | if (!initialize()) { 74 | return; 75 | } 76 | } 77 | 78 | const auto renderer = API::get()->param()->renderer_data; 79 | 80 | if (renderer->renderer_type == REFRAMEWORK_RENDERER_D3D11) { 81 | ImGui_ImplDX11_NewFrame(); 82 | g_d3d11.render_imgui(); 83 | } else if (renderer->renderer_type == REFRAMEWORK_RENDERER_D3D12) { 84 | const auto command_queue = static_cast(renderer->command_queue); 85 | 86 | if (command_queue == nullptr) { 87 | return; 88 | } 89 | 90 | ImGui_ImplDX12_NewFrame(); 91 | g_d3d12.render_imgui(); 92 | } 93 | } 94 | 95 | void on_device_reset() { 96 | const auto renderer_data = API::get()->param()->renderer_data; 97 | 98 | if (renderer_data->renderer_type == REFRAMEWORK_RENDERER_D3D11) { 99 | ImGui_ImplDX11_Shutdown(); 100 | g_d3d11 = {}; 101 | } 102 | 103 | if (renderer_data->renderer_type == REFRAMEWORK_RENDERER_D3D12) { 104 | ImGui_ImplDX12_Shutdown(); 105 | g_d3d12 = {}; 106 | } 107 | 108 | g_initialized = false; 109 | } 110 | 111 | bool on_message(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { 112 | ImGui_ImplWin32_WndProcHandler(hwnd, msg, wparam, lparam); 113 | 114 | return !ImGui::GetIO().WantCaptureMouse && !ImGui::GetIO().WantCaptureKeyboard; 115 | } 116 | 117 | extern "C" { 118 | 119 | __declspec(dllexport) void reframework_plugin_required_version(REFrameworkPluginVersion* version) { 120 | version->major = REFRAMEWORK_PLUGIN_VERSION_MAJOR; 121 | version->minor = REFRAMEWORK_PLUGIN_VERSION_MINOR; 122 | version->patch = REFRAMEWORK_PLUGIN_VERSION_PATCH; 123 | 124 | version->game_name = "MHRISE"; 125 | } 126 | 127 | __declspec(dllexport) bool reframework_plugin_initialize(const REFrameworkPluginInitializeParam* param) { 128 | API::initialize(param); 129 | ImGui::CreateContext(); 130 | 131 | const auto funcs = param->functions; 132 | funcs->on_message(reinterpret_cast(on_message)); 133 | funcs->on_device_reset(on_device_reset); 134 | funcs->on_present(on_present); 135 | funcs->on_pre_application_entry("BeginRendering", imgui_render); 136 | 137 | return true; 138 | } 139 | 140 | } 141 | 142 | BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID) { 143 | if (reason == DLL_PROCESS_ATTACH) { 144 | utility::log("Loaded"); 145 | } 146 | 147 | return TRUE; 148 | } 149 | 150 | 151 | void set_imgui_style() noexcept { 152 | ImGui::StyleColorsDark(); 153 | 154 | auto& style = ImGui::GetStyle(); 155 | style.WindowRounding = 0.0f; 156 | style.ChildRounding = 0.0f; 157 | style.PopupRounding = 0.0f; 158 | style.FrameRounding = 0.0f; 159 | style.ScrollbarRounding = 2.0f; 160 | style.GrabRounding = 0.0f; 161 | style.TabRounding = 0.0f; 162 | style.WindowBorderSize = 2.0f; 163 | style.WindowPadding = ImVec2(2.0f, 0.0f); 164 | 165 | auto& colors = ImGui::GetStyle().Colors; 166 | // Window BG 167 | colors[ImGuiCol_WindowBg] = ImVec4{0.1f, 0.105f, 0.11f, 1.0f}; 168 | 169 | // Navigatation highlight 170 | colors[ImGuiCol_NavHighlight] = ImVec4{0.3f, 0.305f, 0.31f, 1.0f}; 171 | 172 | // Headers 173 | colors[ImGuiCol_Header] = ImVec4{0.2f, 0.205f, 0.21f, 1.0f}; 174 | colors[ImGuiCol_HeaderHovered] = ImVec4{0.3f, 0.305f, 0.31f, 1.0f}; 175 | colors[ImGuiCol_HeaderActive] = ImVec4{0.55f, 0.5505f, 0.551f, 1.0f}; 176 | 177 | // Buttons 178 | colors[ImGuiCol_Button] = ImVec4{0.2f, 0.205f, 0.21f, 1.0f}; 179 | colors[ImGuiCol_ButtonHovered] = ImVec4{0.3f, 0.305f, 0.31f, 1.0f}; 180 | colors[ImGuiCol_ButtonActive] = ImVec4{0.55f, 0.5505f, 0.551f, 1.0f}; 181 | 182 | // Checkbox 183 | colors[ImGuiCol_CheckMark] = ImVec4(0.55f, 0.5505f, 0.551f, 1.0f); 184 | 185 | // Frame BG 186 | colors[ImGuiCol_FrameBg] = ImVec4{0.211f, 0.210f, 0.25f, 1.0f}; 187 | colors[ImGuiCol_FrameBgHovered] = ImVec4{0.3f, 0.305f, 0.31f, 1.0f}; 188 | colors[ImGuiCol_FrameBgActive] = ImVec4{0.55f, 0.5505f, 0.551f, 1.0f}; 189 | 190 | // Tabs 191 | colors[ImGuiCol_Tab] = ImVec4{0.25f, 0.2505f, 0.251f, 1.0f}; 192 | colors[ImGuiCol_TabHovered] = ImVec4{0.38f, 0.3805f, 0.381f, 1.0f}; 193 | colors[ImGuiCol_TabActive] = ImVec4{0.28f, 0.2805f, 0.281f, 1.0f}; 194 | colors[ImGuiCol_TabUnfocused] = ImVec4{0.25f, 0.2505f, 0.251f, 1.0f}; 195 | colors[ImGuiCol_TabUnfocusedActive] = ImVec4{0.8f, 0.805f, 0.81f, 1.0f}; 196 | 197 | // Resize Grip 198 | colors[ImGuiCol_ResizeGrip] = ImVec4{0.2f, 0.205f, 0.21f, 0.0f}; 199 | colors[ImGuiCol_ResizeGripHovered] = ImVec4{0.3f, 0.305f, 0.31f, 1.0f}; 200 | colors[ImGuiCol_ResizeGripActive] = ImVec4{0.55f, 0.5505f, 0.551f, 1.0f}; 201 | 202 | // Title 203 | colors[ImGuiCol_TitleBg] = ImVec4{0.25f, 0.2505f, 0.251f, 1.0f}; 204 | colors[ImGuiCol_TitleBgActive] = ImVec4{0.55f, 0.5505f, 0.551f, 1.0f}; 205 | colors[ImGuiCol_TitleBgCollapsed] = ImVec4{0.25f, 0.2505f, 0.251f, 1.0f}; 206 | 207 | const auto& fonts = ImGui::GetIO().Fonts; 208 | 209 | fonts->Clear(); 210 | fonts->AddFontFromMemoryCompressedTTF(RobotoMedium_compressed_data, RobotoMedium_compressed_size, 16.0f); 211 | fonts->Build(); 212 | } 213 | -------------------------------------------------------------------------------- /RiseQuestLoader/Quest.json: -------------------------------------------------------------------------------- 1 | { 2 | "ID": 103, 3 | "QuestText": { 4 | "name": "Fungal Frustrations", 5 | "client": "Mushroom Restaurant Owner", 6 | "description": "I've been dreaming of opening\nmy own restaurant, but I spent\nso much time experimenting\nwith the menu that I ran out of\ningredients! I'll never be able to\nopen if I don't get some more.\nThink you can help me out?", 7 | "target": "Deliver 8 Unique Mushrooms" 8 | }, 9 | "QuestData": { 10 | "type": 32, 11 | "level": 1, 12 | "enemylevel": 0, 13 | "map": 0, 14 | "quest_time": 3, 15 | "time_variation": 3, 16 | "time_limit": 50, 17 | "carts": 3, 18 | "conditions": [ 0, 0 ], 19 | "targets": [ 1, 0 ], 20 | "target_monsters": [ 0, 0 ], 21 | "target_items": [ 0, 0 ], 22 | "amount": [ 0, 0 ], 23 | "monsters": [ 24 | { 25 | "id": 0, 26 | "spawn_condition": 0, 27 | "param": 0 28 | }, 29 | { 30 | "id": 0, 31 | "spawn_condition": 0, 32 | "param": 0 33 | }, 34 | { 35 | "id": 0, 36 | "spawn_condition": 0, 37 | "param": 0 38 | }, 39 | { 40 | "id": 0, 41 | "spawn_condition": 0, 42 | "param": 0 43 | }, 44 | { 45 | "id": 0, 46 | "spawn_condition": 0, 47 | "param": 0 48 | }, 49 | { 50 | "id": 0, 51 | "spawn_condition": 0, 52 | "param": 0 53 | }, 54 | { 55 | "id": 0, 56 | "spawn_condition": 0, 57 | "param": 0 58 | } 59 | ], 60 | "extra_monster_count": 0, 61 | "swap_frequency": [ 0, 0 ], 62 | "swap_condition": [ 0, 0 ], 63 | "swap_param": [ 0, 0 ], 64 | "swap_exit_time": [ 0, 0 ], 65 | "swap_stop_type": 0, 66 | "swap_stop_param": 0, 67 | "swap_exec_type": 0, 68 | "swap_exit_ride": false, 69 | "reward": { 70 | "zenny": 1000, 71 | "points": 100, 72 | "hrp": 130 73 | }, 74 | "supply_id": 0, 75 | "monster_icons": [ 0, 0, 0, 0, 0 ], 76 | "tutorial": false, 77 | "arena_param": { 78 | "fence_default_active": false, 79 | "fence_uptime": 0, 80 | "fence_initial_delay": 0, 81 | "fence_cooldown": 0, 82 | "pillars_active": [ false, false, false ] 83 | }, 84 | "auto_match_hr": 0, 85 | "battle_bgm_type": 0, 86 | "clear_bgm_type": 0 87 | }, 88 | "EnemyData": { 89 | "small_monsters": { 90 | "spawn_type": 21, 91 | "hp": 31, 92 | "attack": 38, 93 | "part_hp": 30, 94 | "other": 4, 95 | "multi": 0 96 | }, 97 | "monsters": [ 98 | { 99 | "path_id": 21, 100 | "set_name": "", 101 | "sub_type": 0, 102 | "hp": 0, 103 | "attack": 0, 104 | "other": 0, 105 | "stamina": 0, 106 | "size": 0, 107 | "scale_type": 1, 108 | "difficulty": 0, 109 | "multi": 0 110 | }, 111 | { 112 | "path_id": 21, 113 | "set_name": "", 114 | "sub_type": 0, 115 | "hp": 0, 116 | "attack": 0, 117 | "other": 0, 118 | "stamina": 0, 119 | "size": 0, 120 | "scale_type": 1, 121 | "difficulty": 0, 122 | "multi": 0 123 | }, 124 | { 125 | "path_id": 21, 126 | "set_name": "", 127 | "sub_type": 0, 128 | "hp": 0, 129 | "attack": 0, 130 | "other": 0, 131 | "stamina": 0, 132 | "size": 0, 133 | "scale_type": 1, 134 | "difficulty": 0, 135 | "multi": 0 136 | }, 137 | { 138 | "path_id": 21, 139 | "set_name": "", 140 | "sub_type": 0, 141 | "hp": 0, 142 | "attack": 0, 143 | "other": 0, 144 | "stamina": 0, 145 | "size": 0, 146 | "scale_type": 1, 147 | "difficulty": 0, 148 | "multi": 0 149 | }, 150 | { 151 | "path_id": 21, 152 | "set_name": "", 153 | "sub_type": 0, 154 | "hp": 0, 155 | "attack": 0, 156 | "other": 0, 157 | "stamina": 0, 158 | "size": 0, 159 | "scale_type": 1, 160 | "difficulty": 0, 161 | "multi": 0 162 | }, 163 | { 164 | "path_id": 21, 165 | "set_name": "", 166 | "sub_type": 0, 167 | "hp": 0, 168 | "attack": 0, 169 | "other": 0, 170 | "stamina": 0, 171 | "size": 0, 172 | "scale_type": 1, 173 | "difficulty": 0, 174 | "multi": 0 175 | }, 176 | { 177 | "path_id": 21, 178 | "set_name": "", 179 | "sub_type": 0, 180 | "hp": 0, 181 | "attack": 0, 182 | "other": 0, 183 | "stamina": 0, 184 | "size": 0, 185 | "scale_type": 1, 186 | "difficulty": 0, 187 | "multi": 0 188 | } 189 | 190 | ] 191 | }, 192 | "RampageData": { 193 | "seed": 0, 194 | "attributes": 1, 195 | "waves": [ 196 | { 197 | "boss_monster": 0, 198 | "boss_subtype": 0, 199 | "order_table": 0, 200 | "monsters": [ 0, 0, 0, 0 ], 201 | "boss_em_nando_table": -1, 202 | "wave_em_nando_table": -1 203 | }, 204 | { 205 | "boss_monster": 0, 206 | "boss_subtype": 0, 207 | "order_table": 0, 208 | "monsters": [ 0, 0, 0, 0 ], 209 | "boss_em_nando_table": -1, 210 | "wave_em_nando_table": -1 211 | }, 212 | { 213 | "boss_monster": 0, 214 | "boss_subtype": 0, 215 | "order_table": 0, 216 | "monsters": [ 0, 0, 0, 0 ], 217 | "boss_em_nando_table": -1, 218 | "wave_em_nando_table": -1 219 | } 220 | ], 221 | "level": 3, 222 | "map": 0, 223 | "category": 0, 224 | "village": true, 225 | "base_time": 13, 226 | "start_block": 3, 227 | "end_block": 3, 228 | "extra_wave_count": 0, 229 | "extra_em_nando_table": -1, 230 | "apex_order_table": -1, 231 | "weapon_unlock_table": -1, 232 | "sub_targets": [ 0, 0, 0, 0, 0, 0 ], 233 | "subtarget_5_wave": 0 234 | } 235 | } 236 | -------------------------------------------------------------------------------- /RiseQuestEditor/Assets/Monsters.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Name": "None", 4 | "Id": 0 5 | }, 6 | { 7 | "Name": "Rathian", 8 | "Id": 1 9 | }, 10 | { 11 | "Name": "Rathalos", 12 | "Id": 2 13 | }, 14 | { 15 | "Name": "Khezu", 16 | "Id": 3 17 | }, 18 | { 19 | "Name": "Basarios", 20 | "Id": 4 21 | }, 22 | { 23 | "Name": "Diablos", 24 | "Id": 7 25 | }, 26 | { 27 | "Name": "Daimyo Hermitaur", 28 | "Id": 19 29 | }, 30 | { 31 | "Name": "Shogun Ceanataur", 32 | "Id": 20 33 | }, 34 | { 35 | "Name": "Rajang", 36 | "Id": 23 37 | }, 38 | { 39 | "Name": "Kushala Daora", 40 | "Id": 24 41 | }, 42 | { 43 | "Name": "Chameleos", 44 | "Id": 25 45 | }, 46 | { 47 | "Name": "Teostra", 48 | "Id": 27 49 | }, 50 | { 51 | "Name": "Tigrex", 52 | "Id": 32 53 | }, 54 | { 55 | "Name": "Nargacuga", 56 | "Id": 37 57 | }, 58 | { 59 | "Name": "Barioth", 60 | "Id": 42 61 | }, 62 | { 63 | "Name": "Barroth", 64 | "Id": 44 65 | }, 66 | { 67 | "Name": "Royal Ludroth", 68 | "Id": 47 69 | }, 70 | { 71 | "Name": "Great Baggi", 72 | "Id": 54 73 | }, 74 | { 75 | "Name": "Zinogre", 76 | "Id": 57 77 | }, 78 | { 79 | "Name": "Amatsu", 80 | "Id": 58 81 | }, 82 | { 83 | "Name": "Great Wroggi", 84 | "Id": 59 85 | }, 86 | { 87 | "Name": "Arzuros", 88 | "Id": 60 89 | }, 90 | { 91 | "Name": "Lagombi", 92 | "Id": 61 93 | }, 94 | { 95 | "Name": "Volvidon", 96 | "Id": 62 97 | }, 98 | { 99 | "Name": "Gore Magala", 100 | "Id": 71 101 | }, 102 | { 103 | "Name": "Chaotic Gore Magala", 104 | "Id": 1351 105 | }, 106 | { 107 | "Name": "Shagaru Magala", 108 | "Id": 72 109 | }, 110 | { 111 | "Name": "Seregios", 112 | "Id": 77 113 | }, 114 | { 115 | "Name": "Astalos", 116 | "Id": 81 117 | }, 118 | { 119 | "Name": "Mizutsune", 120 | "Id": 82 121 | }, 122 | { 123 | "Name": "Violet Mizutsune", 124 | "Id": 594 125 | }, 126 | { 127 | "Name": "Magnamalo", 128 | "Id": 89 129 | }, 130 | { 131 | "Name": "Bishaten", 132 | "Id": 90 133 | }, 134 | { 135 | "Name": "Aknosom", 136 | "Id": 91 137 | }, 138 | { 139 | "Name": "Tetranadon", 140 | "Id": 92 141 | }, 142 | { 143 | "Name": "Somnacanth", 144 | "Id": 93 145 | }, 146 | { 147 | "Name": "Rakna-Kadaki", 148 | "Id": 94 149 | }, 150 | { 151 | "Name": "Almudron", 152 | "Id": 95 153 | }, 154 | { 155 | "Name": "Wind Serpent Ibushi", 156 | "Id": 96 157 | }, 158 | { 159 | "Name": "Goss Harag", 160 | "Id": 97 161 | }, 162 | { 163 | "Name": "Great Izuchi", 164 | "Id": 98 165 | }, 166 | { 167 | "Name": "Thunder Serpent Narwa", 168 | "Id": 99 169 | }, 170 | { 171 | "Name": "Anjanath", 172 | "Id": 100 173 | }, 174 | { 175 | "Name": "Pukei-Pukei", 176 | "Id": 102 177 | }, 178 | { 179 | "Name": "Kulu-Ya-Ku", 180 | "Id": 107 181 | }, 182 | { 183 | "Name": "Jyuratodus", 184 | "Id": 108 185 | }, 186 | { 187 | "Name": "Tobi-Kadachi", 188 | "Id": 109 189 | }, 190 | { 191 | "Name": "Bazelgeuse", 192 | "Id": 118 193 | }, 194 | { 195 | "Name": "Velkhana", 196 | "Id": 124 197 | }, 198 | { 199 | "Name": "Toadversary", 200 | "Id": 131 201 | }, 202 | { 203 | "Name": "Malzeno", 204 | "Id": 132 205 | }, 206 | { 207 | "Name": "Lunagaron", 208 | "Id": 133 209 | }, 210 | { 211 | "Name": "Garangolm", 212 | "Id": 134 213 | }, 214 | { 215 | "Name": "Gaismagorm", 216 | "Id": 135 217 | }, 218 | { 219 | "Name": "Espinas", 220 | "Id": 136 221 | }, 222 | { 223 | "Name": "Flaming Espinas", 224 | "Id": 392 225 | }, 226 | { 227 | "Name": "Blood Orange Bishaten", 228 | "Id": 346 229 | }, 230 | { 231 | "Name": "Aurora Somnacanth", 232 | "Id": 349 233 | }, 234 | { 235 | "Name": "Pyre Rakna-Kadaki", 236 | "Id": 350 237 | }, 238 | { 239 | "Name": "Magma Almudron", 240 | "Id": 351 241 | }, 242 | { 243 | "Name": "Gold Rathian", 244 | "Id": 513 245 | }, 246 | { 247 | "Name": "Silver Rathalos", 248 | "Id": 514 249 | }, 250 | { 251 | "Name": "Lucent Nargacuga", 252 | "Id": 549 253 | }, 254 | { 255 | "Name": "Furious Rajang", 256 | "Id": 1303 257 | }, 258 | { 259 | "Name": "Crimson Glow Valstrax", 260 | "Id": 1366 261 | }, 262 | { 263 | "Name": "Scorned Magnamalo", 264 | "Id": 1369 265 | }, 266 | { 267 | "Name": "Narwa the Allmother", 268 | "Id": 1379 269 | }, 270 | { 271 | "Name": "Seething Bazelgeuse", 272 | "Id": 1398 273 | }, 274 | { 275 | "Name": "Primordial Malzeno", 276 | "Id": 1412 277 | }, 278 | { 279 | "Name": "Apex Rathian", 280 | "Id": 1793 281 | }, 282 | { 283 | "Name": "Apex Rathalos", 284 | "Id": 1794 285 | }, 286 | { 287 | "Name": "Apex Diablos", 288 | "Id": 1799 289 | }, 290 | { 291 | "Name": "Apex Zinogre", 292 | "Id": 1849 293 | }, 294 | { 295 | "Name": "Apex Arzuros", 296 | "Id": 1852 297 | }, 298 | { 299 | "Name": "Apex Mizutsune", 300 | "Id": 1874 301 | }, 302 | { 303 | "Name": "Risen Kushala Daora", 304 | "Id": 2072 305 | }, 306 | { 307 | "Name": "Risen Chameleos", 308 | "Id": 2073 309 | }, 310 | { 311 | "Name": "Risen Teostra", 312 | "Id": 2075 313 | }, 314 | { 315 | "Name": "Risen Shagaru Magala", 316 | "Id": 2120 317 | }, 318 | { 319 | "Name": "Risen Crimson Glow Valstrax", 320 | "Id": 2134 321 | }, 322 | { 323 | "Name": "Kelbi", 324 | "Id": 4099 325 | }, 326 | { 327 | "Name": "Hornetaur", 328 | "Id": 4101 329 | }, 330 | { 331 | "Name": "Vespoid", 332 | "Id": 4102 333 | }, 334 | { 335 | "Name": "Felyne", 336 | "Id": 4103 337 | }, 338 | { 339 | "Name": "Melynx", 340 | "Id": 4104 341 | }, 342 | { 343 | "Name": "Velociprey", 344 | "Id": 4105 345 | }, 346 | { 347 | "Name": "Bullfango", 348 | "Id": 4109 349 | }, 350 | { 351 | "Name": "Popo", 352 | "Id": 4110 353 | }, 354 | { 355 | "Name": "Anteka", 356 | "Id": 4112 357 | }, 358 | { 359 | "Name": "Remobra", 360 | "Id": 4115 361 | }, 362 | { 363 | "Name": "Hermitaur", 364 | "Id": 4116 365 | }, 366 | { 367 | "Name": "Ceanataur", 368 | "Id": 4117 369 | }, 370 | { 371 | "Name": "Rhenoplos", 372 | "Id": 4121 373 | }, 374 | { 375 | "Name": "Bnahabra", 376 | "Id": 4122 377 | }, 378 | { 379 | "Name": "Altaroth", 380 | "Id": 4123 381 | }, 382 | { 383 | "Name": "Gajau", 384 | "Id": 4125 385 | }, 386 | { 387 | "Name": "Jaggi", 388 | "Id": 4130 389 | }, 390 | { 391 | "Name": "Jaggia", 392 | "Id": 4131 393 | }, 394 | { 395 | "Name": "Baggi", 396 | "Id": 4132 397 | }, 398 | { 399 | "Name": "Delex", 400 | "Id": 4134 401 | }, 402 | { 403 | "Name": "Ludroth", 404 | "Id": 4135 405 | }, 406 | { 407 | "Name": "Uroktor", 408 | "Id": 4136 409 | }, 410 | { 411 | "Name": "Slagtoth", 412 | "Id": 4137 413 | }, 414 | { 415 | "Name": "Gargwa", 416 | "Id": 4138 417 | }, 418 | { 419 | "Name": "Wroggi", 420 | "Id": 4139 421 | }, 422 | { 423 | "Name": "Zamite", 424 | "Id": 4140 425 | }, 426 | { 427 | "Name": "Jagras", 428 | "Id": 4145 429 | }, 430 | { 431 | "Name": "Kestodon", 432 | "Id": 4147 433 | }, 434 | { 435 | "Name": "Bombadgy", 436 | "Id": 4186 437 | }, 438 | { 439 | "Name": "Izuchi", 440 | "Id": 4187 441 | }, 442 | { 443 | "Name": "Rachnoid", 444 | "Id": 4188 445 | }, 446 | { 447 | "Name": "Gowngoat", 448 | "Id": 4189 449 | }, 450 | { 451 | "Name": "Boggi", 452 | "Id": 4190 453 | }, 454 | { 455 | "Name": "Pyrantula", 456 | "Id": 4444 457 | }, 458 | { 459 | "Name": "Kelbi", 460 | "Id": 5379 461 | }, 462 | { 463 | "Name": "Kestodon", 464 | "Id": 5427 465 | }, 466 | { 467 | "Name": "Izuchi", 468 | "Id": 5467 469 | } 470 | ] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /RiseSpawnEditor/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |