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

Feature Request Standard Storyline: Update Nathaniel's clothing as part of the main quest

Ketchup

Sailor
I noticed in the page where you can choose which story to play and your charecter I noticed that Nathaniel has several similar looking items of clothing and having tried this out in game they are different coloured reskins of his original clothing. There's one with sort of a aztec symbol on the back and I think, unless I am missing something, that on your way into the temple on the main quest, you could find this themed item. Similar to what I said, the different coloured reskins should, in my opinion, be able to be found whilst completing the main sea dogs quest. I.e. the red with blue trousers found at an English Island and the black one found at a pirate island. I don't know what others would think of this but I think it would suite the idea of searching for loot around the Caribbean more interesting. Anyway thus is something I would LIKE to see in the game, that is, if you still want suggestions. :cheers
 
@ColonelKetchup30: Pretty much all those outfits can be bought from the tailor shops throughout the Caribbean.
They're not linked to the storyline in any way, though I do like your idea and will happily add it to the mod if somebody does the required work.

Main question is: Who is going to make it happen?
This is actually something that you could do yourself really quite easily.

When you play through the storyline, every time any quest case is executed, it gets written to the compile.log file in your main game folder.
It is a line that looks like this:
Code:
Quest name [NAME OF QUES CASE HERE] FOUND in CommonQuestComplete
So whenever you play through a part where you think a new outfit would be appropriate, that tells you where you'll want to put it in the code.

The relevant files are:
PROGRAM\Storyline\standard\quests\quests_reaction.c
and
PROGRAM\Storyline\standard\quests\both_reaction.c

The code you need to add is a single line that looks like this:
Code:
GiveModel2Player("Jack",true);
Just replace "Jack" with the model ID that you want to give at that point.
With "true", that model gets auto-assigned to the player. Replace it with "false" if you just want it to be added to the player's model collection.

Something similar to this is done in both the Bartolomeu o Portugues and Jack Sparrow storylines,
where the main character starts looking more piratey as the story progresses.

I'm moving this to the "Build Brainstorming" forum because I think it belongs there. :doff
 
You could make a few new items and place them where you want. When any of these are picked up:
change outfit. If this works maybe we could skip buying them from the tailor so they get more quest unique.
 
You could make a few new items and place them where you want. When any of these are picked up:
change outfit. If this works maybe we could skip buying them from the tailor so they get more quest unique.
With the code I suggested, there aren't any items involved but it should work anyway.
Maybe add a "LogIt" message to indicate that you received a new outfit?

Disabling outfits at the tailor shops is easy enough; just set their nation to BROKEN. :cheeky
 
Items were just a suggestion to explain why you suddenly got a new outfit.
A little strange else...
 
Items were just a suggestion to explain why you suddenly got a new outfit.
A little strange else...
A little bit, yes. But that's what the Bartolomeu/Jack Sparrow/Assassin/Navy Promotions all do as well. ;)

Having outfits as items instead of as something independent (as it is now) is technically be a brand new feature.
Not actually a bad idea, but definitely a much bigger task.
 
While in general I'd prefer to keep "Tales of a Sea Hawk" as close as possible to the original, the idea of having outfits lying around as outfits for the player to find is a nice one. I'm particularly thinking of "Myst: Uru", more particularly its "Path of the Shell" expansion, which placed several outfits around the worlds. Some were available to be found right away, others only appeared after you'd completed some or all of the story.

