• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

WIP Improvements to Smuggling.

Perhaps set an attribute on NPChar, which is the character you're talking to. If you then talk to the same guard again, the attribute will already be set, but my guess is that it won't be set for another guard in the same room. It also means you can leave the tavern, go back in, try to find another guard, and try again.

I would also suggest that, in all cases, failing the check should lead to the option of paying the guard. Otherwise, if you're not lucky enough to get the picnic line first time, you must keep trying until you do get it. Or until you get a lucky persuasion success.
 
Perhaps set an attribute on NPChar, which is the character you're talking to. If you then talk to the same guard again, the attribute will already be set, but my guess is that it won't be set for another guard in the same room. It also means you can leave the tavern, go back in, try to find another guard, and try again.

I would also suggest that, in all cases, failing the check should lead to the option of paying the guard. Otherwise, if you're not lucky enough to get the picnic line first time, you must keep trying until you do get it. Or until you get a lucky persuasion success.
Sounds like a good option, gonna see what I can do :onya
 
I added two new dialog nodes; "exit_smuggling" which is a regular exit but it sets the CurrentNode to "smuggling_already_asked", which is the other node I added where the guard tells you to scram. All failed or aborted persuasion/bribe attempts lead to exit_smuggling instead of the regular exit, and it seems to work so far!
 

Attachments

  • random_guards_group_dialog.c
    18.3 KB · Views: 121
  • random_guards_group_dialog.h
    5.8 KB · Views: 115
More work is needed, I'm afraid. The global variable has sorted out the problem of the dice roll always failing due to values not being preserved, and I finally got a success result. Having more than one soldier in the tavern at the same time helped with that, and incidentally meant I got to check that soldier 1 wouldn't let me try to persuade him again but soldier 2 was still open to persuasion, so that part of the dialog code is working. But this was the result:
smuggle_persusasion_success.jpg

No patrol time is given. The reason is the usual one - at each of the "persuadeguard*" cases, there's a 'Preprocessor_Add("patroltime",patroltime);' line at the top, but there's also a 'AddQuestRecord(questname, *);' line further down, and 'AddQuestRecord' wipes previous preprocessed data.

Also, at case "smuggling_already_asked":
Code:
if(PChar == "woman")Preprocessor_Add("diminutive",XI_ConvertString("girl"));
I tracked down to this line when soldier 1 called me "girl" and I'm not playing a female character this time. The condition should be 'if(PChar.sex == "woman")'.

Also, at case "wongame", nothing to do with your new dialog but I spotted it while tracking down the above problem:
Code:
AddMoneyToCharacter(pchar, -price);
Should be 'AddMoneyToCharacter(pchar, (-1 * price));' if it's going to do anything. (I've still to acquire the "High Stakes" ability and then try gambling, so I don't know whether you're supposed to pay the guard. If you do, that change is needed. If you don't, that line can come out entirely.)

