Alright so been doing some work on the Raw Cloner, You can type a file name right now and it will read that file and treat each line in it as an element in an array.
You can have up to 10 different arrays (even tho 2 is really only needed, 3 is pushing it) and you can tell the program where the data will go in the Template with:
A1_1 (mainly this one will be used for the first array)
Now the interesting thing is the last bit on that keyword, that "_1" what I've done is made it so you can add more information to the arrays, so say I want to make Custom Reactions for all the types of metals and all the types of weapons, well I'd have to run two arrays. One for the weapons, then the other for the metals. But I want the reaction name to say "make <metal> <weapon>" respectively however you still need those IDs like IRON or ITEM_WEAPON_BOW well this is how you would make the template:
[REACTION:MAKE_A2_1_A1_1]
[NAME:make A2_2 A1_2]
[BUILDING:<your custom building here>:NONE]
[REAGENT:metalBar:450:BAR:NONE:INORGANIC:A2_1]
[PRODUCT:100:1:WEAPON:ITEM_WEAPON_A1_1:GET_MATERIAL_FROM_REAGENT:metalBar:NONE]
[SKILL:FORGE_WEAPON]
heck even run this through it too (with it or after just depends on how you like pick your output apart)
[PERMITTED_REACTION:MAKE_A2_1_A1_1]
in the weapon file, and the metal file you would have these lines:
BOW#bow
MACE#mace
for metals
STEEL#steel
COPPER#copper
the arrays will split these lines into A1_1 (BOW) and A1_2 (bow) and same for metals. (you can have as many splits just make sure they are all even)
Now there is some manual labor needed for two or more arrays to work, first you run the first array (if we use the example of the weapon being BOW) the output will have an reaction half done but A2_#s will still be there, select all the output and copy it (CTRL+C) then goto your template and overwrite it with the paste, then run the second array, now you will have reactions that make all the weapons you wanted from all the metals you wanted. Heck you can play around with them in case you really want to make sure you get things right, you can combine the arrays and variable replacement methods.
Also I included a "Run all Arrays" button, this one is a bit different as it has different keywords and runs way differently. Made this one more for graphic set replacements that would work for mods that tend to remove some plants or weapons or whatever, basically the keywords go like 0A_1 where it's from '0-9A_n' and it litterly runs them all at once, yup all 10 arrays at once. And it stops it's process at the end of the smallest array (to prevent a crash) I don't know who would use it (I think I used it for Languages, and Plant/Tree Tiles) since if we use the above example of BOW and MACE and the metals STEEL and COPPER however i'm going to add another metal IRON
Now going through it would litterly make reactions for a STEEL_BOW and a COPPER_MACE and stop, since there is no third weapon IRON never sees the light of day. Someone might find a use for it, idk.
As an Added bonus I've added the Extractor, nifty little feature that allows you to input targets like [INORGANIC:#[TILE: pick an inorganic file, then choose a filename and location to save the output and BAM it will create an array ready file with the Inorganic ID and its Tile all seperated with a # (right now i'm having trouble with it and it adds an extra # at the end which could make the program flip 7 ways to sunday trying to run that array though)
I'll do some more work on it and see if I can fix that bug, if not I'll do a workaround where if the program attempts to write or access a NULL value you outputs some easy to find/replace keyword that wont conflict with anything. Also have another bug that I just thought of now, but it's not too major (ok maybe it is, but it's only a formatting issue)