• 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.

Carriage return is the character which marks the end of a line. In some systems it's ASCII 10, in some it's ASCII 13, and in some it's both of those.

Looking at the older version of "smuggling.c", and at another random .c file, using Hex Editor, it seems the files normally end their lines with both 13 and 10. Your new version ends lines with just 10.

Ascii 10 (decimal) is line feed, ascii 13 (decimal) is CR carriage return. you used to need both to advance to the start of the next line.
 
Ascii 10 (decimal) is line feed, ascii 13 (decimal) is CR carriage return. you used to need both to advance to the start of the next line.
that would explain why it all went south, all CR had disappeared.

I can live with the extra contraband item on alert level as I rehash import/export items but may have to change what they are - but I don't think it makes any realistic sense. However I see pirate nation gets contraband - which makes sense if you capture colonies on for them perhaps. I hadn't thought about the player re-distributing island ownerships (and thereby contraband) in my thoughts about trade runs. I guess I just have to accept that they can be manipulated in that way - no easy solution I can think of for now.

maybe one could imagine it as them tightening control of all incoming and outgoing trade. I think, but aint sure, that contraband was often not things that were absolutely forbidden on the islands, but maybe were restricted to certain licensed merchants, to control price and flow. but I haven't done any research yet.. gonna have a think about it, and definitely appreciate ideas xD

EDIT: I just remembered another thing I did! I changed the pause times because they corresponded to different meals, and historically it wouldve been very rare to eat before 10 in the morning, so pretty much just moved all meals a few hours forward
 
alright, I've come up with a persuasion system that I hope could be fun! it's based on luck and leadership right now as I figure that is the most "charisma-like" score

Code:
           int pLeadership = CalcCharacterSkill(PChar,SKILL_LEADERSHIP);
           int pLuck = CalcCharacterSkill(PChar,SKILL_SNEAK);
           int PersuasionChance = 3+rand(pLuck)+pLeadership;
           if(CheckCharacterPerk(PChar,"Trustworthy")) PersuasionChance = PersuasionChance+1;
           if(CheckCharacterPerk(PChar,"IronWill")) PersuasionChance = PersuasionChance+1;
           //if(CheckCharacterPerk(PChar,"Charisma")) PersuasionChance = PersuasionChance+2;
           //if(CheckCharacterPerk(PChar,"WitCharm")) PersuasionChance = PersuasionChance+3;
           PersuasionChance = iClamp(4,16,PersuasionChance);
So, you get a persuasion chance between 4 and 16 depending on your stats and perks.

