Jump to content


Revised Thievery breaks quest-related NPCs


  • Please log in to reply
16 replies to this topic

#1 -Astellar-

-Astellar-
  • Guest

Posted 26 March 2013 - 02:27 PM

Sorry if it is already known, but I have not found this bug in known issues section of this mod. Currently "Revised NPC behavior on failed theft attempts" component breaks quest sequences when pickpocket attempt fails.

 

Setup info:

OS: Windows 7 64bit.

Game version: Baldur's Gates 1/2 from gog.com.

Installed modifications: Baldur's Gate 2 fixpack, BGT-WeiDU, Baldur's Gate 1/2 unfinished business, Rogue Rebalancing.

 

Steps to reproduce:

1. Start new Baldur's Gate 1 game.

2. Create any characters with pickpocket skill (I have created Half-elf Blade).

3. Enter Candlekeep Inn.

4. Try to pickpocket Firebead Elvenhair and fail attempt.

5. Pass Int/Wis/Cha check to avoid reputation loss.

6. Speak with Firebead Elvenhair.

 

Expected result:

NPC gives a quest to retrieve Firebead's Scroll.

 

Actual result:

Quest is not given at all, NPC responds as if quest is already taken.

 

This issue is rather bad. It may prevent Khalid and Jaheira from joining a party if you fail to pickpocket them before talking for example.



#2 Wisp

Wisp
  • Modder
  • 1353 posts

Posted 26 March 2013 - 06:07 PM

Cheeky answer: why would they want to adventure with you after you tried to steal from them?

 

I suppose the only fix for this is to replace NumTimesTalkedTo with something less crappy, but there are over 700 instances in unmodded BG1 alone, and the prospects of reliably automating the work are rather iffy with the tools available today.

 

Don't try to steal from people you are not prepared to upset? (And overlook the nonsense they spout afterwards, I guess.)



#3 Jarno Mikkola

Jarno Mikkola

    The Imp in his pink raincoat.

  • Member
  • 10911 posts

Posted 27 March 2013 - 02:03 AM

I suppose the only fix for this is to replace NumTimesTalkedTo with something less crappy, but there are over 700 instances in unmodded BG1 alone, and the prospects of reliably automating the work are rather iffy with the tools available today.
Or you could just exclude the start up by excluding the NumTimesTalkedTo(0) ...

This would make it so that if you fail at your first attempt, the NPC would notice the PC and auto talk to them the normal way, the next time they would then give them the chance check and if they would pass they wouldn't be upset ...

Yeah, you would need to adjust the NPC with two functions... something to this effect, from:
BEGIN
  ACTION_IF FILE_EXISTS_IN_GAME ~%file%.bcs~ 
BEGIN
    COPY_EXISTING ~%file%.bcs~ ~override~
      PATCH_IF (%SOURCE_SIZE% > 0x01) 
BEGIN
      // ===============================================================================
        DECOMPILE_BCS_TO_BAF
          REPLACE_TEXTUALLY EXACT_MATCH 
~StartDialogue("stolen",LastTrigger)~ 
~StartDialogOverride("RR#STLN1",LastTrigger)~
          PATCH_IF ("%SOURCE_RES%" STRING_EQUAL_CASE ~STEALHOS~) 
BEGIN                   // SoA hostile anti-steal script (requries a specific approach)
          REPLACE_TEXTUALLY EXACT_MATCH ~Enemy()~ ~StartDialogOverride("RR#STLN1",LastTrigger)~
          END        
COMPILE_BAF_TO_BCS
      // ===============================================================================
      END
    BUT_ONLY
  END
END
To:
BEGIN
  ACTION_IF FILE_EXISTS_IN_GAME ~%file%.bcs~ 
BEGIN
    COPY_EXISTING ~%file%.bcs~ ~override~
      PATCH_IF (%SOURCE_SIZE% > 0x01) 
BEGIN
      // ===============================================================================
        DECOMPILE_BCS_TO_BAF
          REPLACE_TEXTUALLY EXACT_MATCH 
~StartDialogue("stolen",LastTrigger)~ 
~StartDialogOverride("RR#STLN1",LastTrigger)~
          PATCH_IF ("%SOURCE_RES%" STRING_EQUAL_CASE ~STEALHOS~) 
BEGIN                   // SoA hostile anti-steal script (requries a specific approach)
          REPLACE_TEXTUALLY EXACT_MATCH ~Enemy()~ ~~~~~IF 
