• 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 Improve Baldewyn Coffier & Arnaud/Sabine Matton Sidequests

@Levis: Would this help then?
Code:
   ch.rank    = 1;
[...]
   ch.experience = "0";
   ch.skill.Leadership = "0";
   ch.skill.Fencing = "0";
   ch.skill.Sailing = "0";
   ch.skill.Accuracy = "0";
   ch.skill.Cannons = "0";
   ch.skill.Grappling = "0";
   ch.skill.Repair = "0";
   ch.skill.Defence = "0";
   ch.skill.Commerce = "2";
   ch.skill.Sneak = "0";
[...]
   ch.questchar = true;
   ch.quest.officertype = OFFIC_TYPE_SHOPKEEPER;
   ch.quest.officerprice = 0;
   ch.quest.NoRaise = true;
   LAi_SetStayType(ch);
If you do it like this she will only be able to raise her commerce skill an nothing more...
I sugest something like this:

Code:
   ch.rank    = 1;
[...]
   ch.experience = "0";
   ch.skill.Leadership = "0";
   ch.skill.Fencing = "1";
   ch.skill.Sailing = "0";
   ch.skill.Accuracy = "1";
   ch.skill.Cannons = "0";
   ch.skill.Grappling = "0";
   ch.skill.Repair = "0";
   ch.skill.Defence = "1";
   ch.skill.Commerce = "3";
   ch.skill.Sneak = "0";
[...]
   ch.questchar = true;
   ch.quest.officertype = OFFIC_TYPE_SHOPKEEPER;
   ch.quest.officerprice = 0;
   ch.quest.NoRaise = true;
   LAi_SetStayType(ch);

That would allow her to at least also gain xp in the fencing,accuracy and defence skills which are needed during combat.
 
We don't really care about her gaining experience all that much, because she's just a passenger and isn't meant to do much of anything else.
Though for the sake of "looking nice", I suppose some more skills would be nice.
So I'm adding your suggested code anyway. :cheeky
 
If possible Sabine could do with the header in character screen reading PASSENGER not OFFICER (it will change to that if you remove her from her "officer" role as "shop merchant" - unfortunately she changes to "comrade_in_arms" on passenger screen but the character screen IS then showing PASSENGER (and no role). So there should be a way of faking between the two.

If the change officer's role button could be rendered inactive on her on the passenger screen it would stop anyone giving her a different officer role (however silly it would be to do so) and wiping the non-returnable "shop merchant".

I'll look how the interfaces are controlled but if you have any quick hints I don't mind being told how in either case!

She can also be put to join your shore party which isn't too good but I guess if you want a bit of cannon fodder there's no reason to not leave stupid as an option.
 
It may be best to leave that one to @Levis; it is the Levelling "every character now has an officertype" that triggers this change.
Indeed I do remember deliberately having that "Passenger" note showing in F2>Character which makes a whole lot of sense to me.
I'd definitely like to see it back.

If you do want to have a look, PROGRAM\INTERFACE\character.c is the Character interface and passengers.c is the Passengers one (believe it or not ;) ).

Maybe there needs to be a "PASSENGER" officer type then on whom everything is locked with zero salary?
OR allow characters to have "no officer type" again. But that is probably complicated for Levis....
 
I have found and adapted the character interface code so that shop merchant type displays as PASSENGER in the F2 character interface, other exceptions could be added or as @Pieter Boelen suggested an actual officer type "passenger" be created (also to receive the exception).

Next I need to lock the change role button in the passenger interface.
 
Next I need to lock the change role button in the passenger interface.
I think you need this section of code:
Code:
      bool enable = false;

       idx = sti(GameInterface.passengerslist.current);
       idx = GetPassenger(_refCh, idx);
       if(idx > 0)
       {
         ref chr = GetCharacter(idx);
         enable = !CheckAttribute(chr, "prisoned");
       }

       SetSelectable("REMOVE_OFFICER", false);
       SetSelectable("CHANGE_OFFICER_ROLE", enable);
Could it be as simple as also checking that "NoRaise" attribute in addition to the "prisoned" one?
If so, would it make sense to do the same for that F2>Characters Interface?
It could even become a "passenger" attribute and be used in much the same way as the "prisoned" one.
Would also need to ensure that "passenger" skills DON'T contribute.
 
I think you need this section of code:
Code:
      bool enable = false;

       idx = sti(GameInterface.passengerslist.current);
       idx = GetPassenger(_refCh, idx);
       if(idx > 0)
       {
         ref chr = GetCharacter(idx);
         enable = !CheckAttribute(chr, "prisoned");
       }

       SetSelectable("REMOVE_OFFICER", false);
       SetSelectable("CHANGE_OFFICER_ROLE", enable);