Code:
           int ThreeDice = ((rand(5)+1)+(rand(5)+1)+(rand(5)+1));

           if(ThreeDice <= PersuasionChance){
           trace("PersuasionChance: "+PersuasionChance+ "Dice: "+ ThreeDice + ". Persuasion Success!")
[...]

when you pick the dialog option, it rolls 3 6-sided dice for a number between 3 and 18. Why is this better than just one random number between 1-18? it creates a nice bell curve for odds of success! at a PersuasionChance of 5, you have a 4.6% chance of success, at 10 you have 50% and at 16+ you have a 98.9% chance of success. I'm all about the non-linear scales!

the chance is clamped at 4 and 16 so that there is always chance of success and always chance of failure. I've stolen this format directly and shamelessly from GURPS xD If anyone has any ideas for negative modifiers I think that could be fun too!

I'm quite pleased with the basics of it tbh, I'd love to use it in other dialog as well :p but I'm always open for the chance that I've messed up

since theres afaik theres no similar systems anywhere else in the game, I've been thinking about how to make the system more obvious
ENGINE 2017-10-24 03-47-59.jpg
I've went the Divinity OS2 route and simply tell the player they succeeded or failed, so they get to know a check of some kind is run and that there is also a chance of success

anyway, I've added some random phrases too, with different answers for each. attaching the files!
 

Attachments

  • random_guards_group_dialog.c
    17.2 KB · Views: 114
  • random_guards_group_dialog.h
    5.8 KB · Views: 119
If I understand the code correctly, 'PersuasionChance' is the number you're "rolling" against, and 'ThreeDice' is your "roll". I don't think RPG's randomise the number against which you're rolling - the GM makes up a number based on the difficulty of the task and the rules, then the player rolls the dice to try to beat it. So perhaps the calculation for 'PersuasionChance' should include 'pLuck', not '3 + rand(pLuck)'?

To me, adding the tag "[Persuasion Success!]" or "[Persuasion Failed!]" seems unnecessary and just makes the dialog look less natural. You know you succeeded or failed based on how the guard reacts - if you need to resort to bribing him then you probably didn't do a good job of persuading him!

'trace("PersuadeInt = "+sti(PersuadeInt));' - The 'sti' is not needed. It converts a string into an integer, but 'PersuadeInt' is already an integer. Besides, it's about to be converted into a string by being added onto the end of "PersuadeInt =". ;)
 
If I understand the code correctly, 'PersuasionChance' is the number you're "rolling" against, and 'ThreeDice' is your "roll". I don't think RPG's randomise the number against which you're rolling - the GM makes up a number based on the difficulty of the task and the rules, then the player rolls the dice to try to beat it. So perhaps the calculation for 'PersuasionChance' should include 'pLuck', not '3 + rand(pLuck)'?
indeed, I reasoned that your luck influence how gullible the guard is, in lieu of a GM. and since luck is a fickle mistress, I thought it would be interesting if it was random but with an upper limit based on your luck xD I worry it will become too easy if Luck added straight up

To me, adding the tag "[Persuasion Success!]" or "[Persuasion Failed!]" seems unnecessary and just makes the dialog look less natural. You know you succeeded or failed based on how the guard reacts - if you need to resort to bribing him then you probably didn't do a good job of persuading him!
yeah, that's fair. I figured it would be easier to understand the underlying systems if you get hints about what's going on under the hood. but I'm not fanatic about the idea, so it's no big deal to can it if that's better

'trace("PersuadeInt = "+sti(PersuadeInt));' - The 'sti' is not needed. It converts a string into an integer, but 'PersuadeInt' is already an integer. Besides, it's about to be converted into a string by being added onto the end of "PersuadeInt =". ;)
aha! I've been so confused about what sti does, my best guess was that it converted a number to a string, so I've been throwing it in any time I have a hard time getting the logs to display a number, with varying success. turns out it was the opposite :p I encounter things I have no idea what they do all the time, and then I throw them at problems to see what happens xD
 
indeed, I reasoned that your luck influence how gullible the guard is, in lieu of a GM. and since luck is a fickle mistress, I thought it would be interesting if it was random but with an upper limit based on your luck xD I worry it will become too easy if Luck added straight up
The guard's gullibility is the 'ThreeDice' roll. And note that he may have 'Leadership' and 'Sneak' skill attributes as well, so perhaps factor those into the roll.

As this is part of a dialog with the guard, he's "NPChar". You can't always count on that in all dialog files, but this line up near the top of the file is what sets it:
Code:
makeref(NPChar,CharacterRef);
If that is present then the character doing the dialog is "NPChar". You're calculating the player's chance based on 'pLuck' and 'pLeadership'. You could perhaps do the same calculation for the guard, perhaps as 'gLuck' and 'gLeadership', then use his value as a modifier.

Or you could use the patrol state as the modifier. If they're at low alert then they're not expecting trouble so it should be relatively easy. If they're on full alert then even asking about going to the beach tonight is likely to make him suspicious.

Another suggestion: instead of having a random pick of the four alternative persuasions, perhaps let the player choose. You start by saying that you need to go to the beach but don't want to be mistaken for a smuggler. He asks why. You then get the choice of saying you're inviting the barmaid for a picnic or any of the persuasion options. And they could all have consequences:
Dropped a memento of the lover: seriously reduce the chance of success, because the first question the guard would ask is, why aren't you going in the day when you have a better chance of seeing it?
Smugglers have a rough time: that's a red flag if ever I saw one. Improved chance of success at persuasion, but increased chance of bad info because the guard may suspect you're a smuggler and hopes to catch you in the act along with your associates.
Treasure: guaranteed success if you follow it up with a big bribe right now. Guaranteed bad info if you don't - the guard will be there to collect his share of the treasure, and he's not alone...
Turtles: basic chances of success and bad info. It's a wild enough story that, if you are convincing (you passed the basic 'ThreeDice' check), he has no particular reason to be suspicious or to have motives of his own. So, no special modifiers either way.
 
Last edited:
To me, adding the tag "[Persuasion Success!]" or "[Persuasion Failed!]" seems unnecessary and just makes the dialog look less natural. You know you succeeded or failed based on how the guard reacts - if you need to resort to bribing him then you probably didn't do a good job of persuading him!
I don't know. Most players wouldn't even know there's a persuasion system in the game and even if they know they wouldn't know when it's triggering. I think it's fair having some kind of cue for knowing that it wasn't just a scripted response or pure randomness.
 
The guard's gullibility is the 'ThreeDice' roll.
Hm, I rather see PersuasionChance as the target number based on the things that could influence your success, incl the guards gullibility, and ThreeDice as 'fate'. if we take the pen and paper RPG analogy again, in GURPS(which is my system of choice :p) the GM would decide on modifiers for the task based on difficulty and further pluses or minuses for other variables like character traits etc. then the player roll three dice against a relevant skill+/-modifiers and try to roll under. Say if you are sailing a boat frex, and your seamanship is 15. It's stormy and terrible, so you get a -6 to your roll, but you avoid a further -2 minus from seasickness because your character is an experienced sailor, so you roll against 9. so the dice are just a random number generator, pretty much. I could make it more like the actual thing by splitting character skill into another var I guess, but I think it'd tally up to the same result..


And note that he may have 'Leadership' and 'Sneak' skill attributes as well, so perhaps factor those into the roll.

As this is part of a dialog with the guard, he's "NPChar". You can't always count on that in all dialog files, but this line up near the top of the file is what sets it:
Code:
makeref(NPChar,CharacterRef);
If that is present then the character doing the dialog is "NPChar". You're calculating the player's chance based on 'pLuck' and 'pLeadership'. Do the same calculation for the guard, perhaps as 'gLuck' and 'gLeadership', then use his value as a modifier.

Looking at the OFFIC_TYPE_RANDCHAR officer type, it seems they always get 0 in both leadership and luck, sadly. I really like the idea, started writing it any everything :(

Or you could use the patrol state as the modifier. If they're at low alert then they're not expecting trouble so it should be relatively easy. If they're on full alert then even asking about going to the beach tonight is likely to make him suspicious.

100% this! Adding it xD how does this look?
Code:
int PersuasionChance = 3+rand(pLuck)+pLeadership-(getSmugglingState(smugisland)-1);

Another suggestion: instead of having a random pick of the four alternative persuasions, perhaps let the player choose. You start by saying that you need to go to the beach but don't want to be mistaken for a smuggler. He asks why. You then get the choice of saying you're inviting the barmaid for a picnic or any of the persuasion options. And they could all have consequences:
Dropped a memento of the lover: seriously reduce the chance of success, because the first question the guard would ask is, why aren't you going in the day when you have a better chance of seeing it?
Smugglers have a rough time: that's a red flag if ever I saw one. Improved chance of success at persuasion, but increased chance of bad info because the guard may suspect you're a smuggler and hopes to catch you in the act along with your associates.
Treasure: guaranteed success if you follow it up with a big bribe right now. Guaranteed bad info if you don't - the guard will be there to collect his share of the treasure, and he's not alone...
Turtles: basic chances of success and bad info. It's a wild enough story that, if you are convincing (you passed the basic 'ThreeDice' check), he has no particular reason to be suspicious or to have motives of his own. So, no special modifiers either way.

The random lines are definitely silly, but I tried to keep it on about the same level as other things in the game :p after all, I had a run-in with Clint Eastwood himself who promptly murdered me the other day.

I imagine it as fast-talk; you trying to make the guard respond before he has time to reflect on what's being said. for now the different lines are just flavor xD optimally, a master fraudster would probably have different things to say than the awkward fledgling smuggler, but that's for later, I feel

My worry with picking the line is that since you're probably going to have the conversation a lot of times if you play a smuggler, players would discover pretty quickly which is best and just use that one, Memento is obviously a terrible choice. It also kinda defeats the adding variety..

An alternative, tho, could be the Fallout New Vegas route: no random rolls, it just checks if your relevant stat is above a certain level and adjusts the dialog. or the divinity route, where its still random, but gives you several options based on different skills. you could have one charismatic based on leadership, on on commerce and one intimidating based on fencing, frex, and choose your preferred one.

but maybe that's too much for what is a relatively minor feature so far :p might be worth revisiting if it becomes a thing. however, I'm considering adding an option to just bribe from the start, or making it possible to influence the bribe with commerce. but again, maybe it's unnecessarily much work for rn..:type1
 
Hm, I rather see PersuasionChance as the target number based on the things that could influence your success, incl the guards gullibility, and ThreeDice as 'fate'. if we take the pen and paper RPG analogy again, in GURPS(which is my system of choice :p) the GM would decide on modifiers for the task based on difficulty and further pluses or minuses for other variables like character traits etc. then the player roll three dice against a relevant skill+/-modifiers and try to roll under. Say if you are sailing a boat frex, and your seamanship is 15. It's stormy and terrible, so you get a -6 to your roll, but you avoid a further -2 minus from seasickness because your character is an experienced sailor, so you roll against 9. so the dice are just a random number generator, pretty much. I could make it more like the actual thing by splitting character skill into another var I guess, but I think it'd tally up to the same result..
That was pretty much the point I was trying to make. :p The GM makes up a difficulty number based on various factors, but doesn't include a die roll among them. Then the player rolls the 3D to try to beat that difficulty number.

100% this! Adding it xD how does this look?
Code:
int PersuasionChance = 3+rand(pLuck)+pLeadership-(getSmugglingState(smugisland)-1);
You're adding +3 at one end and subtracting -1 at the other end, so you could simplify it and just put 4 at the start. ;) Beyond that, it's a matter of seeing what modifiers to put in to make it harder or easier to pass, depending on how often you want an average character to pass.

The random lines are definitely silly, but I tried to keep it on about the same level as other things in the game :p after all, I had a run-in with Clint Eastwood himself who promptly murdered me the other day.
Silly lines are indeed already part of the game. If you've noticed a change in international relations, look at the ship's log to find the details. Or look in "PROGRAM\NATIONS\nations.c", specifically for function 'GetBreakAllianceReason', where they're all listed.

My worry with picking the line is that since you're probably going to have the conversation a lot of times if you play a smuggler, players would discover pretty quickly which is best and just use that one, Memento is obviously a terrible choice. It also kinda defeats the adding variety..
Not necessarily true. If you balance it well, there is no single best - it's just a matter of which risk you want to take. Better chance of successful persuasion but increased chance of meeting the coastguard anyway, good chance of successful persuasion but costs you lots of money, low chance of successful persuasion but guaranteed good information if he falls for it - take your choice and face the consequences. (Alternatively, have no consequences at all, then it doesn't matter what you say, the result is the same anyway. Less interesting, but easier, and at least it means there's definitely no single best line to pick every time.)

An alternative, tho, could be the Fallout New Vegas route: no random rolls, it just checks if your relevant stat is above a certain level and adjusts the dialog. or the divinity route, where its still random, but gives you several options based on different skills. you could have one charismatic based on leadership, on on commerce and one intimidating based on fencing, frex, and choose your preferred one.
That's going to get messy, as you're going to need a whole mass of dialogs for the various skills. Anyway, I wouldn't expect Commerce skill to have any effect on bribery. And if you try to intimidate the guard with Fencing, you'll get an answer alright - and then he'll report the incident to his superiors, which means guaranteed you'll meet the coastguard, especially since they know what time you're likely to arrive...

On the whole, I reckon you've got a good system already. Now it needs lots of testing and tweaking until you're sure that (a) it works, and (b) it isn't too easy - or, for that matter, too hard. Because if the persuasion option doesn't work then there's still the picnic, and if everyone finds that the best way to get patrol times then all your persuasion work goes unused. Which would be a pity.
 
Dropped a memento of the lover: seriously reduce the chance of success, because the first question the guard would ask is, why aren't you going in the day when you have a better chance of seeing it?

Heh! If you have to ask why you're taking a girl to a beach at night, you probably don't want to know. Even the guards aren't *that* stupid. :D

Here's a hint: You aren't going there to look at the beach.

Hook
 
I don't know about you, but personally, that's exactly what I'm claiming to do - go and look at the beach, in search of a memento from a former, dead lover. If you'reclaiming that you intend to do something else with said lover, the guard will probably get a lot more suspicious than if he thinks you're only smuggling. ;)
 
Silly lines are indeed already part of the game. If you've noticed a change in international relations, look at the ship's log to find the details. Or look in "PROGRAM\NATIONS\nations.c", specifically for function 'GetBreakAllianceReason', where they're all listed.
:rofl

On the whole, I reckon you've got a good system already. Now it needs lots of testing and tweaking until you're sure that (a) it works, and (b) it isn't too easy - or, for that matter, too hard. Because if the persuasion option doesn't work then there's still the picnic, and if everyone finds that the best way to get patrol times then all your persuasion work goes unused. Which would be a pity.
Thanks xD yeah, I guess I'll smuggle for a while, see if anything breaks and balance what I can!

Heh! If you have to ask why you're taking a girl to a beach at night, you probably don't want to know. Even the guards aren't *that* stupid. :D

Here's a hint: You aren't going there to look at the beach.

Hook
in the code I added
"I dropped a memento of my late lover on the beach, but I'm deathly afraid of being taken for a smuggler and brought to the gallows. I can tell you are a kind, gentle soul. Please, would you tell me when it is safe?"
as a dialog line, but I don't think we ever wrote it out in the thread :p I see how asking why the player isn't looking during the day seem like a dense question in response to the original excuse of taking the bar maid for a date! xD
 
The random lines are definitely silly, but I tried to keep it on about the same level as other things in the game :p after all, I had a run-in with Clint Eastwood himself who promptly murdered me the other day.
I'm all in favour of silliness in the mod! :cheeky

(Uhm... With some limit, I suppose... :wp )
 
A new career as a smuggler quickly revealed two problems.

In "smuggling.c", variable SMUGGLING_PAUSE_QUANTITY is defined at the top of the file as 3. Function 'setIslandSmugglingPauses' defines 'bool pickpauses[SMUGGLING_PAUSE_QUANTITY]'. But function 'setIslandSmugglingPauses' has 'if(pickpauses[sti(id)] == TRUE)' sections defined for 'id' at 0, 1, 2 and 3. With array 'pickpauses' only defined to be size 3, that line fails when 'id' is 3. From 0 to 3 is four pauses. ;) Solution: change the line at the top to set 'SMUGGLING_PAUSE_QUANTITY' to 4.

The other problem is more serious. After trying to persuade a soldier to tell me the safe time to smuggle because smugglers have it too rough, this was the result in "compile.log":
Code:
5
ThreeDice = 11
Those smugglers sure have it rough here, I bet there's not a single hole in the patrols.
PersuadeInt = 3
PersuasionChance: 2Dice: 9. Persuasion Failed!
The first number, the "ThreeDice", the text quote and the "PersuadeInt" come from case "patrolquestion". But the line with "PersuasionChance", "Dice" and "Persuasion Failed!" came from case "persuadeguard3". I'm a bit surprised that there wasn't an error message because variables 'PersuasionChance' and 'ThreeDice' are defined and set in case "patrolquestion" and I wouldn't expect them to exist when the dialog file is called again to deal with case "persuadeguard3". But certainly the values are not being stored, which means when "persuadeguard3" happens, 'PersuasionChance' is always 2, 'ThreeDice' is always 9, and you're always going to fail.
 
A new career as a smuggler quickly revealed two problems.

In "smuggling.c", variable SMUGGLING_PAUSE_QUANTITY is defined at the top of the file as 3. Function 'setIslandSmugglingPauses' defines 'bool pickpauses[SMUGGLING_PAUSE_QUANTITY]'. But function 'setIslandSmugglingPauses' has 'if(pickpauses[sti(id)] == TRUE)' sections defined for 'id' at 0, 1, 2 and 3. With array 'pickpauses' only defined to be size 3, that line fails when 'id' is 3. From 0 to 3 is four pauses. ;) Solution: change the line at the top to set 'SMUGGLING_PAUSE_QUANTITY' to 4.
Aha! I tried to fix that problem the other day but I didnt find the right value to change so I commented out supper. turns out it was easier than I thought :p thanks

