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

Fixed Jack Sparrow - Sao Feng -Crimson Blood Capture

Talisman

Smuggler
Storm Modder
When I go to fight the Crimson Blood I am flying a pirate Flag and it is neutral towards me. I have to change my flag to make it hostile.

When I try to capture it - I get to the Captain's Cabin - he threatens to kill me - I kill him and then nothing happens. J De Masse does not appear to talk to me & I cannot get the ransack screen. So I am stuck.

The Captain's cabin seems to be smaller than before - the last time I played this was Beta 2 ( i think - might even be Beta 1) and I am sure it was one of the bigger cabins.

I think this is the code in both_reactions.c

Code:
    case "fight_with_mefisto":
       bQuestDisableMapEnter = true;
       Island_SetReloadEnableGlobal("Turks", false);

       Group_CreateGroup("Mefisto");
       Group_AddCharacter("Mefisto", "Dark Captain");
       Group_SetGroupCommander("Mefisto", "Dark Captain");
       Group_SetPursuitGroup("Mefisto", PLAYER_GROUP);
       Group_SetTaskAttack("Mefisto", PLAYER_GROUP, true);
       Group_SetAddress("Mefisto", Characters[GetMainCharacterIndex()].location, "", "");
       Group_LockTask("Mefisto");

       SetCharacterRelationBoth(GetCharacterIndex("Dark Captain"),GetMainCharacterIndex(),RELATION_ENEMY);
       UpdateRelations();

       pchar.quest.blood_talk.win_condition.l1 = "location";
       pchar.quest.blood_talk.win_condition.l1.character = "Dark Captain";
       pchar.quest.blood_talk.win_condition.l1.location = pchar.location;
       pchar.quest.blood_talk.win_condition = "blood_talk";
       /*pchar.quest.Talk_on_Blood.win_condition.l1 = "NPC_Death";
       pchar.quest.Talk_on_Blood.win_condition.l1.character = "Dark Captain";
       pchar.quest.Talk_on_Blood.win_condition = "Talk_on_Blood";*/

       pchar.quest.resetdark.win_condition.l1 = "ExitFromLocation";
       pchar.quest.resetdark.win_condition.l1.location = "Turks";
       pchar.quest.resetdark.win_condition = "resetdark";

       pchar.quest.destroy_mefisto_complete.win_condition.l1 = "Ship_HP";
       pchar.quest.destroy_mefisto_complete.win_condition.l1.character = "Dark Captain";
       pchar.quest.destroy_mefisto_complete.win_condition.l1.quantity = 0;
       pchar.quest.destroy_mefisto_complete.win_condition.l1.operation = "=";
       pchar.quest.destroy_mefisto_complete.win_condition = "destroy_mefisto_complete";

       AddQuestRecord("Sao Feng", 37);
     break;

     case "destroy_mefisto_complete":
       if(AUTO_SKILL_SYSTEM)
       {
         AddPartyExpChar(pchar, "Leadership", 15000);
         AddPartyExpChar(pchar, "Sailing", 5000);
         AddPartyExpChar(pchar, "Sneak", 500);
       }
       else { AddPartyExp(pchar, 15000); }
       ChangeCharacterReputation(pchar, 10);
       bQuestDisableMapEnter = false
       Island_SetReloadEnableGlobal("Turks", true);
//       CloseQuestHeader("Sao Feng");

       if (GetAttribute(pchar, "Blood") == "0")
       {
         RestorePassengers("Blaze");
       }

// CTM -->
       pchar.quest.talk_to_girls_Muelle.win_condition.l1 = "location";
       pchar.quest.talk_to_girls_Muelle.win_condition.l1.location = "Muelle_Port";
       pchar.quest.talk_to_girls_Muelle.win_condition = "talk_to_girls_Muelle";
       
       pchar.quest.talk_to_girls_Muelle_shore.win_condition.l1 = "location";
       pchar.quest.talk_to_girls_Muelle_shore.win_condition.l1.location = "Muelle_Shore";
       pchar.quest.talk_to_girls_Muelle_shore.win_condition = "talk_to_girls_Muelle_shore";
