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

The Smart Start Mod Version 71: New starting gear for Charles! (CHEAT CODES TOO!) (dlc compatible)

Yes, you just change the code and spawn another two, the code wont interfere with already spawned officers.

In the Code only a couple of lines matter:
  1. sld = GetCharacter(NPC_GenerateCharacter("RandomBadass", "off_fra_1", "man", "man", 1, FRANCE, -1, true, "soldier")); //Replace the code in bold with the desired character line example sld = GetCharacter(NPC_GenerateCharacter("Longway", "Longway", "man", "man", 1, HOLLAND, -1, true, "soldier")); //The number 1 before nation isnt bold, because thats rank, you dont need to copy that exactly, its set later in the code anyway (sld.rank = 1)
  2. SetRandomNameToCharacter(sld); //We dont want random name, replace with two lines:
    sld.name = "Longway";
    sld.lastname = ""; //Longway doesnt have a last name, those who do will have it between quotas
  3. sld.greeting = "patrol"; //Replace with the specified greeting, in the case of Longway: sld.greeting = "Longway"; //if a greeting is not specified in the original code of a character youre tryng to spawn, leave it patrol or delete the line
  4. SetSPECIAL(sld, 10, 10, 10, 10, 10, 10, 10); //if there isnt a setspecial line originally in the code, character is going to have PIRATES points generated completely randomly, just add this line below the setskill lines in the code
Thats it. The rest you can tweak however you want. Also you dont need to shutdown the game or close notepad while modifying the code.
 
Nelson, kind of a heads up but you might want to be careful about setting the immortal flag on some of those unique characters till you finish the quest chain they come from. I think you should be fine spawning them in via the priest guy but if you change the stuff in their usual way to be created you could end up fighting against them with their immortal flag turned on.

Something else that might help is adding this to your NPCs as well...

SetSPECIAL(sld, 10, 10, 10, 10, 10, 10, 10);

One thing I did in my game was I gave Charles and all the officers the Colt Revolver and a katana. Both weapons are unique so I could tweak the weights of the items and the ammo. I also upped the damage of both. I just wish there was something I could do about the boarding AI.... That's driving me insane with them blocking my path to get behind the bad guys so I end up being stuck behind everyone and once they kill off the other side they all run over and I get to watch the corpses vanish before I can loot...
 
Successfully tested with Henry Morgan. YES.
Do you know any female pirate character in the game beside Danielle, Jessika, Mary and Helen?
If I simply use the models instead of their original codes, will the quest involve them replace the officers in my service with them? (I think maybe not but)
I don't see Danielle and Jessika mode.
 
Mika, the problem with AI has been around since the first Pirate of the Caribbean. My officer (boarders) and npc sailor always manage to take a pistol shot from me or block my path. It's especially frustrating with the Boarders since they block my path in narrow place. And if you have three of them with you, you would have to be very lucky if them are not blocking the only exist. I can't push them because all three of them cramped in the narrow hallway and have to reload.

I read the guide on steam so I know exactly whom I will have to fight. Of all the special officer, you only have to fight Clod Durand, so I set his stats high but no immortality (plan to have him as a bosun).
 
Didn't know about Clod being one of the special officers. Where do you run into him? I know during the dutch gambit when I was doing the Holland chain Longway just magically showed up right when I had to fight Hercule. I just assumed that the other 2 chains you'd end up getting 1 of the other 2 and having to fight another. I could be wrong.
 
Nelson, I did some digging around in files I found Danielle Hawk. Was that the one you were looking for? If not I can keep looking.
 
Yeah, Danielle and Jessika are in PROGRAM\dialogs\russian\Quest\Saga folder, it seem you will have them as temporary officer in the pirate sage
 
I saw the Jessika one too but wasn't sure if that was the one cause the section of code has it spawning a male not a female. There was other females, some had stats some didn't.
 
I didn't see the section of code that spawn her as female in Jessika.c and reaction_function.c
Anyway, I saw this lines of code
sld = GetCharacter(NPC_GenerateCharacter("Jessika", "Ghost_1", "woman", "jess", 1, PIRATE, -1, false, "quest"));
sld.name = "Jessica";
sld.lastname = "Rose";
sld.greeting = "jessika_0";
Perhap these are enough for generation officer? Still looking for Danielle.
 
