Jump to content

Dialogue([PC]) -> Dialogue(Player1)


Salk

Recommended Posts

Hello!

 

One of the things that bother me in the BG game is how NPCs initiate dialogue with any party member rather than addressing Player1. Sometimes it is plainly a bug (the words are meant for Player1) and other times a simple inconsistency.

 

I was wondering if it might be safe to replace all the instances of Dialogue([PC]) with Dialogue(Player1) so that this problem would be rectified.

 

I am not sure whether or not this might break something in the game though so I'd like to ask for opinions.

 

Thanks!

Link to comment

Hello!

 

One of the things that bother me in the BG game is how NPCs initiate dialogue with any party member rather than addressing Player1. Sometimes it is plainly a bug (the words are meant for Player1) and other times a simple inconsistency.

 

I was wondering if it might be safe to replace all the instances of Dialogue([PC]) with Dialogue(Player1) so that this problem would be rectified.

 

I am not sure whether or not this might break something in the game though so I'd like to ask for opinions.

 

Thanks!

There may be cases where it is not obvious why one or the other was used in the code - but there is a difference. (and tthere may be cases that are erroneous), but a global change will not do.

Very often it does not matter which party member is detected or adressed, you could even exploit certain situations by sending an NPC ahead and keeping Player1 out of sight.

Many people in the game would not recognise your character in person, (e.g. a watcher, a shopkeeper, a bandit leader etc) but address/threaten/attack/talk-to anyone from your party.

Example, which happens quite often - you come into sight of some evil villain, he gives you a short talk, then he attacks and summons his companions. This should happen with any party member, not just Player1. If you limit to just Player1, you can pass those guys by with just keeping Player1 in the back.

Another issue arises when you intentionally put another NPC in the first slot - people would not talk to him/her as it is not Player1.

Link to comment

Many people in the game would not recognise your character in person, (e.g. a watcher, a shopkeeper, a bandit leader etc) but address/threaten/attack/talk-to anyone from your party.

Example, which happens quite often - you come into sight of some evil villain, he gives you a short talk, then he attacks and summons his companions. This should happen with any party member, not just Player1. If you limit to just Player1, you can pass those guys by with just keeping Player1 in the back.

The fact that many would not recognize Player1 would not be a problem. They would talk to him/her normally like they would any other party member although I understand it'd feel artificial to have them start their dialogue only when Player1 is in sight. It does not bother me much the fact that you can exploit this situation by moving the other party members forward to "pass" the villains/enemies. First because it's very hard to avoid fights/encounters doing that and second because it would be an intentional exploit which I do not intend to pursue.

 

Another issue arises when you intentionally put another NPC in the first slot - people would not talk to him/her as it is not Player1.

I think Player1 is always the protagonist, not the party member on the first slot, which can be identified with Player1Fill... Hmm... Anyway even here, it would just be a matter of keeping <charname> on slot 1.

 

I was more afraid of game breaking situations, exploits are not much of a concern.

 

Thanks!

Link to comment

Maybe it would break if the protagonist is in a different (sub)area.

This is something that would concern me.

 

I have not such an intimate knowledge of the game to remember whether or not there are such situations.

Link to comment
I thought that Player1 was always the protagonist, not the party member on the first slot... Hmm

Of course this is correct - but that was exactly my concern. You could change the order but people would still only recognise Player1 (e.g. in slot 5).

Anyway - I understand you are planning this for private use only, right? (i.e. you know about the pros and cons.)

Link to comment

 

I thought that Player1 was always the protagonist, not the party member on the first slot... Hmm

Of course this is correct - but that was exactly my concern. You could change the order but people would still only recognise Player1 (e.g. in slot 5).

Anyway - I understand you are planning this for private use only, right? (i.e. you know about the pros and cons.)

 

Oh yes, only private use, of course.

 

I am just afraid of breaking the game... :)

Link to comment

The issue may not be so much with replacing Dialogue([PC]) with Dialogue(Player1) in the actions part of scripts but with a mismatch to the conditions used to trigger the action, which would be more or less all cases in which for whatever reason the Player1 cannot be adressed (like the example of being in another subarea or stunned or silenced or unconcious etc). The condition part of a script block would check for one thing while the action part refers to another thing.

 

PS - another one to consider would be the often used

StartDialogueNoSet(LastSeenBy(Myself))

Link to comment

I see a global change might give real troubles... :)

I wonder if limiting the changes to the initdlg.bcs file might alleviate the issue without any risk.

Something like this?

COPY_EXISTING_REGEXP ~initdlg.*.bcs~ ~override~
DECOMPILE_AND_PATCH BEGIN
REPLACE_TEXTUALLY CASE_INSENSITIVE ~\See(\[PC\])~ ~See(Player1)~
REPLACE_TEXTUALLY CASE_INSENSITIVE ~\Dialogue(\[PC\])~ ~Dialogue(Player1)~
END
BUT_ONLY

By the way, for some reason this won't replace Dialogue([PC]) and I wonder why...

Link to comment

Considering my general prejudice against Dialog(), I could suggest Dialog([PC]) -> StartDialogNoSet(Player1) to skip walking to target (relevant if Player1 is on the other side of location). If you don't split the party between areas, you should be fine.

 

By the way, for some reason this won't replace Dialogue([PC]) and I wonder why...

 

Probably because it decompiles as Dialog(). WeiDU loves doing that.

 

~Dialog\(ue\)?(\[PC\])~

Link to comment

Thanks for your suggestion, Ardanis!

 

(Great to see you around, by the way)

 

Before I go for it, would you consider it risky in terms of odds of breaking the game?

 

I would not want to do that just to get rid of a minor annoyance... :)

Link to comment
(Great to see you around, by the way)

 

Just goofing around :)

 

Before I go for it, would you consider it risky in terms of odds of breaking the game?

 

See([PC]) Dialog([PC]) - may not involve Player1

See(Player1) Dialog(Player1) - may not trigger when it should if you keep Player1 behind the lines

See([PC]) StartDialogNoSet(Player1) - may fail if Player1 is in another area (making all area transitions require full party can help)

Link to comment

Roxanne is right about many things, but: the party order doesn't change who PlayerX is. In fact, Protagonist == Player1, always.

 

If you want a bullet proof dialog start, you may want to handle PC's who are not Player1 specifically. Reserve some lines for them, like "I want to talk to your boss."

You could probably even use the default dialog line for them, and not use up any dialog node.

Link to comment
Roxanne is right about many things, but: the party order doesn't change who PlayerX is. In fact, Protagonist == Player1, always.

Do I express myself so badly? This is what I tried to say all the time. There is Player 1 to 6 and party slot 1-6 and it is not necessarily the same. Protagonist == Player1,is true (unless you mod something drastically to change it) because it is normally the first party member to join in any game. And it never changes regardless of party dynamics unless you replace the Protagonist by someone else and remove him/her from the party (which is not something you do in an unmodded game).

Link to comment
If you want a bullet proof dialog start, you may want to handle PC's who are not Player1 specifically. Reserve some lines for them, like "I want to talk to your boss."

 

I think something like that would sound very artificial.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...