// CTM <--
     break;

     case "blood_talk":
       LAi_SetWarriorType(CharacterFromID("Dark Captain"));
       LAi_warrior_DialogEnable(CharacterFromID("Dark Captain"), true)
     break;

     case "Talk_on_Blood":
       LAi_SetFightMode(PChar, false);

       if (LAi_IsDead(characterFromID("Jaoquin de masse")) || LAi_IsDead(characterFromID("Mergildo Hurtado")))
       {
         pchar.quest.Blood_Check.win_condition.l1 = "location";
         pchar.quest.Blood_Check.win_condition.l1.location = "Redmond_church";
         pchar.quest.Blood_Check.win_condition = "Blood_Check";
       }
       else
       {
         RemovePassenger(pchar, characterFromID("Jaoquin de masse"));
         RemoveCharacterCompanion(pchar, characterFromID("Jaoquin de masse"));
         RemoveOfficersIndex(pchar, GetCharacterIndex("Jaoquin de masse"));
         StorePassengers(pchar.id);

         pchar.blood = "0";

         LAi_QuestDelay("Talk_on_Blood2", 2.0);
       }
     break;

     case "Talk_on_Blood2":
       //SetCharacterToNearLocatorFromMe("Jaoquin de masse", 3);
       ChangeCharacterAddressGroup(characterFromID("Jaoquin de masse"), pchar.location, "reload", "reload1_back");
       //SetOfficersIndex(Pchar, 3, GetCharacterIndex("Jaoquin de mass"));
       AddPassenger(Pchar, characterFromID("Jaoquin de masse"), 0);

       LAi_SetActorType(characterFromID("Jaoquin de masse"));
       LAi_ActorDialog(characterFromID("Jaoquin de masse"), pchar, "", 100.0, 100.0);
       characters[GetCharacterIndex("Jaoquin de masse")].dialog.currentnode = "Which_ship";
     break;

     case "Blood_Check":
       if (GetAttribute(PChar,"ship.type") == "CrimsonBlood")   CrimsonBlood_ModifyShip(); // KK
     break;

     case "resetdark":
       LAi_SetHuberStayType(characterfromID("Dark Captain"));
     break;

No error log generated

Save is on beach before going to ship to fight Crimson Blood

:drunk
 

Attachments

  • compile.log
    23.1 KB · Views: 115
  • system.log
    3.1 KB · Views: 116
  • -=Player=- Turks. White Reefs. October 19th, 1740.7z
    559.7 KB · Views: 109
Can you enable VISIBLE_LOCATORS at the bottom of PROGRAM\InternalSettings.h and check if the "reload1_back" one is even there?
If the cabin was indeed changed, that could very well be the problem as apparently Mr. de Masse just doesn't get there:
Code:
Template <follow> -> path not found chr.id = Jaoquin De Masse

Try replacing this:
Code:
ChangeCharacterAddressGroup(characterFromID("Jaoquin de masse"), pchar.location, "reload", "reload1_back");
With this:
Code:
SetCharacterToNearLocatorFromMe("Jaoquin de masse", 3); // PB
That might convince him to show up in ANY cabin.
 
:ahoy

Cannot see any locator called "reload1_back" :mad:

Changed the line of code in
Code:
case "Talk_on_Blood2":
//SetCharacterToNearLocatorFromMe("Jaoquin de masse", 3);
ChangeCharacterAddressGroup(characterFromID("Jaoquin de masse"), pchar.location, "reload", "reload1_back");
//SetOfficersIndex(Pchar, 3, GetCharacterIndex("Jaoquin de mass"));
AddPassenger(Pchar, characterFromID("Jaoquin de masse"), 0);

by removing // from 1st line and adding them to 2nd -- as you said

Now Jaoquin de masse appears in Captains Cabin :dance

However the Crimson Blood Captain ( "Dark Captain" ) or Skyliner or whatever he is called does not fight in the cabin fight ( he has no weapon ) - just stands there & I cannot kill him. :duel:

Once when I got the Crimson Blood's crew reduced a lot - when I boarded he surrendered - was standing on the deck - said the quest dialog & fought - unfortunately this was before you fixed masse for me. :(

I found this in Jack Sparrow > Characters > init > TempQuest.c

