Okay, so, I hunted a bit through Combat and Exploration, and tracked down the part where the game distinguishes bandits from captives (or at least, one of the spots):
if defeated.names[index] == 'Captured' || defeated.faction[index] in ['stranger','elf']:
What I would like to do is to reference this in Description, when trying to determine whether the described character is (a) a bandit, (b) someone I just rescued, or (c) someone I just kidnapped, because the described mood should be very different, right? "Bound at your feet, looking up at you with fear and hatred" doesn't fit someone I just rescued.
So... how do I do this, or is it too complicated to handle at my current skill level? Is this info I'd need to hand over from Combat/Exploration to Description, instead of having Description query from within its functions? Would it be best to make a secondary description routine in Description and have Combat/Exploration call it while sending a secondary faction marker? Is it hidden in the person's code already (e.g. by calling them "bandit" or "captive" before they get named)?
Also does the game rename characters between the "do you want to capture them?" scene and getting them home? because it feels like the names I see at the end of combat aren't the names I see once I look through my haul.