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

Updates

And if at some point he does need fists, "bladeX4" can be given and equipped again...
Yup. :onya

No, which has caused problems in the "Assassin" storyline in the past. There's a scene where Bartolomeu has just been scouting a fort for the Aztec throne and you have to help him fight some guards. Bartolomeu didn't have a weapon, so he was punching guards, and if he stunned one then you couldn't proceed to the next scene. This was solved by giving Bartolomeu his special sword. I don't know why he didn't need "bladeX4" to be removed, but Elting does need it removed in the "Bartolomeu" storyline. That's just how it works...
PROGRAM\QUESTS\quests_check.c contains this bit:
Code:
    case "NPC_Death":
        return CharacterIsDead(refCharacter);
    break;
You could consider changing that to:
Code:
    case "NPC_Death":
        return CharacterIsDead(refCharacter) || CheckAttribute(refCharacter, "stuntime");
    break;
I've got no clue if that might have unintended side-effects, so I'd certainly recommend testing it.
It should also be possible to only enable that check for specific stun-prone quest scenes and have only the regular check in effect most of the time.
 
I'm not sure that would do any good because the quest check isn't "NPC_Death". 'LAi_group_SetCheck' does this:
Code:
   ref PChar = GetMainCharacter();
   PChar.quest.(quest).win_condition.l1 = "Group_Death";
   PChar.quest.(quest).win_condition.l1.group = groupName;
   PChar.quest.(quest).win_condition = quest;
So the quest check is "Group_Death":
Code:
    case "Group_Death":
       ret = false;
       if (CheckAttribute(condition, "group")) {
           sTmpString = condition.group;
           if (CheckAttribute(refCharacter, "GroupDeath." + sTmpString)) {
               makearef(arTmpARef, refCharacter.GroupDeath);
               ret = sti(arTmpARef.(sTmpString)) == true;
               if (ret) {
                   DeleteAttribute(arTmpARef, sTmpString);
                   if (GetAttributesNum(arTmpARef) == 0) DeleteAttribute(refCharacter, "GroupDeath");
               }
           }
       }
       return ret;
   break;
But I am sure that changing "NPC_Death" to be true if the character is stunned is going to break things. Visiting Clint Eastwood while Artois Voysey is in your party will probably result in Artois getting smacked in the face, which will break his quest. And he's not the only quest officer whose death has bad consequences...
 
EDIT: By the way, thanks a lot @Grey Roger to improve my storylines :onya
Improving the storylines is your job. I just try to help make them work the way they're supposed to. ;)