case "help_bespoke_bless_stats_1a2":
NextDiag.CurrentNode = "first time";
Log_Info("You've given "+ToStr(COST_BLESS_STATS)+" doubloons. Suddenly, you hear the church bell toll and your head rushes with newfound wisdom...");
Log_Info("+1 Personal Skill Points Added");
PlaySound("interface\important_item.wav");
RemoveItems(pchar, "gold_dublon", COST_BLESS_STATS);
pchar.perks.FreePoints_self = sti(pchar.perks.FreePoints_self) + 1;
DialogExit();
break;

Instead of adding FreePoints, can we have it add rank or Rank_exp?
replace this "pchar.perks.FreePoints_self = sti(pchar.perks.FreePoints_self) + 1;" with this "chref.rank = sti(_chref.rank) + 1" perhap?
 
Hey, Mika, Nita and Azthek. try this if you are all interested
Successfully trigger increasing rank using the above mentioned code.

case "help_bespoke_bless_stats_1a2":
NextDiag.CurrentNode = "first time";
Log_Info("You've given "+ToStr(COST_BLESS_STATS)+" doubloons. Suddenly, you hear the church bell toll and your head rushes with newfound wisdom...");
Log_Info("+5 Personal Skill Points Added");
PlaySound("interface\important_item.wav");
RemoveItems(pchar, "gold_dublon", COST_BLESS_STATS);
pchar.rank = sti(pchar.rank) + 1;
DialogExit();
break;
Replace "pchar.perks.FreePoints_self = sti(pchar.perks.FreePoints_self) + 1;" with "pchar.rank = sti(pchar.rank) + 1;", and when you ask the abbot for wisdom of land (personal point), you will have +1 rank instead. So feel free to increase all the player character stats to max and still have control over your rank. Thus no more swamped by quests.
PS: I haven't try using -1 to decrease character rank, but it might also work. Still whether this will trigger quests that you missed when your rank surpass requirement is unknown, so if anyone miss some quest that require lower rank please try and report. Much appreciated.
 
I did things a little bit differently. I figured out how to level up skills to max and give myself enough points to pick up all the perks. Also have it set to max out some of the other things. There is just 1 catch and part of the reason I went back in and commented out that section. No matter how many missions/quests I do for a nation my rep with them never goes up. Attacking any of their ships or ports and their hatred for me drops vastly.

In Puancie.c under the hero type section:

// AddCharacterExpToSkill(pchar, "Leadership", 30000);
// AddCharacterExpToSkill(pchar, "Fortune", 30000);
// AddCharacterExpToSkill(pchar, "FencingL", 30000);
// AddCharacterExpToSkill(pchar, "FencingS", 30000);
// AddCharacterExpToSkill(pchar, "FencingH", 30000);
// AddCharacterExpToSkill(pchar, "Pistol", 30000);
// AddCharacterExpToSkill(pchar, "Commerce", 30000);
// AddCharacterExpToSkill(pchar, "Accuracy", 30000);
// AddCharacterExpToSkill(pchar, "Cannons", 30000);
// AddCharacterExpToSkill(pchar, "Sailing", 30000);
// AddCharacterExpToSkill(pchar, "Repair", 30000);
// AddCharacterExpToSkill(pchar, "Grappling", 30000);
// AddCharacterExpToSkill(pchar, "Defence", 30000);
// AddCharacterExpToSkill(pchar, "Sneak", 30000);
pchar.perks.FreePoints_ship = sti(pchar.perks.FreePoints_ship) + 50;
pchar.perks.FreePoints_self = sti(pchar.perks.FreePoints_self) + 30;
ChangeCharacterComplexReputation(pchar, "nobility", 30000);
ChangeCharacterComplexReputation(pchar, "authority", 30000);
ChangeCharacterComplexReputation(pchar, "fame", 30000);

This will rank you up to 53-58 depending on which hero type you're using.
 
I did think about getting exp for stats, but that mean my control is limited, my method is more manageable (I used cheatengine to managed my ranking, but the game might crash). Only need to change the + 1 to whatever rank you want to reach. The down side is you need to go to the abbot. With my method, I simply max out all stats, SPECIALS, get all personal and ship's perks (beside rising flags which need to be picked manually with ship point). And I can leisurely play and increase my rank at will.

And the reputation is kinda weird, I helped escort, transport, save damsel in distress.... but no change in reputation. In one game, I helped Prosper rescue his daughter, returned the ear rings to the governor (tutorial quest at the beginning), helped find warehouse keeper for the merchant and my reputation became honest captain. Then I sunk 12 Spanish ships, 19 pirate ship (capture captain, enslave crew) and no drop in reputation whatsoever. In another, I did all the tutorial quest and no increase in reputation or maybe a small one (I got unknow captain). Then I sunk some pirate and Spanish ships also capture captains and enslave crews, then I got Rascal reputation. In both game I use the hero that have bonus with gun and cannon.
 