I still think that giving the player a choice of line might be a good idea. In the existing system, you can snog the barmaid (though you may need to talk to her several times before she gives the answer to "sample her charms"). If you do, the seaside picnic line automatically succeeds; if you don't, that line automatically fails. In the new system, you have a 1/5 chance of getting the picnic line, so there's hardly any point in doing the preparatory work. On the other hand, if you do give the player a choice and the player has snogged the barmaid, there's no reason to choose any other than the picnic line, given that one is a guaranteed success and the others aren't. (Mind you, I can hardly ever be bothered annoying the barmaid until she gives in, so I'd probably choose anything other than the picnic line to get at least a chance of a successful persuasion.) Possible future development: figure out similar preparations for the other lines, then give the player the choice of line. So you get to choose which preparations to make and which line to use after making them.
 
Because '-price' doesn't work. I found that at case "acceptprice", which is what happens after you bribe the guard. Originally that also had 'AddMoneyToCharacter(pchar, -price);'. I had 506 gold before I agreed to pay the guard 500 for patrol times, and I still had 506 gold afterwards. When I changed it to '-1 * price', the next guard who accepted a 500 gold bribe actually took it.
 
Because '-price' doesn't work. I found that at case "acceptprice", which is what happens after you bribe the guard. Originally that also had 'AddMoneyToCharacter(pchar, -price);'. I had 506 gold before I agreed to pay the guard 500 for patrol times, and I still had 506 gold afterwards. When I changed it to '-1 * price', the next guard who accepted a 500 gold bribe actually took it.
That's weird; as far as I know, that should work.
Maybe 'price' somehow wasn't a proper integer? You could try '-sti(price)' as an experiment.
 
If 'price' isn't a proper integer then it's really weird because this is how it's defined:
Code:
int price = makeint(sqrt(sti(pchar.rank)))*250;
 
More work is needed, I'm afraid. The global variable has sorted out the problem of the dice roll always failing due to values not being preserved, and I finally got a success result. Having more than one soldier in the tavern at the same time helped with that, and incidentally meant I got to check that soldier 1 wouldn't let me try to persuade him again but soldier 2 was still open to persuasion, so that part of the dialog code is working. But this was the result:
View attachment 31278

No patrol time is given. The reason is the usual one - at each of the "persuadeguard*" cases, there's a 'Preprocessor_Add("patroltime",patroltime);' line at the top, but there's also a 'AddQuestRecord(questname, *);' line further down, and 'AddQuestRecord' wipes previous preprocessed data.

Also, at case "smuggling_already_asked":
Code:
if(PChar == "woman")Preprocessor_Add("diminutive",XI_ConvertString("girl"));
I tracked down to this line when soldier 1 called me "girl" and I'm not playing a female character this time. The condition should be 'if(PChar.sex == "woman")'.
somehow I uploaded the wrong fiiiile :modding and here I was looking at my code and scratching my head wondring what I had missed :mad: fixed the PChar.sex too

Also, at case "wongame", nothing to do with your new dialog but I spotted it while tracking down the above problem:
Code:
AddMoneyToCharacter(pchar, -price);
Should be 'AddMoneyToCharacter(pchar, (-1 * price));' if it's going to do anything. (I've still to acquire the "High Stakes" ability and then try gambling, so I don't know whether you're supposed to pay the guard. If you do, that change is needed. If you don't, that line can come out entirely.)
dunno exactly how that works, gonna have a look!

I still think that giving the player a choice of line might be a good idea. In the existing system, you can snog the barmaid (though you may need to talk to her several times before she gives the answer to "sample her charms"). If you do, the seaside picnic line automatically succeeds; if you don't, that line automatically fails. In the new system, you have a 1/5 chance of getting the picnic line, so there's hardly any point in doing the preparatory work. On the other hand, if you do give the player a choice and the player has snogged the barmaid, there's no reason to choose any other than the picnic line, given that one is a guaranteed success and the others aren't. (Mind you, I can hardly ever be bothered annoying the barmaid until she gives in, so I'd probably choose anything other than the picnic line to get at least a chance of a successful persuasion.) Possible future development: figure out similar preparations for the other lines, then give the player the choice of line. So you get to choose which preparations to make and which line to use after making them.
I figured that snogging the barmaid was an obscure and weird enough event that I honestly wouldve preferred to take it out, but I dont wanna step on any toes. the dialogs for it seems to have some problems too.

rn one can just bother the guards until ones lucky with the dice roll, whichs probably easier than harassing the barmaid until she realises she'd like money to canoodle while she leaves the bar room unmanned. I envisioned it as a hidden bonus if you happen to have bonked, but ultimately its an identical option to the others. subject for change tho, ofc.

but it'd definitely be cool if there were other preparations you could take apart from "have high skills! xD maybe even branching dialogs or somesuch! (lots of work, but otoh I have written ~100 lines of dialog for a pointless branching conversation for the opening of a future quest :p). and while sending an officer is a much more valid choice now, that'd would make it an even more attractive option if one dont want to/dont have the ability to spend the effort preparing oneself! but Im afraid of making it too much of a bother too.. after all, it's possible to minimise your chances of capture by a lot even if you dont find the right time.

optimally I'd like to somehow make it clearer that failing to persuade a guard or even getting the patrol time at all isn't the end of the world. I have written a sorta guide in the smuggling book, but tbh, most ppl wont read that more than once, and its a lot of text :p anyway, I love the idea of an expanded dialog and persuasion system overall, so it's probably something I'd like to take a look at more :) adding some preparations shouldnt be too hard

I'd like it to be possible to influence the bribing price too. like maybe it can vary with patrol state? and you could maybe haggle, with the risk of losing the chance. worth thinking about. but should probably make sure the smuggling works overall before adding even more layers xD
 

Attachments

  • random_guards_group_dialog.c
    18.3 KB · Views: 113
  • random_guards_group_dialog.h
    5.8 KB · Views: 119
While I personally think it is pretty cool to have a lot of player involvement and role playing with this, not everyone might see it that way.
For example, I think people like @Hylie Pistof probably like it to be a bit simple somehow.
It used to be pretty simple and not very time consuming, after all.
 
lord knows I just want a reason to use these perk pics what I done :p
ENGINE 2017-11-02 19-41-23_1.jpgENGINE 2017-11-02 19-41-26_1.jpg

also just realised the obvious solution to the picnic thing is to make sure the picnic line is the one that shows up if you have snogged. I still really dont like that event, but while its there anyway.. :p I can upload a new .c later after testing!
 
I want it simple and quick as well! At the moment the routine is talk to soldier, he says get lost, I offer money, he names his price, I agree, pay the money, done. The main effect now is that the game picks a random choice of first line for me to ignore and click past. It might be a bit more interesting if I can choose the line, especially if different approaches can have different advance preparations. Otherwise, on such occasions as I do smuggling (other than just to test smuggling), the dialog doesn't really matter as I'm just going to click through it anyway.

Though I'd still like the "[Persuasion Success]" and "[Persuasion Fail]" prefixes to not be there. They're useful for testing but a serious interruption to game world immersion otherwise. Plenty of other checks against skill, some involving random chance as well, exist in the game and don't need such signposts.

but should probably make sure the smuggling works overall before adding even more layers
That is what I'm trying to do by testing it. ;) Also, I have a mod of my own in the works, unrelated to the soldier dialog. I'm doing what I suggested earlier in the thread - the "Smuggler's Life For Me" quest is now split into three. Part 1 is the bit which is still triggered by pretty much anything to do with smuggling and is a tutorial similar to the relation book and piracy tutorials - it expires after a month, or at once after you read the book. I've tested this and it works. Part 2 is smuggling for a governor, and that's the bit I want to test next - it should be similar to the ship-hunting quests in that it creates a new questbook entry for each job. Part 3 is opium smuggling and, other than splitting it off to its own questbook, I'm not touching that.
 
Try this version of "random_guards_group_dialog.h". It's almost identical, except for two small changes:
"Those smugglers sure have it rough here..." replaces "Those smuggler sure have it rough here..." - more than one smuggler. ;)
"... Try #spatroltime#. *He winks* " - space added after "winks*" to appear before the next sentence about patrol status.
 

