-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathCompatibilityFrameworkConfig.example.yaml
More file actions
336 lines (313 loc) · 11.1 KB
/
CompatibilityFrameworkConfig.example.yaml
File metadata and controls
336 lines (313 loc) · 11.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
# ============================================================
# Compatibility Framework — Example YAML Configuration
# ============================================================
# Place this file at:
# Mods/<YourMod>/ScriptExtender/CompatibilityFrameworkConfig.yaml
#
# This is the YAML equivalent of CompatibilityFrameworkConfig.example.json.
# Lines beginning with '#' are comments and are ignored by the parser.
# Indentation MUST use spaces (never tabs).
# ============================================================
FileVersion: 1
# ----------------------------------------------------------
# Races
# ----------------------------------------------------------
# Add or remove cosmetic options (eye colours, makeup, etc.)
# for a given race UUID.
#
# Type — the cosmetic category to modify
# Values — the UUID(s) of the cosmetic entry(ies)
# Action — "Insert" to add, "Remove" to remove
# ----------------------------------------------------------
Races:
- UUID: "9c61a74a-20df-4119-89c5-d996956b6c66"
Children:
- Type: EyeColors
Values: "bdf9b779-002c-4077-b377-8ea7c1faa795"
Action: Insert
- Type: LipsMakeupColors
Values: "bdf9b779-002c-4077-b377-8ea7c1faa795"
Action: Remove
# ----------------------------------------------------------
# Progressions
# ----------------------------------------------------------
# Modify a progression node identified by its UUID.
# Each entry can contain any combination of the sections below.
# ----------------------------------------------------------
Progressions:
- UUID: "0d4a6b4b-8162-414b-81ef-1838e36e778a"
# --- Subclasses ---
# Register or remove subclass entries for this progression.
# UUID — the subclass progression UUID
# SubClassName — display name used in logs / UI
# Class — parent class identifier (lowercase)
Subclasses:
- UUID: "5b3cd5ec-4234-434e-a6c5-da5fc01183cd"
SubClassName: Brute
Class: barbarian
# --- Booleans ---
# Toggle boolean flags on the progression.
# Key — the flag name (e.g. AllowImprovement)
# Value — true or false
Booleans:
- Key: AllowImprovement
Value: true
# --- Selectors ---
# Insert or remove selector entries.
# Action — "Insert" or "Remove"
# Function — selector function name (e.g. SelectSpells)
# Overwrite — whether to replace an existing selector
# UUID — optional UUID reference
# Params — additional parameters (empty mapping if none)
Selectors:
- Action: Insert
Function: SelectSpells
Overwrite: false
UUID: ""
Params: {}
# --- Strings ---
# Insert or remove string-list entries (Boosts, Passives, etc.)
# Action — "Insert" or "Remove"
# Type — the string category (e.g. Boosts)
# Strings — list of string values
Strings:
- Action: Remove
Type: Boosts
Strings: ["test", "test2"]
# ----------------------------------------------------------
# Lists
# ----------------------------------------------------------
# Manipulate named lists (spell lists, equipment lists, etc.)
# Action — "Insert" or "Remove"
# UUID — list UUID
# Type — list type identifier
# Items — array of item UUIDs / values
# Inherit — UUID or array of UUIDs of existing lists whose
# items should be added to this list (always Insert)
# Exclude — UUID or array of UUIDs of existing lists whose
# items should be removed from this list (always Remove)
#
# Items, Inherit, and Exclude are each optional, but at least
# one must be provided. They can be combined freely.
# ----------------------------------------------------------
Lists:
- Action: Insert
UUID: ""
Type: ""
Items: ["", "", ""]
# Inherit all items from another list
- Action: Insert
UUID: "target-list-uuid"
Type: SpellList
Inherit: "source-list-uuid"
# Inherit from multiple lists, add explicit items, and exclude
- Action: Insert
UUID: "target-list-uuid"
Type: SpellList
Items:
- "extra-spell-uuid"
Inherit:
- "source-list-A"
- "source-list-B"
Exclude:
- "unwanted-list-uuid-1"
- "unwanted-list-uuid-2"
# ----------------------------------------------------------
# Backgrounds
# ----------------------------------------------------------
# Modify character backgrounds at runtime.
# Supports Booleans (Hidden), Strings (Passives), and Tags.
#
# UUID — the background UUID
# Booleans — toggle boolean fields (e.g. Hidden)
# Strings — insert/remove string fields (e.g. Passives)
# Tags — insert/remove tag UUIDs
# ----------------------------------------------------------
Backgrounds:
- UUID: "20d865ea-03bd-47bf-97d3-777e1b36b073"
Booleans:
- Key: Hidden
Value: false
Strings:
- Action: Insert
Type: Passives
Strings:
- "Background_Custom"
- "Background_Bonus"
Tags:
- Action: Insert
UUIDs:
- "ce00b3b6-238e-4524-851b-3d1f2d2b1189"
# ----------------------------------------------------------
# BackgroundGoals
# ----------------------------------------------------------
# Modify background goal definitions at runtime.
# Only supports Fields (simple scalar values).
#
# UUID — the background goal UUID
# Fields — key-value pairs to set on the goal
#
# Supported fields:
# BackgroundUuid — which background this goal belongs to
# ExperienceReward — experience reward definition UUID
# InspirationPoints — number of inspiration points awarded
# RewardLevel — level of the reward
# ----------------------------------------------------------
BackgroundGoals:
- UUID: "fc8b0dcc-01fc-4d18-818e-457f37a2516b"
Fields:
- Key: BackgroundUuid
Value: "633aa4be-365f-4358-ba56-e2b85f9a88ec"
- Key: ExperienceReward
Value: "90f636c0-2d85-46d8-9760-30b57c664f4b"
- Key: InspirationPoints
Value: 2
- Key: RewardLevel
Value: 3
# ----------------------------------------------------------
# ActionResources
# ----------------------------------------------------------
# Modify individual action resource definitions at runtime.
# This is separate from ActionResourceGroups (which add/remove
# resource UUIDs from groups).
#
# UUID — the action resource definition UUID
# Fields — set scalar fields (Name, MaxLevel, DiceType, etc.)
# Booleans — toggle boolean fields
#
# Supported fields:
# Name, DiceType, MaxLevel, MaxValue, ReplenishType
# Supported booleans:
# IsHidden, IsSpellResource, PartyActionResource,
# ShowOnActionResourcePanel, UpdatesSpellPowerLevel
# ----------------------------------------------------------
ActionResources:
- UUID: "d136c5d9-0ff0-43da-acce-a74a07f8d6bf"
Fields:
- Key: Name
Value: "SpellSlot"
- Key: MaxLevel
Value: 9
- Key: ReplenishType
Value: ["Rest"]
Booleans:
- Key: IsSpellResource
Value: true
- Key: ShowOnActionResourcePanel
Value: true
- Key: UpdatesSpellPowerLevel
Value: true
# ----------------------------------------------------------
# ActionResourceGroups
# ----------------------------------------------------------
# Insert or remove action-resource definitions.
# UUID — the action resource group UUID
# Definitions — array of resource definition UUIDs
# Action — "Insert" or "Remove"
# ----------------------------------------------------------
ActionResourceGroups:
- UUID: ""
Definitions: ["", "", ""]
Action: Insert
# ----------------------------------------------------------
# ClassDescriptions
# ----------------------------------------------------------
# Modify class definitions at runtime.
# Each entry targets a ClassDescription by UUID.
#
# Supported sections:
# Blacklist — prevent subclass sorting for this class
# Fields — set arbitrary key-value fields (BaseHp, HpPerLevel, etc.)
# Booleans — toggle boolean flags (CanLearnSpells, MustPrepareSpells, etc.)
# Tags — insert or remove tag UUIDs
# ----------------------------------------------------------
ClassDescriptions:
- UUID: "b60618d1-c262-42b5-9fdd-2c0f7aa5e5af"
Blacklist: true
- UUID: "d8cadb42-0ff9-4049-afaf-e5d78d06a399"
Fields:
- Key: BaseHp
Value: 10
- Key: HpPerLevel
Value: 6
- Key: SpellCastingAbility
Value: Intelligence
Booleans:
- Key: CanLearnSpells
Value: true
- Key: MustPrepareSpells
Value: true
Tags:
- UUIDs:
- "02913f9a-f696-40cf-acdf-32032afab32c"
Action: Insert
Type: Tags
# ----------------------------------------------------------
# Origins
# ----------------------------------------------------------
# Insert or remove origin definitions.
# UUID — the origin UUID
# Strings — array of string entries
# Fields — array of key-value pairs to set on the origin definition
# Tags — array of tag modifications
# ----------------------------------------------------------
Origins:
- UUID: "3780c689-d903-41c2-bf64-1e6ec6a8e1e5"
Fields:
- Key: FieldName
Value: Field Value
modGuid: "uuid of required mod (optional)"
Strings:
- Action: Insert or Remove
Type: "Passives"
modGuid: "uuid of required mod (optional)"
Strings:
- "Passive 1 Name"
- "Passive 2 Name"
Tags:
- UUIDs:
- "tag-to-add-or-remove-uuid"
Action: Insert or Remove
Type: Really, Appearance, Regular (optional - default to Regular)
# ----------------------------------------------------------
# Anchors & Aliases (optional convenience feature)
# ----------------------------------------------------------
# You can define reusable blocks with "&name" and reference
# them later with "*name". This avoids copy-pasting identical
# sections across entries.
#
# Each alias produces an independent deep copy, so modifying
# one reference does not affect others.
#
# Scalar anchor — reuse a UUID across multiple entries:
# base_uuid: &my_uuid "b60618d1-c262-42b5-9fdd-2c0f7aa5e5af"
# other_ref: *my_uuid
#
# Block anchor — reuse an entire mapping:
# _boost_template: &boost_block
# Action: Insert
# Type: Boosts
# Strings: ["ProficiencyBonus(SavingThrow,Constitution)"]
#
# Progressions:
# - UUID: "..."
# Strings:
# - *boost_block
#
# Below is a working example that shares a palette of eye
# colours between two race entries using an anchor & alias.
# ----------------------------------------------------------
# Define the shared children list once with an anchor
_shared_eye_colors: &eye_colors
- Type: EyeColors
Value: "bdf9b779-002c-4077-b377-8ea7c1faa795"
Action: Insert
- Type: EyeColors
Value: "aabb0011-2233-4455-6677-8899aabbccdd"
Action: Insert
# Reuse it in multiple race entries via alias
AnchorAliasExample:
- UUID: "9c61a74a-20df-4119-89c5-d996956b6c66"
Children: *eye_colors
- UUID: "0ab83885-cdb6-44e2-8b56-91a387287e5d"
Children: *eye_colors