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

Included in Build Adapt Escort Quests to be more Interesting

Pieter Boelen

Navigation Officer
Administrator
Storm Modder
Hearts of Oak Donator
I returned this to the Bug Tracker as a Feature Request.
This to remind us of our intention to potentially add an enemy ship at the destination island, with an accompanying monetary bonus to go with it.

That would make this more risky, but also a bit less boring and gives you the chance at a higher reward.

Extra suggestion by @Grey Roger is to look at increased advantages if you do more than one successful Escort Quest without failing them.
This can either be in money or in reputation or perhaps both.
 
Its seems that these missions are locked because you can't plunder or steal from these ships unless you outright sink them. Mission then updates as a failure. Also, it seems that no matter how much you attack them they are still willing to swap ships and exchange cargo with you. I find this situation quite strange and unrealistic. Perhaps something needs to be done about these missions? Maybe give the option to steal their ships and/or cargo with brute force? I tried swapping to their ships and it disallows me to shoot my own ship down. I swap back and I can shoot them just fine. The purpose of this post though is to make these missions more open to different situations. Escort or Plunder, not just say you failed the mission. Why would plundering and taking their ship be a failure in your part? Food for thought.
 
Those ships are IN your squadron. As far as the code is concerned, they are as much a part of your fleet as any actual companion of yours.

You're not supposed to be plundering them. And of course plundering someone under your protection would be a failure!
You didn't exactly do what you promised them. :shock
 
tumblr_lm691mDLfZ1qeijvdo1_500.gif
 
This might be something for the reputation discussion. This could be something to Give you a real bad rep..
 
If we can allow you to do it, them most definitely that would throw your reputation right down the drain.

But I'm not sure how to even do that at all since the ship is in your own fleet.
Only thing I can think of is to give the player a button to press that lets the companion ship know you intend to attack.
The companion Mutiny code would probably work for that.

Perhaps tie it to hoisting a pirate flag?
Normally companion ships would just match your own flag changes, but what if escort ships would refuse to hoist a pirate flag when you do?
 
Some relevant lines of code for that:

Code:
SetMutineer(characterFromID("Quest trader"), true);
ShipMutiny();
Just executing those two lines through PROGRAM\console.c may already have almost the desired effect.

However, the ShipMutiny function itself in PROGRAM\SEA_AI\AIShip.c would need to be slightly adapted
to understand such Escort Ship "mutinies" and that those must NEVER be scotched with some appropriate log messages.

Then there are two methods of hoisting a pirate flag.
1. In PROGRAM\INTERFACE\NationRelation.c:
Code:
    if(bSeaActive)
     {
       PChar.flagchanged = 1; // Screwface
       if(PChar.nation == PIRATE)
       {
         LogIt(TranslateString("","You have hoisted a Pirate flag! Argh!"));
         if (ENABLE_EXTRA_SOUNDS == 1) PlaySound("OBJECTS\abordage\abordage_wining.wav");
       }
     }
2. In PROGRAM\BATTLE_INTERFACE\BattleInterface.c:
Code:
  case "BI_HoistFlag":
     // PB: Update Changed Flag -->

     // store old playernation
     PChar.orgnation = PChar.nation;   // ccc dec 05

     // become an evil pirate
     PChar.flagchanged = 1; // Screwface
     for (cc = 0; cc < 4; cc++)
     {
       compIdx = GetCompanionIndex(PChar, cc);
       if(compIdx < 0) continue;
       if(GetRemovable(GetCharacter(compIdx)))
       {
         Characters[compIdx].nation = PIRATE;
         Characters[compIdx].Flags.DoRefresh = true;
       }
     }
     if (ENABLE_FLAGS == 1) {
       HoistFlag(PIRATE);
       SetRelationsForFlag(PIRATE);
     }
     RefreshBattleInterface(); // TIH helps to refresh minimap colors if relation changed Aug27'06
     RefreshFlags(); // KK
     LogIt(TranslateString("","You have hoisted a Pirate flag! Argh!"));
     if (ENABLE_EXTRA_SOUNDS == 1) PlaySound("OBJECTS\abordage\abordage_wining.wav");
     // PB: Update Changed Flag <--
   break;
Both would need to get a loop through all your companions and, if one of them is the "Quest Trader", should trigger that mutiny instead.
The BattleInterface.c example already contains such a loop and, in fact, that "GetRemovable" thing might be interesting too as I think Quest Trader are *not* removable,
while regular officers in command of a ship are.
 
With all the above, you might be able to do some testing yourself.
For example:

Open PROGRAM\console.c and find:
Code:
void ExecuteConsole()
{
   ref pchar = GetMainCharacter();
   ref ch;
   int i;
   int limit;
Below this, add:
Code:
SetMutineer(characterFromID("Quest trader"), true);
ShipMutiny();
Load your savegame and when you are in 3D Sailing Mode with your Escort Ship, press F12 and see what happens.
 
Else we could also add a dialog option to crew members on board?
So you reload to your deck and tell the crew to prepare to board the ship. Then when you get back to sea you can start attacking it.
 
We need to start somewhere and my suggestion above is a start.
We can always make it fancier and more complicated later if the need arises. :shrug

Why would you want to link it to talking to a crewmember instead of linking it to an interface option?
 
Created a separate Feature Request for the enemy ship and repeat profit.
 
Merged two topics together because they both involve the same quest
 
With all the above, you might be able to do some testing yourself.
For example:

Open PROGRAM\console.c and find:
Code:
void ExecuteConsole()
{
   ref pchar = GetMainCharacter();
   ref ch;
   int i;
   int limit;
Below this, add:
Code:
SetMutineer(characterFromID("Quest trader"), true);
ShipMutiny();
Load your savegame and when you are in 3D Sailing Mode with your Escort Ship, press F12 and see what happens.
@Rei, did you ever get around to testing this? Should take only a few minutes to try.
But if we know that works, we'll know if we can use adapt it the way you would like to see.
 
Back
Top