The other problem is more serious. After trying to persuade a soldier to tell me the safe time to smuggle because smugglers have it too rough, this was the result in "compile.log":
Code:
5
ThreeDice = 11
Those smugglers sure have it rough here, I bet there's not a single hole in the patrols.
PersuadeInt = 3
PersuasionChance: 2Dice: 9. Persuasion Failed!
The first number, the "ThreeDice", the text quote and the "PersuadeInt" come from case "patrolquestion". But the line with "PersuasionChance", "Dice" and "Persuasion Failed!" came from case "persuadeguard3". I'm a bit surprised that there wasn't an error message because variables 'PersuasionChance' and 'ThreeDice' are defined and set in case "patrolquestion" and I wouldn't expect them to exist when the dialog file is called again to deal with case "persuadeguard3". But certainly the values are not being stored, which means when "persuadeguard3" happens, 'PersuasionChance' is always 2, 'ThreeDice' is always 9, and you're always going to fail.

that is more serious :eek: would it work to just make them global? I've been trying to learn how eventhandlers etc work, would that be a good way to get the information over, or is that better for global functions and stuff?
 
If, by "make them global", you mean put the calculations at the top of the file and outside the main 'switch' block, that could work. They'd be calculated every time you talk to a random guard for any reason, which probably won't do any active harm, and would then be available to whichever version of "persuadeguard" is used. Either that, or do the calculations in each of the "persuadeguard" cases as that's where the values are being used.
 
