Jobasha - TES3 leveled list merging and deleveling tool
Консольная утилита для всякого разного.
https://www.nexusmods.com/morrowind/mods/52707
Jobasha will perfectly organize all your lists in his library. It is a command line tool for leveled list merging, deleveling and comparison.
Description:
Jobasha will perfectly organize all your lists in his library. It is a command line tool for leveled list merging, deleveling and comparison.
Features:
Merge leveled lists
Delete subrecords from merged leveled lists
Delevel subrecords
Spoiler: Show
By default all lists are deleveled to level 1 with --delev flag(short -d).
You may set another level to delevel to with --delev-to flag(short -t):
jobasha -dt 5 to delevel everything higher than level 5 to level 5.
You may set different levels to delevel to for creatures and items.
You may opt out from deleveling either creatures or items:
jobasha --delev --delev-no-items to delevel only creatures.
You may place deleveled list into a separate output plugin.
Create multipatch
Compare leveled lists between plugins
Process both Morrowind.ini and openmw.cfg
Show detailed information
Usage:
Most basic usage: jobasha to merge leveled lists
Spoiler: Show
The program is flexible and allows complicated scenarios, though basic usage is simple:
1. To provide non-default game configuration file:
jobasha -c C:\another\profile\openmw.cfg
2. To delevel subrecords to level 1 in addition to merging leveled lists:
jobasha -d
3. To delevel subrecords to level 5 in addition to merging leveled lists:
jobasha -dt 5
4. Almost everything may be done with command-line arguments, though settings file is the better way for advanced usage:
To create settings file: jobasha --settings-write
To use it: jobasha
Type command jobasha -h for brief help
Spoiler: Show
Jobasha - TES3 leveled list tool
Usage: jobasha [OPTIONS]
Options:
-c, --config <PATH>Path to the game configuration file
-o, --output <PATH>Name of the output plugin
-O, --output-dir <PATH> Name of the output plugin directory
--dateAdd date to the output plugin name
--dry-runDo not write output plugin
-l, --log <PATH>Name of the log file
-L, --no-log Do not write log
-s, --settings <PATH> Name of the program settings file
--settings-write Write default program settings file and exit
--settings-comments Add comments to program settings file
--no-backup Do not make backups
--ignore-errorsIgnore non-critical errors
-?, --help-option <OPTION> Print help for the specific option
-h, --helpPrint help (see more with '--help')
-V, --versionPrint version
Filters:
-a, --all-listsPlace all leveled lists into the output plugin
-k, --skip-last <0> Do not process last <N> plugins
-K, --skip <PLUGIN(S)> Do not process these plugins
--no-skip-defaultDo not skip plugins defined by default
--skip-unexpected-tags Skip plugins that contain unexpected record types
--no-skip-unexpected-tags-default Do not skip plugins that contain known unexpected record types
--skip-creatures Do not process creature leveled lists
--skip-items Do not process item leveled lists
Subrecord deletion:
-X, --no-deleteDo not delete subrecords from leveled lists
-x, --extended-deleteEnable extended delete mode
-A, --always-delete <PLUGIN(S)> List of plugins to delete subrecords
-N, --never-delete <PLUGIN(S)>Do not delete subrecords from these plugins
--threshold-creatures <67>Threshold for % of deleted/initial creatures per list
--threshold-items <49> Threshold for % of deleted/initial items per list
-T, --no-threshold-warningsDo not show threshold warnings
Delev:
-d, --delevDelevel subrecords mode
-t, --delev-to <1> Set level to delevel subrecords to
--delev-creatures-to <LVL> Set level to delevel creature subrecords to
--delev-items-to <LVL>Set level to delevel item subrecords to
-D, --delev-distinctPlace deleveled lists into the additional output plugin
--delev-output <PATH> Name of the distinct delev output plugin
-r, --delev-random Delevel to a random level between original and target levels
-g, --delev-segment <0>Set level to segment subrecords for different delev rules
--delev-creatures-segment <0> Set level to segment creature subrecords for different delev rules
--delev-items-segment <0>Set level to segment item subrecords for different delev rules
-G, --delev-segment-progressive Make multiple equal delev segments after the first one
--delev-segment-ratio <50> Set minimal level to delev to for the segment via % ratio
Delev filters:
--delev-skip-creatures Do not delevel creature subrecords
-I, --delev-skip-itemsDo not delevel item subrecords
--delev-skip-list <LIST(S)>Do not delevel these lists
--delev-no-skip-list <LIST(S)>Delevel these lists even if they match --delev-skip-list
--delev-skip-subrecord <SUBRECORD(S)> Do not delevel these subrecords
--delev-no-skip-subrecord <SUBRECORD(S)> Delevel these subrecords even if they match --delev-skip-subrecord
Compare:
--no-compare Do not compare plugins
-C, --compare-only <PATH> Do not merge anything, only compare plugins [aliases: compare]
-W, --compare-with <PATH> Plugin to compare output plugin with [aliases: with]
--compare-delev-with <PATH> Plugin to compare delev output plugin with
--compare-common Compare common records only [aliases: common]
Multipatch:
-P, --no-multipatchDo not make multipatch
--cellnames Merge cell names
--fogbug Adjust zero fog density
--summonsMark known summons as persistent
--interdependent-flags Do not treat flags as lists [aliases: if]
--verbose-atmosphere-data Do not hide unchanged atmosphere data elements [aliases: vad]
--ignore-secondary-fog-densityDo not sync secondary fog density with primary fog density [aliases: isfd]
--keep-redundant-values Do not make output slightly smaller [aliases: krv]
--plus-before-minus Reverse list changes order [aliases: pbm]
--destination-similarity <1024> Set travel destination similarity threshold [aliases: ds]
Display output:
-v, --verbose... Show more information
-q, --quiet Do not show anything
-u, --debug... Show debug information
-B, --progress Show plugins reading progress
-b, --progress-barShow plugins reading progress bar [aliases: bar]
-p, --color Show colored output [aliases: pretty]
-y, --no-press-enter-to-exit Do not pause at the end
-Y, --press-enter-to-exit Pause at the end with "Press enter to exit..."
-S, --no-summary Do not show summary
Type command jobasha --help for extended help
Type command jobasha -? <OPTION> to get extended help for a specific option
Example display output
Spoiler: Show
$./jobasha --color --delev
Log is being written into "/home/alvazir/__OMW/jobasha.log"
Found game configuration file "/home/alvazir/.config/openmw/openmw.cfg"
Plugin "MergedLeveledLists - 2023-11-13.esp" will be skipped, because it's name matches output plugin name pattern "mergedleveledlists - "
555 subrecords from 143 leveled lists were deleted, add -v or check log for details
97 merged leveled lists were identical to last loaded lists hence not placed into the output plugin, add -vv or check log for details
6813 subrecords from 925 leveled lists were deleveled, add -vvv or check log for details
Plugin "MergedLeveledLists - 2023-11-18.esp" was written to "MergedLeveledLists - 2023-11-18.esp"
Performance: 1.891s duration, 19 plugins(420917 records) read at 10/s(229701/s)
Lists stats: 6329 total, 5842 unique, 988 placed, 14 masters
Merge stats: 341 merged, 210 untouched, 131 placed, 555 subrecords deleted
Delev stats: 925 deleveled, 925 placed, 6813 subrecords deleveled
Place "MergedLeveledLists - 2023-11-18.esp" last in load order and activate
Changelog:
Spoiler: Show
Files:
Download file contains executables for all platforms I've decided to target(tell me if you need another platform):
Spoiler: Show
System requirements:
OS: non-ancient(10-15 years old or younger): Linux kernel 3.2+, Android 4.4(KitKat)+, Windows 7+, macOS 12.3(Monterey)+.
Memory: ~5x the size of the largest plugin(1GB should be enough for everything), e.g. ~350MB for Morrowind.esm(77MB), ~850MB for TR_Mainland.esm from Tamriel Rebuilt v23.10(167MB).
Morrowind engine MO2(Mod Organizer) users need ModOrganizer-to-OpenMW to generate openmw.cfg.