Skip to content

Releases: Oops19/TS4-PatchXML

PatchXML v1.3.3

Choose a tag to compare

@Oops19 Oops19 released this 16 Feb 16:31

v1.3.3

  • NEW FEATURE: Apply all patches for a tuning if multiple patches are provided.
    • Multiple patch files are written in this case, only the last one is used.
      • This is 50% safe and/or 50% unsafe
      • If a patch deletes XML data the 2nd patch may fail if it relies on it.
      • If the 2nd patch deletes modifications of the 1st patch things fail too.
  • FIX: Fix import in reload_xml
  • TASK: Cleanup of old code in SharedData().initialize_cache_directory()

PatchXML v1.3.0

Choose a tag to compare

@Oops19 Oops19 released this 04 Jan 00:56
317249c

v1.3.0

  • Add a simple FAQ to README
  • Do nothing in case 'cfg' is empty. Do not read cached values or try to patch things.
  • Move all files out of 'cfg' and deliver the mod without default configuration files. >> README updated.
  • comments.zip updated

Patch-XML v1.2.3

Choose a tag to compare

@Oops19 Oops19 released this 14 Dec 20:32

Changes for v1.2.3
Add XML with "_xml='TEEN'" to the selected (via xpath) node.
Evaluate the xpath only one time. xpath with '/..' will no longer fail after deleting the child node.
xpath compatibility: 'contains()' and 'text' support now single and double quotes:
* E[contains(text(), "TEEN")] or E[contains(text(), 'TEEN')]
* E[text="TEEN"] or E[text='TEEN']
* [E="TEEN"] or [E='TEEN']
* For 'match' [E="TEEN"] or [E='TEEN'] must be used, 'contains()' and 'text' are not supported.

Patch-XML v1.2.2

Choose a tag to compare

@Oops19 Oops19 released this 07 Dec 22:34

In case you are patching a huge amount of tunings you may need this update. Otherwise the old version will do it.

Due to the issue with sorting the process doesn't write the summary data after patching. With no data written it'll process all tunings again instead of reading the patched tuning files. This leads to a long startup time.

v1.2.2
No longer sort tunings, this fixes a memory issue.

Patch-XML v1.2.1

Choose a tag to compare

@Oops19 Oops19 released this 25 Jul 21:21

v1.2.1
Improved identification of bogus tunings.
During 1st start and/or after a game update all tuning IDs are logged.
The time stamps can be matched with Vanilla Logs.
Vanilla Logs are needed as exceptions within TS4 are caught internally and Patch-XML doesn't receive them.

For example:
2024-07-25 23:55:55.742631 DEBUG: [PatchXML]: Checking(ETreeTuningLoader): I buff 'buff_Alien_Empathy_Emotion_Playful' (103479)
2024-07-25T23:55:55.724679 FATAL  None                 None       '[GSI_DUMP][cjiang] Error occurred within the tag named 'walkstyle' (value: V) (UnavailablePackSafeResourceError)
S4S Shift+Ctr+C 'resource.find 103479' -> Shows only EA EP01/EP02 sources for me, strange!
Add 103479 to S4S package and check all references, e.g. n="Mood_Playful" s="14642"
S4S Shift+Ctr+C 'resource.find 14642' -> 'roBurky - EmotionalInertia-Complete.package' - This file must be updated or deleted to fix the error.
Remove the cached Patch-XML data and start TS4 again to make sure it starts without errors.
PS: This FATAL error is not really FATAL, TS4 starts anyway. 

Patch-XML v1.2.0

Choose a tag to compare

@Oops19 Oops19 released this 13 Jul 22:10

No functional changes but worth updating.

  • Increased startup time (or caused delay by this mod down to arond 1.5 seconds - the initial run still takes around 1 minute for 600 tunings to patch).

Changes:
v1.2.0
Save tunings to patch_xml/{game_version}/ and load them from there

Patch-XML v1.0.12

Choose a tag to compare

@Oops19 Oops19 released this 20 May 17:25

v1.0.12
Improved logging
Fixed a bug

Patch-XML v1.0.11

Choose a tag to compare

@Oops19 Oops19 released this 19 May 23:10

v1.0.11
Return XML without the 'n', 's' ad 'i' attributes 1:1, don't throw an exception
v1.0.10
Basic support for http://xpather.com/ XPath syntax.
Avoid to add spaces to the XPath expression around @=,[]()"' etc. as such strings can't be converted.
Exception: 1-n spaces behind ',' are supported.
'', '/I', -> '.'
'/I/X/Y/Z' -> 'X/Y/Z'
'/X[text()="Y"]' with '/[X="Y"]/X'
'/X[contains(text(), "Y"]' with '/[X="Y"]/X' # not correct, no longer a contains check!
'/*' will be removed as it is not supported!

A simple expression can be used 1:1, e.g.:
* '/I/X[text()="Y"]/../Z' will be translated to '[X="Y"]/X/../Z'

For '/[T="text"]' matches: 
    Remove all comments from xml before parsing. 'Y' does not match 'Y<-- Whatever -->'

Patch XML v1.0.9

Choose a tag to compare

@Oops19 Oops19 released this 17 May 17:01

v1.0.9
Improved logging
v1.0.8
Require XmlPatcher(add_comments=True) to add comments to generated files.
v1.0.7
Modified log imports to use this mod without TS4.
Allow to add a comment also while modifying XML.
It is not recommended to add comments with config files during startup as this may cause issues for TS4.
v1.0.6
Improve error logging
v1.0.4
Small bugfix

Patch XML v1.0.1

Choose a tag to compare

@Oops19 Oops19 released this 31 Aug 13:32

Removed comments from patch files which TS4 can't handle properly.