Could it be as simple as also checking that "NoRaise" attribute in addition to the "prisoned" one?
If so, would it make sense to do the same for that F2>Characters Interface?
It could even become a "passenger" attribute and be used in much the same way as the "prisoned" one.
Would also need to ensure that "passenger" skills DON'T contribute.

Yes that's exactly where I have been looking, but struggling a little with the exact syntax required, got it turned off for Sabine but also affecting a non "NoRaise" officer. I used shop merchant in the other interface but that is soon altered. I suspect that we may want two attributes one no raise and one no officer allocation (there may be reasons for both to apply or either).

Currently the skills do contribute (well the figure is green) so the attribute (no officer allocation) could be used to stop that too. That would still allow the other (No Raise) to be used for time controlled free or cheap officers for quest purposes.
 
I feel sorry for Sabine and give her wish to sail as an officer on my ship - I don't take her to her god mother - hence I do think she should have the same attributes for gaining skills as a normal officer.

Otherwise she could be treated the same as the girl won in a card game.
 
Admittedly the simplest way of handling "passengers" is to not have them as "officer" at all, but user "actor follow type".
But it IS also nice to be able to see them in the interface, which you can't with such characters. :facepalm

@pedrwyth: Would the following work?
Code:
enable = !CheckAttribute(chr, "prisoned") && !CheckAttribute(chr, "NoRaise");
 
@pedrwyth: Would the following work?
Code:
enable = !CheckAttribute(chr, "prisoned") && !CheckAttribute(chr, "NoRaise");
Yes that looks right - I was having a slight problem getting my head round the double negatives being true to set enable as true but false if either half fail, so was trying as a separate if condition - but once set in front of me its crystal. However that just sets the condition on entry to passenger interface it needs a repeat of that in DoScrollChange too which is why I was finding my intervention in only the first place affected everyone.

However I think in due course I will have a different attribute (perhaps NoOfficer) so NoRaise can be also used for any Officers whose salary needs holding for a bit for quest reasons - such as BBF starting officers?. At the moment though I have used NoRaise as that is what she had in my saved games.