Attachments

  • random_guards_group_dialog.h
    5.8 KB · Views: 96
Though I'd still like the "[Persuasion Success]" and "[Persuasion Fail]" prefixes to not be there. They're useful for testing but a serious interruption to game world immersion otherwise. Plenty of other checks against skill, some involving random chance as well, exist in the game and don't need such signposts.
Maybe something to be considered for Arcade Game Mode only?
 
Otherwise, on such occasions as I do smuggling (other than just to test smuggling), the dialog doesn't really matter as I'm just going to click through it anyway.
this is true for so many things for most people, incl me, sadly :( so many ghosts I have banished into the infinite nothingness in divinity os 2 from not reading
I'll look at it at some point, but it's alright for now I think :)

Though I'd still like the "[Persuasion Success]" and "[Persuasion Fail]" prefixes to not be there. They're useful for testing but a serious interruption to game world immersion otherwise. Plenty of other checks against skill, some involving random chance as well, exist in the game and don't need such signposts.
I took a quick search through the dialogs and youre right! :eek: I had absolutely no idea there were that many others, so maybe they do need such signposts :p which brings me to:
Maybe something to be considered for Arcade Game Mode only?
the skill checks seem to be very easy to find in the files at least, so maybe adding persuasion prefixes to them too, and have a BuildOption to turn them off and on? in that case; easiest might be to add [Persuasion Success] or whatever and ditto for failure to common.ini to avoid chancing all the .h files?

