@andgalf
I note the Lexicon says this (emphasis mine):
" Function - GetIsInCombat: Returns TRUE while the creature is in Combat State, that is for a certain amount of time (8 seconds?) after any offensive action by or towards a member of your faction. Combat State also determines combat music, and the ability to rest so you should be able to do your own experiments to determine how long it lasts for, and which actions trigger it."
This would seem to me (like other combat functions) that some hard code is at play that is determining when this function returns TRUE or not. As I say, in my own experiences when trying to use this function, it has not been reliable, and I have my own variable check setup to help determine if a PC is in combat alongside this function, just in case.
The way I do it, is add a variable the moment combat starts, and then only clear it down when a module HB check resets it after checking to make sure no PC remains in combat. So, it assumes in combat from the moment any combat starts, and cannot return FALSE until we have had a clear few seconds (up to around 6 by default, although this can be overridden with a general end of round check too) of PCs no longer in combat.
You can check this Local Module Variable (or Global if setup as such) in the conversation, I guess. Although, I still check this via the OnConversation script, which, admittedly, is not the default OC version.
E.g. Do/try something like the following …When combat starts…
SetLocalInt(GetModule(), “INCOMBAT”, 1);
In your conversation, try checking the module variable to drop the conversation if TRUE.
In your module HB script, have it do a regular check of any combat, and delete that variable (or set FALSE) when there is no more combat, using a loop test like those already mentioned.