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

Ideas for the future!

I have an excuse. Long ago, "Star Trek II: The Wrath of Khan" was the first time I heard that line. Later I found out its true origin, but the association had already been made.

It's also not the only line that was copied from "Moby Dick". Recognise this?

"I'll chase him round Good Hope, and round the Horn, and round the Norway Maelstrom, and round perdition's flames before I give him up."
Khan really loved (will had loved? will have had loved?) Milton.
 
Next alteration: if a surrendered captain chooses to duel and isn't evil, he gets different dialog to explain it. Perhaps his crew gave up the fight without his permission. Or he's trying to save crew lives on both sides by making it a personal duel. Or he's explicitly tells you that he's not yielding a much larger ship without a fight.

Now that his reputation is being properly assigned by "Leveling.c" so enemy captains aren't always Neutral, he can use the original insulting messages if his reputation is on the evil side; he only needs the new lines if he's supposed to be honourable.
 
Next alteration: if a surrendered captain chooses to duel and isn't evil, he gets different dialog to explain it.
For example:
duel_dialog.jpg

That one, and a couple of alternatives, are already in the update now on line.

Work continues. If he does surrender and you talk to him about money, he always says "My family is hardly what you'd call rich. And I sincerely doubt my government will care about my capture." This doesn't make sense if you're in a port which is friendly to him and your next line is "We shall put your word to the test. We have arrived at <insert port name> and I expect to be paid in full!" So when there's enough new stuff for another upload, it's going to include this:
ransom_dialog.jpg

Also, at present it's impossible to release or ransom quest characters because of this line:
Code:
if(CheckAttribute(NPChar,"questchar") && NPChar.questchar==true) { bAllowHireJoin = false; bAllowRelease = false; }
The odd thing is, even if bAllowRelease is false, you always have the option to threaten the prisoner, who then offers you a much lower amount. So whatever that line is supposed to prevent for quest characters, it doesn't work, because the code for full ransom and the code for reduced money are almost identical:
Code:
       case "exit_money":
           DeleteAttribute(NPChar,"status");
           DeleteAttribute(NPChar,"ransom");
           AddMoneyToCharacter(PChar,sti(NPChar.Money));
           PlayStereoSound("INTERFACE\took_item.wav");

           switch(NPChar.chr_ai.type)// MAXIMUS: just a little fun in the game
           {
               case LAI_TYPE_STAY:
                   LAi_SetActorType(NPChar);
                   LAi_ActorRunToLocation(NPChar, "reload", LAi_FindRandomLocator("reload"), "None", "", "", "", -1);
                   RemovePassenger(PChar,NPChar);
                   DeleteAttribute(NPChar,"prisoned");
                   DeleteAttribute(NPChar,"standing");
                   NPChar.ClearUponExit = true; // PB: So this guy is cleared upon exit
               break;

               case LAI_TYPE_POOR:
                   LAi_SetActorType(NPChar);
                   LAi_ActorAnimation(NPChar, "Ground_StandUp", "Surrendered_Captain_Run", 3.5);
               break;
           }
           DialogExit();
       break;

       case "exit_ransom":
           DeleteAttribute(NPChar,"status");
           DeleteAttribute(NPChar,"ransom");
           AddMoneyToCharacter(PChar,prisonRansomCost);
           PlayStereoSound("INTERFACE\took_item.wav");

           switch(NPChar.chr_ai.type)// MAXIMUS: just a little fun in the game
           {
               case LAI_TYPE_STAY:
                   LAi_SetActorType(NPChar);
                   LAi_ActorRunToLocation(NPChar, "reload", LAi_FindRandomLocator("reload"), "None", "", "", "", -1);
                   RemovePassenger(PChar,NPChar);
                   DeleteAttribute(NPChar,"prisoned");
                   DeleteAttribute(NPChar,"standing");
                   NPChar.ClearUponExit = true; // PB: So this guy is cleared upon exit
               break;

               case LAI_TYPE_POOR:
                   LAi_SetActorType(NPChar);
                   LAi_ActorAnimation(NPChar, "Ground_StandUp", "Surrendered_Captain_Run", 3.5);
               break;
           }
           DialogExit();
       break;
Case "exit_money" is the reduced amount, case "exit_ransom" is the full amount. Literally the only difference is the amount of money you get.

So now I'm putting this into "Prisoned_dialog.c":
Code:
   if(CheckAttribute(NPChar,"location.norebirth") && NPChar.location.norebirth==1) { bAllowHireJoin = true}           // No longer blockfrom ransom/release with bAllowRelease = false
   if(CheckAttribute(NPChar,"questchar") && NPChar.questchar==true) { bAllowHireJoin = false;}                   // No longer block questchar from ransom/release with bAllowRelease = false
   if(CheckAttribute(NPChar,"canhire") && sti(NPChar.canhire) == true && FindFreeRandomOfficer()!=-1) bAllowHireJoin = true;   // "canhire" attribute overrides block on hiring questchar, but only if there is a slot for him to become an officer
   if(sti(GetStorylineVar(FindCurrentStoryline(), "NO_CREW_OR_OFFICERS")) == 1 || CheckAttribute(PChar, "isnotcaptain")) { bAllowHireJoin = false; }
   if(CheckAttribute(NPChar,"canrelease") && sti(NPChar.canrelease) == false) bAllowRelease = false;               // "canrelease" attribute can be set false to explicitly block ransom/release
