Jump to content

Romance Cheats: Anomen Bug for Males?


Guest Bozingar

Recommended Posts

Guest Bozingar

I'm working on a companion mod for Tweaks Anthology: Romance Cheats, and noticed a potential bug for Anomen with male PCs when you turn off gender restrictions:

After recruiting him, his first LoveTalk should occur after a short chunk of RealTime. This happens for female PCs (tested via waiting as well as C:AdvanceRealTime(999999)), but never seems to happen for male PCs. It seems the Romance Cheats mod does correctly remove the restriction (verified with a value of 1 with C:GetGlobal("AnomenRomanceActive","GLOBAL")), but whatever trigger starts the RealTime countdown to Anomen's first LoveTalk doesn't seem to be activating for male PCs.

My initial thought is his introduction dialogue when you first recruit him, which is gender specific. He refers to you as "my lady" when you approach him as a female PC with a couple of unique dialogue options. However, even with Romance Cheats active, male PCs don't get this "flirty" dialogue. Perhaps this gender check is what triggers the first LoveTalk countdown? No other romances have this, and all other same-gender romances seem to be working via Romance Cheats.

Has anyone else run into/replicated this? I've done as much troubleshooting as I can think of, and only have Tweaks Anthology: Romance Cheats and the Fixpack active. 

Link to comment
Guest Bozingar

I found a reference to this same bug below (see final post):

https://forums.pocketplane.net/index.php/topic,22591.0.html

Has anyone ever gotten a Male PC/Anomen romance to work without using a Girdle of Masculinity/Femininity or Wild Surge? I can't find any reference to this online.

In other words, is Tweaks Anthology: Romance Cheats even supposed to make this possible? Or maybe no one ever even noticed Anomen is excluded from this mod (understandable)?

I have no issue with this if it's true; I just want to make sure my mod includes all romance options enabled by Romance Cheats. Skipping Anomen is no problem (which apparently seems to be the internet consensus... poor guy).

Link to comment

Oh, but the Anomen Romance is really good. It gives more depth to Anomen as a character and why he is the way he is. I played with Anomen as female PC, had his romance, and with this first impression never understood why everyone finds him "Anoymen". (I do think he is a poor guy but more because of his abusive father, not because of what I think about him as a character.)

I'm at the wrong device to help with your actual question.

Link to comment
Guest Bozingar
2 hours ago, jastey said:

Oh, but the Anomen Romance is really good. It gives more depth to Anomen as a character and why he is the way he is.

I agree, while searching to try and solve this I actually got a bit hooked on his storyline (I'd like to play it out in-game now). It would be a shame if I had to skip him.

For reference, I'm working on an overhaul to the trilogy dialogue so romances refer to your PC by the correct gender should you remove gender restrictions (I couldn't find this out there anywhere). I'm just about done; Anomen is the last character.

Please let me know if you come up with anything/can replicate this bug. I'd like to add him in.

Link to comment
7 hours ago, Guest Bozingar said:

I'm working on an overhaul to the trilogy dialogue so romances refer to your PC by the correct gender should you remove gender restrictions (I couldn't find this out there anywhere).

This sounds awesome. May I ask how you do it? The best choice for compatibility would probably be to alter the original string references using "STRING_SET" and changing all explicit gendered terms into tokens (<PRO_LADYLORD> instead of Lady etc.).

Here is what I found:

in baldur.bcs, if the PC checks romance requirements, the variable SetGlobal("AnomenMatch","GLOBAL",1) is set:

Spoiler

IF
    Global("AnomenMatch","GLOBAL",0)
    Global("CheckAnomenMatch","GLOBAL",0)
    Gender(Player1,FEMALE)
    OR(4)
        Race(Player1,HUMAN)
        Race(Player1,HALF_ELF)
        Race(Player1,ELF)
        Race(Player1,HALFLING)
THEN
    RESPONSE #100
        SetGlobal("CheckAnomenMatch","GLOBAL",1)
        SetGlobal("AnomenMatch","GLOBAL",1)
END

With this variable at 1, upon his joining dialogue (ANOMEN.dlg) all other needed variables and timer are set, e.g. like in this example from his joining dialogue. You see the different reply options whether the PC matches the romance criteria or not:

Spoiler

IF ~~ THEN BEGIN 6 // from: 2.0 5.0 11.0 14.0 15.0
  SAY #6135 /* ~Perchance I have found worthy companions. I seek to be knighted in the Most Noble Order of the Radiant Heart and I must prove my worth, first. Have you need of a strong sword, my <LADYLORD>?~ */
  IF ~  Global("AnomenMatch","GLOBAL",1)
~ THEN REPLY #6147 /* ~I would be infinitely pleased to have you join me. Welcome!~ */ DO ~RealSetGlobalTimer("AnomenRomance","GLOBAL",2000)
SetGlobal("LoveTalk","LOCALS",1)
SetGlobal("AnomenRomanceActive","GLOBAL",1)
SetGlobalTimer("AnomenJoined","GLOBAL",FIVE_DAYS)
~ GOTO 21
  IF ~~ THEN REPLY #6148 /* ~Regretfully, I must decline your offer. ~ */ GOTO 4
  IF ~  !Global("AnomenMatch","GLOBAL",1)
~ THEN REPLY #55350 /* ~I would be infinitely pleased to have you join me. Welcome!~ */ DO ~SetGlobalTimer("AnomenJoined","GLOBAL",FIVE_DAYS)
~ GOTO 21
END

