I found this while trying to mitigate incompatibility between mod.
Original action code that works fine:
{
Action = Add
AddTo = "<./Data/shots/laser_bolt_small/laser_bolt_small.txt>/Components/Hit/HitOperational/HitEffects/0"
Name = Filter
ToAdd
{
ExcludePartCategories = [laser_reflective]
}
}
Expanded with checks with identity Actions :
{
Action = Add
AddTo = "<./Data/shots/laser_bolt_small/laser_bolt_small.txt>/Components/Hit/HitOperational/HitEffects/0"
CreateIfNotExisting = true
Name = Filter
ToAdd
{
ExcludePartCategories = [laser_reflective]
}
}
{
Action = Add
AddTo = "<./Data/shots/laser_bolt_small/laser_bolt_small.txt>/Components/Hit/HitOperational/HitEffects/0/Filter"
OnlyIfNotExisting = true
Name = ExcludePartCategories
ToAdd = []
}
{
Action = AddMany
AddTo = "<./Data/shots/laser_bolt_small/laser_bolt_small.txt>/Components/Hit/HitOperational/HitEffects/0/Filter/ExcludePartCategories"
OnlyIfNotExisting = true
ManyToAdd = [laser_reflective]
}
The error is Halfling.Serialization.DeserializeException: Unable to find node at path "DamagePerShot" relative to "<C:\Games\Cosmoteer\Data\ships\terran\laser_blaster_small\laser_blaster_small.txt>/Part/StatsByCategory/0/Stats".
For some reason the first HitEffect 0 group can no longer be found which means it must have been moved down the list or worse. This changed order makes it no longer compatible with its original order, hence, other mods can't do their manipulations.