At the top of the dialog file is common enough.
Refer to the prisoned one for an example.
 
alright, I changed it to do the entire PersuasionChance thing at the top, shouldnt be much of a resource drain, and declaring ThreeDice there but doing the actual roll in each dialog block. should work fine but gonna try it when I get to my game xD
 
Any progress on this? Another possible problem, or exploit, which I noticed while testing the new dialog was that, if I'd talked to the guard and failed, I could keep trying. It didn't help, of course - due to the problem with variables, all attempts failed. But if the dialog is corrected so that it is possible to succeed, then if at first you don't succeed, keep on at him until you do. ;) Meanwhile, I've reverted to a version of "random_guards_group_dialog.c/h" without the extra persuasion stuff.

Also:
case "seasidepicknick": another case of a 'AddQuestRecord' wiping preprocessed data so that the variable to insert the correct gender pronoun is cleared and the pronoun doesn't appear. Fixed by moving the 'AddQuestRecord' to before the 'Preprocessor_Add'.

case "acceptprice": 'AddMoneyToCharacter(pchar, -price);' doesn't work, so you don't lose the money you're supposed to be giving as a bribe. Not easily noticed if the bribe is 500 and you have a few tens of thousands. Easily noticed if it's early in your smuggling career and you bought just enough cargo to leave you with the bribe money so that you only have a little over 500 when you go to bribe the soldier. Fixed by replacing '-price' with '-1 * price'.

