FixRaidenBoss2 4.3.0__tar.gz → 4.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fixraidenboss2-4.3.0/src/FixRaidenBoss2.egg-info → fixraidenboss2-4.3.2}/PKG-INFO +4 -3
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/README.md +3 -2
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/pyproject.toml +1 -1
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/__init__.py +3 -1
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/ImgFormats.py +5 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/Packages.py +4 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/CommandBuilder.py +14 -5
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/enums/CommandOpts.py +1 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/enums/ShortCommandOpts.py +1 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/IniFixBuilderData.py +6 -4
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/IniParseBuilderData.py +15 -17
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/main.py +2 -1
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/IniSectionGraph.py +2 -2
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/Mod.py +12 -2
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/IniFile.py +20 -7
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iftemplate/IfContentPart.py +21 -23
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniParsers/GIMIParser.py +7 -5
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/BaseTexFilter.py +2 -2
- fixraidenboss2-4.3.2/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/ColourReplaceFilter.py +145 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/GammaFilter.py +10 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/HueAdjust.py +10 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/InvertAlphaFilter.py +10 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/PixelFilter.py +11 -1
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/TexMetadataFilter.py +10 -0
- fixraidenboss2-4.3.2/src/FixRaidenBoss2/model/strategies/texEditors/texFilters/TransparencyAdjustFilter.py +65 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/textures/Colour.py +28 -1
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/remapService.py +57 -11
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2/src/FixRaidenBoss2.egg-info}/PKG-INFO +4 -3
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2.egg-info/SOURCES.txt +2 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/LICENSE +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/setup.cfg +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/__main__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/BufDataTypes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/BufElementTypes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/BufFormatNames.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/BufTypeNames.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/ByteSize.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/ColourConsts.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/Colours.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/FileEncodings.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/FileExt.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/FilePathConsts.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/FilePrefixes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/FileSuffixes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/FileTypes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/GIBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/GenericTypes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/GlobalIniClassifiers.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/GlobalIniRemoveBuilders.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/IfPredPartType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/IniConsts.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/ModTypeBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/ModTypeNames.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/ModTypes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/TexConsts.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/constants/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/CommandFormatter.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/enums/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/HashData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/IndexData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/ModData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/PositionEditorData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/VGRemapData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/BadBufData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/BufFileNotRecognized.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/ConflictingOptions.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/DuplicateFileException.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/Error.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/FileException.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/InvalidModType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/MissingFileException.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/NoModType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/RemapMissingBlendFile.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/exceptions/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/FileStats.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/Model.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/VGRemap.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/Version.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/Hashes.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/Indices.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/IniFixBuilderArgs.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/IniParseBuilderArgs.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/ModAssets.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/ModDictAssets.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/ModDoubleDictAssets.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/ModIdAssets.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/ModMappedAssets.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/PositionEditors.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/VGRemaps.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/assets/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/buffers/BufDataType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/buffers/BufElementType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/buffers/BufFloat.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/buffers/BufInt.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/buffers/BufType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/buffers/BufUnorm.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/BinaryFile.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/BlendFile.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/BufFile.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/File.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/PositionFile.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/files/TextureFile.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iftemplate/IfPredPart.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iftemplate/IfTemplate.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iftemplate/IfTemplatePart.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iniparserdicts/KeepAllDict.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iniparserdicts/KeepFirstDict.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iniparserdicts/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iniresources/IniResourceModel.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iniresources/IniTexModel.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/ModType.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/bufEditors/BaseBufEditor.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/bufEditors/BufEditor.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/BaseIniClassifier.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/BaseIniClassifierBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/IniClassifier.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/IniClassifierBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/IniClassifyStats.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/states/IniClsAction.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/states/IniClsActionArgs.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/states/IniClsCond.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniClassifiers/states/IniClsTransitionVals.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/BaseIniFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/GIMIFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/GIMIObjMergeFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/GIMIObjRegEditFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/GIMIObjReplaceFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/GIMIObjSplitFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/IniFixBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/MultiModFixer.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/BaseRegEditFilter.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/RegEditFilter.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/RegNewVals.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/RegRemap.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/RegRemove.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/RegTexAdd.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniFixers/regEditFilters/RegTexEdit.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniParsers/BaseIniParser.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniParsers/GIMIObjParser.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniParsers/IniParseBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniRemovers/BaseIniRemover.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniRemovers/IniRemoveBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/iniRemovers/IniRemover.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/BaseTexEditor.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/TexCreator.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/TexEditor.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/BasePixelTransform.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/ColourReplace.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/CorrectGamma.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/HighlightShadow.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/InvertAlpha.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/TempControl.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/TintTransform.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/strategies/texEditors/pixelTransforms/Transparency.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/textures/ColourRange.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/Algo.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/Builder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/DFA.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/DictTools.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/FlyweightBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/Heading.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/HeapNode.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/ListTools.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/Node.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/PackageData.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/PackageManager.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/TextTools.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/caches/Cache.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/caches/LRUCache.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/caches/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/concurrency/ConcurrentManager.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/concurrency/ProcessManager.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/concurrency/ThreadManager.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/files/FilePath.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/files/FileService.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/files/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/tries/AhoCorasicDFA.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/tries/AhoCorasickBuilder.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/tries/BaseAhoCorasickDFA.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/tries/FastAhoCorasickDFA.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/tools/tries/Trie.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/view/Logger.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/view/__init__.py +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2.egg-info/dependency_links.txt +0 -0
- {fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: FixRaidenBoss2
|
|
3
|
-
Version: 4.3.
|
|
3
|
+
Version: 4.3.2
|
|
4
4
|
Summary: A library to help remap the mods installed on a character onto the skins of the character
|
|
5
5
|
Author-email: NK <qqqqaaaapppp0000@gmail.com>, Albert Gold <AlexXianZhenYuAu@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/nhok0169/Anime-Game-Remap
|
|
@@ -450,8 +450,9 @@ print("The Raiden Mod is fixed!")
|
|
|
450
450
|
| -u, --undo | Undo the previous runs of the script |
|
|
451
451
|
| -ho, --hideOriginal | Show only the mod on the remapped character and do not show the mod on the original character |
|
|
452
452
|
| -l str, --log str | The folder location to log the printed out text into a seperate .txt file. If this option is not specified, then will not log the printed out text. |
|
|
453
|
-
| -a, --all | Parses all *.ini files that the program encounters. This option supersedes the --types option<br><br>
|
|
454
|
-
| -dt str, --defaultType str | The default mod type to use if the *.ini file belongs to some unknown mod <br> If the --all
|
|
453
|
+
| -a, --all | Parses all *.ini files that the program encounters. This option supersedes the --types option<br><br>For *.ini file where a mod cannot be identified, usually, you would also need to specify what particular mod the *.ini file defaults to using the --defaultType option. <br> Otherwise, you will be defaulted to fixing 'raiden' mods. |
|
|
454
|
+
| -dt str, --defaultType str | The default mod type to use if the *.ini file belongs to some unknown mod. <br> <br> - If --forceType is set to True, this option has not effect <br> - If the --all is set to True and no values are specified for this option, the default argument for this option is set to 'raiden' <br> - Otherwise, this option has not effect and any unknown mods will be skipped <br> <br> See below for the different names/aliases of the supported types of mods. |
|
|
455
|
+
| -ft str, --forceType str | Forcibly assumes the mod type for all *.ini file parsed. <br> <br> This option supersedes the --types option and the --all option. <br> <br> See below for the different names/aliases of the supported types of mods. |
|
|
455
456
|
| -t str, --types str | Parses *.ini files that the program encounters for only specific types of mods. If the --all option has been specified, this option has no effect. <br> By default, if this option is not specified, will parse the *.ini files for all the supported types of mods. <br> <br> Please specify the types of mods using the the mod type's name or alias, then seperate each name/alias with a comma(,) <br> *eg. raiden,arlecchino,ayaya* |
|
|
456
457
|
| -rt str, --remappedTypes str | From all the mods to fix, specified by the --types option, will specifically remap those mods to the mods specified by this option. <br> For a mod specified by the --types option, if none of its corresponding remapped mods are specified by this option, then the mod specified by the --types option will be remapped to all its corresponding mods. <br> <br> ------------------- <br> eg. <br> If this program was ran with the following options: <br> --types kequeen,jean <br> --remappedTypes jeanSea <br> <br> the program will do the following remap: <br> keqing --> keqingOpulent <br> Jean --> JeanSea <br> <br> Note that Jean will not remap to JeanCN <br> ------------------- <br> <br> By default, if this option is not specified, will remap all the mods specified in --types to their corresponding remapped mods. <br> <br> Please specify the types of mods using the the mod type's name or alias, then seperate each name/alias with a comma(,) <br> eg. raiden,arlecchino,ayaya <br> <br> See below for the different names/aliases of the supported types of mods. |
|
|
457
458
|
|
|
@@ -435,8 +435,9 @@ print("The Raiden Mod is fixed!")
|
|
|
435
435
|
| -u, --undo | Undo the previous runs of the script |
|
|
436
436
|
| -ho, --hideOriginal | Show only the mod on the remapped character and do not show the mod on the original character |
|
|
437
437
|
| -l str, --log str | The folder location to log the printed out text into a seperate .txt file. If this option is not specified, then will not log the printed out text. |
|
|
438
|
-
| -a, --all | Parses all *.ini files that the program encounters. This option supersedes the --types option<br><br>
|
|
439
|
-
| -dt str, --defaultType str | The default mod type to use if the *.ini file belongs to some unknown mod <br> If the --all
|
|
438
|
+
| -a, --all | Parses all *.ini files that the program encounters. This option supersedes the --types option<br><br>For *.ini file where a mod cannot be identified, usually, you would also need to specify what particular mod the *.ini file defaults to using the --defaultType option. <br> Otherwise, you will be defaulted to fixing 'raiden' mods. |
|
|
439
|
+
| -dt str, --defaultType str | The default mod type to use if the *.ini file belongs to some unknown mod. <br> <br> - If --forceType is set to True, this option has not effect <br> - If the --all is set to True and no values are specified for this option, the default argument for this option is set to 'raiden' <br> - Otherwise, this option has not effect and any unknown mods will be skipped <br> <br> See below for the different names/aliases of the supported types of mods. |
|
|
440
|
+
| -ft str, --forceType str | Forcibly assumes the mod type for all *.ini file parsed. <br> <br> This option supersedes the --types option and the --all option. <br> <br> See below for the different names/aliases of the supported types of mods. |
|
|
440
441
|
| -t str, --types str | Parses *.ini files that the program encounters for only specific types of mods. If the --all option has been specified, this option has no effect. <br> By default, if this option is not specified, will parse the *.ini files for all the supported types of mods. <br> <br> Please specify the types of mods using the the mod type's name or alias, then seperate each name/alias with a comma(,) <br> *eg. raiden,arlecchino,ayaya* |
|
|
441
442
|
| -rt str, --remappedTypes str | From all the mods to fix, specified by the --types option, will specifically remap those mods to the mods specified by this option. <br> For a mod specified by the --types option, if none of its corresponding remapped mods are specified by this option, then the mod specified by the --types option will be remapped to all its corresponding mods. <br> <br> ------------------- <br> eg. <br> If this program was ran with the following options: <br> --types kequeen,jean <br> --remappedTypes jeanSea <br> <br> the program will do the following remap: <br> keqing --> keqingOpulent <br> Jean --> JeanSea <br> <br> Note that Jean will not remap to JeanCN <br> ------------------- <br> <br> By default, if this option is not specified, will remap all the mods specified in --types to their corresponding remapped mods. <br> <br> Please specify the types of mods using the the mod type's name or alias, then seperate each name/alias with a comma(,) <br> eg. raiden,arlecchino,ayaya <br> <br> See below for the different names/aliases of the supported types of mods. |
|
|
442
443
|
|
|
@@ -120,11 +120,13 @@ from .model.strategies.texEditors.pixelTransforms.TintTransform import TintTrans
|
|
|
120
120
|
from .model.strategies.texEditors.pixelTransforms.Transparency import Transparency
|
|
121
121
|
|
|
122
122
|
from .model.strategies.texEditors.texFilters.BaseTexFilter import BaseTexFilter
|
|
123
|
+
from .model.strategies.texEditors.texFilters.ColourReplaceFilter import ColourReplaceFilter
|
|
123
124
|
from .model.strategies.texEditors.texFilters.GammaFilter import GammaFilter
|
|
124
125
|
from .model.strategies.texEditors.texFilters.HueAdjust import HueAdjust
|
|
125
126
|
from .model.strategies.texEditors.texFilters.InvertAlphaFilter import InvertAlphaFilter
|
|
126
127
|
from .model.strategies.texEditors.texFilters.PixelFilter import PixelFilter
|
|
127
128
|
from .model.strategies.texEditors.texFilters.TexMetadataFilter import TexMetadataFilter
|
|
129
|
+
from .model.strategies.texEditors.texFilters.TransparencyAdjustFilter import TransparencyAdjustFilter
|
|
128
130
|
|
|
129
131
|
from .model.strategies.texEditors.BaseTexEditor import BaseTexEditor
|
|
130
132
|
from .model.strategies.texEditors.TexEditor import TexEditor
|
|
@@ -201,7 +203,7 @@ __all__ = ["BufDataTypes", "BufElementTypes", "BufFormatNames", "BufDataTypeName
|
|
|
201
203
|
"BaseIniParser", "GIMIObjParser", "GIMIParser", "IniParseBuilder",
|
|
202
204
|
"BaseIniRemover", "IniRemover", "IniRemoveBuilder",
|
|
203
205
|
"BasePixelTransform", "ColourReplace", "CorrectGamma", "InvertAlpha", "HighlightShadow", "TempControl", "TintTransform", "Transparency",
|
|
204
|
-
"BaseTexFilter", "GammaFilter", "HueAdjust", "InvertAlphaFilter", "PixelFilter", "TexMetadataFilter",
|
|
206
|
+
"BaseTexFilter", "ColourReplaceFilter", "GammaFilter", "HueAdjust", "InvertAlphaFilter", "PixelFilter", "TexMetadataFilter", "TransparencyAdjustFilter",
|
|
205
207
|
"BaseTexEditor", "TexEditor", "TexCreator",
|
|
206
208
|
"ModType",
|
|
207
209
|
"IfContentPart", "IfPredPart", "IfTemplate", "IfTemplatePart",
|
|
@@ -57,6 +57,9 @@ class PackageModules(Enum):
|
|
|
57
57
|
PIL_Image: :class:`PackageData`
|
|
58
58
|
Module for PIL.Image
|
|
59
59
|
|
|
60
|
+
PIL_ImageChops: :class:`PackageData`
|
|
61
|
+
Module for PIL.ImageChops
|
|
62
|
+
|
|
60
63
|
PIL_ImageEnhance: :class:`PackageData`
|
|
61
64
|
Module for PIL.ImageEnhance
|
|
62
65
|
"""
|
|
@@ -64,5 +67,6 @@ class PackageModules(Enum):
|
|
|
64
67
|
AhoCorasick = PackageData("ahocorasick", PackageInstall.PyAhoCorasick.value)
|
|
65
68
|
OrderedSet = PackageData("ordered_set", PackageInstall.OrderedSet.value)
|
|
66
69
|
PIL_Image = PackageData("PIL.Image", PackageInstall.Pillow.value)
|
|
70
|
+
PIL_ImageChops = PackageData("PIL.ImageChops", PackageInstall.Pillow.value)
|
|
67
71
|
PIL_ImageEnhance = PackageData("PIL.ImageEnhance", PackageInstall.Pillow.value)
|
|
68
72
|
##### EndScript
|
{fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/controller/CommandBuilder.py
RENAMED
|
@@ -55,13 +55,22 @@ class CommandBuilder():
|
|
|
55
55
|
self._argParser.add_argument(ShortCommandOpts.HideOriginal.value, CommandOpts.HideOriginal.value, action = 'store_true', help="Show only the mod on the remapped character and do not show the mod on the original character")
|
|
56
56
|
self._argParser.add_argument(ShortCommandOpts.Log.value, CommandOpts.Log.value, action='store', type=str, help=f'The folder location to log the printed out text into a seperate {FileExt.Txt.value} file. If this option is not specified, then will not log the printed out text.')
|
|
57
57
|
self._argParser.add_argument(ShortCommandOpts.All.value, CommandOpts.All.value, action='store_true', help=f"""Parses all {FileTypes.Ini.value}s that the program encounters. This option supersedes the {CommandOpts.Types.value} option
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
|
|
59
|
+
For {FileTypes.Ini.value} where a mod cannot be identified, usually, you would also need to specify what particular mod the {FileTypes.Ini.value} defaults to using the {CommandOpts.DefaultType.value} option.
|
|
60
|
+
Otherwise, you will be defaulted to fixing 'raiden' mods.""")
|
|
61
|
+
self._argParser.add_argument(ShortCommandOpts.DefaultType.value, CommandOpts.DefaultType.value, action='store', type=str, help=f'''The default mod type to use if the {FileTypes.Ini.value} belongs to some unknown mod.
|
|
62
|
+
|
|
63
|
+
- If {CommandOpts.ForceType.value} is set to True, this option has not effect
|
|
64
|
+
- If the {CommandOpts.All.value} is set to True and no values are specified for this option, the default argument for this option is set to 'raiden'
|
|
65
|
+
- Otherwise, this option has not effect and any unknown mods will be skipped
|
|
63
66
|
|
|
64
67
|
See below for the different names/aliases of the supported types of mods.''')
|
|
68
|
+
|
|
69
|
+
self._argParser.add_argument(ShortCommandOpts.ForceType.value, CommandOpts.ForceType.value, action='store', type=str, help=f"""Forcibly assumes the mod type for all {FileTypes.Ini.value} parsed.
|
|
70
|
+
|
|
71
|
+
This option supersedes the {CommandOpts.Types.value} option and the {CommandOpts.All.value} option.
|
|
72
|
+
|
|
73
|
+
See below for the different names/aliases of the supported types of mods.""")
|
|
65
74
|
|
|
66
75
|
self._argParser.add_argument('-t', CommandOpts.Types.value, action='store', type=str, help=f'''Parses {FileTypes.Ini.value}s that the program encounters for only specific types of mods. If the {CommandOpts.Types.value} option has been specified, this option has no effect.
|
|
67
76
|
By default, if this option is not specified, will parse the {FileTypes.Ini.value}s for all the supported types of mods.
|
|
@@ -173,12 +173,13 @@ class IniFixBuilderFuncs():
|
|
|
173
173
|
],
|
|
174
174
|
"postRegEditFilters": [
|
|
175
175
|
RegRemove(remove = {"extra": {"ps-t0", "ps-t1"}}),
|
|
176
|
-
RegNewVals(vals = {"extra": {IniKeywords.Ib.value: "null"},
|
|
176
|
+
RegNewVals(vals = {"extra": {IniKeywords.Ib.value: "null"},
|
|
177
|
+
"dress": {IniKeywords.Ib.value: "null"}}),
|
|
177
178
|
RegTexEdit(textures = {"TransparentHeadDiffuse": ["ps-t0"]}),
|
|
178
179
|
RegRemap(remap = {"head": {"ps-t0": ["ps-t0", "ps-t1"], "ps-t1": ["ps-t2"]},
|
|
179
180
|
"dress": {"ps-t0": ["ps-t0", "ps-t1"], "ps-t1": ["ps-t2"]}}),
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
RegNewVals(vals = {"head": {"ps-t0": "null"}}),
|
|
182
|
+
RegTexAdd(textures = {"dress": {"ps-t0": ("NormMap", TexCreator(1024, 1024, colour = Colours.NormalMapBlue.value))}}, mustAdd = False)
|
|
182
183
|
]})
|
|
183
184
|
|
|
184
185
|
@classmethod
|
|
@@ -337,7 +338,8 @@ class IniFixBuilderFuncs():
|
|
|
337
338
|
def xiangling4_0(cls) -> Tuple[BaseIniFixer, List[Any], Dict[str, Any]]:
|
|
338
339
|
return (GIMIObjMergeFixer,
|
|
339
340
|
[{"head": ["head", "body", "dress"], "body": ["body"]}],
|
|
340
|
-
{"
|
|
341
|
+
{"copyPreamble": IniComments.GIMIObjMergerPreamble.value,
|
|
342
|
+
"preRegEditFilters": [
|
|
341
343
|
RegTexEdit({"DarkDiffuse": ["ps-t0"]}),
|
|
342
344
|
RegRemove(remove = {"head": {"ps-t2"},
|
|
343
345
|
"body": {"ps-t2", "ps-t3"},
|
{fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/data/IniParseBuilderData.py
RENAMED
|
@@ -21,14 +21,12 @@ from ..constants.ModTypeNames import ModTypeNames
|
|
|
21
21
|
from ..constants.TexConsts import TexMetadataNames
|
|
22
22
|
from ..constants.ColourConsts import ColourConsts
|
|
23
23
|
from ..model.strategies.iniParsers.BaseIniParser import BaseIniParser
|
|
24
|
-
from ..model.strategies.iniParsers.IniParseBuilder import IniParseBuilder
|
|
25
24
|
from ..model.strategies.iniParsers.GIMIParser import GIMIParser
|
|
26
25
|
from ..model.strategies.iniParsers.GIMIObjParser import GIMIObjParser
|
|
27
26
|
from ..model.strategies.texEditors.TexEditor import TexEditor
|
|
28
|
-
from ..model.strategies.texEditors.texFilters.PixelFilter import PixelFilter
|
|
29
27
|
from ..model.strategies.texEditors.texFilters.InvertAlphaFilter import InvertAlphaFilter
|
|
30
|
-
from ..model.strategies.texEditors.
|
|
31
|
-
from ..model.strategies.texEditors.
|
|
28
|
+
from ..model.strategies.texEditors.texFilters.ColourReplaceFilter import ColourReplaceFilter
|
|
29
|
+
from ..model.strategies.texEditors.texFilters.TransparencyAdjustFilter import TransparencyAdjustFilter
|
|
32
30
|
from ..model.strategies.texEditors.texFilters.TexMetadataFilter import TexMetadataFilter
|
|
33
31
|
from ..model.files.TextureFile import TextureFile
|
|
34
32
|
from ..model.textures.Colour import Colour
|
|
@@ -58,7 +56,7 @@ class IniParseBuilderFuncs():
|
|
|
58
56
|
[{"head", "body", "dress"}],
|
|
59
57
|
{"texEdits": {"head": {"ps-t0": {"TransparentDiffuse": TexEditor(filters = [TexMetadataFilter(edits = {TexMetadataNames.Gamma.value: 1 / ColourConsts.StandardGamma.value}),
|
|
60
58
|
cls._ayakaEditHeadDiffuse])}},
|
|
61
|
-
"body": {"ps-t1": {"BrightLightMap": TexEditor(filters = [
|
|
59
|
+
"body": {"ps-t1": {"BrightLightMap": TexEditor(filters = [TransparencyAdjustFilter(-78)])}},
|
|
62
60
|
"dress": {"ps-t0": {"OpaqueDiffuse": TexEditor(filters = [cls._ayakaEditDressDiffuse,
|
|
63
61
|
TexMetadataFilter(edits = {TexMetadataNames.Gamma.value: 1 / ColourConsts.StandardGamma.value})])}}}})
|
|
64
62
|
|
|
@@ -71,8 +69,8 @@ class IniParseBuilderFuncs():
|
|
|
71
69
|
return (GIMIObjParser,
|
|
72
70
|
[{"head", "body"}],
|
|
73
71
|
{"texEdits": {
|
|
74
|
-
"head": {"ps-t0": {"YellowHeadDiffuse": TexEditor(filters = [
|
|
75
|
-
"body": {"ps-t0": {"YellowBodyDiffuse": TexEditor(filters = [
|
|
72
|
+
"head": {"ps-t0": {"YellowHeadDiffuse": TexEditor(filters = [ColourReplaceFilter(Colours.NormalMapYellow.value, coloursToReplace = {ColourRanges.NormalMapPurple1.value})])}},
|
|
73
|
+
"body": {"ps-t0": {"YellowBodyDiffuse": TexEditor(filters = [ColourReplaceFilter(Colours.NormalMapYellow.value)])}},
|
|
76
74
|
}})
|
|
77
75
|
|
|
78
76
|
@classmethod
|
|
@@ -81,10 +79,10 @@ class IniParseBuilderFuncs():
|
|
|
81
79
|
[{"head", "body", "dress", "extra"}],
|
|
82
80
|
{"texEdits": {"body": {"ps-t0": {"TransparentBodyDiffuse": TexEditor(filters = [InvertAlphaFilter()])},
|
|
83
81
|
"ps-t1": {"OpaqueBodyDiffuse": TexEditor(filters = [TexMetadataFilter(edits = {TexMetadataNames.Gamma.value: 1}),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
ColourReplaceFilter(Colours.LightMapGreen.value,
|
|
83
|
+
coloursToReplace = {ColourRange(Colour(0, 120, 110, 65), Colour(255, 140, 255, 75)),
|
|
84
|
+
ColourRange(Colour(0, 120, 0, 65), Colour(255, 140, 200, 75)),
|
|
85
|
+
ColourRange(Colour(0, 0, 200, 65), Colour(30, 30, 255, 75))})])}},
|
|
88
86
|
"dress": {"ps-t1": {"TransparentyDressDiffuse": TexEditor(filters = [InvertAlphaFilter()])}}}})
|
|
89
87
|
|
|
90
88
|
@classmethod
|
|
@@ -96,8 +94,8 @@ class IniParseBuilderFuncs():
|
|
|
96
94
|
return (GIMIObjParser,
|
|
97
95
|
[{"body", "dress"}],
|
|
98
96
|
{"texEdits": {"body": {"ps-t0": {"TransparentBodyDiffuse": TexEditor(filters = [InvertAlphaFilter(),
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
ColourReplaceFilter(Colour(0, 0, 0, 177),
|
|
98
|
+
coloursToReplace = {ColourRange(Colour(0, 0, 0, 125), Colour(0, 0, 0, 130))})])}},
|
|
101
99
|
"dress": {"ps-t0": {"TransparentDressDiffuse": TexEditor(filters = [InvertAlphaFilter()])}}}})
|
|
102
100
|
|
|
103
101
|
@classmethod
|
|
@@ -168,7 +166,7 @@ class IniParseBuilderFuncs():
|
|
|
168
166
|
def kirara4_0(cls) -> Tuple[BaseIniParser, List[Any], Dict[str, Any]]:
|
|
169
167
|
return (GIMIObjParser,
|
|
170
168
|
[{"dress"}],
|
|
171
|
-
{"texEdits": {"dress": {"ps-t2": {"WhitenLightMap": TexEditor(filters = [
|
|
169
|
+
{"texEdits": {"dress": {"ps-t2": {"WhitenLightMap": TexEditor(filters = [ColourReplaceFilter(Colours.White.value, coloursToReplace = {ColourRanges.LightMapGreen.value}, replaceAlpha = False)])}}}})
|
|
172
170
|
|
|
173
171
|
@classmethod
|
|
174
172
|
def kiraraBoots4_8(cls) -> Tuple[BaseIniParser, List[Any], Dict[str, Any]]:
|
|
@@ -178,9 +176,9 @@ class IniParseBuilderFuncs():
|
|
|
178
176
|
def klee4_0(cls) -> Tuple[BaseIniParser, List[Any], Dict[str, Any]]:
|
|
179
177
|
return (GIMIObjParser,
|
|
180
178
|
[{"head", "body"}],
|
|
181
|
-
{"texEdits": {"body": {"ps-t1": {"GreenLightMap": TexEditor(filters = [
|
|
182
|
-
|
|
183
|
-
|
|
179
|
+
{"texEdits": {"body": {"ps-t1": {"GreenLightMap": TexEditor(filters = [ColourReplaceFilter(Colour(0, 128, 0, 177),
|
|
180
|
+
coloursToReplace = {ColourRange(Colour(0, 0, 0, 250), Colour(0, 0, 0, 255)),
|
|
181
|
+
ColourRange(Colour(0, 0, 0, 125), Colour(0 ,0 ,0, 130))}, replaceAlpha = True)])}}}})
|
|
184
182
|
|
|
185
183
|
@classmethod
|
|
186
184
|
def kleeBlossomingStarlight4_0(cls) -> Tuple[BaseIniParser, List[Any], Dict[str, Any]]:
|
|
@@ -30,9 +30,10 @@ def remapMain():
|
|
|
30
30
|
args = command.parse()
|
|
31
31
|
readAllInis = args.all
|
|
32
32
|
defaultType = args.defaultType
|
|
33
|
+
forcedType = args.forceType
|
|
33
34
|
|
|
34
35
|
remapService = RemapService(path = args.src, keepBackups = not args.deleteBackup, fixOnly = args.fixOnly, hideOrig = args.hideOriginal,
|
|
35
|
-
undoOnly = args.undo, readAllInis = readAllInis, types = args.types, defaultType = defaultType,
|
|
36
|
+
undoOnly = args.undo, readAllInis = readAllInis, types = args.types, defaultType = defaultType, forcedType = forcedType,
|
|
36
37
|
log = args.log, verbose = True, handleExceptions = True, remappedTypes = args.remappedTypes,
|
|
37
38
|
version = args.version)
|
|
38
39
|
remapService.fix()
|
|
@@ -217,7 +217,7 @@ class IniSectionGraph():
|
|
|
217
217
|
|
|
218
218
|
self.construct()
|
|
219
219
|
if (self.remapNameFunc is not None):
|
|
220
|
-
self.
|
|
220
|
+
self.getRemapNames(newModsToFix = newModsToFix)
|
|
221
221
|
else:
|
|
222
222
|
self._remapNames = {}
|
|
223
223
|
|
|
@@ -323,7 +323,7 @@ class IniSectionGraph():
|
|
|
323
323
|
self._runSequence = runSequence
|
|
324
324
|
return self._sections
|
|
325
325
|
|
|
326
|
-
def
|
|
326
|
+
def getRemapNames(self, newModsToFix: Optional[Set[str]] = None) -> Dict[str, Dict[str, str]]:
|
|
327
327
|
"""
|
|
328
328
|
Retrieves the corresponding remap names of the sections made by this fix
|
|
329
329
|
|
|
@@ -100,6 +100,11 @@ class Mod(Model):
|
|
|
100
100
|
|
|
101
101
|
**Default**: ``None``
|
|
102
102
|
|
|
103
|
+
forcedType: Optional[:class:`ModType`]
|
|
104
|
+
The type of mod to forcibly assume for some .ini file :raw-html:`<br />` :raw-html:`<br />`
|
|
105
|
+
|
|
106
|
+
**Default**: ``None``
|
|
107
|
+
|
|
103
108
|
version: Optional[:class:`float`]
|
|
104
109
|
The game version we want the fixed mod :raw-html:`<br />` :raw-html:`<br />`
|
|
105
110
|
|
|
@@ -128,6 +133,9 @@ class Mod(Model):
|
|
|
128
133
|
_defaultType: Optional[:class:`ModType`]
|
|
129
134
|
The type of mod to use if a mod has an unidentified type
|
|
130
135
|
|
|
136
|
+
_forcedType: Optional[:class:`ModType`]
|
|
137
|
+
The type of mod to forcibly assume for some .ini file
|
|
138
|
+
|
|
131
139
|
logger: Optional[:class:`Logger`]
|
|
132
140
|
The logger used to pretty print messages
|
|
133
141
|
|
|
@@ -149,7 +157,7 @@ class Mod(Model):
|
|
|
149
157
|
The *remapFix*.dds files found for the mod
|
|
150
158
|
"""
|
|
151
159
|
def __init__(self, path: Optional[str] = None, files: Optional[List[str]] = None, logger: Optional[Logger] = None, types: Optional[Set[ModType]] = None,
|
|
152
|
-
defaultType: Optional[ModType] = None, version: Optional[float] = None, remappedTypes: Optional[Set[str]] = None):
|
|
160
|
+
forcedType: Optional[ModType] = None, defaultType: Optional[ModType] = None, version: Optional[float] = None, remappedTypes: Optional[Set[str]] = None):
|
|
153
161
|
super().__init__(logger = logger)
|
|
154
162
|
self.path = FileService.getPath(path)
|
|
155
163
|
self.version = version
|
|
@@ -163,6 +171,7 @@ class Mod(Model):
|
|
|
163
171
|
self._types = types
|
|
164
172
|
self._remappedTypes = remappedTypes
|
|
165
173
|
self._defaultType = defaultType
|
|
174
|
+
self._forcedType = forcedType
|
|
166
175
|
|
|
167
176
|
self.inis = []
|
|
168
177
|
self.remapBlend = []
|
|
@@ -199,7 +208,8 @@ class Mod(Model):
|
|
|
199
208
|
iniPaths = self.inis
|
|
200
209
|
self.inis = {}
|
|
201
210
|
for iniPath in iniPaths:
|
|
202
|
-
iniFile = IniFile(iniPath, logger = self.logger, modTypes = self._types, defaultModType = self._defaultType,
|
|
211
|
+
iniFile = IniFile(iniPath, logger = self.logger, modTypes = self._types, defaultModType = self._defaultType,
|
|
212
|
+
forcedModType = self._forcedType, version = self.version, modsToFix = self._remappedTypes)
|
|
203
213
|
self.inis[iniFile.file] = iniFile
|
|
204
214
|
|
|
205
215
|
@classmethod
|
|
@@ -104,6 +104,11 @@ class IniFile(File):
|
|
|
104
104
|
|
|
105
105
|
**Default**: ``None``
|
|
106
106
|
|
|
107
|
+
forcedModType: Optional[:class:`ModType`]
|
|
108
|
+
The type of mod to forcibly assume the .ini file to belong to :raw-html:`<br />` :raw-html:`<br />`
|
|
109
|
+
|
|
110
|
+
**Default**: ``None``
|
|
111
|
+
|
|
107
112
|
version: Optional[:class:`float`]
|
|
108
113
|
The game version we want the .ini file to be compatible with :raw-html:`<br />` :raw-html:`<br />`
|
|
109
114
|
|
|
@@ -137,6 +142,9 @@ class IniFile(File):
|
|
|
137
142
|
defaultModType: Optional[:class:`ModType`]
|
|
138
143
|
The type of mod to use if the .ini file has an unidentified mod type
|
|
139
144
|
|
|
145
|
+
forcedModType: Optional[:class:`ModType`]
|
|
146
|
+
The type of mod to forcibly assume the .ini file to belong to
|
|
147
|
+
|
|
140
148
|
sectionIfTemplates: Dict[:class:`str`, :class:`IfTemplate`]
|
|
141
149
|
All the `sections`_ in the .ini file that can be parsed into an :class:`IfTemplate`
|
|
142
150
|
|
|
@@ -207,7 +215,7 @@ class IniFile(File):
|
|
|
207
215
|
_ifStructurePattern = re.compile(r"\s*(" + IfPredPartType.EndIf.value + "|" + IfPredPartType.Else.value + "|" + IfPredPartType.If.value + "|" + IfPredPartType.Elif.value + ")")
|
|
208
216
|
|
|
209
217
|
def __init__(self, file: Optional[str] = None, logger: Optional["Logger"] = None, txt: str = "", modTypes: Optional[Set[ModType]] = None, defaultModType: Optional[ModType] = None,
|
|
210
|
-
version: Optional[float] = None, modsToFix: Optional[Set[str]] = None, iniClassifier: Optional[IniClassifier] = None):
|
|
218
|
+
forcedModType: Optional[ModType] = None, version: Optional[float] = None, modsToFix: Optional[Set[str]] = None, iniClassifier: Optional[IniClassifier] = None):
|
|
211
219
|
super().__init__(logger = logger)
|
|
212
220
|
|
|
213
221
|
self._filePath: Optional[FilePath] = None
|
|
@@ -231,6 +239,7 @@ class IniFile(File):
|
|
|
231
239
|
modsToFix = set()
|
|
232
240
|
|
|
233
241
|
self.defaultModType = defaultModType
|
|
242
|
+
self.forcedModType = forcedModType
|
|
234
243
|
self.modTypes = modTypes
|
|
235
244
|
self.modsToFix = modsToFix
|
|
236
245
|
self._heading = IniBoilerPlate.DefaultHeading.value.copy()
|
|
@@ -734,15 +743,19 @@ class IniFile(File):
|
|
|
734
743
|
|
|
735
744
|
modType = classifyStats.modType
|
|
736
745
|
hasModType = modType is not None and modType in self.modTypes
|
|
746
|
+
hasForcedModType = self.forcedModType is not None
|
|
747
|
+
|
|
748
|
+
self._isModIni = False if (self.defaultModType is None and not hasModType and self.modTypes and not hasForcedModType) else classifyStats.isMod
|
|
749
|
+
self._isFixed = classifyStats.isFixed
|
|
750
|
+
|
|
751
|
+
if (hasForcedModType):
|
|
752
|
+
modType = self.forcedModType
|
|
753
|
+
hasModType = True
|
|
737
754
|
|
|
738
|
-
if (hasModType):
|
|
739
|
-
self._setType(
|
|
755
|
+
if (hasModType and self._isModIni):
|
|
756
|
+
self._setType(modType)
|
|
740
757
|
else:
|
|
741
|
-
classifyStats.modType = None
|
|
742
758
|
self._setType(None)
|
|
743
|
-
|
|
744
|
-
self._isModIni = False if (self.defaultModType is None and not hasModType and self.modTypes) else classifyStats.isMod
|
|
745
|
-
self._isFixed = classifyStats.isFixed
|
|
746
759
|
|
|
747
760
|
self._isClassified = True
|
|
748
761
|
return self._isModIni
|
{fixraidenboss2-4.3.0 → fixraidenboss2-4.3.2}/src/FixRaidenBoss2/model/iftemplate/IfContentPart.py
RENAMED
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
##### ExtImports
|
|
16
|
+
import copy
|
|
16
17
|
from collections import defaultdict
|
|
17
18
|
from typing import List, Dict, Tuple, Union, Set, Union, Callable, Any, Optional
|
|
18
19
|
##### EndExtImports
|
|
19
20
|
|
|
20
21
|
##### LocalImports
|
|
22
|
+
from ...tools.Algo import Algo
|
|
21
23
|
from ...tools.DictTools import DictTools
|
|
22
24
|
from ...tools.ListTools import ListTools
|
|
23
25
|
from ...tools.Algo import Algo
|
|
@@ -462,46 +464,41 @@ class IfContentPart(IfTemplatePart):
|
|
|
462
464
|
occurences = defaultdict(lambda: 0)
|
|
463
465
|
i = 0
|
|
464
466
|
orderLen = len(self._order)
|
|
465
|
-
remappedSrc = defaultdict(lambda: [])
|
|
466
467
|
keysToRemove = set()
|
|
467
468
|
keysToAdd = set()
|
|
469
|
+
remappedSrc = defaultdict(lambda: [])
|
|
468
470
|
|
|
469
|
-
# "ps-t0": ["ps-t0", "ps-t1"], "ps-t1": ["ps-t2"]
|
|
470
|
-
|
|
471
|
-
# contruct the order
|
|
472
471
|
while (i < orderLen):
|
|
473
472
|
keyData = self._order[i]
|
|
474
473
|
key = keyData[0]
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
474
|
+
keyOccurence = keyData[1]
|
|
475
|
+
currentMaxOccurence = occurences[key]
|
|
476
|
+
|
|
478
477
|
# update the occurence of the key
|
|
479
|
-
if (
|
|
480
|
-
self._order[i] = (key,
|
|
481
|
-
occurences[key] += 1
|
|
482
|
-
elif (currentKeyOccurence > keyOccurence):
|
|
483
|
-
occurences[key] = currentKeyOccurence
|
|
478
|
+
if (keyOccurence < currentMaxOccurence):
|
|
479
|
+
self._order[i] = (key, currentMaxOccurence)
|
|
484
480
|
|
|
485
481
|
if (key not in keyRemap):
|
|
486
482
|
i += 1
|
|
483
|
+
occurences[key] += 1
|
|
487
484
|
continue
|
|
488
485
|
else:
|
|
489
486
|
keysToRemove.add(key)
|
|
490
|
-
|
|
487
|
+
|
|
491
488
|
newKeys = keyRemap[key]
|
|
492
489
|
newKeysLen = len(newKeys)
|
|
490
|
+
|
|
491
|
+
keyValData = self.src[key][keyOccurence]
|
|
492
|
+
keyVal = keyValData[1]
|
|
493
493
|
newKeyRefs = []
|
|
494
494
|
|
|
495
495
|
# construct the remapped keys
|
|
496
496
|
for j in range(newKeysLen):
|
|
497
497
|
newKey = newKeys[j]
|
|
498
|
-
newKeyOccurence = occurences[newKey]
|
|
499
|
-
newKeyRefs.append((newKey, newKeyOccurence))
|
|
500
498
|
|
|
501
|
-
|
|
502
|
-
|
|
499
|
+
newKeyRefs.append((newKey, occurences[newKey]))
|
|
500
|
+
remappedSrc[newKey].append((i + j, keyVal))
|
|
503
501
|
|
|
504
|
-
remappedSrc[newKey].append((i + j, oldVal))
|
|
505
502
|
keysToAdd.add(newKey)
|
|
506
503
|
occurences[newKey] += 1
|
|
507
504
|
|
|
@@ -510,12 +507,13 @@ class IfContentPart(IfTemplatePart):
|
|
|
510
507
|
newRefsLen = len(newKeyRefs)
|
|
511
508
|
i += newRefsLen
|
|
512
509
|
orderLen += (newRefsLen - 1)
|
|
513
|
-
|
|
510
|
+
|
|
514
511
|
# remove the keys that do not appear after the remap
|
|
515
|
-
keysToRemove = keysToRemove.difference(keysToAdd)
|
|
516
512
|
for key in keysToRemove:
|
|
517
|
-
|
|
518
|
-
|
|
513
|
+
if (key not in keysToAdd):
|
|
514
|
+
del self.src[key]
|
|
515
|
+
|
|
519
516
|
# construct the new src
|
|
520
|
-
|
|
517
|
+
srcValCompare = lambda srcVal, remappedVal: srcVal[0] - remappedVal[0]
|
|
518
|
+
DictTools.update(self.src, remappedSrc, lambda key, srcVals, remappedVals: remappedVals if (key in keysToRemove) else Algo.merge([srcVals, remappedVals], srcValCompare))
|
|
521
519
|
##### EndScript
|
|
@@ -139,9 +139,11 @@ class GIMIParser(BaseIniParser):
|
|
|
139
139
|
|
|
140
140
|
# _makeRemapNames(): Makes the required names used for the fix
|
|
141
141
|
def _makeRemapNames(self):
|
|
142
|
-
self.blendCommandsGraph.
|
|
143
|
-
self.
|
|
144
|
-
self.
|
|
142
|
+
self.blendCommandsGraph.getRemapNames(self._modsToFix)
|
|
143
|
+
self.positionCommandsGraph.getRemapNames(self._modsToFix)
|
|
144
|
+
self.nonBlendHashIndexCommandsGraph.getRemapNames(self._modsToFix)
|
|
145
|
+
self.blendResourceCommandsGraph.getRemapNames(self._modsToFix)
|
|
146
|
+
self.positionResourceCommandsGraph.getRemapNames(self._modsToFix)
|
|
145
147
|
|
|
146
148
|
def _makeRemapModels(self, result: Dict[str, IniResourceModel], resourceGraph: IniSectionGraph, getFixedFile: Optional[Callable[[str], str]] = None):
|
|
147
149
|
"""
|
|
@@ -267,8 +269,8 @@ class GIMIParser(BaseIniParser):
|
|
|
267
269
|
self.blendCommandsGraph.remapNameFunc = self._iniFile.getRemapBlendName
|
|
268
270
|
self.nonBlendHashIndexCommandsGraph.remapNameFunc = self._iniFile.getRemapFixName
|
|
269
271
|
self.blendResourceCommandsGraph.remapNameFunc = self._iniFile.getRemapBlendResourceName
|
|
270
|
-
self.positionCommandsGraph.remapNameFunc = self._iniFile.
|
|
271
|
-
self.positionResourceCommandsGraph.remapNameFunc = self._iniFile.
|
|
272
|
+
self.positionCommandsGraph.remapNameFunc = self._iniFile.getRemapPositionName
|
|
273
|
+
self.positionResourceCommandsGraph.remapNameFunc = self._iniFile.getRemapPositionResourceName
|
|
272
274
|
|
|
273
275
|
self._parseBlend()
|
|
274
276
|
positionSections = self._parsePosition()
|
|
@@ -34,7 +34,7 @@ class BaseTexFilter():
|
|
|
34
34
|
|
|
35
35
|
.. describe:: x(texFile)
|
|
36
36
|
|
|
37
|
-
Calls :meth:`
|
|
37
|
+
Calls :meth:`transform` for the filters, ``x``
|
|
38
38
|
"""
|
|
39
39
|
|
|
40
40
|
def __call__(self, texFile: "TextureFile"):
|
|
@@ -47,7 +47,7 @@ class BaseTexFilter():
|
|
|
47
47
|
Parameters
|
|
48
48
|
----------
|
|
49
49
|
texFile: :class:`TextureFile`
|
|
50
|
-
The texture to be
|
|
50
|
+
The texture to be editted
|
|
51
51
|
"""
|
|
52
52
|
|
|
53
53
|
pass
|