I got a question for Tichigitu, the indian officer. I modified his stats in Tichingitu.c and reaction_functions.c, but it seem it doesn't take effect. Anyone can help?
 
Unlike things we can change on the abbot/monk guy changes won't stick if he's already part of your crew. I usually make a save right before I enter Fadey's house just in case I messed up my edits.

If you want to post what you have for him I can take a look or maybe Azthek can. I do seem to remember that it was either Longway ot Tichingitu used a different variable, instead of the normal 'sld' it was 'npchar'. I can check after I get some sleep.
 
Add lines to Benua.c replace with line you want..go to priest add to crew save game..change line to add more crew.I use to top french soldier area.
changing the line does not replace the officer you had before ..Note I have done the quests ..So I advise caution if you have not.


GetCharacter(NPC_GenerateCharacter("Helena", "Rumba", "woman", "rumba", 1, ENGLAND, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("Danielle", "Danny", "woman", "danny", 1, ENGLAND, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("Tichingitu", "maskog", "man", "man", 1, FRANCE, 10, false, "quest"));

GetCharacter(NPC_GenerateCharacter("Abigile", "Aby", "woman", "woman_A2", 10, HOLLAND, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("Mary", "Mary", "woman", "mary", 1, PIRATE, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("GigoloGirl", "women_24", "woman", "towngirl", 3, FRANCE, -1, false, "soldier"));

GetCharacter(NPC_GenerateCharacter("Kathy", "Catherine", "woman", "woman", 10, ENGLAND, -1, true, "quest"));

GetCharacter(NPC_GenerateCharacter("Amelia", "gipsy_3", "woman", "towngirl", 10, PIRATE, -1, true, "citizen"));

GetCharacter(NPC_GenerateCharacter("Landlady", "women_7", "woman", "towngirl", 5, HOLLAND, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("RegataCitPRWom_"+i, "women_"+(rand(9)+7), "woman", "towngirl", 5, ENGLAND, 1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("Lucas", "Lucas", "man", "man", 30, HOLLAND, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("FMQT_girl", "women_11", "woman", "towngirl", 5, FRANCE, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("TerrapinRoofGirl", "women_15", "woman", "towngirl", 10, FRANCE, -1, true, "quest"));

GetCharacter(NPC_GenerateCharacter("UndergroundGirl", "women_"+(rand(5)+11), "woman", "towngirl", 5, PIRATE, 1, false, "citizen"));

GetCharacter(NPC_GenerateCharacter("Agnes", "women_18", "woman", "towngirl", 10, HOLLAND, -1, false, "quest"));

Sample of what I use below

sld = GetCharacter(NPC_GenerateCharacter("Kathy", "Catherine", "woman", "woman", 10, ENGLAND, -1, true, "quest"));
SetRandomNameToCharacter(sld);
LAi_SetActorType(sld);
LAi_SetOfficerType(sld);
LAi_ActorDialog(sld, pchar, "", -1, 0);
DeleteAttribute(sld, "LifeDay");
LAi_SetImmortal(sld, false);
sld.OfficerPrice = sti(pchar.rank)*1;
sld.OfficerWantToGo.DontGo = true;
sld.CompanionDisable = false;
sld.loyality = MAX_LOYALITY;
AddPassenger(pchar, sld, false);
SetCharacterRemovable(sld, true);
sld.Payment = true;
sld.CanTakeMushket = true;
LAi_group_MoveCharacter(sld, LAI_GROUP_PLAYER);
sld.rank = 49;
SaveCurrentNpcQuestDateParam(sld, "HiredDate");
SetShipSkill(sld, 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25));
SetSelfSkill(sld, 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25), 25+rand(25));
LAi_SetHP(sld, 550.0, 550.0);
sld.dialog.FileName = "Quest\Sharlie\Goldberg.c";
sld.dialog.currentnode = "Osmanov_Officer";
sld.greeting = "patrol";
SetCharacterPerk(sld, "BasicDefense");
SetCharacterPerk(sld, "AdvancedDefense");
SetCharacterPerk(sld, "Ciras");
SetCharacterPerk(sld, "ByWorker1");
SetCharacterPerk(sld, "ByWorker2");
SetCharacterPerk(sld, "CriticalHit");
SetCharacterPerk(sld, "HardHitter");
SetCharacterPerk(sld, "Tireless");
SetCharacterPerk(sld, "EnergyPlus");
SetCharacterPerk(sld, "Gunman");
SetCharacterPerk(sld, "GunProfessional");
RemoveAllCharacterItems(sld, true);
GiveItem2Character(sld, "blade_19");
EquipCharacterbyItem(sld, "blade_19"); // 151012
AddItems(sld, "cartridge", 25);
AddItems(sld, "amulet_1", 1);
AddItems(sld, "amulet_2", 1);
AddItems(sld, "amulet_3", 1);
AddItems(sld, "amulet_4", 1);
AddItems(sld, "amulet_5", 1);
AddItems(sld, "amulet_6", 1);
AddItems(sld, "amulet_7", 1);
AddItems(sld, "amulet_8", 1);
AddItems(sld, "amulet_9", 1);
AddItems(sld, "amulet_10", 1);
AddItems(sld, "amulet_11", 1);
AddItems(sld, "obereg_1", 1);
AddItems(sld, "obereg_2", 1);
AddItems(sld, "obereg_3", 1);
AddItems(sld, "obereg_4", 1);
AddItems(sld, "obereg_5", 1);
AddItems(sld, "obereg_6", 1);
AddItems(sld, "obereg_7", 1);
AddItems(sld, "obereg_8", 1);
AddItems(sld, "obereg_9", 1);
AddItems(sld, "obereg_10", 1);
AddItems(sld, "obereg_11", 1);
AddItems(sld, "indian_1", 1);
AddItems(sld, "indian_2", 1);
AddItems(sld, "indian_3", 1);
AddItems(sld, "indian_4", 1);
AddItems(sld, "indian_5", 1);
AddItems(sld, "indian_6", 1);
AddItems(sld, "indian_7", 1);
AddItems(sld, "indian_8", 1);
AddItems(sld, "indian_9", 1);
AddItems(sld, "indian_10", 1);
AddItems(sld, "indian_11", 1);
AddItems(sld, "totem_01", 4);
AddItems(sld, "totem_02", 4);
AddItems(sld, "totem_03", 4);
AddItems(sld, "totem_04", 4);
AddItems(sld, "totem_05", 4);
AddItems(sld, "totem_06", 4);
AddItems(sld, "totem_07", 4);
AddItems(sld, "totem_08", 4);
AddItems(sld, "totem_09", 4);
AddItems(sld, "totem_10", 4);
AddItems(sld, "totem_11", 4);
AddItems(sld, "totem_12", 4);
AddItems(sld, "totem_13", 4);
AddItems(sld, "Spyglass3", 1)
AddItems(sld, "pistol5", 2);
AddItems(sld, "potion2", 25);
AddItems(sld, "Map_Best", 1);
AddItems(sld, "cirass4", 1);
EquipCharacterbyItem(sld, "pistol5"); // 151012
EquipCharacterbyItem(sld, "cirass4"); // 151012
EquipCharacterbyItem(sld, "Spyglass3");
LAi_SetCharacterUseBullet(sld, "cartridge");
ChangeCharacterAddressGroup(sld, "FortFrance_tavern_upstairs", "goto", "goto1");
DialogExit();

For my nice ship GenerateShipHand(pchar, SHIP_LSHIP_QUEST, 42, 13000, 500, 18200, 20000, 18.2, 26.0, 1.42);
and second ship below

pchar.Ship.Type = GenerateShipHand(pchar, SHIP_FRIGATE_H, 42, 8000, 500, 18200, 20000, 18.2, 26.0, 1.42);
SetBaseShipData(pchar);
ResetShipCannonsDamages(pchar);
SetShipCannonsDamagesNull(pchar);
UpgradeShipParameter(pchar, "SpeedRate");
UpgradeShipParameter(pchar, "Capacity");
UpgradeShipParameter(pchar, "WindAgainstSpeed");
UpgradeShipParameter(pchar, "TurnRate");
UpgradeShipParameter(pchar, "HP");//корпус
NullCharacterGoods(pchar);
SetCrewQuantity(PChar, 750);
pchar.Ship.Crew.Morale = 100;
pchar.Ship.Crew.Exp.Sailors = 100;
pchar.Ship.Crew.Exp.Cannoners = 100;
pchar.Ship.Crew.Exp.Soldiers = 100;
AddCharacterGoods(pchar, GOOD_BALLS, 3500);
AddCharacterGoods(pchar, GOOD_GRAPES, 1200);
AddCharacterGoods(pchar, GOOD_KNIPPELS, 1200);
AddCharacterGoods(pchar, GOOD_BOMBS, 1500);
SetCharacterGoods(pchar, GOOD_FOOD, 2500);
SetCharacterGoods(pchar, GOOD_POWDER, 3500);
SetCharacterGoods(pchar, GOOD_WEAPON, 500);
SetCharacterGoods(pchar, GOOD_RUM, 2500);
SetCharacterGoods(pchar, GOOD_MEDICAMENT, 360);
SetCharacterGoods(pchar, GOOD_PLANKS, 75);
SetCharacterGoods(pchar, GOOD_SAILCLOTH, 75);
SetSailsColor(pchar, 1);
pchar.Ship.name = "Eternal Glory";
pchar.Ship.Cannons.Type = CANNON_TYPE_CULVERINE_LBS36;


But I always get the same hull type on the heavy frigate..same color scheme from the priest how do I change that?
 
Last edited:
Tomy, you mean you get a heavy frigate with a non heavy frigate hull? As I recall, I don't see any modified about ship hull, just the sail color.

By the way, can I have the code line to generate these guys
Colonel Fox of England
The Spanish Grandee of the Grandee Abalate quest (both the uncle and the nephew)
A knight of Malta (the guy that will take you to your brother if you chose to ask the abbot) Generic is fine too
A Dutch captain (the guy that will help you in the quest of fighting English Marine) Generic is fine too
A Spanish officer (the engineer that you help rescue in the tutorial) Generic is fine too
 
Last edited:
Colonel Fox line should be put in 2nd option of officer with priest instead of ruski if you want to keep his real name..otherwise if you use the top officer slot he will get random name..replace relevent lines


sld = GetCharacter(NPC_GenerateCharacter("Fox", "Fox", "man", "man", 35, ENGLAND, -1, false, "quest"));
sld.name = "Colonel";
sld.lastname = "Jonathan Fox";


next

Malta type officer ..warning no picture in the officer list will show,so click on one of the blank officer spaces in the officer roster area

sld = GetCharacter(NPC_GenerateCharacter("Maltie_officer", "off_Malt_1", "man", "man", 35, FRANCE, 2, false, "soldier"));

sld = GetCharacter(NPC_GenerateCharacter("MaltainsStay_"+i, "sold_fra_"+(rand(7)+9), "man", "man", 20, FRANCE, 2, false, "soldier"));

next from the prison area ..picture in roster list does show up

GetCharacter(NPC_GenerateCharacter("MaltainsPrisoner_"+i, "mercen_"+(rand(29)+1), "man", "man", 10, FRANCE, 15, false, "slave"));


not tested yet somtimes characters dont show up after I put them in its rare but happens

HWIC area

GetCharacter(NPC_GenerateCharacter("HWIC_sold_"+i, "sold_hol_"+(i+9), "man", "man", 25, HOLLAND, 30, false, "soldier"));

GetCharacter(NPC_GenerateCharacter("HWIC_clerk_"+i, "citiz_"+(rand(9)+11), "man", "man", 10, HOLLAND, 30, false, "citizen"));

GetCharacter(NPC_GenerateCharacter("HWIC_headclerk", "citiz_9", "man", "man", 20, HOLLAND, -1, false, "citizen"));

GetCharacter(NPC_GenerateCharacter("Sleep_Terrax", "Terrax", "man", "man", 1, PIRATE, 1, true, "quest"));


I have 3 boarders in my crew.I managed to catch up with their ship on the way back to europe.they will serve my on my ship that is called ..My Gambit ..its only right after all the running around I had to do for this threesome ..

GetCharacter(NPC_GenerateCharacter("Abigile", "Aby", "woman", "woman_A2", 10, HOLLAND, -1, false, "quest"));

GetCharacter(NPC_GenerateCharacter("Fleetwood", "Fleetwood", "man", "man", 20, ENGLAND, -1, true, "quest"));

GetCharacter(NPC_GenerateCharacter("Lucas", "Lucas", "man", "man", 30, HOLLAND, -1, false, "quest"));
 

Attachments

  • mygambithaha.zip
    961.1 KB · Views: 554
Last edited:
I think we are only using their model so it won't interfere with the actual character when we get their quest right? Because I change their name into something else. Otherwise we can simply kick them out of the team before we take on their quest.
 
Back
Top