I thinking about sharing values between nodes in ruleset file. Overall some implementation of yaml support mechanisms of merging nodes:
nodeA: &ref
a: 1
b: 2
nodeB:
<<: *ref
a: 2
#nodeB is equal
# a:2
# b:2
but yaml-cpp don't support this yet. But we can recreate this behavior manually.
Something like that:
nodeA: &ref1
a: 2
b: 1
nodeB: &ref2
parent: *ref1
c: 3
#now its load values `a: 2`, `b: 1` and `c: 3`
nodeC:
parent: *ref2
#now its have too `a: 2`, `b: 1` and `c: 3`
Only thing I dislike in this solution is that break compatibility with basic OXC, because If you put standard required properties in that shared node then when downgrading to basic OXC game will crash because it will lack required nodes. Overall if I manage sneak in this to nightly then I will probably use this too in my extended version.
Solution with global values have one big drawback, it can be only one value. Two mods could conflict when both will try override one value.