Attached is the version of "random_guards_group_dialog.c" I'm using at the moment, minus the new persuasion dialogs and plus the two fixes.
 

Attachments

  • random_guards_group_dialog.c
    9.1 KB · Views: 94
Any progress on this? Another possible problem, or exploit, which I noticed while testing the new dialog was that, if I'd talked to the guard and failed, I could keep trying. It didn't help, of course - due to the problem with variables, all attempts failed. But if the dialog is corrected so that it is possible to succeed, then if at first you don't succeed, keep on at him until you do. ;) Meanwhile, I've reverted to a version of "random_guards_group_dialog.c/h" without the extra persuasion stuff.

Also:
case "seasidepicknick": another case of a 'AddQuestRecord' wiping preprocessed data so that the variable to insert the correct gender pronoun is cleared and the pronoun doesn't appear. Fixed by moving the 'AddQuestRecord' to before the 'Preprocessor_Add'.

case "acceptprice": 'AddMoneyToCharacter(pchar, -price);' doesn't work, so you don't lose the money you're supposed to be giving as a bribe. Not easily noticed if the bribe is 500 and you have a few tens of thousands. Easily noticed if it's early in your smuggling career and you bought just enough cargo to leave you with the bribe money so that you only have a little over 500 when you go to bribe the soldier. Fixed by replacing '-price' with '-1 * price'.

Attached is the version of "random_guards_group_dialog.c" I'm using at the moment, minus the new persuasion dialogs and plus the two fixes.
making good progress! been running a smuggler game to try the balance which has been taking a while due to in-game mishaps :p I really should have just cheated my way around, but I had such a good time I didnt think about it :facepalm

good finds, gonna see what I can do about them! I thought I lost money, but I must have looked at the wrong numbers in the character menu :eek: I had a brainfart considering the addquestrecord, I saw it but didnt fix it :oops: but gonna add a check for if you have tried persuading that particular guard. which reminds me; since all relevant guards share it, will that make it more quirky to add that check?
 
Back
Top