You could add something like a parlay state into combat so a hostile NPC will not attack the player is in parlay but will not become friendly. Then as soon as parley ends the hostile can begin attacking. Basically a continuous loop of the attacker going "can I kill you yet" until you are done talking.
Also a possibility is letting NPCs command each other so when you enter parlay with an NPC, it commands all others to stop being hostile. When parlay ends that NPC can command the others to become hostile again.
it looks like the way to implement it will be to add a is_parlaying boolean field to an animalrec (a target record in the database of active targets in the simulation).
if a yield is accepted, and it doesn't automatically result in capture, the player is presented with the talk to caveman menu, or a menu for thieves (give all stuff, or resume combat).
the talk to caveman menu allows a variety of actions: gifting, trading, teaching, learning, healing, etc. during parlay most of these will be of little use except for gifting, trading, and talking. gifting and trading are "zero-time" actions, and happen immediately when the player makes the menu pick. but talking takes time, like when you talk to another sim in The SIMs.
if the player selects talk and triggers a talk action, the is_parlaying flags get set to 1 for all active hostiles near the PC in question, and then the simulation resumes, allowing the talk action to occur.
an extra line or two of code will be added to get_hostile_tgt to not target the player's party if is_parlaying is set, but continue to target and attack wild animals for example.
get_friendly_tgt will need to be modified so friendlies/neutrals don't target hostiles who are in parlay. same for band members, traveling companions, hired warriors, and tamed animals - so basically all the good guy AI targeting routines.
each PC has an array of 10 generic variables ( int actiondata[10] ) to hold action specific data, such as the ID number of an object you're fixing, how tired you were when you went to sleep, whether you're in parlay, who you're parlaying with, etc.
an variable will be set in the player's actiondata array, indicating that the talk action is part of a parlay.
a second variable in the player's actiondata array will indicate the npc #.
the talk action handler code will be modified as follows:
when the talk action completes, if the is part of a parlay flag is set, do a fuzzy relations check between the PC and the NPC. if the check succeeds, set all is_parlaying hostiles near the PC in question to neutral, and set their relations with the PC from -100 to -99, where -100 is always attack. then clear all the is_parlaying flags of hostiles near the PC in question, and you're done, continue with the simulation (RET from your INT handler, so to speak - TSR programming talk there). if they're still hostile after the end of all that, they'll resume combat, if not, they won't (but it will be REALLY easy to provoke them, so best to just leave the area).
the only other option than stopping combat is to stop time for a special zero-time parlay-talk action. which might be easier to implement, but is less realistic, and unlike the way the rest of the game works.