Hmm, I honestly cannot understand your proposed algorithm - maybe a snippet of code will help to explain?
What I would do is say your talks 1,3,4 and 6 are for 'everybody' and 2 and 5 are 'romance only'. I never seen it done mind it - but I think it can be managed so:
IF
InParty(Myself)
RealGlobalTimerExpired("MyNPCLoveTalkTime","GLOBAL")
Global("MyNPCTalkActive","GLOBAL",1)
See(Player1)
CombatCounter(0)
!See([ENEMY])
!Range([NEUTRAL],10)
OR(4)
Global("MyNPCLoveTalk","LOCALS",1)
Global("MyNPCLoveTalk","LOCALS",5)
Global("MyNPCLoveTalk","LOCALS",7)
Global("MyNPCLoveTalk","LOCALS",11)
THEN
RESPONSE #100
MoveViewObject("MyNPC",INSTANT)
IncrementGlobal("MyNPCLoveTalk","LOCALS",1)
PlaySong(MyMusic)
Interact(Player1)
END
IF
InParty(Myself)
RealGlobalTimerExpired("MyNPCLoveTalkTime","GLOBAL")
Global("MyNPCTalkActive","GLOBAL",1)
Global("MyNPCRomanceActive","GLOBAL",1)
See(Player1)
CombatCounter(0)
!See([ENEMY])
!Range([NEUTRAL],10)
OR(2)
Global("MyNPCLoveTalk","LOCALS",3)
Global("MyNPCLoveTalk","LOCALS",9)
THEN
RESPONSE #100
MoveViewObject("MyNPC",INSTANT)
IncrementGlobal("MyNPCLoveTalk","LOCALS",1)
PlaySong(MyMusic)
Interact(Player1)
END
IF
InParty(Myself)
RealGlobalTimerExpired("MyNPCLoveTalkTime","GLOBAL")
Global("MyNPCTalkActive","GLOBAL",1)
!Global("MyNPCRomanceActive","GLOBAL",1)
See(Player1)
CombatCounter(0)
!See([ENEMY])
!Range([NEUTRAL],10)
OR(2)
Global("MyNPCLoveTalk","LOCALS",3)
Global("MyNPCLoveTalk","LOCALS",9)
THEN
RESPONSE #100
IncrementGlobal("MyNPCLoveTalk","LOCALS",1)
END
IF
InParty(Myself)
RealGlobalTimerExpired("MyNPCLoveTalkTime","GLOBAL")
Global("MyNPCTalkActive","GLOBAL",1)
OR(3)
Global("MyNPCLoveTalk","LOCALS",2)
Global("MyNPCLoveTalk","LOCALS",6)
Global("MyNPCLoveTalk","LOCALS",

THEN
RESPONSE #100
IncrementGlobal("MyNPCLoveTalk","LOCALS",1)
RealSetGlobalTimer("MyNPCLoveTalkTime","GLOBAL",3600)
END
IF
InParty(Myself)
RealGlobalTimerExpired("MyNPCLoveTalkTime","GLOBAL")
Global("MyNPCTalkActive","GLOBAL",1)
Global("MyNPCRomanceActive","GLOBAL",1)
OR(2)
Global("MyNPCLoveTalk","LOCALS",4)
Global("MyNPCLoveTalk","LOCALS",10)
THEN
RESPONSE #100
IncrementGlobal("MyNPCLoveTalk","LOCALS",1)
RealSetGlobalTimer("MyNPCLoveTalkTime","GLOBAL",3600)
END
IF
InParty(Myself)
RealGlobalTimerExpired("MyNPCLoveTalkTime","GLOBAL")
Global("MyNPCTalkActive","GLOBAL",1)
!Global("MyNPCRomanceActive","GLOBAL",1)
OR(2)
Global("MyNPCLoveTalk","LOCALS",4)
Global("MyNPCLoveTalk","LOCALS",10)
THEN
RESPONSE #100
IncrementGlobal("MyNPCLoveTalk","LOCALS",1)
RealSetGlobalTimer("MyNPCLoveTalkTime","GLOBAL",10)
END
See - if romance is not active the talks will be skipped.
If you put the talks into the BMyNPC.d - you don't need the Weights at all, as the dialog will be scanned top to bottom. If it is not new
NPC but existing one - put weights
#-100
#-99
#-98 etc
Also don't forget to put
IF ~Global("MyNPCLoveTalk","LOCALS",2)~ THEN BEGIN LOVE_TALK1
Say ~Oh my flower! yada yada~
...
into every new love talk -> here 2 is for lovetalk 1 as you can imagine. It gets reset to 1 at the start of the romance and to 2 just before the coversation, then to 3 when the Timer is reset, etc.
I just made it all up on the fly - so I cannot be blamed if it does not work.