bAllowRelease is no longer zeroed for special characters, at least not normally. New attributes "canhire" and "canrelease" can be set in a character's definition to override normal behaviour. So if you want a quest character, e.g. a captured officer, to be recruitable, put 'ch.canhire = true;' in his definition. Or, if for some reason you really don't want to be able to ransom him, add 'ch.canrelease = false;'.
 
That's really good stuff again, @Grey Roger! :bow

The odd thing is, even if bAllowRelease is false, you always have the option to threaten the prisoner, who then offers you a much lower amount. So whatever that line is supposed to prevent for quest characters, it doesn't work
I think the only real reason is to prevent mixups with character IDs, the arrays getting full and quest characters "disappearing" without being killed and therefore not triggering their quest to continue.
This might actually still be a left-over from before captains were ALWAYS killed and then cloned before continuing.
Or.... maybe quest characters are NOT going through the "clone code"?

If I recall, it was @Maximus who originally wrote this code. He has been around a bit lately, so you could try to send him a PM if you want.
Maybe he still remembers what this was about...
 
I think the only real reason is to prevent mixups with character IDs, the arrays getting full and quest characters "disappearing" without being killed and therefore not triggering their quest to continue.
This might actually still be a left-over from before captains were ALWAYS killed and then cloned before continuing.
Or.... maybe quest characters are NOT going through the "clone code"?
Quest characters certainly do go through the clone code - remember the problem with not being able to hand Silehard over to the new governor because real Silehard never got the "prisoned" attribute?

The point is, whatever the code to block ransom/release was supposed to achieve, it failed because you can always demand the lesser amount even from quest characters. Either demanding the reduced money from the prisoner has to be blocked as well, or the block on ransom may as well be lifted, because both forms of release us exactly the same code. If you block the ability to demand the lesser amount of money then the only way you'll get rid of these characters is if they randomly jump overboard - or if you kill them, with all the consequences that follow...
 
Quest characters certainly do go through the clone code - remember the problem with not being able to hand Silehard over to the new governor because real Silehard never got the "prisoned" attribute?
I do remember something, but not all the details. Unfortunately I haven't been able to give much attention to PotC now for a long time.
So I'm really glad that when I ask stupid questions, at least you know some clever answers! :cheers

The point is, whatever the code to block ransom/release was supposed to achieve, it failed because you can always demand the lesser amount even from quest characters. Either demanding the reduced money from the prisoner has to be blocked as well, or the block on ransom may as well be lifted, because both forms of release us exactly the same code. If you block the ability to demand the lesser amount of money then the only way you'll get rid of these characters is if they randomly jump overboard - or if you kill them, with all the consequences that follow...
Indeed I fully agree with you that it makes no sense as it is.
Easiest to do is to just change it to what you think it should be. If anything unforeseen ends up happening, somebody will find out eventually. :cheeky
 
A long time ago, possibly in Build 13, if Waulter Tomlison (Silehard's captain and the leader of the squadron trying to retake Bridgetown) surrendered, you could hire him as an officer. You can't do that now because quest characters can't be hired.

Perhaps give him the new "canhire = true" attribute so that he can become your officer? I always found it highly amusing to turn Silehard's right-hand man against him. xD Maybe, as he's been serving Silehard for a while, he knows what Silehard is up to and has finally come to the same conclusion as you did earlier. Or maybe he just wants to switch to the winning side - Britain has declared Silehard a traitor and is on his way out, you're evidently on your way up, so you're the better employer. In the former case, give him "good" alignment and a decent loyalty; in the latter case, give him "bad" alignment and minimal loyalty so he'll defect again given the slightest excuse.
 
A long time ago, possibly in Build 13, if Waulter Tomlison (Silehard's captain and the leader of the squadron trying to retake Bridgetown) surrendered, you could hire him as an officer. You can't do that now because quest characters can't be hired.
I think that was implemented because that was a problem for SOME quest characters.
But if there are any where it isn't a problem, then I see no issue with making an exception for them.
In fact, would he still need the "questch" attribute at all then?
 
The "questchar" attribute serves a far more important purpose than setting his ability to be hired or ransomed. It protects him from the levelling process. (I've had to add it to a few characters who didn't have it, e.g. Amerigo Vieira, supposedly the finest swordsman in the Caribbean unless levelling sets him down to average "Fencing" skill. :))
 
The "questchar" attribute serves a far more important purpose than setting his ability to be hired or ransomed. It protects him from the levelling process. (I've had to add it to a few characters who didn't have it, e.g. Amerigo Vieira, supposedly the finest swordsman in the Caribbean unless levelling sets him down to average "Fencing" skill. :))
Ah; true, that!