Code:
ch.old.name = "Skyliner";
  ch.old.lastname = "";
  ch.name = TranslateString("","Skyliner");
  ch.lastname = "";
  ch.id  = "Dark Captain";
  ch.model = "Capstan_A2";
  ch.sex = "man";
  ch.sound_type = "pirate";
  LAi_NoRebirthEnable(ch);
  ch.Ship.AI.GroupName = "Ethilrede Claar";
  ch.Ship.AI.Task = "attack";
  ch.nation = PIRATE;
  GiveItem2Character(ch, "blade4");  // TALISMAN give weapon so he fights in cabin
  ch.equip.blade = "blade4";  // TALISMAN give weapon so he fights in cabin
  ch.location  = "none";
  ch.location.group = "";
  ch.location.locator = "";
  ch.Dialog.Filename = "Gyles Dubois_dialog.c";
  ch.Ship.Name = "Crimson Blood";
  ch.Ship.Type = "CrimsonBlood"; // Cylon13
  ch.Ship.Stopped = true;
  ch.Ship.EmblemedSails.normalTex = "sail_Petros_black_red.tga"; // PB
  ch.Ship.EmblemedSails.nationFileName = "sail_Petros_black_red.tga"; // PB
  ch.Flags.Pirate = 4; // PB: Red Pirate Flag
  ch.Flags.Pirate.texture = 0;
  ch.boardingmodels = "OUTLAWS";
  ch.nosurrender = -1;
  // KNB ch.Ship.Cannons.Type = CANNON_TYPE_CANNON_LBS24;
  ch.rank  = 1;
  ch.reputation = "1";
  ch.experience = "0";
  ch.skill.Leadership = "8";
  ch.skill.Fencing = "10";
  ch.skill.Sailing = "9";
  ch.skill.Accuracy = "8";
  ch.skill.Cannons = "9";
  ch.skill.Grappling = "3";
  ch.skill.Repair = "1";
  ch.skill.Defence = "4";
  ch.skill.Commerce = "1";
  ch.skill.Sneak = "8";
  ch.money = "10";
  LAi_SetHuberStayType(ch);
  LAi_SetLoginTime(ch, 0.0, 24.0);
  LAi_SetHP(ch, 80.0, 80.0);
  ch.greeting = "Gr_Gyles Dubois";
  ch.questchar = true;//MAXIMUS: identifier for captives
  AddGameCharacter(n, ch);

I removed the // from the lines marked ( as they were commented out) to see if this would give him weapons and make him fight in the cabin. His model does not show a sword, but when the fight starts ( after he says the quest dialog ) one appears ( this happened even before I made this change ) so I am not sure whether the change I made had any effect.

I have not managed to get him to fight in a cabin fight. For whenever there are other members of his crew in the cabin fighting he just stands there.


Last time round I managed to fight the captain ( on his own ) in the Cabin - killed him and J de Masse appeared.

De Masse dialog was :-

Code:
"Captain, I think we should commandeer this ship, I can take over command of it or the Pearl, what say you?",
"I shall think about it.",

Then I could not get the ransack screen so stuck again. :modding


Looking at Jaoquin de masse_dialog,c file -- it appears that the capture of the Crimson Blood ( and thus de Masse stealing it later ) has been disabled for ages, since my file is dated 06/11/2013 :facepalm


this code in the file
Code:
     case "Which_ship":
       dialog.text = DLG_TEXT[22];       /*18*/
       link.l1 = DLG_TEXT[23];         /*19*/
       link.l1.go = "exit_mefisto";
       //link.l2 = DLG_TEXT[20];
       //link.l2.go = "exit_pearl";
       //link.l3 = DLG_TEXT[21];
       //link.l3.go = "exit_sink";
     break;


Not sure where to go from here:shrug

On the subject of the Captain's Cabin I found some old screen captures dated 2009 - so they must be from when the quest was first written - they show a bigger cabin ( textures missing ) & Crimson Blood Captain just standing and not fighting in cabin fight.


So the last time I played this may well have been Beta 1 - perhaps Capt Maggee was never able to get this to work properly.

PS - The ship model used for the Crimson Blood seems to be one of the newer ones - much nicer than I remember - so perhaps the cabin changed with the change of ship.:sail


:rumgone
 

