mirror of
https://github.com/ModOrganizer2/modorganizer-basic_games.git
synced 2026-07-27 14:07:29 -07:00
Add support for Divinity Original Sin
This includes the original (untested, mostly just for Nexus download support) and the enhanced edition (actually somewhat tested). This is some basic support for mods installed in the game folder. There's also a location for actual packaged mods in the Documents folder that I hope to add support for at some point.
This commit is contained in:
@@ -17,7 +17,7 @@ Download the archive for your MO2 version and extract it directly into your MO2
|
||||
|
||||
- Mod Organizer **2.3.2**: [Download](https://github.com/ModOrganizer2/modorganizer-basic_games/releases/download/v0.0.3/basic_games-0.0.3.zip)
|
||||
and extract in your `plugins/` folder (see below).
|
||||
- Mod Organizer **2.4**: Basic games is included in Mod Organizer 2.4.
|
||||
- Mod Organizer **2.4**: Basic games is included in Mod Organizer 2.4.
|
||||
- If you want to use new game plugins that have not been included in the
|
||||
release, [download the latest archive](https://github.com/ModOrganizer2/modorganizer-basic_games/archive/master.zip) and extract the files
|
||||
in the existing `basic_games` folder, overwriting existing files.
|
||||
@@ -51,7 +51,9 @@ You can rename `modorganizer-basic_games-xxx` to whatever you want (e.g., `basic
|
||||
| Darkest Dungeon — [GOG](https://www.gog.com/game/darkest_dungeon) / [STEAM](https://store.steampowered.com/app/262060/Darkest_Dungeon/) | [erri120](https://github.com/erri120) | [game_darkestdungeon.py](games/game_darkestdungeon.py) | <ul><li>save slot parsing</li><li>mod data checker</li></ul> |
|
||||
| Dark Messiah of Might & Magic — [STEAM](https://store.steampowered.com/app/2100/Dark_Messiah_of_Might__Magic/) | [Holt59](https://github.com/holt59/) | [game_darkmessiahofmightandmagic.py](games/game_darkmessiahofmightandmagic.py) | <ul><li>save game preview</li></ul> |
|
||||
| Dark Souls — [STEAM](https://store.steampowered.com/app/211420/DARK_SOULS_Prepare_To_Die_Edition/) | [Holt59](https://github.com/holt59/) | [game_darksouls.py](games/game_darkestdungeon.py) | |
|
||||
| Dungeon Siege II — [GOG](https://www.gog.com/game/dungeon_siege_collection) / [STEAM](https://store.steampowered.com/app/39200/Dungeon_Siege_II/) | [Holt59](https://github.com/holt59/) | [game_dungeonsiege2.py](games/game_dungeonsiege2.py) | <ul><li>mod data checker</li></ul> |
|
||||
| Divinity: Original Sin (Classic) — [STEAM](https://store.steampowered.com/app/230230/Divinity_Original_Sin_Classic/) | [LostDragonist](https://github.com/LostDragonist/) | [game_divinityoriginalsin.py](games/game_divinityoriginalsin.py) | <ul><li>save game preview</li></ul> |
|
||||
| Divinity: Original Sin (Enhanced Edition) — [STEAM](https://store.steampowered.com/app/373420/Divinity_Original_Sin__Enhanced_Edition/) | [LostDragonist](https://github.com/LostDragonist/) | [game_divinityoriginalsinee.py](games/game_divinityoriginalsinee.py) | <ul><li>save game preview</li><li>mod data checker</li></ul> |
|
||||
| Dungeon Siege II — [GOG](https://www.gog.com/game/dungeon_siege_collection) / [STEAM](https://store.steampowered.com/app/39200/Dungeon_Siege_II/) | [Holt59](https://github.com/holt59/) | [game_dungeonsiege2.py](games/game_dungeonsiege2.py) | <ul><li>mod data checker</li></ul> |
|
||||
| Kingdom Come: Deliverance — [GOG](https://www.gog.com/game/kingdom_come_deliverance) / [STEAM](https://store.steampowered.com/app/379430/Kingdom_Come_Deliverance/)| [Silencer711](https://github.com/Silencer711) | [game_kingdomcomedeliverance.py](games/game_kingdomcomedeliverance.py) | <ul><li>profile specific cfg files</li></ul>|
|
||||
| Mirror's Edge — [GOG](https://www.gog.com/game/mirrors_edge) / [STEAM](https://store.steampowered.com/app/17410/Mirrors_Edge)|[EzioTheDeadPoet](https://eziothedeadpoet.github.io/AboutMe/)|[game_mirrorsedge.py](games/game_mirrorsedge.py)| |
|
||||
| Mount & Blade II: Bannerlord — [GOG](https://www.gog.com/game/mount_blade_ii_bannerlord) / [STEAM](https://store.steampowered.com/app/261550/Mount__Blade_II_Bannerlord/) | [Holt59](https://github.com/holt59/) | [game_mountandblade2.py](games/game_mountandblade2.py) | <ul><li>mod data checker</li></ul> |
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
import mobase
|
||||
|
||||
from ..basic_game import BasicGame
|
||||
from ..basic_features import BasicGameSaveGameInfo
|
||||
|
||||
|
||||
class DivinityOriginalSinGame(BasicGame):
|
||||
Name = "Divinity Original Sin Support Plugin"
|
||||
Author = "LostDragonist"
|
||||
Version = "1.0.0"
|
||||
|
||||
GameName = "Divinity: Original Sin (Classic)"
|
||||
GameShortName = "divinityoriginalsin"
|
||||
GameNexusName = "divinityoriginalsin"
|
||||
GameValidShortNames = ["divinityoriginalsin"]
|
||||
GameNexusId = 573
|
||||
GameSteamId = [230230]
|
||||
GameBinary = "Shipping/EoCApp.exe"
|
||||
GameDataPath = "Data"
|
||||
GameSaveExtension = "lsv" # Not confirmed
|
||||
GameDocumentsDirectory = (
|
||||
"%USERPROFILE%/Documents/Larian Studios/Divinity Original Sin/PlayerProfiles"
|
||||
)
|
||||
GameSavesDirectory = (
|
||||
"%USERPROFILE%/Documents/Larian Studios/Divinity Original Sin/PlayerProfiles"
|
||||
)
|
||||
|
||||
def init(self, organizer: mobase.IOrganizer):
|
||||
super().init(organizer)
|
||||
self._featureMap[mobase.SaveGameInfo] = BasicGameSaveGameInfo(
|
||||
lambda s: s.replace(".lsv", ".png") # Not confirmed
|
||||
)
|
||||
return True
|
||||
@@ -0,0 +1,81 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
from typing import List, Optional
|
||||
|
||||
import mobase
|
||||
|
||||
from ..basic_game import BasicGame
|
||||
from ..basic_features import BasicGameSaveGameInfo
|
||||
|
||||
|
||||
class DivinityOriginalSinEnhancedEditionModDataChecker(mobase.ModDataChecker):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def dataLooksValid(
|
||||
self, tree: mobase.IFileTree
|
||||
) -> mobase.ModDataChecker.CheckReturn:
|
||||
|
||||
folders: List[mobase.IFileTree] = []
|
||||
files: List[mobase.FileTreeEntry] = []
|
||||
|
||||
for entry in tree:
|
||||
if isinstance(entry, mobase.IFileTree):
|
||||
folders.append(entry)
|
||||
else:
|
||||
files.append(entry)
|
||||
|
||||
VALID_FOLDERS = [
|
||||
"Cursors",
|
||||
"DLC",
|
||||
"Engine",
|
||||
"Fonts",
|
||||
"Localization",
|
||||
"PakInfo",
|
||||
"PlayerProfiles",
|
||||
"Public",
|
||||
"Shaders",
|
||||
]
|
||||
for src_folder in folders:
|
||||
for dst_folder in VALID_FOLDERS:
|
||||
if src_folder.name().lower() == dst_folder.lower():
|
||||
return mobase.ModDataChecker.VALID
|
||||
|
||||
return mobase.ModDataChecker.INVALID
|
||||
|
||||
def fix(self, tree: mobase.IFileTree) -> Optional[mobase.IFileTree]:
|
||||
return None
|
||||
|
||||
|
||||
class DivinityOriginalSinEnhancedEditionGame(BasicGame):
|
||||
Name = "Divinity Original Sin Enhanced Edition Support Plugin"
|
||||
Author = "LostDragonist"
|
||||
Version = "1.0.0"
|
||||
|
||||
GameName = "Divinity: Original Sin (Enhanced Edition)"
|
||||
GameShortName = "divinityoriginalsinenhancededition"
|
||||
GameNexusName = "divinityoriginalsinenhancededition"
|
||||
GameValidShortNames = ["divinityoriginalsin"]
|
||||
GameNexusId = 1995
|
||||
GameSteamId = [373420]
|
||||
GameBinary = "Shipping/EoCApp.exe"
|
||||
GameDataPath = "Data"
|
||||
GameSaveExtension = "lsv"
|
||||
GameDocumentsDirectory = (
|
||||
"%USERPROFILE%/Documents/Larian Studios/"
|
||||
"Divinity Original Sin Enhanced Edition/PlayerProfiles"
|
||||
)
|
||||
GameSavesDirectory = (
|
||||
"%USERPROFILE%/Documents/Larian Studios/"
|
||||
"Divinity Original Sin Enhanced Edition/PlayerProfiles"
|
||||
)
|
||||
|
||||
def init(self, organizer: mobase.IOrganizer):
|
||||
super().init(organizer)
|
||||
self._featureMap[mobase.SaveGameInfo] = BasicGameSaveGameInfo(
|
||||
lambda s: s.replace(".lsv", ".png")
|
||||
)
|
||||
self._featureMap[
|
||||
mobase.ModDataChecker
|
||||
] = DivinityOriginalSinEnhancedEditionModDataChecker()
|
||||
return True
|
||||
Reference in New Issue
Block a user