I could imagine that for some quest characters, it wouldn't matter what skills they get.
But if the story says they're good at a certain thing, it kind-of helps with the immersion if that is actually true! :rofl
 
A problem with hired ex-prisoners showed up when I was replaying "Ardent". I'd given the "canhire = true" attribute to the captains of the convoy ships. One of them surrendered, I made him an officer and put him in command of a prize ship, and all was fine until I hoisted a French flag to get into St. Pierre for some sidequest fun. The captain mutinied.

This is because part of the procedure to start the convoy battle is to give all the captains the "CompanionEnemyEnable" attribute. That's the one which makes them mutiny if you hoist a hostile flag. The prisoner who became a captain still had the attribute, which is why he mutinied.

One solution was to cancel the attribute right after the battle starts. But it occurred to me that Ardent isn't the only one with this problem. If you take an escort mission and subsequently hoist a hostile flag without previously warning the captain, he mutinies, allowing you to double-cross the captain and pirate his ship. If he then surrenders and you hire him, either at once or after taking him prisoner, he'll keep the "CompanionEnemyEnable" attribute and presumably mutiny if you later hoist a hostile flag while he's in command of a ship.

So I've edited both 'TIH_OfficerHiredProcess' and 'TIH_PrisonerHiredAsOfficerProcess' in "PROGRAM\Dialog_func.c". Both of these already delete a lot of attributes, probably for similar reasons, so I simply added 'if (CheckAttribute(RefChar, "CompanionEnemyEnable")) DeleteAttribute(RefChar, "CompanionEnemyEnable");' to both functions. Then I re-ran the convoy battle, got lucky as both pinnace captains surrendered, hired one directly from the quarterdeck, took the second one prisoner and hired him from the hold. Then I put them back in charge of their ships, raised a French flag, and neither of them objected.
 
Wow, that's a good catch, @Grey Roger! I'm surprised nobody else caught this one yet...
Maybe the other players are just too respectable to cause their convoy companions to get into a panic?
 
Incidentally, in view of some of the earlier discussion in this thread, I couldn't resist dropping in a little Easter egg. It only triggers if you're at least level 15 and an enemy captain still refuses to surrender, and even then only a 1 in 20 chance. For a while I was wondering if I'd made it too restrictive as I do a lot of boarding but never saw it. Eventually, though, it happened.

Once seen, it can never be unseen, so look away now if you don't want the surprise spoiled:
moby_quote.jpg
 
Incidentally, in view of some of the earlier discussion in this thread, I couldn't resist dropping in a little Easter egg. It only triggers if you're at least level 15 and an enemy captain still refuses to surrender, and even then only a 1 in 20 chance. For a while I was wondering if I'd made it too restrictive as I do a lot of boarding but never saw it. Eventually, though, it happened.
Nice one!! :rofl

I really do love having plenty of Easter eggs in the mod. :cheeky
 
Hey all,

Not sure if it's been suggested before (or how it would be possible), but I'd love to see an ability to "Lower Away Boats" to pick up flotsam and survivors after a battle.

As always, love all the work you've done and continue to do.
 
I vaguely recall some thinking about that from maybe ten years ago.
Don't think it's feasible, really.
Certainly not easily.
 
Here's a few of my thoughts
The one about historical pitates is a good one. I remeber while playing assassins cread Black flag. Prob the best there is, each corner of the map had a challenging boss. I'm sure yous can find them online. Maybe instead of a harcoded location, there is a chance to obtain some sort of route map, or overhearing from a "paid" tavern owner about a legendary captain or pirate roaming around the coast of say, Jamaica. You could accept it like a quest, or say, it's bogus info. If you accept it, the ship will appear near the island and either be random encounter or just be in the area and either the ship only has a radius it can move or the forts don't attack them. If you miss the deadline another random tavern owner might give you a different location or different ship info. Also an idea which no other game has, a target practice ship. Maybe talking to the shipyard owner you could test your aim and weapons on a broken up ship. It may be sink able, but you'll us your own ammo or maybe its infin ammo. Just like in the first potc when you take command of the rank 2 with the fresnch officer, , you can test different classes of ship and then when you fast travel or move away, you will be tped to the shipyard again, where your ship will be where you left or at the port Dock. obviously you won't get points for skill or loot. But it's a good idea, maybe as part of the tutorial. You could also board it, and fight again straw scarecrows that are static and don't fight back. The boarding padlock will always be open, so you can go to the next deck just like real battles, once done you just leave the shop your on and return to the shooting gallery. Sorry. Its alot of 4am thoughts.....
 
To the comment saying about realistic boarding ect. Maybe instead of a static loading screen, an animation could be played showing the grapple being thrown across and people jumping to the ship and the boards being dropped and pistols going off, enough to detract the eye so you don't notice irregularities, in these you could show injured ect and maybe the captain pulling out his sword, that will then load onto the actual boarding. And boarding won't start till the cutsceen ends, this could be timed for about 10 seconds, to give to game time to load it properly. It would be hard and would need animation or a proffectional to do it properly but there might be stock videos like that in the original sea dogs or one of the more recent.
 
Back
Top