With this timer and variables, Anomen's script (ANOMEN.bcs) triggers the first lovetalk when the timer run out:

Spoiler

IF
    InParty(Myself)
    RealGlobalTimerExpired("AnomenRomance","GLOBAL")
    !Global("AnomenRomanceActive","GLOBAL",0)
    !Global("AnomenRomanceActive","GLOBAL",3)
    Global("AnomenMatch","GLOBAL",1)
    !AreaCheck("AR1300")  // u the time to
    !AreaType(DUNGEON)
    See(Player1)
    CombatCounter(0)
    !See([ENEMY])
    !Range([NEUTRAL],10)
    OR(14)
        Global("LoveTalk","LOCALS",1)
        Global("LoveTalk","LOCALS",3)
        Global("LoveTalk","LOCALS",5)
        Global("LoveTalk","LOCALS",7)
        Global("LoveTalk","LOCALS",9)
        Global("LoveTalk","LOCALS",11)
        Global("LoveTalk","LOCALS",13)
        Global("LoveTalk","LOCALS",17)
        Global("LoveTalk","LOCALS",19)
        Global("LoveTalk","LOCALS",21)
        Global("LoveTalk","LOCALS",23)
        Global("LoveTalk","LOCALS",25)
        Global("LoveTalk","LOCALS",29)
        Global("LoveTalk","LOCALS",33)
THEN
    RESPONSE #100
        IncrementGlobal("LoveTalk","LOCALS",1)
        PlaySong(35)
        Interact(Player1)
END

The question is: was the "AnomenMatch" variable set via tweaks, and if not, why not.

Link to comment
15 hours ago, Guest Bozingar said:

For reference, I'm working on an overhaul to the trilogy dialogue so romances refer to your PC by the correct gender should you remove gender restrictions (I couldn't find this out there anywhere). 

It was about time that somebody finally do this. :p Now, if you could just incorporate NPC flirt pack in your work it would nicely round it up. 

Link to comment
Guest Bozingar
14 hours ago, jastey said:

The question is: was the "AnomenMatch" variable set via tweaks, and if not, why not.

Got it! Thanks much for laying this out; it really helped me understand the scripting logic behind this.

I fixed it by adding the following code to the anomen.bcs override:

IF
    Global("AnomenMatch","GLOBAL",0)
    Global("CheckAnomenMatch","GLOBAL",0)
    Gender(Player1,MALE)
THEN
    RESPONSE #100
        SetGlobal("CheckAnomenMatch","GLOBAL",1)
        SetGlobal("AnomenMatch","GLOBAL",1)
END

However, this seems to suggest a bug in the anomen.bcs override added by Tweaks Anthology: Romance Cheats. It is apparently not setting the Match variable correctly for male players. I've uninstalled and reinstalled the anthology a few times to double check that it wasn't just my local copy, and the bug reappeared each time.

How would I go about flagging this as a true bug? Or maybe helping add a patch myself? I'm new to the Gibberling glory. 😁

(Also to your other question, I've been trying to create an English dialogf.tlk, as this structure is already in place for romantic languages. To your point however, would this be less compatible with other mods? Should I stick with creating dlg overrides? There's a few gendered statements I'm not sure could be handled by STRING_SET, though I haven't tried. The tlk files are a pain to debug, though I've managed so far.)

Link to comment

Tweaks bypasses the existing match block by simply inserting one at the top of Anomen's script without racial and/or gender requirements, as specified at install; AnomenRomanceActive would not have advanced past zero unless he's considered a match.

The key bit here is the PartyRested() trigger. He uses the same two-step process used in other romances, in that once the timer expires, he sets a shorter timer (two minutes, in Anomen's case) to fire the actual talk. He won't set the two-minute timer to the actual love talk until the party has rested, no matter how much real time you advance. The two blocks for his love talks can be found in anomen.bcs, starting around line 469 (BG2EE) or 315 (oBG2). There are no gender or racial checks on the actual love talks, just a check against the Match variable.

Link to comment
3 hours ago, CamDawg said:

He uses the same two-step process used in other romances, in that once the timer expires, he sets a shorter timer (two minutes, in Anomen's case) to fire the actual talk. He won't set the two-minute timer to the actual love talk until the party has rested, no matter how much real time you advance.

Maybe because I'm ESL, but I understand this paragraph so that it's not describing how the LTs are triggered: the LTs are triggered the moment the long romance timer runs out, except for the case that the party just rested, then the romance timer is reset to 10 seconds so Anomen doesn't start talking the moment the rest ends. The script block you mentioned lines for is the one with the 10 s timer, it has a "PartyRested" check in it which gives only true directly after a rest; the triggering of the LT if that is not the case happens with the script block below this one.

So, a two-step process it is with an intermediate script block that sets the (long) timer, and another script block that starts the romance talk once the timer expires (and no enemies are near etcpp.), and a safety measure to reset the timer for 10s before the lovetalk starts in case the party just rested.

Link to comment

You're right, I was misreading it--the block with the PartyRested is just to prevent an immediate LT after a rest. Nonetheless, Bozingar reported that AnomenRomanceActive is 1, which is only true if he's been slotted as a match at the end of Anomen's joining dialogue. One of the other conditions (10' from neutrals, not dungeon, etc.) is preventing the LT.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...