Kirazy, I'm thinking that a way to do it for some structures is just use a function to deepcopy the angel structure's graphics and then change any scale that I need to in the copy. That should pick up any changes that were made by other mods. Then I can tint the copy conditionally,
only if there isn't a reskin mod already giving those different colors.
It's a big change, and there has been lower hanging fruit, but I haven't forgotten about this.
https://github.com/kirazy/reskins-library/blob/116fa0533c2a1099489af1ca2f8327b46d04a1b4/prototypes/functions/entity-rescaling.lua#L137
The functions from line 137 and beyond may be of interest to you. They recursively rescale a given entity in its entirety.
Usage: rescale_entity(data.raw[type][name], 3/2)
, where 3/2 is scaling factor (It is advised to always use integer tile ratios, though I've noticed you use some interesting scaling factors).
The rescale function (which you can lift wholesale) in combination with util.merge may be of interest. Then all you have to do is come along behind it and make whatever additional changes are needed. (Don't try to merge animation/icons, the results will be wonky).
Example usage of util.merge:
util.merge{data.raw["assembling-machine"]["advanced-chemical-plant"], {
name = "advanced-chemical-plant-3",
minable = {result = "advanced-chemical-plant-3"},
module_specification = {module_slots = 4},
crafting_speed = 3.5,
energy_source = {emissions_per_minute = 0.1 * 60},
energy_usage = "500kW",
}},
Creates a new entity, but using Angel's advanced chemical plant as a base, but changing the fields that were specified.