After completing a storyline which ends with you getting a nice new ship, I sometimes do a bit of freeplay to use the new ship. And so, while taking the New Santiago out for a cruise, I met a Spanish large patrol. Among the ships included was the one now seen behind the battle galleon:
bart_prize_ship.jpg
That's my new fast war galleon. It's set to occasionally appear in random encounters and this time I got lucky. Additionally, by the time the battle was over, I had two more San Martin class galleons. Those things are slow and cumbersome, even the refitted one, so after going to Martinique to meet a friend, I returned to Sao Jorge, sold the basic galleons, berthed the special one, and renamed the fast galleon.
bart_ships.jpg bart_roxanne_ships.jpg
(I'd have given Roxanne the fast galleon and continued sailing in the special battle galleon, but she won't leave her pinnace. She's welcome to it, and I get to sail the fast galleon. :beer:)
 
Next: towards the end of the story, I noticed a lot of "Bad Rope" messages in "system.log", too consistent to be random ships. A quick FreePlay using a "SP_BattleGalleon" confirmed it - after saving game while out on the high sea, away from land, so my ship is the only one there, I quit the game, started again, loaded the savegame, and still get the same "Bad Rope" messages. That savegame has now become my test for changes to the rigging. There are a lot of redundant rope locators on the spars which don't go anywhere. Looking at some other ships, the ropes which do show up on the spars are enough, though some ships show two pairs of lifts per spar, so I'm adding extra rope locators to the mast files to pair off some of the unmatched locators. Others are being deleted. And then I'm re-using the numbers to add more rope locators to the masts and the main hull because "SP_BattleGalleon" has no backstays. Once I've finished, I'll copy all the mast and spar models to "PiratBattleGalleon" so Bartolomeu's ship gets the same fixes.

Incidentally, why is "SP_BattleGalleon" given both the 'refShip.Type.Trade' and 'refShip.Type.War' attributes? That makes the most powerful ship in the early Spanish navy "versatile", able to appear as either merchant or warship. Shouldn't 'refShip.Type.Trade' be false? (The same is true of "PiratBattleGalleon", but the attributes don't matter because that ship can't appear in random encounters.)
 
Next: towards the end of the story, I noticed a lot of "Bad Rope" messages in "system.log", too consistent to be random ships. A quick FreePlay using a "SP_BattleGalleon" confirmed it - after saving game while out on the high sea, away from land, so my ship is the only one there, I quit the game, started again, loaded the savegame, and still get the same "Bad Rope" messages. That savegame has now become my test for changes to the rigging. There are a lot of redundant rope locators on the spars which don't go anywhere. Looking at some other ships, the ropes which do show up on the spars are enough, though some ships show two pairs of lifts per spar, so I'm adding extra rope locators to the mast files to pair off some of the unmatched locators. Others are being deleted. And then I'm re-using the numbers to add more rope locators to the masts and the main hull because "SP_BattleGalleon" has no backstays. Once I've finished, I'll copy all the mast and spar models to "PiratBattleGalleon" so Bartolomeu's ship gets the same fixes.
Sounds like a lot of good, but hard work! I appreciate you doing it. :onya

Incidentally, why is "SP_BattleGalleon" given both the 'refShip.Type.Trade' and 'refShip.Type.War' attributes? That makes the most powerful ship in the early Spanish navy "versatile", able to appear as either merchant or warship. Shouldn't 'refShip.Type.Trade' be false? (The same is true of "PiratBattleGalleon", but the attributes don't matter because that ship can't appear in random encounters.)
That sounds like a very valid question.
As far as I'm concerned, you can go ahead and change it.
 
"SP_BattleGalleon" is now done. As well as adding the backstays, I've lengthened the pennants.
sanmartin1.jpg sanmartin3.jpg

The procedure involved using TOOL's "Write to File" and "Read from File" to export and import locators as text files. So I loaded "PiratBattleGalleon.gm", read in the locator text file from the updated "SP_BattleGalleon", and saved it back. The masts are exactly the same on both ships so all I had to do was copy all the revised "mast" and "rey" models from "SP_BattleGalleon" into "PiratBattleGalleon" and rename them to match. So Bartolomeu's special version is getting the same update.
And no more "Bad Rope" messages from either ship! :bounce

There are probably other ships needing similar treatment but I'm not going through the whole lot looking for them. This one got priority partly because it's supposed to be a historical model but mainly because it's a storyline ship.
 
There are probably other ships needing similar treatment but I'm not going through the whole lot looking for them.
There used to be a lot, but @Hylie Pistof already tackled a great many of them.
They don't do too much harm, so no high priority required.
But it's definitely awesome when more are fixed up! :cheers
 
COAS has a better system as it tells you which ship has the bad ropes and then lists them. Otherwise it is as Grey Roger did it by taking one ship at a time out and then fumigating it. I got most of them but not all. I'm surprised this one had any bad ropes as she was one of my favorites at one time. Only the high camera bug made me move on.
 
Fixing "SP_BattleGalleon" and "PiratBattleGalleon" reminded me that "HMS_Bellona" also showed some "Bad Rope" errors last time I played "Hornblower" , so I had a look at that. Like "SP_BattleGalleon", it had some surplus locators on the spars. For comparison, I looked at "RN_Superbe", which has exactly the opposite problem - no "Bad Rope", and not enough ropes on the spars, so it's missing most of its braces.

That got me looking at "HMS_Greyhound", which in turn got me looking at the "Postillionen" types for comparison. Some more "Bad Ropes" needed to be fixed on the "Greyhounds" in general and "PiratPostillionen" specifically. All "Postillionen" types were missing the lifts for one of the mizzen spars. And "FR_Postillionen" was missing a stay running between the main and mizzen masts, without which the stay sail appeared to be hanging in midair!

Fixed versions of all of these are going into the next update...
 
Fixing "SP_BattleGalleon" and "PiratBattleGalleon" reminded me that "HMS_Bellona" also showed some "Bad Rope" errors last time I played "Hornblower" ,...... For comparison, I looked at "RN_Superbe", which has exactly the opposite problem - no "Bad Rope", and not enough ropes on the spars, so it's missing most of its braces.

That got me looking at "HMS_Greyhound", which in turn got me looking at the "Postillionen" types for comparison. Some more "Bad Ropes" needed to be fixed on the "Greyhounds" in general and "PiratPostillionen" specifically. All "Postillionen" types were missing the lifts for one of the mizzen spars. And "FR_Postillionen" was missing a stay running between the main and mizzen masts, without which the stay sail appeared to be hanging in midair!

Fixed versions of all of these are going into the next update...

Some of that may arise from work I did about three years ago to remove much of the bad rope logs. I only hacked out the rope locators giving bad rope logs without attempting to fix them on the models.

This is the start of the relevant thread

Fix in Progress - Repairing Bad Ropes

Anyway the original GM files with bad ropes and therefore extra locators and text file of the errors got put on the FTP at the time. I don't know if they are still available (I long ago lost any login) but have sent you the PM link to the relevant behind the scenes stuff too in case the old models are of use for any others that get your interest.
 
Thanks, but I don't particularly want to go back and re-do the fine work which you and @Hylie Pistof have already done. If I happen to spot "Bad Rope" messages during the course of gameplay, especially if the ship is of significance to a storyline, then I'll try to fix it. Others can wait until I or someone else notices them and wants to have a go.

One of the articles near the end of that thread mentions "SP_BattleGalleon". Its presence in the "Bartolomeu" storyline is what got me into the current round of rope-fixing, and it's now done. Further work on ropes is probably best posted in that "Repairing Bad Ropes" thread. ;)
 
Some of that may arise from work I did about three years ago to remove much of the bad rope logs. I only hacked out the rope locators giving bad rope logs without attempting to fix them on the models.
"No ropes" is better than "no ropes AND error messages", so I still very much appreciate that work you did! :cheers
 
I've recently enjoyed playing this story again. As usual, I was impressed by the fine work.

There were a couple of minor issues which also apply to the "Assassin" story as they happen where the plots come together, when Johan kidnaps Roxanne, Bartolomeu goes to rescue her, and Johan meets him in the fort prison. Snag 1 is Guibert Daudet, who has the wrong face portrait:
daudet_wrong_face.jpg
This is because model "Guibert_Daudet" has no entry in "initModels.c". I've added one and created face portraits for him. @Bartolomeu o Portugues: do you want this? If so, do you want him to be playable in FreePlay?

Snag 2 is Roxanne. In both storylines, if you choose for Johan and Bartolomeu to be friends, Roxanne equips a piranha. But she does not have one, the equip fails, and she uses her fists in the fight with Enrique Pedilla's soldiers. If she hits one, she stuns him, and a stunned enemy does not count for ending the battle, so the quest breaks. I've added a line in both storylines to give Roxanne the piranha, then replayed the scene, and she now equips and uses the sword.
 

Attachments

  • Bartolomeu.zip
    270.9 KB · Views: 248
I've recently enjoyed playing this story again. As usual, I was impressed by the fine work.

There were a couple of minor issues which also apply to the "Assassin" story as they happen where the plots come together, when Johan kidnaps Roxanne, Bartolomeu goes to rescue her, and Johan meets him in the fort prison. Snag 1 is Guibert Daudet, who has the wrong face portrait:
View attachment 36832
This is because model "Guibert_Daudet" has no entry in "initModels.c". I've added one and created face portraits for him. @Bartolomeu o Portugues: do you want this? If so, do you want him to be playable in FreePlay?

Snag 2 is Roxanne. In both storylines, if you choose for Johan and Bartolomeu to be friends, Roxanne equips a piranha. But she does not have one, the equip fails, and she uses her fists in the fight with Enrique Pedilla's soldiers. If she hits one, she stuns him, and a stunned enemy does not count for ending the battle, so the quest breaks. I've added a line in both storylines to give Roxanne the piranha, then replayed the scene, and she now equips and uses the sword.
Thanks for these changes :)
 
Back
Top