To meet the aspirations of @salonikasurf (and Sabine??) as I develop through the other "flaws" I can add a dialogue with her on arrival at Puerto Rico all about how wonderful life at sea is and can she continue sailing with you (wiping the NoOfficer, NoRaise attribute(s) if you agree (- it can tell you her salary when you might not! ) so she will get paid and skill etc. and tell her to settle things with her Godmother/Aunt closing that off (assuming I will be adding Quest book entries too).

One mostly unrelated thought was once "sharing the plunder" - salary consideration/discussion when hiring doesn't make any sense does it? - or am I missing something clever -never having tried it? No need to answer that - I can try it and see (and add a feature request for build 15 if appropriate).

Here are the two amended interface files

EDIT I think that ties up what has been discussed for the release of 14 4 so I will just get on with the rest in the background (unless I get stuck)
 

Attachments

  • ambc.7z
    15.9 KB · Views: 143
Last edited:
I think that ties up what has been discussed for the release of 14 4
I think so too. Thanks a lot for your help! :cheers

One mostly unrelated thought was once "sharing the plunder" - salary consideration/discussion when hiring doesn't make any sense does it? - or am I missing something clever -never having tried it? No need to answer that - I can try it and see (and add a feature request for build 15 if appropriate).
I'm not entirely sure I follow you there. The only thing I did at some point is to make the player's Leadership skill used in some "Divide-the-Plunder only" spots.
But that might have been reverted again by now. Can't remember.... :facepalm
 
I prefer not to use the NoRaise attribute for this because we might want to use it for others also which can be used as officers.

I would suggests to have the
character.quest.officertype
have an extra attribute for some:
character.quest.officertype.fixed = true;
If this is the case the button for changing the officertype is locked so you can't change theire officertype (als the dialog option has to be disabled). That shouldn't be to hard.
And then have an other attribute like:
character.isPassengerOnly = true;
To exlude them from the officer assignment interface, or do include them there but make them unselectable and show a message. The first one is easier, the seccond one is more clear.

But let's move this to after the public release maybe?
 
I prefer not to use the NoRaise attribute for this because we might want to use it for others also which can be used as officers.
yep that's how I see it too
I would have an extra attribute for some: character.quest.officertype.fixed = true;
If this is the case the button for changing the officertype is locked so you can't change their officertype
already done just need to alter what attribute triggers it
(also the dialog option has to be disabled). That shouldn't be to hard.
Not done that - not sure what dialogue since there is no dialog for Sabine at that point since she isn't truly an officer - but perhaps for "normal" officers one may want to lock in a particular post for quest purposes.
And then have an other attribute like:
character.isPassengerOnly = true;
To exclude them from the officer assignment interface, or do include them there but make them unselectable and show a message. The first one is easier, the second one is more clear.

But let's move this to after the public release maybe?
Yep it seems functional now (if your NoRaise attribute is dealing with the salary side of Sabine) the attribute used can be changed if or when it is needed for some other case.
 
But let's move this to after the public release maybe?
As long as there IS something like an "inactive passenger officer" option in Beta 4, that is fine by me.
Making the solution fancy can indeed be done a bit later.

"Simplest"/"cleanest" solution at the moment might be to rename "quest.NoRaise" with "passenger".
Then have it used in a similar way to the "prisoned" attribute.

This should also be extended so passengers don't contribute their skills.
Though if we go with Lady Barbara on the HMS Lydia (Captain Horatio Hornblower film/book), that may not even be quite necessary.

Not done that - not sure what dialogue since there is no dialog for Sabine at that point since she isn't truly an officer - but perhaps for "normal" officers one may want to lock in a particular post for quest purposes.
For normal officers, it would be "Enc_Officer_dialog.c", but indeed that doesn't concern Sabine. no
 
I think that ties up what has been discussed for the release of 14 4

...err not quite...:(

Currently working through what happens if you play a female character (the difference is a bit chauvanistic in its conception since only then does Sabine complain about being married off etc - and ask to sail with you). However, leaving that aside, I noticed that if you appoint her to your shore/boarding officers you then get the change role button back - so a little more for me to do there.
 
Currently working through what happens if you play a female character (the difference is a bit chauvanistic in its conception since only then does Sabine complain about being married off etc - and ask to sail with you).
I got the impression that the Sabine Matton stuff was meant to play a MUCH bigger role than it ended up doing.
There was code for when Danielle Greene would be the main character, which was planned and partly implemented for the original game, but never finished.
Also interesting is this "ch.quest.love" attribute that I saw for her; maybe she was meant as a potential love interest for the player character?

However, leaving that aside, I noticed that if you appoint her to your shore/boarding officers you then get the change role button back - so a little more for me to do there.
You shouldn't be able to assign her to your shore party, should you? If you can, use the SetCharacterRemovable(ch, false); option.
See here for details and an example: Included in Build - Locking cargo of some quest characters | PiratesAhoy!
 
I got the impression that the Sabine Matton stuff was meant to play a MUCH bigger role than it ended up doing.
There was code for when Danielle Greene would be the main character, which was planned and partly implemented for the original game, but never finished.
Also interesting is this "ch.quest.love" attribute that I saw for her; maybe she was meant as a potential love interest for the player character?
Yes as you first said the whole thing looks unfinished -the Danielle code is what I turned on for all female lead characters instead - just to follow it through whilst deciding what bits are useful. There are also unused Blaze attribute for a male character and a few "..." dialogue lines too for tidying or developing. I would prefer to avoid a soap opera though !:love


You shouldn't be able to assign her to your shore party, should you? If you can, use the SetCharacterRemovable(ch, false); option.
Well probably not - as I originally thought too but then I relented slightly
She can also be put to join your shore party which isn't too good but I guess if you want a bit of cannon fodder there's no reason to not leave stupid as an option.
so now there is a good reason why not -- "to keep things consistent and simple" so I will add the SetCharacterRemovable(ch, false)
 
Last edited:
While I remember here is Arnaud Matton dialogue with Sabine removable set to false (and reverted to true as she is removed as a passenger(although probably not required)) as a pro tem for Build 14 4.
 

Attachments

  • Arnaud Matton_dialog.c
    37.6 KB · Views: 181
Finally the progress to a finished build 14 beta 4 spurred me to finish (or at least pro-tem improve) Sylvie Bondies dialogue, correct the direction to the store by the tavern keeper (Antoine Lebretton) and allow Sabine to be an appointed as an officer if/after you renege on her father's ransom deal and keep her (in Arnaud Matton dialogue) although her stats are weird with -2 level and -2 abilities - but not sure with the re-written skills and abilities allocation what to do about it - if anything - but that can wait until after beta 4 goes live.
 

Attachments

  • matton.7z
    19.4 KB · Views: 125
Back
Top