I'm doing what I suggested earlier in the thread - the "Smuggler's Life For Me" quest is now split into three.
thats awesome, I dont wanna smuggle opium either, and my smuggler character wouldnt wanna sell out her friends, so those quests stay in my questbook forever :onya
Try this version of "random_guards_group_dialog.h". It's almost identical, except for two small changes:
"Those smugglers sure have it rough here..." replaces "Those smuggler sure have it rough here..." - more than one smuggler. ;)
"... Try #spatroltime#. *He winks* " - space added after "winks*" to appear before the next sentence about patrol status.
Thanks :oops:xD
 
I took a quick search through the dialogs and youre right! :eek: I had absolutely no idea there were that many others, so maybe they do need such signposts :p which brings me to:

the skill checks seem to be very easy to find in the files at least, so maybe adding persuasion prefixes to them too, and have a BuildOption to turn them off and on? in that case; easiest might be to add [Persuasion Success] or whatever and ditto for failure to common.ini to avoid chancing all the .h files?
Even easier would be not to do anything. :p Prefixes like that make about as much sense as subtitles in the film "Pirates of the Caribbean" saying things like "Jack Sparrow just failed his initiative roll". :sick
 
Even easier would be not to do anything. :p Prefixes like that make about as much sense as subtitles in the film "Pirates of the Caribbean" saying things like "Jack Sparrow just failed his initiative roll". :sick
thats just not true tho, because jack sparrow doesnt roll any initiative checks as movies dont have any gameplay mechanics that need to be conveyed to the viewer. it's more like a GM telling a player they failed their initiative check, because that is something they need to know.

it does make sense for video games, same as damage output for your weapons, numbers floating above the head of people in combat, a health bar so you know how close to death you are, persuasion checks, skill levels, cannon firing archs, NPC names etc etc. I'm all about immersion, but seeing the mechanics doesnt always hurt it, it helps the player play their character and make decisions based on their strengths. if they know it's a check, and they know their charisma stats arent very good, they can take another approach
58PqtB3_1.jpg divinity4_1.jpg shadowrun-hong-kong-review-pc-489932-4_1.jpg

anyway, it'll be optional, so you wont have to puke a lot :p I'm thinking something like this in the dialogfiles with persuasion
Code:
string PersuasionSuccess = "";
    string PersuasionFailure = "";
    if(PERSUASION_TAGS){
        PersuasionSuccess = XI_ConvertString("[Persuasion Success!]") + " ";
        PersuasionFailure = XI_ConvertString("[Persuasion Failure!]") + " ";
    }
and then one can just add PersuasionSuccess or failure infront of the DLG_TEXT and it should work like a charm. gonna try it later for the guards, if it works there it should just be a matter of adding the code to the other files too
 
Seems like a perfectly fine option to have in the game for an arcade experience.
Especially if it is going to be expanded on here and there, it should help in the initial testing phase too. :onya
 
Even easier would be not to do anything. :p Prefixes like that make about as much sense as subtitles in the film "Pirates of the Caribbean" saying things like "Jack Sparrow just failed his initiative roll". :sick
A game, unlike a film, isn't just about telling a story. Player engagement and agency are very important. When a player knows that they passed a skill check, it's rewarding to know their levelling up was useful and they didn't get that result through blind random luck. And if they know that they failed a check, that gives them a hint of what they need to improve in their character and encourages them to do it. I think it results in a more involving experience than just reading the dialog as it comes without knowing where it comes from.
 
Back
Top