Salk Posted January 12, 2017 Share Posted January 12, 2017 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
Roxanne Posted January 12, 2017 Share Posted January 12, 2017 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
lynx Posted January 12, 2017 Share Posted January 12, 2017 Maybe it would break if the protagonist is in a different (sub)area. Link to comment
Salk Posted January 12, 2017 Author Share Posted January 12, 2017 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
Salk Posted January 12, 2017 Author Share Posted January 12, 2017 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
Roxanne Posted January 12, 2017 Share Posted January 12, 2017 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
Salk Posted January 12, 2017 Author Share Posted January 12, 2017 I thought that Player1 was always the protagonist, not the party member on the first slot... HmmOf 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
Roxanne Posted January 12, 2017 Share Posted January 12, 2017 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
Salk Posted January 12, 2017 Author Share Posted January 12, 2017 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
Ardanis Posted January 12, 2017 Share Posted January 12, 2017 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
Salk Posted January 12, 2017 Author Share Posted January 12, 2017 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
Ardanis Posted January 12, 2017 Share Posted January 12, 2017 (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
Avenger Posted January 15, 2017 Share Posted January 15, 2017 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 Posted January 15, 2017 Share Posted January 15, 2017 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
Salk Posted January 15, 2017 Author Share Posted January 15, 2017 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
Recommended Posts
Archived
This topic is now archived and is closed to further replies.