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!
Quick links for Beyond New Horizons
- Download latest version
- Wiki
- FAQ
- Report bugs here
- Bug Tracker on Github
Quick links for Maelstrom
- Download the latest version of Maelstrom
- Download the latest version of ERAS II
- Download the latest version of New Horizons on Maelstrom
Quick links for PotC: New Horizons
- Download latest version
- Wiki
- FAQ
- Report bugs here
Thanks to YOUR votes, GOG.com now sells:
- Sea Dogs
- Sea Dogs: Caribbean Tales
- Sea Dogs: City of Abandoned Ships
Vote now to add Pirates of the Caribbean to the list!
Quick links for AoP2: Gentlemen of Fortune 2
- Downloads and info
- ModDB Profile
- Forums Archive
A Pirate Podcast with Interviews
Music, Comedy and all things Pirate!
- Episode Guide - About - Subscribe -
- Twitter - Facebook - iTunes - Android -
- Youtube - Fill the Coffers -
... this is not entirely correct. An officer's reputation is shown on the "Character" screen, including when you examine the officer's stats to see if he's any use. So you'll know his reputation, and therefore his alignment, right away.Actually, alignment isn't actually shown anywhere and my personal preference would be to keep it that way.
Some characters may be inherently evil, some good and maybe even some who don't particularly care either way.
That is all part of their personality which is something you wouldn't know when you first hire them.
This is something that should become apparent during play afterwards.
Actually, alignment isn't actually shown anywhere and my personal preference would be to keep it that way.
Some characters may be inherently evil, some good and maybe even some who don't particularly care either way.
That is all part of their personality which is something you wouldn't know when you first hire them.
This is something that should become apparent during play afterwards.
I recall CoAS has something like that and of course that was based on PotC.This sounds similar to what was implemented in COAS by Seaward.
The dialogue problem was partly because multiple resignations allowed the reset of dialogue file but not the resignation so when it did take place on next "bad" console call it saved the wrong dialogue file to restore on rehire. so dealing with multiple resignations as perAt the moment the intended code to restore his dialogue file and previous current dialogue node does not work - so a bit to do there. The other snag I need to tackle is that multiple resignations don't work properly .
done that via a counter in the OfficersReaction call means only one resignation but the others loyality (sic) still goes zero so you can store up trouble if you continue to act against the alignment in question.Maybe set a limit to only one officer resigning at the same time?
You should be able to store the dialog.filename AND dialog.currentnode before the dialog starts so you can restore the character to that afterwards, right?
If I understand correctly, it works like this:Right ,that's what the current code does, BUT it resets them both to that saved within a dialogue so that when that dialogue exits the tempnode reset is called altering the pointer for the next time. The other sets of dialogue are within quests_common.c so aren't affected by this
characters[iPassenger].selfdialog.filename = characters[iPassenger].dialog.filename;
characters[iPassenger].selfdialog.currentnode = characters[iPassenger].dialog.currentnode;
characters[iPassenger].dialog.filename = "anacleto_dialog.c";
characters[iPassenger].dialog.currentnode = "remove";
NPChar.Dialog.CurrentNode = "hired_again";
npchar.dialog.filename = npchar.selfdialog.filename;
npchar.dialog.currentnode = npchar.selfdialog.currentnode;
case "hired_again_2":
dialog.snd = "Voice\ANAC\ANAC012";
dialog.text = DLG_TEXT[24];
link.l1 = DLG_TEXT[25];
link.l1.go = "exit";
pchar.add_officer = GetCharacterIndex(npchar.id); // This
AddDialogExitQuest("add_officer"); // And this
break;
case "add_officer":
NPChar = GetCharacter(sti(Pchar.add_officer));
AddPassenger(Pchar, NPChar, 0);
NPChar.loyality = 1;
NPChar.dialog.filename = NPChar.selfdialog.filename;
NPChar.dialog.currentnode = NPChar.selfdialog.currentnode;
break;
Would it work if you handle that OUTSIDE the dialog afterwards?
In anacleto_dialog.c:
Plus a new quest case in quests_common.c:Code:case "hired_again_2": dialog.snd = "Voice\ANAC\ANAC012"; dialog.text = DLG_TEXT[24]; link.l1 = DLG_TEXT[25]; link.l1.go = "exit"; pchar.add_officer = GetCharacterIndex(npchar.id); // This AddDialogExitQuest("add_officer"); // And this break;
I don't see why that shouldn't work.Code:case "add_officer": NPChar = GetCharacter(sti(Pchar.add_officer)); AddPassenger(Pchar, NPChar, 0); NPChar.loyality = 1; NPChar.dialog.filename = NPChar.selfdialog.filename; NPChar.dialog.currentnode = NPChar.selfdialog.currentnode; break;
case "hired_again_2":
dialog.snd = "Voice\ANAC\ANAC012";
dialog.text = DLG_TEXT[24];
link.l1 = DLG_TEXT[25];
link.l1.go = "exit";
AddPassenger(Pchar, npchar, 0);
npchar.loyality = 1;
npchar.dialog.filename = npchar.selfdialog.filename;
npchar.dialog.currentnode = npchar.selfdialog.currentnode;
Diag.TempNode = Diag.CurrentNode;
Indeed setting Diag.TempNode during a dialog is quite a common method of setting the next node when starting a new dialog with the character.what I did was add 1 line in "hired_again_2"
Code:case "hired_again_2": dialog.snd = "Voice\ANAC\ANAC012"; dialog.text = DLG_TEXT[24]; link.l1 = DLG_TEXT[25]; link.l1.go = "exit"; AddPassenger(Pchar, npchar, 0); npchar.loyality = 1; npchar.dialog.filename = npchar.selfdialog.filename; npchar.dialog.currentnode = npchar.selfdialog.currentnode; Diag.TempNode = Diag.CurrentNode;
which also seems to work by ensuring the reset on exit puts back what is required but may have a problem if any quest character dialogues use the NextDiag format
npchar.dialog.currentnode = npchar.selfdialog.currentnode;
That pretty much defeats the purpose of the specific officers. As I recall, the idea was supposed to be that you'd get one chance at a high quality officer, otherwise you take your chances with the random drinkers. If the random officers are going to be better than there's no reason to go for the specific one; just keep trying random officers until you get the right type.The random officers can be equally good or perhaps even more-so than the ones you specifically ask for.
I could even easily reduce the level for the specific ones, so that the random ones are usually better, just perhaps not what you were looking for.
On the contrary, prisoners and enemy captains should be the least loyal of the lot! Unless there's a really good reason for him to switch sides, the enemy captain is going to want to escape. An honourable enemy officer will either refuse to join you, or only pretend to join you so he can escape or capture your ship. A dishonourable enemy officer is more likely to switch sides and betray his country, though being dishonourable, he's just as likely to do it again later and betray you too...Either way, my personal preference would be to try and handle all sorts of officers as equally as possible.
Include prisoners and beaten enemy captains in that too.
As far as I'm concerned, both types can be equally good for all I care.That pretty much defeats the purpose of the specific officers. As I recall, the idea was supposed to be that you'd get one chance at a high quality officer, otherwise you take your chances with the random drinkers. If the random officers are going to be better than there's no reason to go for the specific one; just keep trying random officers until you get the right type.
LAi_Create_Officer(0, NPChar);
CreateOfficerType(OFFIC_TYPE_BOATSWAIN, sti(PChar.skill.Leadership));
My point is that those officers should be included in the system and handled similarly.On the contrary, prisoners and enemy captains should be the least loyal of the lot! Unless there's a really good reason for him to switch sides, the enemy captain is going to want to escape. An honourable enemy officer will either refuse to join you, or only pretend to join you so he can escape or capture your ship. A dishonourable enemy officer is more likely to switch sides and betray his country, though being dishonourable, he's just as likely to do it again later and betray you too...
One thing at a time, perhaps? Maybe that will make sense at some point.As for reaction based on alignment and you doing something the officer doesn't like: perhaps base the reaction on "Leadership". If your "Leadership" is higher than his then you have a better chance of winning him round and gradually converting his alignment to yours. If his is higher then you aren't as convincing and he's more likely to lose loyalty. Factor in the "Iron Will" perk as well. You really want a loyal first mate, partly because he's likely to have a high "Leadership" backed up by "Iron Will", and partly because you're probably getting your effective "Leadership" and "Iron Will" from him. So you're never going to convince him to change to your alignment, but if he's the same as you then he's a major asset in convincing everyone else.