NumTimesTalkedTo(0)
THEN 
   RESPONSE #100
          StartDialog([PC])
EXIT

////////////////////////////////////////////////////
////the upper part has a hole in it as you need to add the NumTimesTalkedTo(0) to the tricker ... but
////then the rest is easy 
////////////////////////////////////////////////////

IF ~!NumTimesTalkedTo(0)~
      THEN 
            RESPONSE #100
StartDialogOverride("RR#STLN1",LastTrigger) 
EXIT~~~~~
          END        
COMPILE_BAF_TO_BCS
      // ===============================================================================
      END
    BUT_ONLY
  END
END
Yep the ~~~~~ x ~~~~~ is so nice with the weidu's replace textually.
Yeah, it has holes in it, but he basic idea should be there...

Edited by Jarno Mikkola, 27 March 2013 - 07:14 AM.

Deactivated account. The user today is known as The Imp.


#4 Wisp

Wisp
  • Modder
  • 1353 posts

Posted 27 March 2013 - 04:43 PM

Making everyone wait with their "hey, thief" speeches until they have been spoken to at least once is not an acceptable solution. (Also, that is not the right code.)


Edited by Wisp, 27 March 2013 - 04:43 PM.


#5 Azazello

Azazello

    The Anti-Spammer

  • Staff
  • 1912 posts

Posted 28 March 2013 - 05:59 AM

(Also, that is not the right code.)

 

hey, at least he's trying! :coolthumb:



#6 Wisp

Wisp
  • Modder
  • 1353 posts

Posted 28 March 2013 - 09:21 AM

However, this should not affect Jaheira and Khalid, as all joinable NPCs (as determined by script name and pdialog.2da) are intentionally excluded.


Edited by Wisp, 28 March 2013 - 09:22 AM.


#7 -Guest-

-Guest-
  • Guest

Posted 21 February 2014 - 03:44 AM

Just hit it.. it's been a year and nothing's done about it? At least write in big red letters that you POTENTIALLY BREAK EVERY QUEST IN GAME

 



#8 kreso

kreso
  • Member
  • 297 posts

Posted 21 February 2014 - 10:01 AM

Just hit it.. it's been a year and nothing's done about it? At least write in big red letters that you POTENTIALLY BREAK EVERY QUEST IN GAME

Isn't this what stealing from people always did in BG? Do the quest first, then steal.



#9 Salk

Salk
  • Modder
  • 1411 posts

Donator

Posted 22 February 2014 - 05:53 AM

Just hit it.. it's been a year and nothing's done about it?

 

Really, what could have been done about it? This is not a bug. Like Wisp said in his "cheeky" answer (which is less cheeky then the post it'd answer to): what do you expect from people you try to rob? If you can't bear the consequences of such moronic actions, just don't do it.



#10 -Guest-

-Guest-
  • Guest

Posted 24 February 2014 - 11:04 PM

Isn't this what stealing from people always did in BG? Do the quest first, then steal.

It isn't. And even if it was, the very purpose of adding a mod is to change something.

 

Really, what could have been done about it? This is not a bug. Like Wisp said in his "cheeky" answer (which is less cheeky then the post it'd answer to): what do you expect from people you try to rob? If you can't bear the consequences of such moronic actions, just don't do it.

Oh wow, now I'm a moron. I guess the OP, too. Ok.

It's not a bug, it's feature? Yeah, right.

Anyway, I'll break some news for you:

1) Stealing is not robbing. Get a dictionary.

2) The dialog design in this component is such that the stealing is plausibly denied.

3) In case you didn't notice, the least that could be done is mentioned earlier in this thread. In big red letters.

 



#11 -Guest-

-Guest-
  • Guest

Posted 24 February 2014 - 11:07 PM

http://www.urbandict...ine.php?term=It's%20not%20a%20bug%2C%20it's%20a%20feature



#12 Salk

Salk
  • Modder
  • 1411 posts

Donator

Posted 01 March 2014 - 11:17 PM

Thank you for the grammar lesson. But the point remains. You've been trying to steal from someone and then you want this person to forget it and behave like nothing happened? In the dialogue you may deny your actions but you can't expect them to believe you. You *did* try to steal from them. If there's a correction to be made is to make non merchant NPCs no longer talk to you (which shouldn't be too difficult) in order to avoid quest-related dialogue inconsistencies (with due exceptions, in case a specific quest is needed to advance the plot).

 

I didn't say you are a moron. I say stealing from NPCs that offer quests is moronic. You're free to do it but then do not complain. Especially in that tone and manner.

 