Attachments

  • error.log
    6.9 KB · Views: 116
  • compile.log
    22.4 KB · Views: 115
  • system.log
    3.2 KB · Views: 118
  • Crimson Blood Capt Cabin 1.JPG
    Crimson Blood Capt Cabin 1.JPG
    39.6 KB · Views: 122
  • Crimson Blood Capt Cabin 2.JPG
    Crimson Blood Capt Cabin 2.JPG
    39 KB · Views: 122
  • Cromson Blood Capt Cabin 3.JPG
    Cromson Blood Capt Cabin 3.JPG
    39.6 KB · Views: 133
Last edited:
That's a lot of issues! I'll see if I can convince it to work soon.

@Armada probably reassigned the cabin at some point.

Your change to the character init file wouldn't take effect unless you start a new game.
I'll look into it. I thought it worked and shouldn't be too far from actually doing so.
 
Your change to the character init file wouldn't take effect unless you start a new game.
I'll look into it. I thought it worked and shouldn't be too far from actually doing so.

Ah - I see :yes


I have found where he is given his weapons for the fight - it is in the Cabinfight_dialog.c file :yes

It appears that the code assumes that when player gets to the cabin there will be no crew there - just the captain - so that you talk then fight. If there are crew there then that appears to cause the dialog with the captain not to work.

:doff
 
It appears that the code assumes that when player gets to the cabin there will be no crew there - just the captain - so that you talk then fight. If there are crew there then that appears to cause the dialog with the captain not to work.
So you ARE supposed to get to talk to him, right? Sounds like he should then be FORCED to surrender when you get to the cabin.
That might be tricky, but I'll see what I can do....
 
I think I've got this working for the most part now.
Had to make quite some changes, including a change to the boarding logic to FORCE him to surrender so you actually get to the talk scene.
Skyliner now attacks as an actor and De Masse shows up with his dialog once he's dead.

Also noticed that he didn't have a portrait file, which turned out to be because he directly uses an "armored" character model.
I tried a different approach now by giving him the armor he needs to get his model.
That also makes him a bit tougher to kill.

Unfortunately that last part I managed to trigger through console, but NOT as part of the quest code. Very strange.
Some quick tests using Malcolm Hatcher as a test subject suggest that this SHOULD work correctly on a new game.
We'll find out when that time comes, I suppose....
 
What is needed: Play through the Jack Sparrow Sao Feng sidequest and see if it works properly.
When boarding the Crimson Blood, you should get a fight with her captain and then a talk with Mr. de Masse.
This should all work straight away without requiring the player to hoist another flag or so.
 
:aar

Played this through to Fighting the Crimson Blood.

Board the Crimson Blood - Capt ( skyliner) talks to me in cabin - then Fight - then De Masse talks to me ( see image ) all OK.

After De Masse talks to me I can not get the Ransack Screen - so can not make him captain. :(

Save is on Beach about to go to Sea and fight Crimson Blood.

No error log.


:duel:
 

Attachments

  • PotC JS De Masse Crim Blood.jpg
    PotC JS De Masse Crim Blood.jpg
    239.7 KB · Views: 140
  • compile.log
    14.3 KB · Views: 122
  • system.log
    3.8 KB · Views: 119
  • -=Player=- Turks. White Reefs. November 23rd, 1740.7z
    564 KB · Views: 113
Aaaaagh! It is the never ending story of bugs.
They're being found faster then I can fix them. :modding

You don't play on Realistic Game Mode, do you?
 
Thought so. That probably rules out once potential cause for the problem.
I saw an error related to the Assign Captain interface in the last zip that was posted.
 
I had the same problem. I hade to change flag no matter what flag i had... to make the crimson blood hostile. Then I could not capure it if I had Joaquin De Masse as an officer in my crew. I had him killed and then I could capture the ship! :p But I had to press F12 to capture it after defeating the captain in the cabin...
 
I had the same problem. I hade to change flag no matter what flag i had... to make the crimson blood hostile. Then I could not capure it if I had Joaquin De Masse as an officer in my crew. I had him killed and then I could capture the ship! :p But I had to press F12 to capture it after defeating the captain in the cabin...
Which modpack version were you using? If I recall, I ensures she WOULD be hostile a few weeks ago.
 
Back
Top