I was having trouble earlier with the script (it was just doing nothing at all!), I waited a few hours (i.e. got distracted) hit refresh (again) and somehow this time it worked again. Not sure what that was about. Then I imported Reta Bigbad, a goblin fighter and noticed race was displayed under xp, because I hadn't included CR nor XP. I checked the code for race (first time I actually looked at the code in a while) and found that while CR is split at "CR ", XP was just splitting at " " - so it would take anything that came after... When I write 600 XP instead of XP 600 it just shows the words XP in the NPC-XP attribute. I found this <a href="http://www.w3schools.com/jsref/jsref_split.asp" rel="nofollow">http://www.w3schools.com/jsref/jsref_split.asp</a> and it helped me change it so that the code for me now it splits at "XP " instead of " " Somehow working with macros for a while made me more open to reading javascript as well... And while this is tiny, maybe I'm the code monkey I was waiting for... code monkey to be... a code chipmonkey... :D Still, on my next problem I got stuck: NPC-other-gear was also not working for me... Admittedly her gear is really really weird, but when I finally thought to make it simpler, it still didn't work. [Spoiler alert: solution is don't have a line break between combat gear and other gear --- pretty sure I had even stumbled over that before, ages ago, and just forgotten because I didn't understand why.] It took me almost all day to be able to increase my understand what's going on in this code... (half of it spent on code academy getting way too involved coding an interactive dialogue with an orange merchant. *cough*, not sure if that counts) - Eventually I understood that this: var gearStr = findString(data, "Combat Gear", true); if (gearStr != null) { gearStr = gearStr.replace("Combat Gear ",""); gearStr = gearStr.split("Other Gear"); AddAttribute("npc-combat-gear",gearStr[0],charID); AddAttribute("npc-other-gear",gearStr[1],charID); } means that data (which is the gmNotes post all kinds of stripping etc) gets searched for Combat Gear, and then it is "true" that doConcat gets applied (not sure what it does, but eh). - The result is a string called gearStr, from which the substring "Combat Gear " gets deleted, and everything after "Other Gear" gets split into it's own... aehm "piece"(?), which can be referenced with "gearStr[1]" (because it's the second such "piece" in the array that gearStr has now become (right?) Anyway, that's where I was starting to think given the code of data and gmNotes, shouldn't there be a var gearStr and a findString for each? - if not, wouldn't that mean they'd have to be part of the same string, and thus the same line? I didn't realize my stat block was atypical in this particular aspect. low level goblins only have their gear listed under Treasure, while higher level seem to have it in the same line, split by a ";". Mine was from a PDF and had it with a line break... Long story short, problem solved and unnecessary amounts of code were learned in the process... wow. There really should be instead of (or in addition to) the list at the top of all the things it can import, a default format example to show what the expectations of this thing are...