Passionate objection to the very NOTION of people ever not pestering other people when the purposes of pestering are knowledge-gain and problem-solving-related!!
Prompts for problem-solving-oriented knowledge-output beget problem-solving-oriented knowledge-output (or put the idea to research the topic into people’s heads, if the knowledge is not readily available)! All bystanders who read along will benefit from this kind of pestering, and may have ideas for improvement on proffered solutions or know alternative ways with different pros and cons. Knowledgepestering is pretty much the best thing ever. People should knowledgepester one another whenever occasion to do so arises. SCIENCE DEMANDS IT OF US. LEARNING DEMANDS IT OF US. NOT BEING STUCK IN HORRIBLESADLAND-LANDS OF DOOM WHERE NOTHING WORKS BECAUSE WE DON’T KNOW HOW TO MAKE THINGS WORK DEMANDS IT OF US! THE END OF KNOWLEDGEPESTERING IS THE END OF GOOD THINGS!
1.
It’s my fault; I’d copypasted the code from the original in, and didn’t alter to whom the damage was being applied. See the while loop - it was cycling through the PC’s faction members using oTarget, but applying the damage to oPC regardless (so it would’ve actually damaged the PC multiple times, for each henchman found). I’d sneakily updated the code above a few days ago. It’s this bit:
ApplyEffectToObject(DURATION_TYPE_INSTANT, eAreaCold, oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
Needed to be
ApplyEffectToObject(DURATION_TYPE_INSTANT, eAreaCold, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
2. and 3.
Within the pseudoheartbeat above, the named damager is the caller of the pseudoheartbeat - which, here:
AssignCommand(oPC, FreezingAreaHB(oPC));
… is the PC, to whom the command to call that function was assigned. You can also have somebody else run a pseudoheartbeat, like a named object within the area, to get this fun effect:
AssignCommand(GetObjectByTag("DUCKHORDES"), FreezingAreaHB(oPC));

Mind that an object needs to be in the same area as the player being damaged, for the name to show. If the damager is in a different area, it’ll default to showing “Someone” again. Same if you have the area run the pseudoheartbeat, or the module; they’ll be “Someone”.
Alert: KNOWLEDGE NEEDED!
I have no idea why the PC is in combat mode, though. Setting up a test area, mine isn’t entering combat mode even when they’re applying damage to themselves. Conversations start just fine, no combat music playing. Here’s hoping somebody knows what’s up with that.
If you need to clear combat state under some other circumstances (clearing the action queue every five seconds or so would be super annoying in this case), and clearing the entire action queue is a-okay just then, then ClearAllActions(TRUE); will get the caller out of combat state instantly, which is useful for starting conversations immediately after combat, like when an enemy is surrendering.
::salutes, stone-faced:: FOR KNOWLEDGS.
But yeah, roll with yours. It’s gonna work just fine here. 