So, different coloured versions of the "Corsair" outfit could remain as outfits to be bought at tailors of different nationalities, but maybe have some more unique outfits hidden away, e.g. in one of the jungle houses if there's one which isn't involved in a storyline or side quest. (Something in Clint Eastwood's house, perhaps.) If there's a "Nathaniel" outfit with an Aztec symbol, you could place it in the temple. There's a new locator in temple section "Labirint_3". Not far from the place where you drop the golden idol to open the way to the alcove, there's a room with an array of tiles on the wall, and as I wanted that to be the place where you find something important in "Ardent", I put a locator there. "Ardent" uses the Hispaniola temple but the same model is used for both the Cozumel/Khael Roa and Hispaniola temples, which means that locator ought to be available in the Cozumel/Khael Roa temple as well.

You could also perhaps arrange that if you attack a random town guard and actually survive the consequences, you get a uniform of the relevant nationality. "Ardent" does this on one occasion for a specific battle and then uses the uniform as a disguise; that disguise aspect needn't be used here, you just get the uniform by way of a sort of trophy. Where's the code which locks all the exits and sends reinforcements, then unlocks the exits if you win the battle?
 
Well it'a done in WoodesRogers...
:onya

But doing that for ALL outfits in the game is still going to be a large task, no?
Plus it would require a substantial increase of the "maximum number of items" limit.
So I don't know if it is truly worth it to make that a main feature in the mod.

If someone wants to do it, I'm not going to stop it.
But the current solution with GiveModel2Player is at least functional.
And if that is worked well into the story, it doesn't need to appear too weird, does it?

Where's the code which locks all the exits and sends reinforcements, then unlocks the exits if you win the battle?
PROGRAM\CCCfunctions.c ; I think it is called "SoldierReinforcements". Should be near the bottom of that file.

You could also perhaps arrange that if you attack a random town guard and actually survive the consequences, you get a uniform of the relevant nationality. "Ardent" does this on one occasion for a specific battle and then uses the uniform as a disguise; that disguise aspect needn't be used here, you just get the uniform by way of a sort of trophy.
The Jack Sparrow storyline has one sidequest where something similar happens with a Spanish Officer too. :yes
 
But doing that for ALL outfits in the game is still going to be a large task, no?
I thought it concerned only something like 4 - 5 of the Blaze's outfits and in the main quest?
 
I thought it concerned only something like 4 - 5 of the Blaze's outfits and in the main quest?
If you do it only for those, then yes indeed.

If @ColonelKetchup30 wants to add this feature himself, I do suggest keeping it as simple as possible.
But if you want to work together and make it more fancy, I'd say GO FOR IT! :cheers
 
:onya

But doing that for ALL outfits in the game is still going to be a large task, no?
Plus it would require a substantial increase of the "maximum number of items" limit.
If the idea is to turn all outfits into items, remember that it is possible to acquire a large number of outfits at once. Consider what will happen if you're anywhere near the maximum item limit when you buy the pirate collection...

For the purpose of having an outfit lying around which you can find and pick up, perhaps have a few generic items which look like folded clothes. If you pick one of these up, the item is removed from your inventory at once and you get the outfit via the usual "GiveModel2Player". The quest code can determine which outfit you pick up based on where you are and what you are doing at the time, e.g. picking up "folded_clothes1" from inside a certain house in St. Pierre while you're there for the "Lucas" quest gets you an outfit with a masked face because you've just stolen the kidnapper's "business" clothes. Picking up another "folded_clothes1" from somewhere else during another side quest gets you a different outfit relevant to that quest.
Where's the code which locks all the exits and sends reinforcements, then unlocks the exits if you win the battle?
PROGRAM\CCCfunctions.c ; I think it is called "SoldierReinforcements". Should be near the bottom of that file.
Defined thus:
Code:
void SoldierReinforcements(ref refCharacter)
{
   ref PChar = GetMainCharacter();

   if (sti(GetAttribute(refCharacter, "quest.guard_protection")) < 1)
   {
     if (GetAttribute(PChar  , "vcskip") == true)                                         return;
     if (GetAttribute(LoadedLocation, "vcskip") == true)                                         return;

     if(!HasSubStr(GetAttribute(refCharacter, "id"), "soldier"))                                     return;
     if(!HasSubStr(GetAttribute(refCharacter, "Dialog.Filename"), "Soldier_dialog.c"))                         return;

     if(!HasSubStr(GetAttribute(refCharacter, "location"), "port") && !HasSubStr(GetAttribute(refCharacter, "location"), "town"))   return;
   }

   int numGuards = 30 - LAi_numloginedcharacters;     // LDH - changed from 32 to TIH's original 30
   if (numGuards > 2 ) numGuards = 2;
   if (numGuards > 0 )
   {
     Logit(TranslateString("","The Garrison Commander sent immediate reinforcements..."));
     LAi_CreateFantomGroup("Soldiers", numGuards, LAI_GROUP_ENEMY, LAI_GROUP_NEUTRAL, GetCurrentLocationNation(), OFFIC_TYPE_GUARD, 0, true, "", "", "", "");

     if(!CheckAttribute(PChar, "locationLock"))
     {
       PChar.locationLock = true;
       StartQuestMovie(true, false, false);
     }
   }
}
(Inside spoiler tags because there's rather a lot of it.)
That seems to lock exits and send reinforcements. It doesn't seem to unlock them again after all the soldiers are dead. Where is the code for the end of the battle? That's when you'd have time to help yourself to one of the dead guards' uniforms...
 
For the purpose of having an outfit lying around which you can find and pick up, perhaps have a few generic items which look like folded clothes. If you pick one of these up, the item is removed from your inventory at once and you get the outfit via the usual "GiveModel2Player". The quest code can determine which outfit you pick up based on where you are and what you are doing at the time, e.g. picking up "folded_clothes1" from inside a certain house in St. Pierre while you're there for the "Lucas" quest gets you an outfit with a masked face because you've just stolen the kidnapper's "business" clothes. Picking up another "folded_clothes1" from somewhere else during another side quest gets you a different outfit relevant to that quest.
Definitely a nice idea!
You could also add an attribute to the player at various points, say pchar.pickupclothes = "Jack";
then when you pick up your proposed "folded_clothes1" item while having that attribute, then you are given the "Jack" model.

That seems to lock exits and send reinforcements. It doesn't seem to unlock them again after all the soldiers are dead. Where is the code for the end of the battle?
That is indeed somewhere else. I don't remember exactly where by the top of my head, but if you search the PROGRAM folder for "locationLock" then you should be able to find it.
 
I was thinking something more like how you would find the masterworks spyglass in the lighthouse, that sort of pickup based way of acquiring items. So you got a little box pop up saying "you have found x" and options to "take or leave". So as if it were a new item, but instead of it being added to you inventory and having to "equip" it as such, it just appears in the page where you choose your outfit. However your original reply to my idea was implying it was a similar system to other stories where it auto equips the clothes, but doesn't give you a direct option to choose what to wear.
 
perhaps have a few generic items which look like folded clothes.
That's what I thought too. See picture example.

I have a .gm model from VCO which is a folded outfit. Which can be retextured etc.
(If the clothes item not is supposed to be placed in a chest.)

If you place it in a chest it's very easy to make a check from the open chest command for auto euip
of the new clothes. I can show that.

I'm only trying to help a little here, really don't have time to do this mod and also it was
@ColonelKetchup30's idea.
 

Attachments

  • clothes item.jpg
    clothes item.jpg
    108.6 KB · Views: 155
So as if it were a new item, but instead of it being added to you inventory and having to "equip" it as such, it just appears in the page where you choose your outfit.
Can be done by removing the item the instant you get it.
The only effect remaining would be
GiveModel2Player("Jack",true); or GiveModel2Player("Jack",false);
as Pieter explained earlier.
 
I was thinking something more like how you would find the masterworks spyglass in the lighthouse, that sort of pickup based way of acquiring items. So you got a little box pop up saying "you have found x" and options to "take or leave". So as if it were a new item, but instead of it being added to you inventory and having to "equip" it as such, it just appears in the page where you choose your outfit. However your original reply to my idea was implying it was a similar system to other stories where it auto equips the clothes, but doesn't give you a direct option to choose what to wear.
There are several ways to do this, listed here in order of complexity:

1. As suggested by me in post #2: Quest case gets executed, you immediately get the new outfit applied to your player character
Advantage: Requires just a single line of code.
Disadvantage: The player gets no choice and, as @Jack Rackham rightly points out, looks a little strange.

2. As suggested by me in post #4: Quest case gets executed, you get the outfit added to your inventory along with an on-screen (LogIt) message,
but it does NOT get automatically applied to your player character. You can do that manually through the interface that already exists.
Advantage: Requires just two lines of code and the player does get the choice.
Disadvantage: May not be very obvious when it happens; an on-screen message is easily missed.

3. As @Jack Rackham suggested in post #3: Create separate "pickup" items for each outfit that you want to be available for pickup.
Advantage: You can have custom interface pictures and item descriptions for them.
Disadvantage: This is OK for a few models, but will become a pain when you want a lot of different ones.

4. As @Grey Roger suggested in post #12: Place a "generic outfit pickup item" that you can take or leave and that gets swapped out with the actual outfit if you decide to pick it up
What outfit you get could be determined by "current location", a quest-based character attribute or maybe some method I didn't think of yet.
Advantage: This solution should work for any and all character models in one go. Plus you don't get the item permanently in your inventory, so it doesn't matter if you get a lot of them.
Disadvantage: Interface picture would by necessity have to be a generic one. Using preprocessors, we may be able to correctly update the item description though.

All options are possible. #1 and #2 you could probably do yourself without anyone's help.
The other two require more work, so if that is what you want, hopefully somebody is willing to support you with it. :doff
 
3. As @Jack Rackham suggested in post #3: Create separate "pickup" items for each outfit that you want to be available for pickup.
Advantage: You can have custom interface pictures and item descriptions for them.
Disadvantage: This is OK for a few models, but will become a pain when you want a lot of different ones.
So having a package, similar to the image of the clothes that you can get from stores, that you store in your cargo hold would be more simple, yes? So to speak, you find the item and it comes up with a box, like I said, but to save time use the picture from the cargo hold, instead of having individual pictures painted, and textured and all that...
I will give it a go myself, see how I do with that
 
So having a package, similar to the image of the clothes that you can get from stores, that you store in your cargo hold would be more simple, yes? So to speak, you find the item and it comes up with a box, like I said, but to save time use the picture from the cargo hold, instead of having individual pictures painted, and textured and all that...
I will give it a go myself, see how I do with that
What do you mean by "cargo hold"? I don't think I follow you there.... :confused:

And what "clothes that you can get from stores" do you mean? The only "stores" that sell clothes are the tailor shops.
But those don't use interface pictures of any kind.
 
Back
Top