I am infinitely grateful for Revised Thievery, as it makes for a very big improvement over the vanilla behavior where everyone around turns hostile.

 

Enjoy what you got and respect the work of people like Wisp and others. They're not here to do your or anyone's bidding. Especially when the request is so rude.


Edited by Salk, 02 March 2014 - 12:01 AM.


#13 kreso

kreso
  • Member
  • 297 posts

Posted 01 March 2014 - 11:49 PM

@ unknown Guest

My apologies, I didn't realise you are a co-developer of Rogue Rebalancing so you can change mod's purpose.

Anyhow, here's a nice read for you.

 

On a more serious matter, there is a bug with this particlar component. In Ulgoth's Beard, Dushai (the female gnome with a pickpocketable Ring of Free action) can be pickpocketed endlessly, she never turns hostile or initiates dialogue.



#14 -Guest-

-Guest-
  • Guest

Posted 02 March 2014 - 03:34 PM

Thank you for the grammar lesson. But the point remains. You've been trying to steal from someone and then you want this person to forget it and behave like nothing happened? In the dialogue you may deny your actions but you can't expect them to believe you. You *did* try to steal from them. If there's a correction to be made is to make non merchant NPCs no longer talk to you (which shouldn't be too difficult) in order to avoid quest-related dialogue inconsistencies (with due exceptions, in case a specific quest is needed to advance the plot).

 

I didn't say you are a moron. I say stealing from NPCs that offer quests is moronic. You're free to do it but then do not complain. Especially in that tone and manner.

 

I am infinitely grateful for Revised Thievery, as it makes for a very big improvement over the vanilla behavior where everyone around turns hostile.

 

Enjoy what you got and respect the work of people like Wisp and others. They're not here to do your or anyone's bidding. Especially when the request is so rude.

Ok so if I'd not call you a moron but I'd call your posts moronic, that'd be fine, right?

Of course, I can and do expect the NPC to believe, since when they don't believe, they summon the guards.

Go enjoy and respect Justin Beiber - he's not there to do your bidding. Wait, that's nonsense.

I'm not making any biddings here, I'm leaving a warning for others, since the developers don't do it (and some people try to justify that).

 

@ unknown Guest

My apologies, I didn't realise you are a co-developer of Rogue Rebalancing so you can change mod's purpose.

Anyhow, here's a nice read for you.

I guess I'll have to carry the beacon of knowledge into this thread. Did you realize that "mod" is short for "modification"? "Modification" is change in something. Thus, the purpose of adding a "mod" into a game is to change something.



#15 The Imp

The Imp

    Not good, see EVIL is better. You'll LIVE.

  • Member
  • 5150 posts

Posted 02 March 2014 - 03:51 PM

I guess I'll have to carry the beacon of knowledge into this thread. Did you realize that "mod" is short for "modification"? "Modification" is change in something. Thus, the purpose of adding a "mod" into a game is to change something.
Well, let's see, the game has set limitations of the things that can be done reasonably, now you have not enlightened your idea on how exactly you would do this modification of yours ... so it always works as intended.
Yeah see, you can't modify a car to be a gun, you can add parts to it, make it a "tank", a weapon, but it still won't be a gun. Yeah, you can melt the metal and press them to be the gun parts, but it won't be the car anymore, or a modification of it, but a reconstruction.

Yep, Jarno Mikkola. my Mega Mod FAQ. Use of the BWS, and how to use it(scroll down that post a bit). 
OK, desert dweller, welcome to the sanity, you are free to search for the limit, it's out there, we drew it in the sand. Ouh, actually it was still snow then.. but anyways.


#16 GeN1e

GeN1e

    A very GAR character

  • Modder
  • 1604 posts

Posted 03 March 2014 - 09:40 AM

I suppose the only fix for this is to replace NumTimesTalkedTo with something less crappy, but there are over 700 instances in unmodded BG1 alone, and the prospects of reliably automating the work are rather iffy with the tools available today.

Check for NumTimesTalkedTo() value in the "stolen" dialog and reset back to 0 if it was 0 when the dialog fired.


Retired from modding.


#17 Wisp

Wisp
  • Modder
  • 1353 posts

Posted 09 March 2014 - 02:09 AM

Check for NumTimesTalkedTo() value in the "stolen" dialog and reset back to 0 if it was 0 when the dialog fired.
Without remembering anything about how this part of Revised Thievery works, it's a promising idea and I'll look into it when I have some time.