Technical Questions
Private: Welcome to the Reef! › Forums › GOF Eras Module 2 download & discussion board › Technical Questions
- This topic has 250 replies, 12 voices, and was last updated 3 years, 6 months ago by Oldtimer.
-
AuthorPosts
-
-
February 10, 2018 at 4:16 pm #5997MaltacusParticipant
This is a thread for questions about how the game code works, how to edit a specific thing or how a certain function runs.
-
February 10, 2018 at 4:32 pm #5998MaltacusParticipant
I’ll start, suprisingly enough:
In HeroDescribe the models of the playable characters are determined. For example, Jaques Cassard being the fifth hero in the order has the following line:
“heroModel_5 {Hero1,Hero1_Cirass,Hero1_Cirass1,Hero1_Cirass2,Hero1_mush,Hero1_Cirass3,Hero1_Cirass_mush,Hero1_Cirass1_mush,Hero1_Cirass2_mush,Hero1_Cirass3_mush}”.
Those models are all found as .GM-files in …\ERAS2.6\RESOURCE\MODELS\Characters. So far so good. But the texture files in …\ERAS2.6\RESOURCE\Textures\Characters are not named in a corresponding manner. How does the game knows what texture should be combined with what model, how do you find a specific characters textures?-
February 10, 2018 at 4:53 pm #5999JeffreyKeymaster
The textures used are specified inside the model.gm file. You can see a list of the textures used in the GMViewer.exe tool that is part of the modder tools that PA! provides somewhere in their downloads section.
Without that tool, you can still see them if you open the .gm file and toward the beginning of the file the word “materal” will be followed by a list of words that are not jumbled like the rest of the binary and you can see the .tga file names used.
-
February 10, 2018 at 10:54 pm #6008MaltacusParticipant
Thanks!
To edit a model to only specify a new texture – for example suppose you wish to copy a model and then paint a new cuirass in the texture file – what is the simplest way of doing that?-
February 17, 2018 at 8:56 pm #6040JeffreyKeymaster
If you don’t change the model in a modeling program, the other alternative is to use a Hex editor.
Open the .gm file, find the texture name it uses, and in the Hex Editor, change the texture name, but you have to use a name that is exactly the same character file name length of the original texture name. Save new .gm file.
-
-
-
-
February 10, 2018 at 5:49 pm #6001modernknight1Keymaster
There is also an anim viewer utility that some Russian devs/modders made (for SOFS I think?) which will actually allow you to see the texture on the character in the utility which GM viewer does not (it only shows them on ships).
Also remember because PA! has had a tendency in the past to hide or move topics/links, I made our own place to get the set of necessary modding development utilities a couple years ago.
See this topic which has links to many different useful programs and utilities: https://buccaneersreef.com/forums/topic/ship-modeling-and-modding-tutorials/
AND this is our own Buccaneer’s Reef DL for some of those tools:
https://mega.nz/#!CYcjjCKL!jR3S6R6AKmWf4WtYhDS8tKR2fs6NktfnrL8oMi_XfqAMK
- This reply was modified 6 years, 9 months ago by modernknight1.
- This reply was modified 6 years, 9 months ago by modernknight1.
-
February 21, 2018 at 11:34 am #6046FilipeParticipant
Is there a way to modify the value of the perks, add conditions and add new perks to the game?
-
February 22, 2018 at 6:33 pm #6057JeffreyKeymaster
It’s certainly possible, but it’s fairly involved to add new.
To alter/mod the values, just search the entire script code base for the perk name in question, and modify the logic.
To add new, one would have to add them to the perk initialize, add strings to INI files for the display names, alter the perk texture with a new on/off icon image (there look to be 5 slots available in the current textures), then add all the new logic to select the perk (whether there are dependencies on others, like one has to be obtained before the new one, similar to Advanced Defense needing Basic first), then add the logic in all appropriate spots to check for perk and modify behavior (Example: If some sort of fighting perk, need to find all the attack/fight code that checks other, similar perks and add your stuff there).
The first place to start, is INTERFACE\perks\perks_init.c, find the ChrPerksList and you will note that each of them has a .name (Example: .HardHitter), then search the entire code base for HardHitter and see what they do for that in the various code, like LAi_fightparams.c, where you can see where the decrement the enemies energy for the effect of tiring out the opponent.
-
-
April 14, 2018 at 2:19 pm #6219OldtimerParticipant
Hi all,
how to take screenshots and where will the game store them?
Rgds, Oldtimer
-
April 14, 2018 at 4:25 pm #6220Jolie RougeParticipant
That should be F12 and you’ll find them in your ERAS directory as Buccaneer’s_####.JPEG.
-
April 14, 2018 at 8:33 pm #6221JeffreyKeymaster
Key is F8. Files will be in same directory as START.exe.
-
-
July 10, 2018 at 2:57 pm #6298OldtimerParticipant
Hi all,
perhaps wrong thread but anyway:
– how can I force officers to change items according to my idea abt. their loadout?
Why do I want this? NPC:s seem to choose their weapons according to DPS, not price. Good? Yes, as long as you play with autoreload where reload speed greatly affects firearms DPS. Not good at all if you play without autoreload as NPC:s still assume you do. And miscalculate DPS greatly. So they prefer cheap pistol to, say, blunderbuss pistol.
Rgds, Oldtimer
-
July 10, 2018 at 5:20 pm #6299JeffreyKeymaster
First, the original COAS had no decision making for guns at all; if they had more than one gun in their personal inventory, they simply selected the last gun that was entered in the ITEMS/initItems.c file that they possessed. In other words, arbitrary (based on when guns are added randomly or to the end of the list, they get chosen) and stupid.
I changed it to where the NPC instead tries to use some logic about the gun performance and their self-interest in best defense.
This logic I added does not care about price and does not use the player autoreload toggle at all, because it doesn’t matter to them. Instead, I figured that the NPC cares about reload speed for themselves, the number of shots before reload needed, the accuracy of the gun and the minimum/maximum damage the gun can deliver.
So, I used a weighted score, with this formula:
//These are the weighted/importance of the gun's value to the NPC #define GUN_SPEED_BASE 10.0 #define GUN_MIN_WT 0.75 #define GUN_MAX_WT 0.5 curGunValue = sti(refItm.chargeQ) * GUN_SPEED_BASE / sti(refItm.chargespeed) * sti(refItm.accuracy) / 100.0 * (stf(refItm.dmg_min) * GUN_MIN_WT + (stf(refItm.dmg_max) * GUN_MAX_WT - stf(refItm.dmg_min) * GUN_MIN_WT) / 2);
To illustrate what score pistol1 (cheap pistol), pistol2 (long-barrel), pistol3 (blunderbuss) gets:
pistol1 (cheap pistol) = 9.75
pistol2 (long-barrel) = 12.9
pistol3 (blunderbuss) = 5.7The highest score wins, so a cheap pistol will always be selected by an NPC over a blunderbuss. The two determining factors that I can see for this happening is because pistol1 has a reload speed of 10, accuracy of 30 and min/max of 20/100, compared to pistol3 having a reload speed of 22, accuracy of 20, and min/max of 50/175. So although the blunderbuss deals more damage, it is less accurate (so is more likely to miss and deal no damage) and takes more than twice as long to reload and fire another shot.
If you want to change this behavior, you will have to modify characters/CharacterUtilite.c, string FindCharacterItemByGroup() function.
-
-
July 11, 2018 at 9:41 am #6301OldtimerParticipant
Mr. Jeffrey,
THX for your attn.
If one factor in determining pistol choice is reload speed even if no reload is possible(not without sheathing your blade while in combat) perhaps it could/should be discarded?
Or would it be simpler to have an override so that NPC:s always give up any of their stuff to the player when requested to do so?
Rgds,
Oldtimer
-
July 13, 2018 at 12:17 am #6302FilipeParticipant
How can one update the code and test it without the need to make a new game?
-
July 13, 2018 at 12:33 am #6303FilipeParticipant
Also where should I look to modify ram dmg? what i want by this is to get a increased dmg just to have some fun! I’ve noted that the ram dmg isnt that great to be considered a valid strategy but in some ocasions it seems pretty effective specially the ones after a boarding when hiting the sinking ship.where your ship get out of control and normally sinks.
-
July 13, 2018 at 3:46 am #6304JeffreyKeymaster
Most script changes don’t require a new game to become effective during testing. Things like changing/adding locations, items, ships, etc. will often require a new game, but a trick to avoid that is often to “reinit” those things, by calling a procedure to reset their elements to a “new game” status. Another thing that requires a new game is if you add a “global” variable to the scripts, in other words, adding a variable definition that sits outside a function, at a global scope. But you are probably not doing either of those things, so make the change and test it.
For hull damage like you described, check here: Program\SEA_AI\AIShip.c, function void Ship_Ship2ShipCollision()
-
July 13, 2018 at 4:45 pm #6305FilipeParticipant
Thx, I’ve messed around and had some fun sinking some large ships in one hit, but I modified the way the dmg is taken to each ship class towards the first taking reduced dmg so its just like this ” base value / ship class “, but with this come some incosistencies and I would like to know if there is a way to reduce the dmg taken by mass not ship class so the heavier the ship the less dmg it takes from ramming.
-
-
July 21, 2018 at 7:07 am #6315MaltacusParticipant
How on earth do you change the 64×64 character portraits???
When I edit and convert a picture to .tx in the 128×128 and 256×256 folders it changes (although the game can’t start in a few tries after I’ve done it, not sure if it’s related) but nothing I do can alter the appearance of the smallest portraits.
I have used a texture convertor to convert and reconvert the images. Since it worked on the larger images I assume the conversion in itself is not the problem with the small ones – they don’t change when I paste a new .tx file and overwrite either.
The portraits I try to add are all 1 layer, saved without RLE compression. -
July 26, 2018 at 3:25 pm #6329JeffreyKeymaster
What screens are you seeing these smaller portraits, for an example? That will help me figure out where they are being retrieved from for display.
-
July 30, 2018 at 9:45 am #6332MaltacusParticipant
I did some searching and more than some testing and found the cause. Portraits are not only located in the fairly logical location
D:\Eras 2.8\RESOURCE\Textures\INTERFACES\PORTRAITS
…but also in
D:\Eras 2.8\RESOURCE\Textures\BATTLE_INTERFACE\PORTRAITS
The latter is where the small portraits seen when walking around on land or boarding are stored. I think it is a poor choice of the game developers to split them up like this, and the battle interface is strictly speaking also a peacetime interface in this respect…
Also, I learned that a new portrait must have an entry in the file pictures.ini in
D:\Eras 2.8\RESOURCE\INI\interfaces
otherwise it seems you can only add the large portrait but not the small ones. I have added a section about portraits modding here (its my own moding guidelines written on another forum due to the nice formatting options there):
http://www.twcenter.net/forums/showthread.php?774091-Gentlemen-of-Fortune-Eras&p=15512461&viewfull=1#post15512461NEW QUESTION: Where do you look to change how the wind affect a ships current speed? And, now my all time most desired change of this game, what would you need to do to make turn rate depend on current speed in the same way?
So that ships with nearly no speed can not turn fast at all on the spot and ships won’t turn at all when the wind is 0 and ships with no masts won’t turn at all.- This reply was modified 6 years, 3 months ago by Maltacus.
-
July 31, 2018 at 2:48 pm #6335JeffreyKeymaster
Did some checking for you.
The first number is in Ships_init.c and is the Ship.TurnRate.
Then, look at AIShip.c, Ship_UpdateParameters() function. This function is called by the engine for each game frame execution.
Inside the logic of that function, wind is obtained:
float fWindPower = Whr_GetWindSpeed() / WIND_NORMAL_POWER;
But, it is not apparently used in turn calculation, just forward movement (“Z”).
The turning is “Y” or more precisely the fMaxSpeedY variable:
float fMaxSpeedY = stf(rShip.TurnRate) / Sea_TurnRateMagicNumber();
Just for reference, that “magic” number is in GeneratorUtilite.c, and is hardcoded to 244.444 at the moment:
float Sea_TurnRateMagicNumber();
{
return 244.444; //162.962; //244.444; *2/3
}Further down in Ship_UpdateParameters(), the fMaxSpeedY gets adjusted by functions that reside in ShipsUtilites.c
FindShipTurnRate(aref refCharacter)
float TurnBySkill(aref refCharacter)Later in Ship_UpdateParameters(), the final result is a combination of sail state, fMaxSpeedY, the character’s actual turn rate determined by their ship condition and skills (fShipTurnRate) from those ShipsUtilites functions, and the speed calcs for fTRFromSpeed:
float fTRResult = fMaxSpeedY * fShipTurnRate * fTRFromSailState * fTRFromSpeed;
This fTRResult is set to .MaxSpeedY that is then used by the engine to execute per game frame the actual ship turn:
arCharShip.MaxSpeedY = fTRResult;
-
July 31, 2018 at 10:31 pm #6338MaltacusParticipant
My reply disappeared when I tried to edit the post!
Thanks a lot for the help.
I don’t understand how the sail damage works, in ShipsUtilites. What does this entry do?float fTRFromSailDamage = Bring2Range(0.05, 1.0, 0.1, 100.0, stf(refCharacter.ship.sp));
Would this work to add the wind as a decisive factor (in the sense that 0 wind means 0 turn rate)?
fTRFromSpeed = 1.0 – 0.86 * (1.0 – Clampf(fCurrentSpeedZ / fShipSpeed));
changed to
fTRFromSpeed = (1.0 – 0.86 * (1.0 – Clampf(fCurrentSpeedZ / fShipSpeed))) * fWindPower;-
July 31, 2018 at 11:27 pm #6339JeffreyKeymaster
That function is defined like this:
Bring2Range(T Min1, T Max1, T Min2, T Max2, T Value) { if (Value < Min2) Value = Min2; if (Value > Max2) Value = Max2; float Delta = float(Value - Min2) / float(Max2 - Min2); return Min1 + Delta * (Max1 - Min1); }
Ship.sp are the sail “hit points” left for that character.
I don’t know the range for windpower, as I’ve never investigated that value, but if it were 0 to 1, that could probably work for your purposes.
-
August 5, 2018 at 3:30 pm #6355MaltacusParticipant
Do you know what kind of values fShipSpeed can be? The more I have thought about it, the more do I think that it should be the factor rather than fWindPower, as it is the vessels actual speed that determine how much you can manouever.
fTRFromSpeed = (1.0 – 0.86 * (1.0 – Clampf(fCurrentSpeedZ / fShipSpeed))) * fShipSpeed;
I have a hard time following the formula for calculating float fTRFromSailDamage. It looks to me that the Bring2Range function (if it is the correct term to call it a function?) rounds down or up everything below or between certain values but I would much appreciate someone more knowledgeable explaining how the game gets the fTRFromSailDamage.
In any case, shouldn’t it be more like a formula where the current SailHP are divided byt the ships maximun SailHP, so if you lost 60 % of the sails, all else being equal, you would lose 60 % of the current turn rate? Or is that an oversimplification of how a sailing vessels turn rate is affected by progressively more torn sails?-
August 5, 2018 at 11:57 pm #6356JeffreyKeymaster
fShipSpeed numbers are within the ranges you can see on the character ship screen. Example: 9.86/13.21
I put a trace to verify, just before the fWindPower multiplier:
trace(“Ship speed ” + fShipSpeed + “, ” + fWindPower);
fShipSpeed = (fShipSpeed * fWindPower);You will also note that prior to the wind power multiply, it never varies as it is a constant and given the current wind, is meant to be a max when you see it set to arCharShip.MaxSpeedZ.
If you want the actual speed the ship is traveling at the moment, use fCurrentSpeedZ.
Yes, Bring2Range function is essentially taking a min/max of one range, and forcing that same ratio for the value sent in the last parameter, into a similar ratio for a completely different range. In many cases, a ratio for numbers you can see like 10 to 100, are supposed to be a number between 0 and 1 in the game engine, so if you have a minimum of 10 to 100, value 90, what the engine will want is .889.
-
August 6, 2018 at 8:28 pm #6361MaltacusParticipant
I can’t seem to make it work. I changed the line to this (with the division by 5 to prevent a huge turn rate boost):
fTRFromSpeed = (1.0 – (0.87 – MOD_SKILL_ENEMY_RATE*0.01) * (1.0 – Clampf(fCurrentSpeedZ / fShipSpeed))) * fCurrentSpeedZ / 5
But ships cans till turn with no sails up and 0 speed, rotating on the spot. What am I missing?
-
August 6, 2018 at 9:28 pm #6362JeffreyKeymaster
Judging where you got that line, here is what follows:
float fTRResult = fMaxSpeedY * fShipTurnRate * fTRFromSailState * fTRFromSpeed;
fTRResult = Bring2Range(0.07, 0.95, 0.00001, 1.0, fTRResult);The first thing is investigate those various values, by adding trace statements, then you will find the output in compile.log:
float fTRResult = fMaxSpeedY * fShipTurnRate * fTRFromSailState * fTRFromSpeed; Trace("fMaxSpeedY = " + fMaxSpeedY); Trace("fTRFromSailState = " + fTRFromSailState); Trace("fShipTurnRate = " + fShipTurnRate); Trace("fMaxSpeedY = " + fMaxSpeedY); Trace("fTRResult = " + fTRResult); fTRResult = Bring2Range(0.07, 0.95, 0.00001, 1.0, fTRResult); Trace("fTRResult2 = " + fTRResult);
Keep in mind that the final line, no matter if fTRResult is zero, it will never go below 0.07, per the Bring2Range function, and that will be the value set to arCharShip.MaxSpeedY, which is what the engine will use.
As far as I can tell so far, if you were to set arCharShip.MaxSpeedY = 0.0, I don’t yet see anything in the engine source that would disallow such a thing and override it to some other, minimum amount that is above zero.
-
August 6, 2018 at 9:31 pm #6363MaltacusParticipant
However, setting…
arCharShip.MaxSpeedY = fTRResult * fCurrentSpeedZ/5;
…did the trick. YES! YES! YES!
The values will need some fine tuning I am sure but the main goal is reached – no more turning with the sails down or shot away or the wind right against you.I will look at your solution too, Jeffrey.
-
-
-
-
August 4, 2018 at 8:19 am #6347OldtimerParticipant
Hi all,
I need do change my e-post address. Where can I do that? Edit profile seems not to be right place.
Rgds, Oldtimer
-
August 4, 2018 at 8:43 am #6349OldtimerParticipant
Hi all,
how can I edit ship performance in a save? Not for the game as a whole, just for that specific ship.
Rgds,
Oldtimer
-
August 6, 2018 at 12:12 am #6357JeffreyKeymaster
A good example for this is the DIALOGS\Shipyard\Pirates_Shipyard.c.
You need to get the character’s “Real Ship” entity and set its parameters.
The easiest is the main character, because there is a global variable, pchar, for that character. To change the main character’s ship hit points:
ref shTo = &RealShips[sti(Pchar.Ship.Type)];
shTo.HP = 3500;-
August 6, 2018 at 7:39 am #6358OldtimerParticipant
Mr. Jeffrey,
in Program\DIALOGS\russian\Shipyard there is no file: Pirates_Shipyard.c.
Am I searching in wrong place?THX for your attn.,
Oldtimer
- This reply was modified 6 years, 3 months ago by Oldtimer.
-
August 6, 2018 at 4:33 pm #6360JeffreyKeymaster
You have the correct directory, and there should be a file for every town in there. Example:
Volume in drive C has no label. Volume Serial Number is E861-AA33 Directory of C:\MyCOAS\ERAS2.8Loyal\Program\DIALOGS\russian\Shipyard 08/06/2018 09:31 AM <DIR> . 08/06/2018 09:31 AM <DIR> .. 02/07/2018 11:58 AM 44,714 Alice_Shipyard.c 06/18/2018 10:53 PM 665 BasTer_Shipyard.c 06/18/2018 10:53 PM 664 Beliz_Shipyard.c 06/18/2018 10:54 PM 669 Bridgetown_Shipyard.c 06/18/2018 10:54 PM 666 Caracas_Shipyard.c 06/18/2018 10:54 PM 668 Cartahena_Shipyard.c 06/18/2018 10:54 PM 666 Charles_Shipyard.c 06/18/2018 10:54 PM 665 Cumana_Shipyard.c 08/06/2018 09:31 AM 0 dir.txt 06/18/2018 10:54 PM 1,685 FortFrance_Shipyard.c 06/18/2018 10:54 PM 669 FortOrange_Shipyard.c 06/18/2018 10:54 PM 665 Havana_Shipyard.c 06/18/2018 10:55 PM 665 LaVega_Shipyard.c 06/18/2018 10:55 PM 668 LeFransua_Shipyard.c 06/18/2018 10:55 PM 668 Maracaibo_Shipyard.c 06/18/2018 10:55 PM 665 Marigo_Shipyard.c 06/18/2018 10:55 PM 665 Panama_Shipyard.c 02/07/2018 12:01 PM 53,488 Pirates_Shipyard.c 06/18/2018 10:56 PM 669 PortoBello_Shipyard.c 06/18/2018 10:56 PM 666 PortPax_Shipyard.c 06/18/2018 10:56 PM 668 PortRoyal_Shipyard.c 06/18/2018 10:56 PM 668 PortSpein_Shipyard.c 06/18/2018 10:56 PM 673 PuertoPrincipe_Shipyard.c 06/18/2018 10:56 PM 666 SanJuan_Shipyard.c 06/18/2018 10:56 PM 672 SantaCatalina_Shipyard.c 06/18/2018 10:56 PM 667 Santiago_Shipyard.c 06/18/2018 10:57 PM 1,645 SantoDomingo_Shipyard.c 06/18/2018 10:57 PM 667 SentJons_Shipyard.c 06/18/2018 10:57 PM 1,589 Tortuga_Shipyard.c 06/18/2018 10:57 PM 669 Villemstad_Shipyard.c 30 File(s) 119,134 bytes 2 Dir(s) 10,199,007,232 bytes free
If you can’t see them, I wonder if perhaps your Windows settings are “hiding” certain files, that really exist, but you just can’t see them in a file explorer. Check the folder settings.
Otherwise, if they don’t really exist, you are missing and attempting a dialog conversation with the Pirate shipyarder would be broken, you would not be able to do the “upgrade” feature for that particular shipyard.
-
August 7, 2018 at 6:53 am #6366OldtimerParticipant
Mr. Jeffrey,
I can not paste in the files from my Shipyard folder here. But I can tell you that I found a file called Pirates_Shipyard.h
but it does not look quite as the .c file you mention.THX for your attn.,
Oldtimer
-
August 9, 2018 at 2:43 pm #6374JeffreyKeymaster
I also opened the ERAS2.8Loyalty.zip and navigated to Program\DIALOGS\russian\Shipyard. I also see the Pirates_Shipyard.c file there, so the download .zip correctly has everything. You may want to check your download .zip for the files and make sure everything is extracted to your game folder.
-
August 10, 2018 at 7:39 am #6384OldtimerParticipant
Righty,
I have the .c file mentioned there too. So it either did not install correctly or is hidden.
My son holds a bachelors in game design and I will ask him to take a peek at this next time he visits me.THX for your attn.,
Oldtimer
-
-
-
August 11, 2018 at 6:48 pm #6388AntiscampParticipant
John Strong’s starting ship, the 6th Class Heavy Brig is awesome and a beauty. Unfortunately the camera is a bit low when sailing in 1st person. It’s like I’m a very short person lol. Can anyone point me to the file to edit to heighten the camera to make this particular ship more immersive?
[url=https://imgur.com/L8JtZ1M][img]http://i.imgur.com/L8JtZ1M.jpg[/img][/url]
-
August 12, 2018 at 9:55 pm #6393JeffreyKeymaster
It is a problem with the camera locator on that ship. Unfortunately, the only tool we have to modify them (aptly called TOOL.exe), can’t load that particular model (brig_n11.gm) in the game .gm format.
However, good news. I looked further and there is a minimum camera height specified in the script code you can change that will fix the problem. Find Program\SEA_AI\AICameras.c and change this line:
SeaDeckCamera.h_min = 0.5;
Change to
SeaDeckCamera.h_min = 1.6; //0.5;
I also made this change in my code for the next update.
-
-
August 12, 2018 at 10:48 pm #6394
-
August 14, 2018 at 5:02 am #6404modernknight1Keymaster
That is a great all around fix. Jeffrey has just amazed me this last two weeks with all of the numerous fixes he has made. BTW I love that ship too. Hard to find though….LOL
MK
-
August 19, 2018 at 7:05 am #6412MaltacusParticipant
I would like to try and make bounty hunters spawn with stronger squadrons than now as the protagonists infamy grows. Even including first rate ships of the line.
As I understand it, bounty hunter encounters are handled by the Eras 2.8\Program\scripts\bountyhunters.c file, is that correct?
.
25 is the highest htrRank that results in a change of the hunter squadron, but what is the maximum htrRank you can attain?void SetShipHunter(ref Hunter) { int ShipsHunter, hcrew; int htrRank = makeint(pchar.rank); if(htrRank > 15 && htrRank < 25) { ShipsHunter = SHIP_Postillionen + rand(makeint(SHIP_BLACKPEARL - SHIP_Postillionen)); } if(htrRank > 6 && htrRank < 16) { ShipsHunter = SHIP_DutchFluyt + rand(makeint(SHIP_PINNACE11 - SHIP_DutchFluyt)); } if(htrRank > 24) { ShipsHunter = SHIP_R_Frigate + rand(makeint(SHIP_Fortuna - SHIP_R_Frigate)); } if(htrRank < 7) { ShipsHunter = SHIP_HANNAH + rand(makeint(SHIP_SPEEDY - SHIP_HANNAH)); }
If you wanted to include every kind of ship up to all or almost all ships of the line, how would you do that? How does the range of available ships work?
-
August 21, 2018 at 8:50 pm #6424JeffreyKeymaster
I looked for awhile and I don’t see anywhere that sets a limit on character rank.
I never liked the code I found that used an arbitrary ship number, like that line: SHIP_Fortuna – SHIP_R_Frigate
This has caused anomalies when new ships are added and inserted between those, which we do quite often.
So I added some constants that help delimit the different ship classes in Ships\ships.h
#define SHIP_CLASS_7_INDEX
#define SHIP_CLASS_6_INDEX
#define SHIP_CLASS_5_INDEX
#define SHIP_CLASS_4_INDEX
#define SHIP_CLASS_3_INDEX
#define SHIP_CLASS_2_INDEX
#define SHIP_CLASS_1_INDEXIf you want all ships class 2 or below, then x <= SHIP_CLASS_2_INDEX I have changed some of those lines that used two specific ships and replaced them with my constants, but obviously missed doing it for the pirate hunters.
-
August 23, 2018 at 7:48 pm #6431MaltacusParticipant
So htrRank is the same as the character rank? Is there no link between the bounty on the characters head and the strength of the bounty hunter squadrons?
.
Can you elaborate on the anomalies that were caused when you inserted new ships in between the lines you mention, are we talking about bugs here or working but weird situations in-game? Compatibility issues?
.
So the line SHIP_Fortuna – SHIP_R_Frigate tells the game to spawn a bounty hunter squadron with any kind of ship that has an entry between those ships in ships_init.c?
So if I wanted anything but unique or unnatural ships to be available to bounty hunters I should cut out the entries for the royal fortune, (mission type) soleil royal, flying dutchman and so on and paste them at the end of the ship entries, then add a line with the first ship on the list (ok, maybe not the tartanes) and the last that appear before the unique ones?
-
-
-
August 22, 2018 at 5:27 am #6426modernknight1Keymaster
I think its a little unrealistic to expect Gentlemen of Luck to possess First Rates of any nation. I have left them a little on the “WILD CARD” side on purpose though so that its possible to get almost anything although they still will usually pick from the baseline of mostly craft that your top of the line cut throats would have been able to get ahold of.
Some suggestions for capturing 1st rates of your own nation without turning against them.
1. When you take missions from other pirate captains run up the Jolly Roger, whomever pursues you may get what’s coming to them.
2. If I am playing as a naval officer with a commission from such and such faction, I will usually stop to help my countrymen embroiled in battles no matter the annoyance. Even if I am full of cargo on the way somewhere. I find these battles will often produce interesting results. Often the enemy will capture my own countrymen’s ships and I can then swoop in and take them back for the fatherland. Not only am I a hero and took them back from an enemy, but I also now get to keep them!
3. Smuggling missions when you have leveled up to high levels with excellent ships will often produce surprising opponents!
MK
-
August 23, 2018 at 8:07 pm #6432MaltacusParticipant
Gentlemen of Luck? Are they linked to the bounty hunters? I do agree that 1st and probably 2nd rates would seem a bit big for pirate vessels – hard to catch the prey with either.
.
I think bounty hunter squadrons can be interpreted in several ways. I think of them as regular navy – since they wear naval uniforms and fly their nations flag – but with special missions. Their missions priority and the vessels available to them differ a lot, hence the variety of ships they use. Captured prizes that the nation can’t incorporate in their common navy are therefore a good candidate to be given to these captains (mostly applies to the Dutch probably, with their shallow home waters).
Also, while the dock thugs are motivated and financed only by the bounty itself, these squadrons are of course backed by their state – and rightfully so, economically speaking, due to the amount of mischief that the target will have to have caused to provoke such a dreadful response. In the game, none less than Michiel the Ruyter has taken his de Seven Provincien to the Caribbean to settle the score with Robert Holmes. I think of the bounty hunts as being up to that level of state comittment.
.
My own aim is to change bounty hunter squadrons to be much rarer but more powerful too. Perhaps up to six ship rather than three, and able to include almost any kind of capital ship, both native and captured prizes from current or past wars (I mean, all the sea battles and town sacking going on in the game has to result in a great deal of ships changing ownership, right?). The sight of such a punitive squadron bearing down on you should be a fear-inspiring source of nightmares for the protagonist, rather than the nuisance they usually are right now.
-
-
August 24, 2018 at 12:49 pm #6453modernknight1Keymaster
I agree with much of what you say. However, I look at it slightly different. Privateers were often very organized and with commissions issued from the highest authorities and with a lot of money backing them, often their ships were very formidable. Just look at the Dutch character Isaac Rochussen in our game. A real historical privateer who became so successful and wealthy from privateering that he had his own fleet of 400 ships! Most of the commissions were from Zeeland and he was responsible for taking the majority of those issued from that Admiralty (The Dutch had five separate Admiralties) He was a classic nepotist that got letters of commission (Karte van Kommisee) for his own family members and friends and their relatives as the captains of his ships. Not all of the 400 ships were his own. Many were simply given to him to manage by other merchants who had more ships than they needed and wanted a piece of the action. Rochussen even had his own shipyard!
When I state that the Dutch Zeeroovers were a menace and the largest segment of privateers present in the world of the last quarter of the 17th century I make no exaggerations. In my book I have a lot of evidence I have collected backing up my claims that their contributions were critical to bringing English commerce to a stand still (even to the point of collapse) during the Anglo-Dutch wars. There were some years where over 500 English prizes were brought into Amsterdam alone and that makes no accounting for the Zeeland captains who operated out of other cities and would have taken their prizes there. Still digging – constantly digging.
Anyway, I still contend that the majority of these privateers would have used smaller ships like the Flemish and Corsair Privateers and the Dunkirk/Ferrol Raiders and English Scout Frigates. This is a big reason why I have been so keen on getting more of a variety of models like these into the game. A large ship requires a large amount of upkeep and is expensive to man as well. Sure a large ship is going to be faster when the wind is behind her, but in most other conditions the smaller ships would be more advantageous.
Jeffrey has already built a ship randomizer in the game that I asked him to. About one out of every five or six encounters with both regular enemy naval squadrons, pirates, bounty hunters and Gentlemen of Luck are going to produce formidable ship combinations that will usually outclass what you have. I can speak from experience, I have usually had to run away from these flotillas when they show up! (yes there are occasionally 1st and 2nd raters in these formations) I didn’t want to overdue it because we know that most encounters in the Caribbean of our period would have been with smaller and middling ships. However, it is a video game and NOT a 100 percent accurate simulation of the time either. These ships should occasionally be both encounterable and captureable.
We can and will continue to tune game mechanics to achieve more realism and your input to this is always greatly helpful!
MK
-
August 26, 2018 at 8:44 pm #6488MaltacusParticipant
In order to not drift off topic in this thread, could you move the last posts of our discussion here?
.
Another question, how do you alter the number of ships in bounty hunter squadrons?-
August 30, 2018 at 3:09 pm #6508JeffreyKeymaster
scripts\bountyhunters.c, function SeaHunterCheck. There is a loop from 1 to 7 for number of ships, but it will break out of the loop and limit number of ships when this condition is true:
if (abs(ChangeCharacterNationReputation(pchar, j, 0)) < (i * 15)) break; Basically if the ship num, represented in the loop by i, times 15, becomes greater than the main character's nation reputation score, it will stop adding ships to the bounty squadron.
-
-
August 30, 2018 at 6:01 am #6491modernknight1Keymaster
Unfortunately when I try to move the topic I am prevented by a window blocking the option toggle to change it to the other topic. Not to worry, Ian tells me he is putting final touches on the new website and I will be reviewing it with him to launch the new website in a few more days. He says once the final decisions are made I we pull trigger that he will have everything done in a weeks time. Not much longer to wait and when we finally get the new website up I have tons of new stories, updates and articles to put up.
MK
-
October 7, 2018 at 9:47 pm #6542FilipeParticipant
Its possible to encounter any ship in sea battles even if the shipyard and ship encounter is set to realistic?
-
October 8, 2018 at 3:40 am #6543modernknight1Keymaster
In ERAS the realistic setting doesn’t govern the ships showing up from different periods in ports battles or shipyards. The realistic setting governs what you will find in shipyards and relegates the selection to smaller ships. If set you will almost never see larger warships at shipyards.
I have personally set the encounterable ships in game by nation and period – merchant and war convoys. This is why you won’t find late period ships in the game in common encounters, ports, battles, or shipyards.
HOWEVER, I wanted players who wanted to play with a later era ship (which is totally out of period and ruins immersion for folks like me who get into the era of the game), to still be able to find any ship they want. It is much more difficult to find these ships but it is possible. One can find them in two places:
1. Occasional “Gentlemen of Luck” pirate encounters.
2. Other NPC heroes who capture ships will make superior ships their new vessel. So if you recruit them, they may have a late era vessel occasionally. If on some rare occasion you see one sitting in a harbor it is because it belongs to a competing NPC Captain character.
When our new map and locations are finished and we have our first set of DLCs complete, I will pick work back up on ERAS3 which is set from 1775-1820. In ERAS3 pirates are very rare. Gentlemen of Luck are English privateers, several of the pirate colonies are the colonial United States, and you will never(or very rarely) see the earlier period ships in the game in that version.
MK
-
-
December 8, 2018 at 1:20 pm #6657FilipeParticipant
Is there a chance that a Pirate Captain Proposition has no loot in it? I’m asking because I tried to get the loot many times from a Dutch fleet carrying gold, one time I managed to get it but the other ships sank me so I tried it more times but none of the later tries had given me the loot even tho I still managed to get away with a profit I guess that captain will not make business with me again.
-
December 8, 2018 at 5:38 pm #6659JeffreyKeymaster
Those missions can be a little tricky. Even when, as you say, you make a profit, the other captain will get mad at you if you happen to sink another ship, without boarding it first. So, my question is if this is what happened? Did you, or a companion, sink another ship with cannon fire during the battle, instead of boarding? If so, that is why they get mad. They say something like, “You’ve decided to wage a real war here!”
Another reason could be that if any of your companions, or yourself, don’t have enough empty cargo space, and thus during boarding, you don’t have enough room to carry enough loot, and if you don’t keep the whole ship that has the loot, then the other captain gets mad.
The root cause, is that the code checks for how much loot you were able to grab, and compares it to the amount of loot that entire enemy squadron had from the start of the engagement, and if the ratio you were able to obtain is not high enough, the other captain “knows” these facts and that you didn’t get enough. Even though you don’t really know how much was there among all the ships, your friend does know the exact amounts is checking up on you at the end 😉
-
December 8, 2018 at 5:51 pm #6660FilipeParticipant
I did board the bigger ships of the fleet and sunk the little ones like the chaloupe but I dont think they would put the treasure on that ship, I checked all the trading ships with big cargo but they were almost empty with just a couple vegetables and such.
-
December 12, 2018 at 8:57 pm #6665FilipeParticipant
Still some questions about the Pirate quest, I’ve noticed that they appear after you get some cash flow but after some time they don’t propose anymore or not as often so their proposals are tied to our lvl or gold?
-
December 13, 2018 at 8:31 am #6667JeffreyKeymaster
It depends on several factors. Looking at it more closely, I see where it does something that is counter-intuitive and perhaps should be changed…
First, you and the NPC must have a ship better (lower number) than class 6, you cannot have a full set of companion ships (8), then there is a random element that equals a 33% chance. But here is the strange part. The relation between you is also a random check, but the better your relation to that character, the lower the chance. So, if you’ve done work with them before, and were successful and parted on good terms, your relation improved…this eventually gets the relation very high, which lowers the chance for you to get approached by them.
However, if you speak directly to them, it looks like you still can work with them…provided there is that random chance they are actually engaged in some sort of quest.
I would think if you continue to do well by that person, that weird quirk of lowering your chance maybe should change. I think maybe they did that in the code to force you to work with other characters; the original game only had 3 total, so maybe they wanted you to try working with all of them.
-
-
-
-
December 12, 2018 at 9:17 pm #6666FilipeParticipant
Maybe a little of topic but one time I was lurking in the surrender code and found a description saying that a class 1 ship will never surrender and found it very interesting even tho its logical I didn’t know that so we could perhaps make some kind file with that data some sort of basics guide.
-
December 13, 2018 at 11:16 am #6668OldtimerParticipant
RELATIONS
AFAIU from the above abt. Pirate proposition there are individual relations between PC and NPC:s which are remembered. Would it be too difficult to have a relation bar show up during dialogues?
In char descriptions some chars have relations to others hinted. As Pitt and Blood for example. Does that make it easier for them to enter a partnership? And on what terms, seeing as Pitt starts with a barco costero?
Rgds, Oldtimer
-
December 13, 2018 at 9:28 pm #6669FilipeParticipant
What does the Difficult level govern besides the hella strong enemies and scarcer loot?
-
December 23, 2018 at 11:34 pm #6680MaltacusParticipant
@Filipe
A great deal of things, two of them being the rate of experience gain and the wages of your crew. I’m unfortunately not very knowledgeable about the other effects.Now my own question; how can I make it possible to capture colonies for whoever I have a letter of marque from, or for myself, right from the start?
Supposing I want a complete sandbox setting and don’t care much for the national questlines, perhaps because my characters timeframe doesn’t fit or the character doesn’t fit in (the distinguished admiral will not run errands or skulk in the dark like a ruffian).-
January 1, 2019 at 9:53 pm #6691JeffreyKeymaster
I believe you can capture colonies if you set variable bWorldAlivePause = false in console.c, and you have a Letter of Marque/Patent.
-
January 4, 2019 at 1:13 am #6695MaltacusParticipant
I can’t find “bWorldAlivePause = true” anywhere in console.c, where should I type in “bWorldAlivePause = false”?
There is such an entry in the file seadogs.c though, could that be it instead of console.c?
How will this affect saved games, is it save-game compatible?-
January 4, 2019 at 3:46 am #6696JeffreyKeymaster
You would start or load a game, then push F4, then save. It will stay set for all future game loads.
Replace everything in console.c with just this:
void ExecuteConsole() { bWorldAlivePause = false; Log_SetStringToLog("Success"); }
You will see “Success” in the upper right message area of your screen if it executes properly.
-
January 4, 2019 at 7:21 am #6697MaltacusParticipant
From the looks of it, concole.c governs at least some of the ship upgrades and some other things. Won’t those features disappear if I replace everything, or is the code in console.c redundant?
-
January 4, 2019 at 5:30 pm #6698JeffreyKeymaster
You can safely replace everything in console.c because the code you see only executes when you press F4 and what you see in that program file right now are many lines of code I’ve used to test certain things; it is not real code executed while playing the game.
If you would like to retain the code in there for any reference for yourself, another way is to just put those two lines at the top of the function, then add an early return statement so it will exit the function without running the remainder:
void ExecuteConsole() { bWorldAlivePause = false; Log_SetStringToLog("Success"); return; //All kinds of extra code below this line will not execute }
-
January 6, 2019 at 2:54 pm #6700MaltacusParticipant
Awesome.
I haven’t had the opportunity to storm a town yet but France and the United Provinces changed relations in a new game of mine so the changes seems to be working so far.
-
-
-
-
December 26, 2018 at 9:42 am #6681FilipeParticipant
Where should I look to translate the game?
-
January 1, 2019 at 9:39 pm #6690JeffreyKeymaster
Nearly all the text is located in Program\Text and RESOURCE\INI\texts\russian. The RESOURCE translation would require us to make a new folder RESOURCE\INI\texts\otherlanguage; we should probably change to RESOURCE\INI\texts\english too. Then the language being used is defined in RESOURCE\INI\texts\language.ini. If the language requires certain characters that are not found in fonts.ini and the fonts texture, we would have to create them.
Also, a notable change I see we would have to make, is change DIALOG files in Program\DIALOGS\russian to Program\DIALOGS\english, again add for another language Program\DIALOGS\otherlanguage, but also change the Program\Text folder to also have language directories, and change all the Program\DIALOGS\*.c files to reference the correct TEXT\*.h files.
It’s quite a bit of work, but can be started by actually translating all the Program\Text and RESOURCE\INI\texts\russian files, then the changes to reference the correct language files can be changed and built into the game after everything is translated.
-
January 3, 2019 at 8:05 pm #6692FilipeParticipant
ALright I already started working on the translation and I can deliver it in one month or less, I don’t know how much text there actually is or how many unknown words I have to learn. I’m using google translate to bulk translate most of the big texts and I’m honestly surprised how well it got most of the text correctly, tho it lacks the finishing touch alongside with untranslated words or even some bad and/or unchecked contribution by someone else.
Speaking of that I need to ask if switching gender in sentences for exp: “The Tartane is a recreational dinghy. Shes very slow and unmaneuverable.” this is all female but once in Portuguese “the Tartane” becomes male because “Barco” or “Navio” are male words but in the second sentence it can still be female because “embarcação” is female, so is it that bad? Everyone who knows “Navio” should as well know “embarcação” as they’re synonymous and I don’t think its bad but referring to the Tartane as a vessel kind draws out its type like making it generical in the sentence, it gives the impression that we’re no longer talking about the Tartane but just of any vessel instead.
Also, the nautical quiz will take a little bit longer since I’ll try to get the official nomenclature of the ship parts with the navy as it is not widespread very much, for some ship names I’ll try to get the translation too as some of them doesn’t seem to have one or there is more than one option, so I hope they can collaborate with us.
Before I forget there are some special characters: ç / Ç / ~ / º / ª that will be needed so if there be more I’ll contact later.-
January 3, 2019 at 9:23 pm #6693JeffreyKeymaster
Speaking of that I need to ask if switching gender in sentences for exp: “The Tartane is a recreational dinghy. Shes very slow and unmaneuverable.” this is all female but once in Portuguese “the Tartane” becomes male because “Barco” or “Navio” are male words but in the second sentence it can still be female because “embarcação” is female, so is it that bad?
I don’t know…the “she” in that case is the English tradition to refer to ship vessels as female. I can’t say whether that makes sense in other languages/cultures.
-
-
-
February 3, 2019 at 6:03 am #6781JeffreyKeymaster
Good news to help translation. The game was not conducive to multiple languages, without special install to overwrite everything in a ‘russian’ directory. I have fixed that, so that it will be much easier to have different languages (well, easier in the sense the code will work nicely…I do not have a translator).
But, I also have the original COAS cd, with English, French, German, Italian and Spanish. So now that I’ve completed this, I am going to upload at least the COAS languages to Itch. What this will allow, is that you can simply change the language in config.exe, save and launch. That easy.
Considering the base of both GOF and ERAS is mostly COAS, that might even get you most of the way there for an ERAS translation, if you want to grab the COAS Spanish texts/dialogs. Anyway, pretty cool that I’ve made this easier to run multiple languages, with no special install and it will actually keep and retain all language texts and can even be switched back/forth among different languages at will.
There are a handful of dialogs/interface verbiage that did not exist in COAS, and are still in English, but…whatever.
-
-
January 11, 2019 at 11:18 pm #6713MaltacusParticipant
Where is the quest with the six murderers defined/coded (those that want the hero to go with them to the local cave and dungeon before midnight)? How is it that officers can’t follow into the cave when the quest is active while they can otherwise?
Where is the text for the dialogue in the quests written?-
January 12, 2019 at 1:58 am #6716JeffreyKeymaster
Dialog is in Program\Text\Dialogs\Quest\Berlars.h and Program\DIALOGS\russian\Quest\Berglars.c
The locations can be found in Program\characters\LSC_Q2Utilite.c, function BerglarsInit()
case “Step_overAll” sets
LAi_LocationDisableOffGenTimer(pchar.questTemp.tugs.(sTemp), 1);Sets officers disabled for that location, for a day…see Program\loc_ai\LAi_location.c
-
January 12, 2019 at 12:00 pm #6717MaltacusParticipant
I can’t find case “Step_overAll” in LSC_Q2Utilite.c, can you paste a portion of the code to show where it is?
.
Would changes to LAi_location.c be compatible with saved games or do they have effect only when you start a new one?-
January 13, 2019 at 2:48 am #6722JeffreyKeymaster
case “Step_overAll” is in Berglars.c, LSC_Q2Utilite.c, function BerglarsInit() sets all the characters and town locations where you will be approached and asked to the caves/dungeons by various parties.
The functions in LAi_location.c occur real-time, when called by other functions and are not dependent on save game state.
-
January 13, 2019 at 12:42 pm #6723MaltacusParticipant
I really can’t find it, neither when I look or use the search function. Here is how the function looks for me:
void BerglarsInit()
{
ref sld;
pchar.questTemp.tugs.berglarState = 1;
pchar.questTemp.tugs.berglarSentJons = “SentJons_TownCave”;
pchar.questTemp.tugs.berglarSentJons.hp = 160;
pchar.questTemp.tugs.berglarSentJons.locator = “basement1”;
sld = GetCharacter(NPC_GenerateCharacter(“BerglarSentJons”, “citiz_12”, “man”, “man”, 22, ENGLAND, -1, false));
sld.name = DLG_TEXT[0];
sld.lastname = DLG_TEXT[1];
sld.rank = 25;
sld.city = “SentJons”;
sld.location = “SentJons_town”;
sld.location.group = “goto”;
sld.location.locator = “goto4”;
sld.dialog.filename = “Quest\Berglars.c”;
sld.greeting = “pirat_quest”;
GiveItem2Character(sld, “pistol2”);
GiveItem2Character(sld, “blade21”);
sld.money = 11460;
sld.talker = 7;
SetSelfSkill(sld, 10, 10, 60, 40, 70);
SetCharacterPerk(sld, “SwordplayProfessional”);
LAi_SetHP(sld, 1.0, 1.0);
LAi_SetLoginTime(sld, 6.0, 21.99);
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, “ENGLAND_CITIZENS”);
pchar.questTemp.tugs.berglarFortFrance = “FortFrance_Dungeon”;
pchar.questTemp.tugs.berglarFortFrance.hp = 180;
pchar.questTemp.tugs.berglarFortFrance.locator = “basement1”;
sld = GetCharacter(NPC_GenerateCharacter(“BerglarFortFrance”, “citiz_11”, “man”, “man”, 23, FRANCE, -1, false));
sld.name = DLG_TEXT[2];
sld.lastname = DLG_TEXT[3];
sld.rank = 25;
sld.city = “FortFrance”;
sld.location = “FortFrance_town”;
sld.location.group = “goto”;
sld.location.locator = “goto5”;
sld.dialog.filename = “Quest\Berglars.c”;
sld.greeting = “pirat_quest”;
GiveItem2Character(sld, “pistol3”);
GiveItem2Character(sld, “blade24”);
sld.money = 22670;
sld.talker = 7;
SetSelfSkill(sld, 10, 70, 10, 50, 60);
SetCharacterPerk(sld, “BasicDefense”);
LAi_SetHP(sld, 1.0, 1.0);
LAi_SetLoginTime(sld, 6.0, 21.99);
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, “FRANCE_CITIZENS”);
pchar.questTemp.tugs.berglarMarigo = “Marigo_Cave”;
pchar.questTemp.tugs.berglarMarigo.hp = 200;
pchar.questTemp.tugs.berglarMarigo.locator = “gate_back”;
sld = GetCharacter(NPC_GenerateCharacter(“BerglarMarigo”, “citiz_1”, “man”, “man”, 21, HOLLAND, -1, false));
sld.name = DLG_TEXT[4];
sld.lastname = DLG_TEXT[5];
sld.rank = 25;
sld.city = “Marigo”;
sld.location = “Marigo_town”;
sld.location.group = “goto”;
sld.location.locator = “goto5”;
sld.dialog.filename = “Quest\Berglars.c”;
sld.greeting = “pirat_quest”;
GiveItem2Character(sld, “pistol6”);
GiveItem2Character(sld, “blade22”);
sld.money = 27480;
sld.talker = 7;
SetSelfSkill(sld, 60, 10, 10, 40, 40);
SetCharacterPerk(sld, “CriticalHit”);
LAi_SetHP(sld, 1.0, 1.0);
LAi_SetLoginTime(sld, 6.0, 21.99);
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, “HOLLAND_CITIZENS”);
pchar.questTemp.tugs.berglarPanama = “Panama_Cave”;
pchar.questTemp.tugs.berglarPanama.hp = 200;
pchar.questTemp.tugs.berglarPanama.locator = “gate_back”;
sld = GetCharacter(NPC_GenerateCharacter(“BerglarPanama”, “citiz_4”, “man”, “man”, 27, SPAIN, -1, false));
sld.name = DLG_TEXT[6];
sld.lastname = DLG_TEXT[7];
sld.rank = 27;
sld.city = “Panama”;
sld.location = “Panama_town”;
sld.location.group = “goto”;
sld.location.locator = “goto5”;
sld.dialog.filename = “Quest\Berglars.c”;
sld.greeting = “pirat_quest”;
GiveItem2Character(sld, “pistol3”);
GiveItem2Character(sld, “blade33”);
sld.money = 30180;
sld.talker = 8;
SetSelfSkill(sld, 10, 10, 70, 50, 70);
SetCharacterPerk(sld, “AdvancedDefense”);
LAi_SetHP(sld, 1.0, 1.0);
LAi_SetLoginTime(sld, 6.0, 21.99);
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, “SPAIN_CITIZENS”);
pchar.questTemp.tugs.berglarCartahena = “Cartahena_Cave”;
pchar.questTemp.tugs.berglarCartahena.hp = 170;
pchar.questTemp.tugs.berglarCartahena.locator = “gate_back”;
sld = GetCharacter(NPC_GenerateCharacter(“BerglarCartahena”, “citiz_7”, “man”, “man”, 22, SPAIN, -1, false));
sld.name = DLG_TEXT[8];
sld.lastname = DLG_TEXT[9];
sld.rank = 22;
sld.city = “Cartahena”;
sld.location = “Cartahena_town”;
sld.location.group = “goto”;
sld.location.locator = “goto5”;
sld.dialog.filename = “Quest\Berglars.c”;
sld.greeting = “pirat_quest”;
GiveItem2Character(sld, “pistol6”);
GiveItem2Character(sld, “blade23”);
sld.money = 19980;
sld.talker = 7;
SetSelfSkill(sld, 60, 10, 10, 50, 50);
SetCharacterPerk(sld, “Sliding”);
LAi_SetHP(sld, 1.0, 1.0);
LAi_SetLoginTime(sld, 6.0, 21.99);
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, “SPAIN_CITIZENS”);
pchar.questTemp.tugs.berglarSantaCatalina = “SantaCatalina_Cave”;
pchar.questTemp.tugs.berglarSantaCatalina.hp = 230;
pchar.questTemp.tugs.berglarSantaCatalina.locator = “gate_back”;
sld = GetCharacter(NPC_GenerateCharacter(“BerglarSantaCatalina”, “citiz_9”, “man”, “man”, 25, SPAIN, -1, false));
sld.name = DLG_TEXT[10];
sld.lastname = DLG_TEXT[11];
sld.rank = 25;
sld.city = “SantaCatalina”;
sld.location = “SantaCatalina_town”;
sld.location.group = “goto”;
sld.location.locator = “goto5”;
sld.dialog.filename = “Quest\Berglars.c”;
sld.greeting = “pirat_quest”;
GiveItem2Character(sld, “pistol4”);
GiveItem2Character(sld, “topor2”);
sld.money = 30450;
sld.talker = 7;
SetSelfSkill(sld, 10, 10, 80, 50, 80);
SetCharacterPerk(sld, “CriticalHit”);
LAi_SetHP(sld, 1.0, 1.0);
LAi_SetLoginTime(sld, 6.0, 21.99);
LAi_SetCitizenType(sld);
LAi_group_MoveCharacter(sld, “SPAIN_CITIZENS”);
} -
January 13, 2019 at 5:37 pm #6726JeffreyKeymaster
You had asked a few questions about this, so I’ll try to clear it up.
DIALOGS\russian\Quest\Berglars.c controls the dialog logic (the actual text for dialogs is in TEXT\DIALOGS\Quest\Berglars.h), and also has the case “Step_overAll”. During the talk with that person, it eventually hits that case and that is where the officers are disabled in the meet location, for 1 day: LAi_LocationDisableOffGenTimer(pchar.questTemp.tugs.(sTemp), 1);
The whole quest line you are asking about is set up at game init, in the function BerglarsInit() and that is in LSC_Q2Utilite.c. All the relevant characters for this quest are created up front and set in various towns…you can see them in the character property assigned like: sld.location = “Cartahena_town”;
-
-
-
-
January 13, 2019 at 4:24 pm #6725MaltacusParticipant
How do you set an armor item to require or not require the cuirass skill to be worn (such as the French fencing gloves)? How do you do the same with pistols and the shooting skills?
Would it be possible to link swords to a fencing skill in the same manner?-
January 13, 2019 at 5:58 pm #6727JeffreyKeymaster
Right now, the cuirass thing to skip required perk is hardcoded by name, but now that you bring it up, I think I want to change that to carry a .property that is set in initItems.c for that feature. I think I’m going to add item.requirePerk in order to check them. But for now, currently, it checks by item.id name.
characters\CharacterUtilite.c
FindCharacterItemByGroup
…
For guns, the chargeQ number value is checked and must be under a certain number, depending on whether the character has the required perks:bShootist = IsCharacterPerkOn(chref,"Gunman"); bClever = IsCharacterPerkOn(chref,"GunProfessional"); ... bShootistCheck = n < 4 && bShootist; bGunCheck = n < 2 || bShootistCheck || bClever; if (bGunCheck && curGunValue > maxGunValue) { maxGunValue = curGunValue; resultItemId = refItm.id; } ... For cuirass bCirassCheck = refItm.id == "cirass6" || refItm.id == "cirass12" || refItm.id == "cirass13"; if( IsCharacterPerkOn(chref, "Ciras") || bCirassCheck ) { //return refItm.id; curCirassValue = stf(refItm.CirassLevel); if (curCirassValue > maxCirassValue) { maxCirassValue = curCirassValue; resultItemId = refItm.id; } } ...
INTERFACE\items.c
ThisItemCanBeEquip
…bool bCirassCheck = arItem.groupID == CIRASS_ITEM_TYPE && !IsCharacterPerkOn(xi_refCharacter,"Ciras") && arItem.id != "cirass6" && arItem.id != "cirass12" && arItem.id != "cirass13"; //if (arItem.groupID == CIRASS_ITEM_TYPE && !IsCharacterPerkOn(xi_refCharacter,"Ciras") && arItem.Clothes == false) if (bCirassCheck && arItem.Clothes == false) { return false; }
For guns:
if (arItem.groupID == GUN_ITEM_TYPE) { if (!CheckAttribute(arItem,"chargeQ") ) { return false; } int chrgQ = sti(arItem.chargeQ); if (chrgQ >= 2 && !IsCharacterPerkOn(xi_refCharacter,"Gunman") ) { return false; } if (chrgQ >= 4 && !IsCharacterPerkOn(xi_refCharacter,"GunProfessional") ) { return false; } }
I suppose we could do similarly for certain blades. The only requirement would be to identify which blades require certain perks, set them up in initItems with some form of attribute we add, then add the checks in both the CharacterUtilite.c for officer auto-add, and INTERFACE\items.c for enabling/disabling the Equip button.
-
January 17, 2019 at 5:42 am #6728JeffreyKeymaster
Just uploaded a new update and I did make the change I spoke of…both cuirass and muskets contain an attribute in the item to identify the properties and are no longer hardcoded to look for names.
-
-
January 18, 2019 at 6:44 pm #6731OldtimerParticipant
Can this game use dx11? My new system has it but when starting Maelstrom I`m notified that d3dx9…… is missing and needs to be reinstalled.
Rgds, Oldtimer
-
January 18, 2019 at 7:29 pm #6733JeffreyKeymaster
No. It would be nice to offer it, but I eventually decided it is way too much work to port to DX11 all by myself. All the FVF would have to be changed, the creation/writing of shaders to replicate/replace the FVF features used in the game (FVF is not available in DX11…has been replaced), and a complete overhaul of the pipeline calls…there are thousands of lines of code to sift through and change, while also learning the new DX11 methods to figure out how to do the remove/replace. I don’t have the kind of time and DX know-how to do this, considering this is just a part-time hobby and I have a regular job; I already spend too much time on this as it is.
You will have to install DX9. You might be getting that message because it uses d3dx9_43. I supply all the needed DirectX components in the download. Also be sure to install the C++ Runtimes that are also supplied.
-
-
January 18, 2019 at 8:02 pm #6735MaltacusParticipant
The hero characters that have the most models (for when they equip armor or attire) have some files with “_mush” in the filename. What is the significance of that? Are files called xxx_mush supposed to combine with other model files or something?
-
January 19, 2019 at 12:41 am #6736JeffreyKeymaster
Those are the model names used for that character if they ever equip a musket. The model has to coordinate with a musket animation file, so only some of them have models that are capable. I’m also not really sure if there is even an opportunity in the game play for characters other than a special few to equip one, but I see code for changing to a _mush appended model name if a character equips one.
-
-
January 25, 2019 at 2:09 pm #6740FilipeParticipant
Why there are 2 Shores of Mosquito in 2 different places? Wich one is the true Shores of Mosquito: Shore47 or Shore53?
-
January 27, 2019 at 5:22 pm #6759MaltacusParticipant
Is there a way to make a specific NPC hero spawn in a fixed location, together with the main character? Like if you want Peter Cloise and Edward Davis together from scratch.
-
January 28, 2019 at 12:52 am #6765JeffreyKeymaster
Hmmm, do you mean that if you the PC is Peter Cloise, every time you enter a town port, you will find NPC Edward Davis around that same town, like in the tavern?
-
January 28, 2019 at 2:45 am #6766MaltacusParticipant
No, only when the game starts. Then they start to move around as usual. If either don’t want to join in the beginning, well, then they apparently had a falling out or just got tired of each other.
Alternatively; every time you start the game Peter Cloise and Edwards Davis start in Pirate settlement if they are NPC:s and the PC as pirate always starts in Pirate settlement.
.
My aim is to put characters with ties to one another in the same starting location to symbolize that tie.
-
-
January 28, 2019 at 6:15 pm #6768JeffreyKeymaster
OK, here’s how I’d probably go about that:
In file RESOURCE\INI\texts\russian\HeroDescribe.txt, add a new line for each character that would have a set starting location:
startLoc_1 {Pirates}
startLoc_2 {Alice}
startLoc_3 {FortFrance}Each individual character is assigned a sequential number in the file, so character one has attributes set as _1, character 2 has _2, etc. You do not need to add that value to every character; if you only want some of them to start in a specific place, just add this new line to those specific characters.
The values in the braces {} match the colony id values seen in Program\colonies\Colonies_init.c:
Colonies[n].id = “FortFrance”;
Then, in Program\scripts\PsHero.c the function InitPSHeros() sets up information at the start of a new game for all the NPC heroes. Within that function is a call to setNewMainCharacter (also defined in PsHero.c), so find that function and add to it a lookup for this new piece of information:
void setNewMainCharacter... ... totalInfo = LanguageConvertString(idLngFile, "startLoc_" + num); if(totalInfo != "") { ch.location.town = totalInfo; } else { ch.PGGAi.location.town = PGG_FindRandomTownByNation(sti(ch.nation)); } ch.PGGAi.location = "land";
Note that we have now moved the PGG_FindRandomTownByNation call to here now, so back in the function InitPSHeros(), scroll down a little past the setNewMainCharacter call and comment out these two lines because they will now no longer be needed:
//ch.PGGAi.location = "land"; //ch.PGGAi.location.town = PGG_FindRandomTownByNation(sti(ch.nation));
There is one more place we need to change, for the actual PC main character, and that is found in RPGUtilite.c, function initNewMainCharacter().
That function also calls setNewMainCharacter. But we will need to handle this a little differently, because a player has the option to choose a nation totally unrelated to their default and we can’t spawn the player in enemy territory if they choose a Pirate, but change to French nation or Spain, or ??? whatever they wish.
You will need to decide what you want to do there. One possibility is to simply check if the nation they chose is enemy to the default. If the char default is not enemies with the nation chosen by the player, go ahead and spawn in the the place you want. If they are enemies, handle as current code exists. The spot to check for this will be a little lower, after the setNewMainCharacter call in the initNewMainCharacter() function:
setNewMainCharacter(idLngFile, ch, startHeroType); //Immediate retrieve the nation and location because they will tell you what came from HeroDescribe.txt string defLoc = ch.location.town; int defNation = sti(ch.nation); ... ... //Further down, where .ToCityId is assigned, is where code to decide will be added if(GetNationRelation(defNation, sti(ch.nation) != RELATION_ENEMY) { ch.HeroParam.ToCityId = defLoc; } //Just before this line...the ch.nation has already been changed to the player selection so check //our stored value and the new value to see if enemies ch.HeroParam.Location = ch.HeroParam.ToCityId + "_town";
-
February 2, 2019 at 12:31 pm #6777MaltacusParticipant
The game crashes when I try to paste that into PsHero.c. I don’t understand anything about how this code works and what is wrong. Could you show exactly what it should look like after “setNewMainCharacter(idLngFile, ch, n); //This sets nation, animation, model, etc. based on HeroDescribe.txt”
in order to work?
-
-
January 29, 2019 at 5:47 pm #6769JeffreyKeymaster
MK and I discussed this and it is an intriguing idea.
We were thinking of making this a mod option where if toggled On, we automatically add one of those characters described as a “partner” in the short bios, as a companion to the PC.
What do you think?
-
January 30, 2019 at 11:33 am #6771OldtimerParticipant
Hi,
yes, that would enhance immersion. This might perhaps apply to NPC:s who were historical friends/partners too.
Rgds, Oldtimer
-
February 1, 2019 at 11:11 am #6773MaltacusParticipant
Excellent idea, that is even better than spawning them at the same location. Although some characters should start at fixed locations (optional) since they were connected to them. Manuel Ribeiro Pardal for example would be at home at Cartagena since he works for the towns governor.
.
While I used Cloise and Davis as examples I will confess that my own interest is much more egocentric, as I added myself and my wife in the game. She has been one hard pirate queen to locate so far, and using F10 ruins the immersion for me.
-
-
-
February 1, 2019 at 11:26 pm #6774MaltacusParticipant
Speaking of which, what factors determine whether or not an npc captain will join you, and where can you edit those?
.
Also, how do you make a character start as an officer of another character?-
February 2, 2019 at 12:18 am #6775JeffreyKeymaster
The dialog for the decision to join you as a companion is in DIALOGS\russian\PGG_dialog.c
case “companion”:
They have to have a ship that is no better than 1 class lower than you, there is a random chance, and their relationship to you is not too damaged (see PGGChanceMeeting…a function I added where if they are the same alignment, some luck, they might still work with you if they are below 1/2 max relationship status…before my change, if you messed up the first mission it would dip below 1/2 and they would never work with you).
There is no such thing in the game for NPC captains to have officers.
-
February 2, 2019 at 8:17 am #6776MaltacusParticipant
I meant the NPC start as a companion to the PC, which I called join as officer as it makes them comparable to one. This thing you had recently discussed:
MK and I discussed this and it is an intriguing idea.
We were thinking of making this a mod option where if toggled On, we automatically add one of those characters described as a “partner” in the short bios, as a companion to the PC.
What do you think?
-
February 2, 2019 at 5:32 pm #6778JeffreyKeymaster
OK, understood. I don’t have this fully outlined just yet, but have an idea:
Similar to the solution for the NPC Hero start location, we will add something in HeroDescribe.txt, like _defComp_XX where XX is the number of the NPC Hero that you see for all the other values in that file.
The value will be the Hero# of the companion, so in the case of Cloise and Davis, we’d put the hero # for Cloise as his companion, then similarly for Cloise:
defComp_94 {95}
…
…
defComp_95 {94}Since initNewMainCharacter gets called before the other heroes are set up in InitPsHeroes (I just recently corrected the spelling of that function, so yours will still be InitPsHeros), we will assign the companion at the end of InitPsHeroes. setNewMainCharacter can read the number for that companion defComp_ and if exists, store it as a temp attribute: Pchar.defComp = totalInfo
If PChar has one to assign, during the loop of the NPC creation within InitPsHeroes, check for n = Pchar.defComp. If that attribute for pchar exists and n matches, assign them as a companion at the bottom of that for(n… loop, just before the next character iteration, similar to how the case “companion”: does it in PGG_dialog.c:
NPChar.PGGAi.IsPGG = false; NPChar.PGGAi.location.town = "none"; NPChar.Dialog.TempNode = "hired"; NPChar.Dialog.FileName = "Enc_Officer_dialog.c"; NPChar.Payment = true; NPChar.Money = 0; SetBaseShipData(NPChar); DeleteAttribute(NPChar,"ship.sails"); DeleteAttribute(NPChar,"ship.masts"); DeleteAttribute(NPChar,"ship.blots"); Fantom_SetCannons(NPChar, "pirate"); Fantom_SetBalls(NPChar, "pirate"); DeleteAttribute(NPChar, "PGGAi.Task"); DeleteAttribute(NPChar, "PGGAi.LockService"); SetCharacterRemovable(NPChar, true); //This is the line that sets NPC as companion in your squadron SaveCurrentNpcQuestDateParam(NPChar, "Companion.CheckRelation");
-
-
-
-
February 17, 2019 at 4:16 pm #6803OldtimerParticipant
ITEMS leveling
Hi all,
I have been critical to leveling of items and by now I think that this might be connected to mine playing at reduced XP gain speed, by half. That`s why I generally have much better loadout from loot/roadside/chest finds when items I earlier wished for become available in shops.
I would like to make Conquistador, Cookson snubnose, French Courier pistol and Schiavona appear at lvl 1. How can I do that?
Rgds, Oldtimer
-
February 20, 2019 at 12:30 pm #6807FilipeParticipant
First, you need to know the items id, this can be done by pressing f11 and going to Installation on the right bottom side to enable the BetaTestMode then go to an unloaded town and check the items in any shop to get the ids.
After that go to Program\ITEMS\initItems.c to change the line “itm.minlevel = x” of the particular item id. Just be sure to go options – mod options and do a full reinit.-
February 21, 2019 at 8:35 am #6808OldtimerParticipant
Hi,
I do not know how to go to an unloaded town but I got the ids needed from the store I was visiting.
I modified the initItems.c and did not see any modded item in stores while playing for a while.When should I reinit? I did it in the Options from the start screen before starting a new playthrough.
BUT, for the items I wanted “itm.minlevel=1” already! Could the reason for them not appearing in shops be the “rare” value? I
ve never seen them in shops at lvl 1 and I
ve played the game for thousands rather than hundreds of hrs.
As an example:– “pistol41” should appear at lvl 1 and has “rare” value of 0.001. Never seen it in shops at all, no matter what lvl.
Should I try manipulating the “rare” values? And,
THX for your attn., Oldtimer
-
-
February 22, 2019 at 4:30 pm #6810JeffreyKeymaster
The .level and .rare settings only affect what will be found in corpse loots. For trader/store, those settings are ignored and only certain weapons are available. There is leveling there too, but it doesn’t use the settings. For trader items, another function is used, in file scripts/utils.c, called GiveItemToTrader().
In that function, blade29 is only found level 6 and above, blade82 level 10 and above, pistol33 level 4 and above, and pistol41 is never to be found.
If you want to change those, alter that function; it will not require an item re-init.
If the .level and .rare settings are changed, it will alter what can be found in body loot, but that requires an item re-init.
Pistol33, pistol41, blade82 can also be found in the random floor spawns that are sometimes encountered in tavern, jungle, cabin floors; the only one not found there is blade 29.
-
February 23, 2019 at 9:39 am #6816OldtimerParticipant
Mr. Jeffrey,
several blades become available at lvl 6 not only “blade29”. Which value should I change to make only that blade to appear at lvl 1, irand or?
Rgds, Oldtimer
-
February 23, 2019 at 8:07 pm #6820JeffreyKeymaster
If you want something to show at level 1 or above, scroll down to the bullets and add what you want like this:
TakeNItems(ch,"bullet", Rand(20)+10); TakeNItems(ch,"potion1", Rand(11)+1); //Add line here if (rand(8) == 1) { TakeNItems(ch,"blade29", 1);} if (rand(8) == 1) { TakeNItems(ch,"cirass1", 1);}
The rand(8) == 1 simply means there is a 1 out of 9 chance for the item to show up that day. If you want a lower chance, make the rand larger (e.g. rand(19) will be a 1 out of 20 chance, rand(4) will be a 1 out of 5 chance). rand returns a number between 0 and the number you use, so rand(19) will result in a value 0 to 19, thus by investigating whether it equals == 1 is a chance to statistically happen one out of twenty times in a random selection.
-
February 27, 2019 at 8:03 am #6841OldtimerParticipant
Changed “blade29” as per above and it works.
THX, Oldtimer
-
-
-
-
February 22, 2019 at 3:55 pm #6809FilipeParticipant
Blade29 chance = 0.1;
Blade82 chance = 0.01; – min level = 16.
Pistol33 chance = 0.001;
Pistol41 chance = 0.001.Other than the Conquistador all weapons should be available, tho those pistols will be a little harder than the Schiavona to find.
I took a look and the number of 0s is like the chance in any common RPG so 0.1 would be common, 0.01 uncommon, 0.001 rare and 0.0001 would be legendary.
You could tweak to your own likings but I suggest not changing the number of 0s to not make the majority of the other weapons obsolete too quickly, with this in mind changing 0.001 to 0.002 is a big step. I didn’t test it but 0.0015 should work as well. -
February 23, 2019 at 9:19 am #6815OldtimerParticipant
@Jeffrey, Filipe
THX for your attn., anyway, I have changed “rare” values for 2 weak but fun pistols and I am quite happy with that. I will not tamper with items in stores,(except for blade 29, maybe) as I do not find it necessary.
My gripe is that the selection of weapons at lvl 1 and 2 is so limited that it is not fun especially if playing with reduced XP gain. This selection should be widened somewhat, IMO. But added items could/should be weak enough to not OP the player and there are many such.
It is abt. selection, not power.Rgds, Oldtimer
-
March 5, 2019 at 12:56 am #6845VincentParticipant
I wanted to ask a couple questions for my own modding attempts.
First, is there a way that I can edit the starting gear and starting ship my player uses? And is there a way to specify which skin the starting ship uses as well that I can edit? Reason is, I never quite enjoyed starting with Svendsen’s current ship, and I fell in love the moment I saw the Snauw that was recently added.
Secondly, is there a way that I can specify which port my character (Svendsen) will start in? for example, I want to have him always start in Curaca, since I hope to eventually implement a short quest where he obtains a quest officer and a starting ship.
Also, how do I go about editing a ship’s skin? I’d like to try coming up with a customs kin for the Snauw, but don’t know how to do so.
-
March 6, 2019 at 4:38 pm #7102JeffreyKeymaster
In RESOURCE\INI\texts\HeroDescribe.txt, Svendson is heroLastname_145. A little further down in that same file, the unique model used is heroModel_145 {Depp12}.
For starting ship/gear, the file Program\characters\RPGUtilite.c function GrantHeroSpecifics set all of that. To change the starting ship for that character, change the line:
chr.Ship.Type = GenerateShip(SHIP_Merchantz, true);
For the Snauw, file RESOURCE\INI\ShipsDescribe.txt shows that is ship id “PinnaceSmall”. Looking in file Program\Ships\Ships_init.c, shows the PinnaceSmall is ShipsTypes[SHIP_PINNACESMALL]. So back to RPGUtilite.c, we change the line to this:
chr.Ship.Type = GenerateShip(SHIP_PINNACESMALL, true);
Now, when a new game is started with Svendson, he will start with the Snauw.
If there is a particular “skin” you want him to start with, identify the “hull number” of the textures you desire. Ships_init.c shows the PinnaceSmall has 6 different textures:
refShip.hullNums = 6;
And this corresponds to the RESOURCE\Textures\Ships\PinnaceSmall1 directory, showing Hull1-Hull6 folders.
If you want Svendson to use Hull3 textures, simply set the character attribute in RPGUtilite.c by changing this line to the number you want:
rRealShip.ship.upgrades.hull = 3; //Hull3
Getting that one character to always start in one location presents a bit of a mess, because currently you would have to “hardcode” a special case for that character and that is poor design. You would do this by changing the .ToCityId for just that character in Program\characters\RPGUtilite.c, function initNewMainCharacter to the colony id. The colony you want is found in Program\colonies\Colonies_init.c and is Colonies[n].id = “Villemstad”.
Just before this line:
//For Svendson, hardcode to Villemstad
if(ch.model == “Depp12”)
ch.HeroParam.ToCityId = “Villemstad”;ch.HeroParam.FromCityId = Colonies[FindNonEnemyColonyForAdventure(sti(ch.nation), ch.HeroParam.ToCityId, true)].id;
A better way, and one which we are implementing for characters that are essentially partners and usually together physically, is to add a new property in HeroDescribe.txt…something like heroStartLoc_145 {Villemstad}, read that the function setNewMainCharacter found in RPGUtilite.c and set the location from that new property like this:
totalInfo = LanguageConvertString(idLngFile, “heroStartLoc_” + num);
As for editing a ship skin/texture, talk to MK about it. He does a bunch of ’em.
-
-
March 8, 2019 at 12:43 pm #7443OldtimerParticipant
Hi all,
a while ago I asked how to change performance of players specific ship. Just that individual ship.
I also got an answer but… I cannot find it here anymore… I wanted to start tweaking this now and would very much appreciate advice on changing speed, manouver and point of sail for player ship.
Rgds, Oldtimer
-
March 10, 2019 at 7:30 pm #7457MaltacusParticipant
I have some notes about modding written down here that are relevant for most of the latest questions:
http://www.twcenter.net/forums/showthread.php?774091-Gentlemen-of-Fortune-Eras
Work in progress.-
March 10, 2019 at 8:54 pm #7458OldtimerParticipant
Hi,
I looked at your notes and cannot see where player ship and its data are located. To be clear what I want is to change data for ship given to player at start of a playthrough.
The code to paste for officers to follow, where paste it? For every possible location separately?
Rgds, Oldtimer
-
-
March 10, 2019 at 11:20 pm #7459VincentParticipant
Jeffrey, could you be just a little more specific about how to make my character start only in Willemstad? Should I use the first method you talked about, or should I try to use the second, and can you give me a bit more information about how to code it in? I’m a complete coding noob, so a lot of the info flies over my head even if I can make out the function of certain parts.
Also, I’d like to make my character start with a custom quest officer, could you give me some details about how this would be done? Like, how do I build/program one?
In regards to the starting quest I want to do, can you give me a brief rundown on the basics of how to set one up? I want to have Svendsen start without a ship in Willemstad and then run a sequence where he finds the aforementioned quest officer and together they get some guys and steal a ship from some smugglers. I’d also like to include a short cutscene at the beginning, so could you explain how I’d do that?
On that note, I have considered wanting to make said ship a semi-unique one – essentially, I want to make it a Snauw with a custom texture and custom stats that are a bit better than average, but how would I define that kind of thing?
Also, I’d like to edit the diplomat reputation/reconciliation, trade license, and letter of marque prices, but can’t seem to find the proper files now, can you define those for me?
I would also like to set brothel prices at a fixed value, but I can’t seem to make it work. Can you help me out? I tried setting a brothel visit at 1000 gold per time, but the game didn’t seem to recognize that value (it was an ongoing game instead of a new one, so that may have something to do with it. Also, is there a way I can edit the price for a tavern room when a proposition is involved? I find it a bit silly that the bartender would charge more than normal, and would like to make the price the same as a full night in the tavern regularly costs.
I would also like to ask how to make my character start with the custom flag perk, and if I can define a specific flag from the list that he will fly from the beginning? I noticed some code in one of the files that may do it, but wanted to check and see if I was right.
Finally, I’m thinking of remodelling some of the existing port towns to match something I like better – if I’m just remodelling an existing scene, then I assume I’ll need to use the Inez tool, is this correct? And what other special considerations might I need to take into account when doing this?
Lots of questions, I know, sorry. But I appreciate any effort you can make to answer them for me.
-
March 11, 2019 at 3:17 am #7462modernknight1Keymaster
I’m gonna jump in here for a minute. Vincent, I love your enthusiasm Mate!
I just wanna mention a few things.
1st: We are all really busy. Jeffrey continues to AMAZE me! He had 104 items on our priority list a couple months back and he has it down to around 80 now.
…and we keep adding things to it. A conversation on Discord the other day caused Jeffrey and I to discuss adding crew that had different appearances based on nationality in the regular sailing scenes (NOT BOARDING), on deck with the low fidelity “LOWMEN” crew models. This was after an investigation of seeing what it would take to make skeleton crews appear. He has already completed the work and is awaiting my new textures for the different crewmen now. We do that kind of stuff to ourselves all of the time.
He is really trying to finish up the new Swarming multi boarding perk and capability right now and he is almost there!
I am finishing up the numbers for all of the new bronze guns going in the game. This will be a MAJOR game changer. There are some BIG guns in this bunch including 50 pounder plus Basilisks!
There are four new ships going in the next major patch and I am still skinning a couple of them. I am still working on the retextures of the Spanish cities and renaming all of the taverns with unique signs. I work on this game almost every night and so does Jeffrey – even when you don’t hear from us, he and I usually talk on the phone an hour or two nearly every day.
I would ask folks to limit their queries a bit. When I started modding this game, there were few people who could answer my questions and I learned by delving deep into the folders and files and learning where everything was and how it fit and what it all did – and trying a bazzillion different things through trial and error – most of which never worked LOL.
So please try to ask Jeffrey one question at a time and just skin one cat at a time for now.
I wanted the new game map to be done before we started releasing the DLCs, but there is still so much to do. So I have decided that we will change the battles in the DLCs so that the first batch of famous pirate battles occur in places where location wont matter and will work with either the new or the old map. So after we get the next batch of work we are doing done – we are switching to totally focus on the Famous Pirate Battles DLCs.
MK
-
March 19, 2019 at 12:12 am #7480VincentParticipant
Yeah, sorry bout that. That’s some pretty exciting news you’ve shared with us, though, I’m waiting excitedly for the next update to come.
-
March 23, 2019 at 1:36 am #7482VincentParticipant
So, in the interest of getting answers to my questions from further up, I have decided to ask them one ata time, as recommended by MK. Here’s the first one;
I want to create a special quest officer, and then have my character (Svendsen) start off with him already joined to his party. How would I create this officer and assign him his chosen roles (chief gunner & fighter)? As a side note, I want to use the model for Joshamee Gibbs if possible, so I may ask for further help with that once I finish getting this officer coded.
-
March 23, 2019 at 8:00 am #7486OldtimerParticipant
Hi all,
one at a time was it, well:
– how can I reclassify a ship type? I want to assign the hoy to class 7.
Rgds, Oldtimer
-
March 30, 2019 at 4:20 pm #7501JeffreyKeymaster
Looking in RESOURCE\INI\texts\…\ShipsDescribe.txt, the Hoy is a ship id Lyon.
In Program\Ships\Ships_init.c, find refShip.Name = “Lyon”; and change to 7:
refShip.Class = 6;
This will only take effect for a new game. In order to change an existing save-game, some code would need to be written to iterate the RealShip array, and to re-init the ShipsTypes array and to either run that code in console.c, or add to the OnLoad logic.
-
-
March 30, 2019 at 1:11 am #7497VincentParticipant
Actually, I have anew project I’d like to do real quick, so if you guys get a moment, I’d prefer if you could answer this question before my last one.
I want to try and find a way to get the sex scene to play a movie clip instead of a sound file and a screen image. I find the current sex sounds alittle awkward, so I’m trying to build a mod that will play a collection of sex scenes from Fable 3. Or from The Witcher 3, if you want something more ‘adult’ and don’t mind the mismatch in the video characters. I have a cousin who’s a pretty good programmer, so I’ll see if I can hit him up in the meantime for some help, if he can spare time from his own projects.
-
March 30, 2019 at 3:47 pm #7500JeffreyKeymaster
Someone told me that was a feature in Caribbean Tales Supermod…it played softcore. I guess some folks at PA! and across this game’s community thought it was terribly offensive and took it out, LOL.
In Program\Quests\quests_reaction.c, find this:
case "PlaySex_1": ... ... SetLaunchFrameFormParam("", "", 0, fTemp); SetLaunchFrameFormPic("loading\inside\" + LanguageGetLanguage() + "\censored1.tga.tx"); LaunchFrameForm(); DoQuestCheckDelay("PlaySex_2", 1.0); break;
Replace those lines, before the break, with this:
PostVideoAndQuest("nameofvideo", 100, "PlaySex_2");
If you want extra work…go ahead and remove all the code above that randomly selects a timeout. You could use it as a video name randomizer, instead, if you want.
The nameofvideo is without the extension for .wmv files and nameofvideo.ogg (with extension for .ogg). Original game only supported .wmv, but we support .ogg too. Not sure if any others are supported as I’ve not tried them. I took out ddraw and replaced with DirectShow, but am not sure about the default codecs supported.
Then, just below case “PlaySex_1”, find case “PlaySex_2”: and simply remove the sound call:
case "PlaySex_2": //PlayStereoSound("sex\sex" + sGlobalTemp + ".wav");
Put the related video files here: RESOURCE\VIDEOS
-
-
April 12, 2019 at 7:49 pm #7532FilipeParticipant
What the suffixes somethingGen, somethingAcc and somethingDat mean?
-
April 17, 2019 at 6:54 pm #7548JeffreyKeymaster
I am not sure the files are consistent about adhering to the proper use for those, but they stand for the following:
Gen = Genitive case, typically meaning possessive
Dat = Dative case, indirect recipient of direct object
Acc = Accusative case, direct object of verb
-
-
April 17, 2019 at 6:07 pm #7546FilipeParticipant
The <sNation>, @<sNation>, <sCity>, <sName> those things found in texts are referring to what? I need to change it or add another one because the way PT is written it doesn’t match the way EN is written so things will not make sense if I can’t change it.
-
April 17, 2019 at 6:46 pm #7547JeffreyKeymaster
When you see @
, @ or similar in the quests_texts, those are “token” strings that will get replaced by the actual nation, city, ??? name. If they need to be reordered, or rearranged a different way for some languages, that becomes a problem. Because it will just seek out @ and replace with “England” or @ and replace with Port Royal, etc. If different languages need something more sophisticated to display that properly, we would have to think of a different/better way, but at the moment, I do not have a plan in mind for what to do about that.
-
-
April 27, 2019 at 10:01 am #7589OldtimerParticipant
Hi all,
Cornish lugger is it the pink in Ships.init?
Rgds, Oldtimer
-
May 3, 2019 at 8:24 am #7602OldtimerParticipant
RE: SKILL ITEMS
Hi all,
many skill items give same benefits while differing in price and/or feeling of exclusivity.
I would like to re-scale their skill points values to say something like 5; 10; 15 and so on. Where and how can I do that?
BTW, do companions benefit from leadership items or any items at all?
Rgds, Oldtimer
-
May 11, 2019 at 11:30 pm #7638FilipeParticipant
Why the texts in Program\Dialogs do repeat themselves? Like in one line it says ‘Yeah, alright’ and some lines forward it says it again (sometimes it’s more than 4 times), so is that really needed?
-
May 12, 2019 at 12:12 am #7639JeffreyKeymaster
I don’t know, I didn’t write it.
I can guess…
The original was written in Russian and someone translated to English. Perhaps a particular Russian phrase that has subtle differences in that language, translates to pretty much the same English phrase that is essentially the same each time, so that’s what was done.
Is it necessary to keep them all? No. But, to remove some, one would reduce the array size at the top, remove the lines, but before removing them, you must search the entire code for any cases in the dialog .c implementation files to any that might reference the removed lines (e.g. DLG_TEXT_BASE[112], DLG_TEXT_BASE[118], DLG_TEXT_BASE[122] for removing duplicates at line 114, 120 and 124 of the .h DLG_TEXT_BASE array file), change them to the one line you left remaining that has that same dialog. Then, what have you accomplished? You saved what…maybe 28 bytes of file-read time? It’s not worth the effort.
-
May 12, 2019 at 3:38 am #7640JeffreyKeymaster
Oh, and almost forgot the next most important step, that makes it totally not worth the effort…then, for every other use of DLG_TEXT_BASE[xxx] that is higher than the removed lines, you have to adjust their number lower for whatever number of lines you removed from the .h before them…either by 1, 2, 3, however many prior to the original number you just removed.
-
May 12, 2019 at 2:33 pm #7642FilipeParticipant
Hm, but wouldn’t be better to keep those lines blank and add it to the end of the file? Like 1, 8 and 22 repeats themselves, wouldn’t it work if you keep them blank and add the text to the last line so the other texts that have nothing to do with 1, 8 and 22 wouldn’t get messed by the line count?
-
May 12, 2019 at 4:20 pm #7643JeffreyKeymaster
If you do it that way, sure, you don’t have to adjust the array size, but you still have to do everything else I described. And what would be the point? It is a bunch of work that doesn’t really gain you anything. For example:
You move line 8 and 22 to the end of the array and make them a blank “” entry.
Then you have to find the .c file that uses that .h file for text. Usually it is just one file that is the .c file with the exact same name has the .h file, but not always; in some cases it is used by multiple .c files so you have to find them all and adjust the DLG_TEXT_BASE (or whatever the array variable name is…sometimes that is different too):
DLG_TEXT_BASE[8] change to DLG_TEXT_BASE[1]
DLG_TEXT_BASE[22] change to DLG_TEXT_BASE[1].But, since you moved 8 and 22 to the end, everything after those lines changed index, reduced by either one line for everything 9 to 22 and everything after 22 reduce by two lines:
DLG_TEXT_BASE[9] change to DLG_TEXT_BASE[8]
DLG_TEXT_BASE[10] change to DLG_TEXT_BASE[9]
DLG_TEXT_BASE[11] change to DLG_TEXT_BASE[10]
DLG_TEXT_BASE[12] change to DLG_TEXT_BASE[11]
DLG_TEXT_BASE[13] change to DLG_TEXT_BASE[12]
…etc. to DLG_TEXT_BASE[22]For 22 and above:
DLG_TEXT_BASE[22] change to DLG_TEXT_BASE[20]
DLG_TEXT_BASE[23] change to DLG_TEXT_BASE[21]
DLG_TEXT_BASE[24] change to DLG_TEXT_BASE[22]
DLG_TEXT_BASE[25] change to DLG_TEXT_BASE[23]
DLG_TEXT_BASE[26] change to DLG_TEXT_BASE[24]
…etc. all the way to the end.
-
-
-
May 27, 2019 at 7:57 am #7674OldtimerParticipant
Starting equipment.
How can I change appropriate code in GrantHeroSpecifics so that hero starts without a ship?
Some heroes have no pistol indicated in GrantHeroSpecifics but start with one anyway, pistol or lbr pistol. How can I change this? As of now I can add pistols but see no way to get rid of their std pistol.
Rgds, Oldtimer
-
May 27, 2019 at 4:05 pm #7675JeffreyKeymaster
They have another gun because the hero gets equipment based on the hero type in initMainCharacterItem(), before GrantHeroSpecifics (not every character is handled in GrantHeroSpecifics, so this ensures they all get a gun of some type).
If you want to remove the gun and ship, do so in their case block of GrantHeroSpecifics. If they don’t have a block, then add one, because if they don’t have a block, they get the default, which is at the bottom of the GrantHeroSpecifics function. If you only want the player hero affected, be sure to check for the index equals main character index, otherwise the NPC hero out in the “wild” for that same character will have no gun and no ship.
Example, in GrantHeroSpecifics:
case "Dep0": if(sti(chr.index) == GetMainCharacterIndex()) { chr.Ship.Type = SHIP_NOTUSED; RemoveOfficerEquip(chr, GUN_ITEM_TYPE); } else { chr.Ship.Type = GenerateShip(SHIP_FLEMISHGALLEON, true); rRealShip = GetRealShip(sti(chr.Ship.Type)); if(CheckAttribute(rRealShip, "hullNums")){ if(sti(rRealShip.hullNums) >= 5) rRealShip.ship.upgrades.hull = 5; //Hull 5 } } chr.Ship.Name = "Neptuno"; GiveItem2Character(chr, "map_normal"); GiveItem2Character(chr, "patent_fra"); GiveItem2Character(chr, "spyglass3"); GiveItem2Character(chr, "blade15"); GiveItem2Character(chr, "blade72"); GiveItem2Character(chr, "pistol38"); GiveItem2Character(chr, "jewelry26"); GiveItem2Character(chr, "jewelry42"); GiveItem2Character(chr, "jewelry1_1"); GiveItem2Character(chr, "jewelry7_1"); GiveItem2Character(chr, "jewelry5_1"); GiveItem2Character(chr, "jewelry8_2"); SetCharacterPerk(chr, "FlagFra"); SetCharacterPerk(chr, "FlagHol"); SetCharacterPerk(chr, "FlagSpa"); chr.money = 25000; break;
If you don’t know the case string for the character, look it up in HeroDescribe.txt.
-
May 28, 2019 at 11:34 am #7676OldtimerParticipant
Mr. Jeffrey,
THX for this. While I partly understand what to do I should perhaps mention that what I want is to change the loadout of some PC:s to better conform with their background, as I see it. So it is not only removing a pistol but perhaps changing it to another. So how would the block look like for say, J. Pitt, Esq.? My suggestion:
case “Pitt”:
if(sti(chr.index) == GetMainCharacterIndex()) {
chr.Ship.Type = SHIP_NOTUSED;
RemoveOfficerEquip(chr, GUN_ITEM_TYPE);GiveItem2Character(chr, “jewelry67”);
GiveItem2Character(chr, “jewelry9”);
GiveItem2Character(chr, “jewelry45”);
GiveItem2Character(chr, “jewelry71”);
GiveItem2Character(chr, “jewelry44”);
GiveItem2Character(chr, “jewelry30”);
GiveItem2Character(chr, “Mineral2”);
GiveItem2Character(chr, “Mineral12”);
GiveItem2Character(chr, “Mineral23”);
GiveItem2Character(chr, “Mineral3_1”);
GiveItem2Character(chr, “blade48”);
GiveItem2Character(chr, “blade80”);
GiveItem2Character(chr, “pistol56”);Could that work? And if I want to remove some items is it enough to put ## before GiveItem…….?
Rgds, Oldtimer
-
May 29, 2019 at 10:57 am #7677OldtimerParticipant
Forget abt. the above. I have changed GrantHero Specifics for Pitt to:
case “Pitt”:
if(sti(chr.index) == GetMainCharacterIndex()) {
chr.Ship.Type = SHIP_NOTUSED;
RemoveOfficerEquip(chr, GUN_ITEM_TYPE);
}
chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true);
chr.Ship.Name = “Kipper”;
GiveItem2Character(chr, “jewelry67”);
GiveItem2Character(chr, “jewelry9”);
GiveItem2Character(chr, “jewelry45”);
GiveItem2Character(chr, “jewelry71”);
GiveItem2Character(chr, “jewelry44”);
GiveItem2Character(chr, “jewelry30”);
GiveItem2Character(chr, “Mineral2”);
GiveItem2Character(chr, “Mineral12”);
GiveItem2Character(chr, “Mineral23”);
GiveItem2Character(chr, “Mineral3_1”);
GiveItem2Character(chr, “blade48”);
GiveItem2Character(chr, “blade80”);
GiveItem2Character(chr, “pistol56”);
chr.money = 3000
What happens is that lbr pistol is still in inventory, only not equipeed. The ship is still there also. Looked up HeroDescribe.txt and it looks like GrantHeroSpecifics.
I suppose there should be an else something after (chr,GUN_ITEM_TYPE);
} but what?Rgds, Oldtimer
-
May 29, 2019 at 2:38 pm #7678JeffreyKeymaster
The ship is still there because you need an “else” block for the GenerateShip line, otherwise it executes and creates the ship anyway after you set to SHIP_NOTUSED. Also should probably equip the other gun.
if(sti(chr.index) == GetMainCharacterIndex()) { chr.Ship.Type = SHIP_NOTUSED; RemoveOfficerEquip(chr, GUN_ITEM_TYPE); } else { chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true); chr.Ship.Name = “Kipper”; } GiveItem2Character(chr, “jewelry67”); GiveItem2Character(chr, “jewelry9”); GiveItem2Character(chr, “jewelry45”); GiveItem2Character(chr, “jewelry71”); GiveItem2Character(chr, “jewelry44”); GiveItem2Character(chr, “jewelry30”); GiveItem2Character(chr, “Mineral2”); GiveItem2Character(chr, “Mineral12”); GiveItem2Character(chr, “Mineral23”); GiveItem2Character(chr, “Mineral3_1”); GiveItem2Character(chr, “blade48”); GiveItem2Character(chr, “blade80”); GiveItem2Character(chr, “pistol56”); //Add to equip EquipCharacterbyItem(chr, "pistol56"); chr.money = 3000
Now, that previous gun is still in inventory and I see that the RemoveOfficerEquip function does something peculiar; it removes the gun from the character, but gives it to pchar, which is the main player character so it is really just giving the gun right back to you. I searched and found that function from the original devs is actually never used anywhere in the game, so if we modify it, it should do what you want and I would prefer it actually just remove entirely, rather than give to main character.
In file CharacterUtilite.c, find the function and remove the last line by commenting out //:
void RemoveOfficerEquip(ref chref, string groupID) { string sItemID = chref.equip.(groupid); DeleteAttribute(chref,"equip."+groupID); SetEquipedItemToCharacter(chref,groupID,""); TakeItemFromCharacter(chref, sItemID); //GiveItem2Character(pchar, sItemID); }
-
May 30, 2019 at 9:24 am #7679OldtimerParticipant
Mr. Jeffrey,
I changed GrantHeroSpecifics as per your template to:
case “Pitt”:
if(sti(chr.index) == GetMainCharacterIndex()) {
chr.Ship.Type = SHIP_NOTUSED;
RemoveOfficerEquip(chr, GUN_ITEM_TYPE);
}
else {
chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true);
chr.Ship.Name = “Kipper”;
}
GiveItem2Character(chr, “jewelry67”);
GiveItem2Character(chr, “jewelry9”);
GiveItem2Character(chr, “jewelry45”);
GiveItem2Character(chr, “jewelry71”);
GiveItem2Character(chr, “jewelry44”);
GiveItem2Character(chr, “jewelry30”);
GiveItem2Character(chr, “Mineral2”);
GiveItem2Character(chr, “Mineral12”);
GiveItem2Character(chr, “Mineral23”);
GiveItem2Character(chr, “Mineral3_1”);
GiveItem2Character(chr, “blade48”);
GiveItem2Character(chr, “blade80”);
GiveItem2Character(chr, “pistol56”);
//Add to equip
EquipCharacterbyItem(chr, “pistol56”);
chr.money = 3000and commented out GiveItem2Character(pchar, sItemID); command by inserting //.
The game will not start saying: Fail to create program. Check INI file or Program script files for syntax errors. So I am not quite where I want to be, yet.
THX for yoyr attn.,
Oldtimer
-
May 30, 2019 at 3:52 pm #7680JeffreyKeymaster
Weird. Looks like something to do with the copy/paste of double quotes is the problem.
Notice on some they are slanted/curled
“pistol56”
and other are just straight vertical"pistol56"
. Turns out when you pasted the slanted/curled into the code source, the game can’t compile them. They all have to be the straight kind:""
I found this by copy/paste from the browser into my game and that was the error.
-
May 31, 2019 at 9:28 am #7681OldtimerParticipant
Mr. Jeffrey,
here is code with double quotes changed:
case “Pitt”:
if(sti(chr.index) == GetMainCharacterIndex()) {
chr.Ship.Type = SHIP_NOTUSED;
RemoveOfficerEquip(chr, GUN_ITEM_TYPE);
}
else {
chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true);
chr.Ship.Name = “Kipper”;
}
GiveItem2Character(chr, “jewelry67”);
GiveItem2Character(chr, “jewelry9”);
GiveItem2Character(chr, “jewelry45”);
GiveItem2Character(chr, “jewelry71”);
GiveItem2Character(chr, “jewelry44”);
GiveItem2Character(chr, “jewelry30”);
GiveItem2Character(chr, “Mineral2”);
GiveItem2Character(chr, “Mineral12”);
GiveItem2Character(chr, “Mineral23”);
GiveItem2Character(chr, “Mineral3_1”);
GiveItem2Character(chr, “blade48”);
GiveItem2Character(chr, “blade80”);
GiveItem2Character(chr, “pistol56”);
//Add to equip
EquipCharacterbyItem(chr, “pistol56”);
chr.money = 3000Whether I change double quotes only for “pistol56” or everywhere the game will not start. When saving after pasting it warns that formatting will not be the same. And it is not. Does it it matter?
Rgds, Oldtimer
-
May 31, 2019 at 2:26 pm #7682JeffreyKeymaster
I don’t know what program you are using to save it, but the formatting message must be specific to the program you are using, because I don’t see such a message.
Make sure you keep the break; statement at the end, before the next case, and every statement has a semicolon. Here is the complete block, also showing the next case statement for completeness. This compiles for me:
case "Pitt": if(sti(chr.index) == GetMainCharacterIndex()) { chr.Ship.Type = SHIP_NOTUSED; RemoveOfficerEquip(chr, GUN_ITEM_TYPE); } else { chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true); chr.Ship.Name = "Kipper"; } GiveItem2Character(chr, "jewelry67"); GiveItem2Character(chr, "jewelry9"); GiveItem2Character(chr, "jewelry45"); GiveItem2Character(chr, "jewelry71"); GiveItem2Character(chr, "jewelry44"); GiveItem2Character(chr, "jewelry30"); GiveItem2Character(chr, "Mineral2"); GiveItem2Character(chr, "Mineral12"); GiveItem2Character(chr, "Mineral23"); GiveItem2Character(chr, "Mineral3_1"); GiveItem2Character(chr, "blade48"); GiveItem2Character(chr, "blade80"); GiveItem2Character(chr, "pistol56"); //Add to equip EquipCharacterbyItem(chr, "pistol56"); chr.money = 3000; break; case "Gaskon":
-
June 1, 2019 at 7:03 am #7684OldtimerParticipant
Mr. Jeffrey,
your patience and helpfullness are amazing.
I use WordPad for editing and saving. What program should I use to keep formatting?
Rgds, Oldtimer.
-
June 1, 2019 at 8:46 am #7685OldtimerParticipant
@Jeffrey,
I copied/pasted your last suggestion, got the formatting message BUT it works anyway. Format after pasting/saving looks to me like yours anyway.
Now I wanted to remove other starting items and tried this:
break;
case “Pitt”:
if(sti(chr.index) == GetMainCharacterIndex()) {
chr.Ship.Type = SHIP_NOTUSED;
RemoveOfficerEquip(chr, GUN_ITEM_TYPE);
RemoveOfficerEquip(chr, JEWELRY_ITEM_TYPE);
}
else {
chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true);
chr.Ship.Name = “Kipper”;
}
GiveItem2Character(chr, “jewelry67”);
GiveItem2Character(chr, “jewelry9”);
GiveItem2Character(chr, “jewelry45”);
GiveItem2Character(chr, “jewelry71”);
GiveItem2Character(chr, “jewelry44”);
GiveItem2Character(chr, “jewelry30”);
GiveItem2Character(chr, “Mineral2”);
GiveItem2Character(chr, “Mineral12”);
GiveItem2Character(chr, “Mineral23”);
GiveItem2Character(chr, “Mineral3_1”);
GiveItem2Character(chr, “blade48”);
GiveItem2Character(chr, “blade80”);
GiveItem2Character(chr, “pistol56”);
//Add to equip
EquipCharacterbyItem(chr, “pistol56”);
chr.money = 3000;
break;Got syntax error message and ofc the game refused to start. How shall I go abt. removing starting items:
– wholesale and
– piece by piece, i e just some of them.
Also change starting money for a specific char. I would like to play Erin but with 300 gold only and nothing else. As he escaped bondage back in Ireland, mustered for Caribbean and only has his wages after disembarking there. That is my idea abt. his background for roleplaying. Will that involve initMainCharacterItem()? BTW, Youngman avatar looks and moves horrible so in time I want to change that too.
Rgds, Oldtimer
-
June 1, 2019 at 4:06 pm #7686JeffreyKeymaster
Because there is no such definition for JEWELRY_ITEM_TYPE.
The valid types are:
#define GUN_ITEM_TYPE #define BLADE_ITEM_TYPE #define SPYGLASS_ITEM_TYPE #define PATENT_ITEM_TYPE #define CIRASS_ITEM_TYPE #define MAPS_ITEM_TYPE #define HEAD_ITEM_TYPE
But if you want to remove all the generic items a character got during the creation method, this will be easier then removing all the types individually:
if(sti(chr.index) == GetMainCharacterIndex()) { chr.Ship.Type = SHIP_NOTUSED; DeleteAttribute(chr, "equip"); chr.equip = ""; DeleteAttribute(chr, "items"); chr.items = ""; } else { chr.Ship.Type = GenerateShip(SHIP_BarcoCostero, true); chr.Ship.Name = "Kipper"; } GiveItem2Character(chr, "jewelry67"); GiveItem2Character(chr, "jewelry9"); GiveItem2Character(chr, "jewelry45"); GiveItem2Character(chr, "jewelry71"); GiveItem2Character(chr, "jewelry44"); GiveItem2Character(chr, "jewelry30"); GiveItem2Character(chr, "Mineral2"); GiveItem2Character(chr, "Mineral12"); GiveItem2Character(chr, "Mineral23"); GiveItem2Character(chr, "Mineral3_1"); GiveItem2Character(chr, "blade48"); GiveItem2Character(chr, "blade80"); GiveItem2Character(chr, "pistol56"); //Add to equip EquipCharacterbyItem(chr, "pistol56"); EquipCharacterbyItem(chr, "blade80"); chr.money = 3000;
If you want to remove items individually, you have to know what items they have and remove it by name, if it is an item that can be equipped, like those of the type definitions I listed, you need to call the unequip function for the type, then the removal. If it is not an item that can be equipped, then you just remove it by name:
TakeItemFromCharacter(chr, "potion1");
Since the generic character creation is a bit random and you won’t know the specific items they hold, probably simplest to remove everything with
DeleteAttribute(chr, "equip"); chr.equip = ""; DeleteAttribute(chr, "items"); chr.items = "";
Then just grant and equip what you want.
-
June 2, 2019 at 9:51 am #7688OldtimerParticipant
Mr. Jeffrey,
many THX for your help. Now we(well, mostly you) have sorted out equipment, how abt. making shipless PC:s start at a pier or beach instead of a non-existent boarding deck?
Rgds, Oldtimer
-
-
-
-
June 3, 2019 at 9:18 am #7689OldtimerParticipant
@Mr.Jeffrey,
I tried to tinker with code to make PC start with a ship but nothing else. Failed miserably. Well, a chimp will write Shakespeares complete works given time, but I do not have that much time…
Yet another thing, where can I find item id:s to print out? I can find them in the abandoned ship city traders inventory but it would be easier to just print out relevant file/s.
Rgds, Oldtimer
-
June 7, 2019 at 9:02 am #7691OldtimerParticipant
PERSISTENCE PAYS
Well, I have beaten the chimp, by trial and error… Now if a kind soul could tell me in what file(s) the item id:s are I would be very grateful. Skill items are what I really want to tweak as to have more logical benefit lvl:s.
Rgds, Oldtimer
-
June 11, 2019 at 7:37 pm #7693JeffreyKeymaster
Find the item description in RESOURCE\INI\texts\…\ItemsDescribe. Example:
itmname_jewelry3_2 {Order of the Golden Fleece} itmdescr_jewelry3_2 { A rare find, but not too uncommon among senior Spanish government officials or military officers - captains, Admirals or Generals. Tucked away in a fine suede leather bag is a Spanish medal of office which hangs round the neck as a necklace. It is the Order of the Golden Fleece and awarded by the King of Spain for great acts - often along with a knighthood. Made of gold, it must be worth a fortune. (+20 Leadership)
The Item ID is jewelry3_2. The bonus calculations are found in Program\characters\RPGUtilite.c. For example:
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, "jewelry3_2", iLev2Bonus);
-
June 12, 2019 at 10:07 am #7695OldtimerParticipant
Righty,
if we have this in ItemsDescribe:
itmname_booklight_2 {Effective Stances}
itmdescr_booklight_2 {
Authored by an Italian Maestro, this book emphasizes utilization of footwork to maximize agility with light weapons. (+20 Light Weapons)is it enough to change the +value to affect the item across the game world or is necessary to tweak RPGUtilite.c for each hero?
THX for your attn., Oldtimer
-
June 12, 2019 at 3:54 pm #7697OldtimerParticipant
Mr. Jeffrey,
I think made a thought blunder above. The + value is determined somewhere else, right?
Is that by: itmname_booklight_2 {Effective Stances} or itmdescr_booklight_2 { or by both lines together like: itmname_booklight_2 {Effective Stances}
itmdescr_booklight_2 { where the digit 2 sets the value to +20 or?Also as we have no +5 and +25 value items that would call for some new code, right?
Rgds, Oldtimer
-
June 12, 2019 at 4:19 pm #7698JeffreyKeymaster
The value added is determined by the result of function SetCharacterSkillByItem in the line:
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, "jewelry3_2", iLev2Bonus);
The SKILL_LEADERSHIP and other skill types are defined in characters\characters.h and determine where the item bonus will apply in the character stats.
The iLev2Bonus is the value of the bonus. That value is set a little higher up in the same function GetCharacterSkillSimple of RPGUtilite.c and they are all multiplied by 10:
if (LowerSkillBooks) { //Mod option for less powerful bonus iLev1Bonus = 1; iLev2Bonus = 1; iLev3Bonus = 1; iLev12Bonus = 0.5; iLev15Bonus = 0.8; iLev25Bonus = 1; iLev35Bonus = 1.5; } else { //original skill bonuses iLev1Bonus = 1; iLev2Bonus = 2; iLev3Bonus = 3; iLev12Bonus = 1.2; iLev15Bonus = 1.5; iLev25Bonus = 2.5; iLev35Bonus = 3.5; }
So iLev2Bonus equals 2 and will result in a +20 bonus. This would result in a +10 bonus:
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, "jewelry3_2", iLev1Bonus);
This would result in a +25 bonus:
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, "jewelry3_2", iLev25Bonus);
-
June 14, 2019 at 8:09 am #7700OldtimerParticipant
Mr. Jeffrey,
first things first. Is it possible to add a skill bonus lvl like:
//original skill bonuses
iLev1Bonus = 0.5;
iLev1Bonus = 1;
iLev2Bonus = 2;
iLev3Bonus = 3;
iLev12Bonus = 1.2;
iLev15Bonus = 1.5;
iLev25Bonus = 2.5;
iLev35Bonus = 3.5;As I only play with original skill bonuses(but equip only one skill item/skill).
Or do I have to modify the reduced bonuses somehow anyway?THX for your attn., Oldtimer
-
June 16, 2019 at 3:52 pm #7703OldtimerParticipant
Well a mistake, cannot have 2 identical names can I, so will this work:
//original skill bonuses
iLev1Bonus = 0.5;
iLev2Bonus = 1;
iLev3Bonus = 2;
iLev4Bonus = 3;
iLev12Bonus = 1.2;
iLev15Bonus = 1.5;
iLev25Bonus = 2.5;
iLev35Bonus = 3.5;to start with? Then the bonuses will have to be changed in SetCharacterSkillByItem, right?
Rgds, Oldtimer
-
June 16, 2019 at 5:46 pm #7706JeffreyKeymaster
Correct, you can’t use the same name. This code:
iLev1Bonus = 0.5;
iLev1Bonus = 1;Will just assign variable iLev1Bonus to .5, but the very next line will just replace its value with 1, so that’s what you will get.
You can replace the values like you show:
iLev1Bonus = 0.5;
iLev2Bonus = 1;
iLev3Bonus = 2;
iLev4Bonus = 3;
iLev12Bonus = 1.2;
iLev15Bonus = 1.5;
iLev25Bonus = 2.5;
iLev35Bonus = 3.5;But that will set all items that have iLev1Bonus to 5 if you don’t change any skillN = skillN + SetCharacterSkillByItem lines. If you want only some to have 5, but others still get 10, then you should probably make a different variable, make that 0.5 and use that for just some select items. Like an iLevHalfBonus:
float iLevHalfBonus, iLev1Bonus, iLev2Bonus, iLev3Bonus, iLev12Bonus, iLev15Bonus, iLev25Bonus, iLev35Bonus if (LowerSkillBooks) { iLevHalfBonus = 0.5; iLev1Bonus = 1; iLev2Bonus = 1; iLev3Bonus = 1; iLev12Bonus = 0.5; iLev15Bonus = 0.8; iLev25Bonus = 1; iLev35Bonus = 1.5; } else { //original skill bonuses iLevHalfBonus = 0.5; iLev1Bonus = 1; iLev2Bonus = 2; iLev3Bonus = 3; iLev12Bonus = 1.2; iLev15Bonus = 1.5; iLev25Bonus = 2.5; iLev35Bonus = 3.5; }
-
July 6, 2019 at 10:06 am #7738OldtimerParticipant
Mr. Jeffrey,
my apologies for not noticing your reply until now. Anyway from the below:
– float iLevHalfBonus, iLev1Bonus, iLev2Bonus, iLev3Bonus, iLev12Bonus, iLev15Bonus, iLev25Bonus, iLev35Bonus
if (LowerSkillBooks) {
iLevHalfBonus = 0.5;
iLev1Bonus = 1;
iLev2Bonus = 1;
iLev3Bonus = 1;
iLev12Bonus = 0.5;
iLev15Bonus = 0.8;
iLev25Bonus = 1;
iLev35Bonus = 1.5;
} else {
//original skill bonuses
iLevHalfBonus = 0.5;
iLev1Bonus = 1;
iLev2Bonus = 2;
iLev3Bonus = 3;
iLev12Bonus = 1.2;
iLev15Bonus = 1.5;
iLev25Bonus = 2.5;
iLev35Bonus = 3.5;
}I gather that similar code should be made for all skill item groups like, say, jewellery, right? As only books are indicated above.
Rgds, Oldtimer
-
-
-
-
June 14, 2019 at 11:28 pm #7701SchiavonnaParticipant
Dear MK & Jeffrey – How do I steal the source code for “Naval Action” from those scuzzy devs and give it to you to play with…without getting caught?
Just kidding! Do you have a copy of the model and texture for the Salamanca broadsword (in-game)? My texture file is borked – well, i’ve overwritten it accidentally and whats produced now in-game is yeeuuuch!!
Hope you’re both well!
-
June 16, 2019 at 5:37 pm #7705JeffreyKeymaster
This engine work is enough of a pain in the ass to resolve problems that should have never passed testing back in 2009…why would I want to torture myself with another problem child? LOL
Anyway, can you just grab it from an old copy you have already, or update from Itch? I’m not sure, but I would imagine if you remove the files from where Itch keeps it, an update will resolve it? Anyway, here are the file names and if you still need a one-off, I suppose I could package it up, upload and give you a link, but I’m saving myself some trouble if you have a way to self-serve from files that you already might have access to:
The item is “blade84”.
For item display interface, it uses RESOURCE\Textures\Interfaces\items32.tga.tx
Models:
MODELS\Items\blade84.gm
MODELS\Ammo\blade84.gm(don’t ask why they dupe, but the game sometimes uses Items, and sometimes Ammo, and I just don’t want to deal with figuring a way to consolidate as it’s more work than worth the effort, so we just keep them duped…same with textures)
Textures:
RESOURCE\Textures\Items\blade54.tga.tx
RESOURCE\Textures\Ammo\blade54.tga.txTrust me on the textures…the model name is 84, but opening the model, it actually uses texture name 54.
-
-
June 16, 2019 at 2:09 pm #7702FilipeParticipant
I’m having some trouble understanding how the fonts work.
Why the Font.ini doesn’t mention all the fonts.tga available ( I know that the english font doesn’t need the rusian one but there are some like font_1 that isn’t mentioned ) and there the file size and letters positions aren’t ‘synched” so to speak. So how can I modify them properly?
-
June 16, 2019 at 5:07 pm #7704JeffreyKeymaster
It is a little messy, but I’ll try to explain as best I’ve deduced.
First, I have no idea why FONT_1, FONT_2 and FONT_3 files are there. They do appear to be unused anywhere in the game and on my COAS cd circa 2009, those files are dated 2002, so my guess is they were copied there from maybe previous versions of this game and just left there for no reason? The released game was bug-ridden and incomplete; in fact, I recently found out that a whole set of dialog texts for the Dutch version was just missing for a quest line and the Teno quest was infamously broken dialog at the beginning and as a result, these quests were broken, invalid and could not be engaged by the player. There are surely many cases of useless/unneeded files as well.
The RESOURCE\INI\texts\language.ini file drives what fonts.ini file is used, depending on the defaultLanguage value in that file. That file looks like this:
[COMMON] defaultLanguage = Russian ;defaultLanguage = russian ;defaultLanguage = french ;defaultLanguage = german ;defaultLanguage = dutch ;defaultLanguage = spanish ;defaultLanguage = italian strings = common.ini GlobalFile = globals.txt [DIRECTORY] English = english Spanish = spanish German = german French = french Russian = russian Italian = italian Dutch = dutch [FONTS] English = fonts_eng.ini Spanish = fonts.ini German = fonts.ini French = fonts.ini Italian = fonts.ini Russian = fonts_rus.ini Dutch = fonts.ini [ConfigList] cfgLang = Russian
Any line that begins with a semicolon (;) is a “comment” reference and is ignored, but just left there for reference if someone wants to know other values to replace. So in the above example, the defaultLanguage = Russian means that the default language is Russian.
Of course that is not true. But that’s how they “supported” the different languages. Upon install, if another language was selected, it would actually overwrite correct .txt and dialog .h files from the cd into the Russian directories so they could just keep the russian file subdirectory the same for all versions. I actually just recently changed this so your translating work might go a little easier and to better support actually just changing languages in the config.exe, without a need to overwrite everything into the russian directories. For now, ERAS has an english directory (currently unused) and the original russian directory for the texts, but they are really both english. I didn’t want to break the existing game that defaulted everything for english to the russian file path, so that’s why they are identical at the moment.
Moving on…the defaultLanguage value, will decide the fonts_rus.ini (again, in ERAS so far fonts_rus.ini and fonts_eng.ini are exactly the same) and also the [DIRECTORY] value that matches, will determine what subdirectory in RESOURCE\INI\texts will be used for the various .txt files for common.ini, ItemsDescribe.txt, questbook, etc. That [DIRECTORY] is not used for the Program\Text files though. They were inconsistent there and actually just use the defaultLanguage value for what subdirectory to use for those .h dialog files. Since they used the same word for the language and directory in all cases, it’s simpler to just do that and you will never really know the difference, but technically, you could use a different directory name for the RESOURCE\INI\texts folders by changing the [DIRECTORY] in language.ini for a language (e.g. English = eng for a RESOURCE\INI\texts\eng\ directory), but you can’t for Program\Text folders (still has to remain Program\Text\english).
I added
[ConfigList] cfgLang = Russian
That is just for the config.exe to know what languages are supported right now, and allows the user to actually just select a different language there, launch, and the game just plays the new language, without the old method of overwriting all the files like the original install setup required.
The font*.ini file uses blocks that allow use of different fonts by type/size using a “name.” Example
[INTERFACE_NORMAL]
Various interface .ini files for screens and program scripts use the name INTERFACE_NORMAL when they want that particular font for display.
Some others that are used for sure:
[INTERFACE_BUTTON]
[interface_ultrasmall]
[INTERFACE_MENU]There are probably some names in the font*.ini files that aren’t really used anywhere as well, but I can’t tell you which because they are specified in many interface .ini files and the program script files and I’ve not gone through each font name in the font*.ini file and searched all the other .ini files and programs scripts for each name.
To map the characters in fonts_rus.ini, or another new one you might want to make for fonts_klingon.ini, you will need font texture files that contain all the characters you want to use, put them in the RESOURCE\Textures\FONTS directory with their own name:
interface normal font klingon.tga.tx
Add to language.ini:
[DIRECTORY]
Klingon = klingon[FONTS]
Klingon = fonts_klingon.iniNew folder in RESOURCE\INI\texts\klingon for all the translated text files.
New folder in Program\Text\klingon for all the translated dialog texts.
New folder in Program\DIALOGS\klingon for all the dialog files to use the new Program\Text\klingon files. Right now, they are mostly identical, but if there were changes in how grammar were used to concatenate various sentence fragments together in different languages, then the .h text might have different fragments and the Program\DIALOGS\klingon\*.c files might need to be altered to from the .h fragments together. I’m fairly certain that is NOT the case today, but that’s how it “should” have been done so that the translations aren’t so “weird” for some languages because they really just assumed the same sentence fragments strung together would make sense the same in every language; they don’t is what I’ve heard.New file for RESOURCE\INI\fonts_klingon.ini
In that file, to change one font name:
[INTERFACE_NORMAL] Texture = fonts\interface normal font klingon.tga.tx
These next specific the height/width of the texture file as saved, with the typical “row” height for each character line:
Texture_xsize = 256 Texture_ysize = 512 Height = 27
To map each character, you will need to reference the texture in a graphical editor that shows X/Y pixel coordinates of your cursor. Find the top, left of character ‘A’ in you your file and set the coordinates for it, in this case 0,0:
char_A = 0,0,13,27
The next two values are the X pixel width of that character (i.e. how far “right” is spans) and the Y pixel height of the character (i.e. how far “down” is spans). Then, do this for every character in the fonts_klingon.ini for that INTERFACE_NORMAL font name. The pscale value will either enlarge/shrink the display in the game:
pcscale = 0.5
This will make it half the size of the “default”. So if it’s too big, reduce that number slightly, and if it’s too small, increase that decimal value a little and check it in-game. When you define all of the characters for INTERFACE_NORMAL, you can just copy/paste to [interface_ultrasmall] and just change the pcscale value to a smaller number. If you make several .tga.tx files for klingon, then you would have to specific the different file for Texture = line and also remap all the characters, but if you simply want to use the same file and same characters, you can paste all the same char_ lines and just change the pscale. Make sure to do all defined names in the existing files as we don’t know which are used and not used. Some, like [KEYBOARD_SYMBOL], are used for mapping control keys on the keyboard. You may or may not want to keep those the same, or make your own, depending on if your language users typically have different keyboard keys.
Some of the characters are not recognized by simple letters like char_A for uppercase A and char_a for lowercase a, but by their ASCII value (e.g. ascii_150). Look up an ASCII chart online for 150 to find out what those are. If you have some characters that are missing in the existing font files, add them to your texture, add them as an ascii_ line and map their coordinates.
-
June 16, 2019 at 9:36 pm #7707FilipeParticipant
Hmm, ok, so why the interface button.tga.tx is 2048 by 2048 and not 512×512? Is it being downscaled or what?
-
June 16, 2019 at 10:08 pm #7708JeffreyKeymaster
I don’t know why it was resized, but I can guess.
The fonts were redone by some modder on PA! awhile back and offered up. I don’t think it caught on, but MK liked it, so we just copied it into ERAS.
Comparing interface buttons from COAS to this version, it looks like they filled in the outlined version of the letters to a solid look and in the process of resaving, they increased the size of the file to 2048 instead of the original 512. I presume this was done and resmoothed, so that now, when a letter section is compressed down smaller on-screen, the edges probably look a little better/smoother.
In this case, by keeping the font*.ini file as 512 and the coordinates the same, they still map to the same locations in the file because what the engine does is read in the whole file and the dimensions used are actually clamped down to 1.0 for width and height. When the coordinates are determined it reads from the .ini file for position 26 of a 512 Texture_xsize, 26/512 for ‘B,’ or 0.05078125. That decimal is what is passed through to figure where B is, so even though the new file read in is 2048, it will make 2048 = 1.0 and pass in 0.05078125 to find B. In reality, it will be 0.05078125 * 2048, or pixel 104, instead of the original pixel 26 for the 512 texture in the old version. In fact, if we changed the x/y size to 2048 and multiplied all the coordinates/sizes by 4, they would look exactly the same in the game, with no visual difference.
-
-
-
June 17, 2019 at 10:49 pm #7710FilipeParticipant
The Pc Keyboard.tga is something else, that file doesn’t seem to accept other characters like dot, comma, square brackets, you name it. With all the ASCII values correct and properly mapped what can be the cause of the issue?
-
June 17, 2019 at 11:58 pm #7711JeffreyKeymaster
I’m not sure I understand what you mean by “does not accept?” The PC Keyboard characters will only show on the options/keymap screen for the game because I think that’s the only place that uses that font definition. If you mean you cannot map a dot, comma, bracket key, that is because for that purpose, you first have to define the keys in Controls\init_pc.c; those keys don’t have definitions, so they can’t be mapped as a control until you define them in that script file.
If you mean something else by your comment, I think I need more elaboration.
-
June 18, 2019 at 12:19 am #7712FilipeParticipant
Yep, that is it, that was the thought I had but didn’t know how to search for it and yes I’m speaking of the other keys being able to be assigned, I didn’t know that before I started messing with the pc_keyboard.tga so I assumed I messed up something, but oh well.
Speaking of that wouldn’t be great if those keys were defined so in the future if someone wants to use them it doesn’t show a blank box. I already made a texture for those keys and all.
-
June 18, 2019 at 1:27 am #7713JeffreyKeymaster
We could do that.
BTW, I found that the dot and brackets are defined in pc_init. These keycodes (keycode values are sometimes different than ASCII and are defined here https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/keycode-constants just have to convert hex to integer if you want to know that a dot is 190…just to make things more complicated for the uninitiated, LOL):
objControlsState.key_codes.VK_L_BREAKE = 219; //[ { objControlsState.key_codes.VK_L_BREAKE.img = "s"; objControlsState.key_codes.VK_R_BREAKE = 221; //[ { objControlsState.key_codes.VK_R_BREAKE.img = "s"; objControlsState.key_codes.VK_A_POINT = 186; //; : objControlsState.key_codes.VK_A_POINT.img = "s"; objControlsState.key_codes.VK_A_QUOTE = 222; //' " objControlsState.key_codes.VK_A_QUOTE.img = "s"; objControlsState.key_codes.VK_A_SMALL = 188; //, < objControlsState.key_codes.VK_A_SMALL.img = "s"; objControlsState.key_codes.VK_A_BIG = 190; //. >
They are all defined for “image” lowercase “s”, which in the current fonts file for KEYBOARD_SYMBOL is:
char_s_ = 256,0,32,32
That maps to the first row, 9th key over, which is that empty slot. Presumably, the “s” stands for space? Anyway, if you define a different image name char_somethingorother, with coordinates for each of them, then change the init_pc.c .img = “s”; to your new coordinates name definition, they should display.
-
June 18, 2019 at 12:24 pm #7714FilipeParticipant
Hm, with my new image name e coordinates correctly set up the thing still points out to another coordinate in game, for ex: press [ and it shows the image of Ctrl even tho I assured the coordinates were correct. Worth noting that all of them are getting this issue.
-
June 18, 2019 at 5:02 pm #7715JeffreyKeymaster
Perhaps because lower e is already defined in the font .ini file for [KEYBOARD_SYMBOL]:
char_e_ = 32,192,32,32
If defined more than once, either confuses things, or more likely it uses the first one it encounters.
For a bracket, I just tried this and it works:
Added to [KEYBOARD_SYMBOL] the following:
char_[ = 256,64,32,32
This actually points to F11 in the image file, but just using for a test as right now, it comes up a blank space when mapping to [ key.
Then I changed the init_pc.c file to this:
objControlsState.key_codes.VK_L_BREAKE = 219; //[ {
objControlsState.key_codes.VK_L_BREAKE.img = “[“;Launch the game, select options, remap one of the keys to [ and it shows F11, just as expected.
-
June 18, 2019 at 7:32 pm #7716FilipeParticipant
Oh ima fool, now I’ve come to realize that this thing is set for american keyboard so it screws hard for other formats… Now we need to figure out a way to change this as depending on the language it is the accents and punctuations vary wildly between places. I dunno why I didn’t make it right in the first place, maybe I left something behind… but yeah, hopefully, it all will settle.
-
June 18, 2019 at 8:48 pm #7717JeffreyKeymaster
Yeah, and that’s where it gets a little tricky, for other keyboard localities. I think for just displaying character, like [NORMAL], it is OK because it provides for the actual ASCII value, using ascii_193, instead of char_v_. But for the character images that display on the “key map” feature, that doesn’t quite work because I don’t think there is a way for an umlaut character to get the proper .img value to map back to that in the .ini file.
That’s one of the reasons why keycodes don’t always match ASCII, but somehow in making these .ini definitions, you need to be clever…I think it would go something like this:
Look up the keycode for the particular keyboard style and that goes to objControlsState.key_codes.VK_L_BREAKE = 219 line. But, for the .img, look in your fonts .ini file and choose an unused character to define there. If it’s a “basic” one, like [ then you can use
char_[ = 256,64,32,32
But, if it’s a special accent, umlaut or tilde character, then for just the key map images, I think you have to pick a standard character to use in its place, but still unused by anything else (which I think prevents us from being able to map every key on a keyboard, but maybe only certain ones) the ASCII code version for both the .img and the char_ value in the .ini file. So you could say to yourself, I will use char_i_ for this special character, but now lower i itself can’t map to a different image and would have to be disallowed as a mappable character.
I’m not 100% sure about this, but I think as it’s designed right now, I think that is the issue and restriction. Again, just for the KEY-to-IMAGE type of font. The normal dialog displays don’t suffer from this because you can use the ascii_ thing in the .ini file.
-
June 18, 2019 at 9:17 pm #7718FilipeParticipant
I fear that the thing about reassigning it to another key that will be ‘sacrificed’ is not the trouble here,(IF I get it right what you were trying to explain…) when I did as ur previous example the ‘[‘ to the correct locations etc. I didn’t get it to show up in my actual ‘[‘ press where it’s located but instead where it’s supposed to be in an english keyboard like when switching the windows keyboard lang it also expects the [ to be right next to P or in the 3rd line of keys being the 12th key from left to right or something like that. So I guess the init_pc.c should be different for every keyboard arrangement? You see I’m not the expert here so the best I can do is some guesses and empirical work.
-
June 18, 2019 at 9:55 pm #7719JeffreyKeymaster
Yes, you understood my convoluted attempt as “sacrificing” a key…that is correct what I was getting at.
I also did not know that the keycode for an English keyboard [ stays in that spot and will be a different character/letter on another keyboard type, but simply in the same position. Interesting as I did not know that and it does present a problem for how to address.
I would figure that the reason behind the keycodes was that Windows, no matter the machine, would remain the same…that they made a “standard” for the Windows operating system and that was the purpose?
Hmmm, this page shows it as US Standard: http://cherrytree.at/misc/vk.htm
So what does that mean for non-US Standard? How do we find this? Weird.
-
June 19, 2019 at 1:03 am #7720FilipeParticipant
Maybe what we are looking for might be in one of those pages:
— https://docs.microsoft.com/en-us/windows/desktop/api/winuser/ -
June 19, 2019 at 1:21 am #7721JeffreyKeymaster
Unfortunately, we are in a dilemma if we want to know a specific keycode in the game, because the only keys that keymap changer finds them, is to compare what’s already defined in init_pc.c, but I think you are looking for what keycode number to use for some keys. Since I only have US, it won’t help if I look at winuser.h (I have that file with Visual Studio) because we already know that if I look it up, it might not match your keyboard because we already know that the [ key is already not really what it says.
You might try this page with your keyboard to see what number a certain key uses. I think they defined the Javascript ones the same as the Windows ones: https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
Just put your focus in the Try it! box and press a key to display the code for that key.
-
-
-
-
June 19, 2019 at 8:38 am #7722SchiavonnaParticipant
Trust me on the textures…the model name is 84, but opening the model, it actually uses texture name 54
A-ha! That explains why a different texture was showing. Cheers
why would I want to torture myself with another problem child? LOL
NA’s gone full release in the last few weeks. I think it’s ‘ship has sailed’ (insert water-based pun of choice). From something like 4000 on each server/day back in it’s original early access release…now down to less than 50 with US/Europe servers combined. Glad I watched from the sidelines before committing…anyway, off topic.
Dear Jeffrey, if you are not overtaxed at present – how/where do I “tame the waves”?? As in to modify the wave height that was introduced in direct sail and battle a while back? What files control these?
I’m getting seasick LOL
-
June 25, 2019 at 5:52 pm #7730JeffreyKeymaster
Sea is a combination of various factors, and every hour has its own definitions. I don’t remember all the changes and the only way I could find them would be to compare all the Program\Weather\Init *.c files and WhrSea.c against original COAS. These are the numbers that affect what you’re looking for:
Sea2.GridStep
Sea2.LodScale
Sea2.Amp1
Sea2.AnimSpeed1
Sea2.Scale1
Sea2.MoveSpeed1
Sea2.Amp2
Sea2.AnimSpeed2
Sea2.Scale2
Sea2.MoveSpeed2
Sea2.PosShiftThe GridStep and LodScale are set in WhrSea.c for most things.
globals.c has a global lod: float LodScale = 0.7;
-
-
June 22, 2019 at 7:19 pm #7725FilipeParticipant
I’m nearly done with the translation although I get this array error:
COMPILE ERROR - file: TEXT\Portuguese\Quests\quests_reaction.h; line: 1 Invalid array 'QUEST_REACT' initialization parameters list
What am I missing?
Also, I need a way to maybe make or use another ‘token’ string for the masculine and feminine cases, and the pc_keyboard.tga I didn’t take the time to mess with it yet as it’s not a high priority…
- This reply was modified 5 years, 5 months ago by Filipe.
-
June 25, 2019 at 2:52 pm #7728FilipeParticipant
From where the rumor texts are being used? I made sure that everything was already translated but in rumors, be it from citizens, drunkards, walkers or even beggars, some parts or even the whole rumor is still in english.
Also where I can edit the Main Menu text or image, as I see it is blank after making a new directory for another language making sure to copy the equivalent files in .c.
-
June 25, 2019 at 5:39 pm #7729JeffreyKeymaster
Main Menu
RESOURCE\Textures\MainMenu
Create a folder with language name, copy textures from Russian folder
Menu text files are: Text01.tga.tx and Text02.tga.tx
Also, the “Censored” texture needs translation:
RESOURCE\Textures\Loading\inside: folder for each language name. Create Portuguese and create censored1.tga.tx
Rumors…probably several. Here’s what I know:
program\Text\language\Dialogs\Common_rumours.h
program\Text\language\scripts\Rumour_Data.h
RESOURCE\INI\texts\language\RumourTexts.txtIf it’s not one of those, I will probably need a specific rumor wording that I can search to find the file.
Invalid array ‘QUEST_REACT’ initialization parameters list
Probably missing a comma, a double-quote, or a bracket somewhere. I might need the file to figure out the problem.
-
-
June 26, 2019 at 11:50 am #7731FilipeParticipant
‘Surely you’ve heard? Some sea-captain rescued a girl from bandits, name of #name#? They say he literally yanked her from the brigands’ claws! I say good chap! Good show! A true gentleman, wot.’ ‘The arrival of you ship ….’.
That is some of them, also all the NO_RUMOR from Rumor_Data.h is not showing the translated it’s showing the english one.-
June 26, 2019 at 3:29 pm #7732JeffreyKeymaster
OK, I suspect you are playing a game started in English (from a save) then you changed to Portuguese, loaded the save and now some of them are untranslated?
I looked and the way that rumors are handled, is that AddSimpleRumour() function is called at certain action points and it stores the translated rumor text in the current language in an array, Rumour[]. Later on, when you converse with someone, some citizens will choose a random element from the Rumour[] array for that during a conversation.
During a save, the elements of that array will be stored in English. Then, if you change language, load a save, then talk to someone, when it randomly selects from that array, some of the older elements in that array will still be in the old language until that particular rumor “expires” due to age.
I don’t think this would happen if you start a game in another language and never switch languages for any of the save games from that profile.
-
June 26, 2019 at 6:05 pm #7733FilipeParticipant
Yep, that was it.
Now the last thing towards the completion of this journey is to add new lines for when talking to and from the perspective of a female cap’n and also flags to nationality cause a flag in PT is a she. I believe that after all this craft it will be way easier for future translations to be done, but now the new text needs to be added.
-
-
July 6, 2019 at 4:30 pm #7739BarbarossaParticipant
Good day everyone.
I just installed and began playing ERAS 2 on Itch, and I have some issues I wish to discuss in case I am doing something wrong and need to fix:1) When I start the game via Itch, I click on Maelstrom from Library section, then it launches and I can see a big list of mods and their config. When clicking on ERAS 2 it just takes me to the file directory, therefore to start it I had to click on ERAS 2 config rather than just ERAS 2. Is this the right way of launching game or is there a better method for startup?
2) I chose a Spanish conquistador with a 32 gun ship, and I was hoping the game starts small then expands bit by bit through time, but in my first half hour all I saw was huge ships, and even the trader from a tavern-keeper’s tip was a giant battleship. In my first tavern visit, I came across a fellow GOF for plundering a silver convoy… I head to destination and it turns out to be a 7 ship convoy with each ship having no less than 400-500 crew compared to my 150-200.
Please tell me this is just because I chose a starting player with a lvl 32 gunship and that it wouldn’t happen if I chose simple characters like Diego Mendoza, etc.?3) Items and valuables too easy: every shop vendor has all sorts of items, and within 15 minutes I managed to find tons of skill books, skill items, and excellent quality armaments.
Is there an option to turn this imbalance off?-
July 6, 2019 at 6:09 pm #7740JeffreyKeymaster
Itch did not make it easy to have just one base Maelstrom.exe play all the games because they don’t have a support system to make them related, where perhaps the “mods” could be considered related DLC elements. So we kind of hacked around it, but it involves a bit of manual intervention on the user’s part; couldn’t find an easy way around that, so instead, there are instructions for the “easiest” way to do it for each download and also, the Maelstrom download contains a MaelstromSetup.pdf with screenshots and instructions.
The quick summary is to install Maelstrom with the Itch client, in a base directory like:
C:\Maelstrom
Then after install, create a “games” directory within that:
C:\Maelstrom\games
With the Itch client, if you make sure to install ERAS and any other of the available mods into the C:\Maelstrom\games, it will be easier to do the next steps, which involve manual editing of shortcuts (samples provided in the Maelstrom download for each mod, that you can edit) and the .itch.toml file (the .toml file is what the Itch client uses to list the games and the “action” when you click them).
If you use the default of C:\Maelstrom and C:\Maelstrom\games, it will just work for any mod you install (defaulting to 32 bit DX9). If you want to use 64 bit, or you installed in different directory paths, edit the shortcuts to use the 32/64 bit version, and also point their paths to the mod directories, per the .pdf instructions. Also, Itch does not provide a way to alter the .toml file per each mod you select, so I made one all-encompassing file and added all the different mods and if you don’t have them installed, they still show up in your client list. But I wanted to at least provide an example of every one. You can edit your .toml file to remove what you don’t have/want to shorten the display of mods that are listed.
****Gameplay Difficulty*****
We have had suggestions along the way that the starting characters should have higher level, better ships, etc., so this conflicts with your desire to start lower and slower.
You can try the following:
Select a lower tiered character. The bios of each character contain a “Starting Conditions” where a brief summary of their starting loot/ships/level are highlighted, to give you an idea of what they will start with. If you like the character Pardal and his items/ships, but don’t like starting at Level 5 from the start, you can check the Disable Autolevel box at the start and Pardal will still start with the loot specified, but at Level 1 instead.
A high difficulty level will increase the stats of your enemy health, speed, damage dealt, and also the strength of enemy ships, and to some extent the loot on corpses, but not the frequency of shop/trader items. You can slow down your rate of experience with another slider option — left for low, right for higher.
There are several hundred items in the game, and they do have some settings to limit their availability based on your rank, and random frequency to make some more rarely show up, but some are very common. I believe many of the basic books are common at level 1 because typically a starting char can’t afford them in a shop, but then they easily show up as corpse loot because to date, there is no separation between frequency in store vs. loot. Probably a worthwhile consideration to do so.
There are some other settings that might help tailor the experience more to your liking under the Menu, Options, lower right Mod Options…things like Realistic Ship Purchase, Realistic Damage, Less Powerful Skill Books (reduces bonus stacking), etc. If you modify those options at the main Menu, then OK, it should keep those as the defaults for your subsequent new games. If you have already started a game, you must load a save from that game, then change the options as they are now specific to that save file; then save again. However keep in mind that if under that same profile, if you load an older save, from before you changed those options, they are actually stored in the save game state, and they will still be the older settings you had; After you save, all future saves will contain your new settings, but older saves will not.
I appreciate your feedback and we try to accommodate as much as we can, but we’ve noticed that player requests often directly contradict…some want it easier, some want it harder. We’ll do what we can, but we also don’t really want 2,831,557 different configurable settings either, LOL.
P.S. It looks like you were posing the same questions on Itch (exact same description of the 32 gun ship…), so if you don’t mind, I’ll just copy/paste this same reply.
-
-
July 7, 2019 at 7:17 am #7741BarbarossaParticipant
Thanks again for feedback.
Yes it was me who posted on Itch, was not sure where to write.
But anyhow I did perform most of the mod settings, including realistic costs and weights, which is a bit challenging in terms of economy but hey there’s always more plunder 🙂Regarding file directory I followed exact instructions as written on download page on Itch:
I had one little issue which I’m not sure if it can be fixed or not, and I also noticed I had this problem when I tried a similar mod 2 years ago:
When clicking on a dialog with anyone in game (tavern, shops, vendors, or any AI which you open dialog with), you have to wait 2 seconds before you can click again. So when you CLICK to talk to someone, you can’t choose anything even if you click several times quickly; you must wait 2 seconds before you can click the dialog option in your conversation.
Apart from that, very nice work on getting rid of crashes. I only crashed once and that was my own fault for sneaking in town and as soon as a dialog opened with a guard, I entered tavern (rotten luck) which caused the guard’s dialog bar to remain on my screen while I was in tavern. But that’s not a big issue.
Once again great work on all the development, I’m truly enjoying this game.
-
July 7, 2019 at 5:48 pm #7743JeffreyKeymaster
The dialog delay was a recent request to prevent multi-clicks of the mouse to initiate a conversation causing one to accidentally blow past the first part of the dialog because the multi mouse clicks would still register and the first option was selected without being able to read it fast enough.
But, the default delay turned out too high, and my next update (which I am hoping to release today), shortens the default to 3/4 second. But, even further, for people already familiar with the dialogs, or don’t multi-click because they are savvy enough not to, well, it’s probably irritating to wait.
Navigating a down arrow (or S key) to any dialog response other than the first automatically cancels the delay, but if one wants the first option, still have to wait. You can turn the delay off entirely by editing the dialog.ini file. I may make an easier on-screen option, but for now, find the file: RESOURCE\INI\dialog.ini.
Near the top:
[DIALOG]
mainfont = DIALOG2
subfont = DIALOG3
mainFontScale = 1.0
subFontScale = 1.0
mainFontColor = 4294967168
;4292010979
subFontColor = 4286611584
subFontColorSelect = 4294967295
maxtextlines = 5
maxlinkslines = 5
charnamefont = DIALOG2
charnamescale = 1.4
charnameoffset = 6,-26
charnamecolor = 4294967168
DialogDelay = 750That line DialogDelay (if it doesn’t exist, add it). The 750 is milliseconds and will be 3/4 second. If you want no delay at all, make it negative one:
DialogDelay = -1
ETA: Apologies, that shortened delay and cancel feature is next update, which is coming soon. I just noticed that in my notes it is not yet deployed to Itch.
***** Launching from Itch Client ******
Interesting that your config launch is OK, but not ERAS 2. Given that you have a setup that matches the default .toml file and example shortcuts, yes, it should just work.
So when you launch the game, you are just using the Maelstrom ERAS 2 shortcut in the gentlemen-of-fortune-maelstrom-engine folder? If that is the case, the .toml is actually just supposed to do the same thing. At the bottom of the .itch.toml file:
[[actions]]
name = “Config ERAS 2”
path = “DirectX9_32bit\\Config.exe”
args = [“..\\..\\games\\gentlemen-of-fortune-historical-eras-module-2”][[actions]]
name = “ERAS 2”
path = “Maelstrom ERAS 2.lnk”I note that the config actually launches the Config.exe directly, with a command line. But the Maelstrom had to be handled a little differently because we needed to provide a proper “working directory” for the content (Start In: on shortcut), so that is why shortcuts were used, because they contain that property, but the Itch .toml did not provide that feature.
So, if you can double-click the Maelstrom ERAS 2 shortcut and it works, but within the Itch client, can’t launch with ERAS 2, and the .toml file has the correct name of the shortcut in the path = setting, then I wonder if perhaps the OS version prevents apps from launching via shortcuts…some sort of security setting, perhaps? Maybe try escalating the authority for itch.exe client to run as administrator as an experiment to see if that helps? You don’t have to preserve that setting, but to see if that changes the launch at all. This assumes that you can run the game by double-clicking the Maelstrom ERAS 2 shortcut. If that doesn’t work manually, then it might just be a case of editing the shortcut first.
-
-
July 8, 2019 at 6:49 am #7744BarbarossaParticipant
Yea perhaps that’s a workaround for launching, but I have no issues launching from Itch via Maelstrom app, and then clicking on ERAS config. I’m not a technical guy so I usually get lost when I try fiddle with my computer haha
Anyhow thanks for the update, hope to check it out soon. That means I don’t have to download anything right, on Itch it will download automatically?
And here are a few issues I came across for your reference:
– Everytime I encounter bounty hunters in town, after killing them, I am declared as “Evading town alarm” and everyone treats me like a criminal, and once i come out of a shop etc. then guards start attacking me. I have to go to port screen then dock again for it to resume to normal.
– The screen for cabin chest when you have a fighter officer with you is much more convenient than the screen shown when you have no fighter officers with you. A lot of lag when you try to put in or take out multiple units of bullets, medicine, etc. compared to the convenience of the chest tab when you have one or more fighters with you
– The skill books, if I read them it means I automatically get the perks or I have to keep in my inventory for it to be effective?
– I am killing off competitor AI heros one by one for fun, yet my reputation is decreasing heavily everytime I kill them (good loot on them – most I got was 300k on a single dead hero). Does this have any other negative impact on gameplay other than reputation?
– The church missions I am completing without getting any positive reputation compared to the classic AOP game. Is this supposed to be this way? And what other ways do you suggest in raising reputation besides governor missions which takes 3 to 4 missions per rep increase?
– When I started with my character I had a special document given to me by Cartagena governor for killing Spain’s enemies. How can I get it back since I lost it?
– I also have this issue with TEHO and base AOP game, and existing here too: When shooting any ship from 3rd person view, it’s normal. But when shooting manually on 1st person deck, I get hostility and bounty raises and any trading license or LOM on me get invalidated. How comes?
I had a few more issues which I forgot about but Ill write them down as soon as I remember.
Thanks again for the constant support and development.
All the best.- This reply was modified 5 years, 4 months ago by Barbarossa.
-
July 8, 2019 at 7:07 am #7746BarbarossaParticipant
Additional issues:
– This one is quite notable: when boarding a ship and completing the captain’s cabin, you have to move in a special direction in order to loot chests, otherwise when you click on space bar it could take you to next capture screen.
Therefore to loot chest you need the “hand” logo to appear on top and not the “unlock chain” logo. But in ERAS you need to move very carefully and stand in the right position in order to loot chest otherwise if you accidentally press space button while the hand logo is not appeared then you would miss out on the chest loots– I have a Brescian flint pistol – it keeps unequipping from my inventory lately. Not sure why or how or when it started to do that.
- This reply was modified 5 years, 4 months ago by Barbarossa.
-
July 8, 2019 at 4:11 pm #7748JeffreyKeymaster
– Everytime I encounter bounty hunters in town, after killing them, I am declared as “Evading town alarm” and everyone treats me like a criminal, and once i come out of a shop etc. then guards start attacking me. I have to go to port screen then dock again for it to resume to normal.
The alarm system was redone to allow for a timeout if evaded by slipping into another door, around a corner where nobody else sees you (the latter can only really be done at night, when nobody is walking around) and not being seen by the enemies that were involved in the conflict; before that was not possible. In the case of bounty hunters, after they are all killed, it sounds like the alarm termination is missing, so I will note and fix this.
– The screen for cabin chest when you have a fighter officer with you is much more convenient than the screen shown when you have no fighter officers with you. A lot of lag when you try to put in or take out multiple units of bullets, medicine, etc. compared to the convenience of the chest tab when you have one or more fighters with you
The standard loot screen launches when trade with officers is either not possible or unsuitable, such as in corpse looting or without the “Experience Exchange” perk during boarding. I think the standard takes longer to load due to higher resolution images (due to increased size) of the items. The new screen, while larger and containing officer images, uses smaller item icons and the portrait images are typically lower res, so it loads faster. I had much slowness when I first started using ERAS and I de-res/shrunk the item icons once, but MK hates that, given the detail he put into the images. I doubt I can de-res them again without grief from him.
– The skill books, if I read them it means I automatically get the perks or I have to keep in my inventory for it to be effective?
The books must be in your personal inventory to receive the bonus benefit. There is a possibility we will add a feature to “read” books over time (this will be an action the PC must do explicity in the ship cabin), and after completion, the bonus sticks, without requiring the book in inventory. But that is not possible in the game now.
– I am killing off competitor AI heros one by one for fun, yet my reputation is decreasing heavily everytime I kill them (good loot on them – most I got was 300k on a single dead hero). Does this have any other negative impact on gameplay other than reputation?
Not necessarily negative impact, unless you want to do certain quests. Reputation goes two ways — A bad reputation will help keep officer loyalty if the officers are Assassins, Sharks, Scoundrels themselves (opposite is true for officers that are on the other end of the spectrum from you; their loyalty decreases over time and they might leave), but makes certain quests/citizen help difficult or impossible because they won’t talk to you; good reputation helps the quests that require citizen interaction (store, tavern keeper, etc.) and retaining officer loyalty that are similar status. Side note: You can keep officers that are “in the middle” like Sailor, if the majority of your other officers are just like you. The “middle of the road” officers will just side with the majority of your officers.
– The church missions I am completing without getting any positive reputation compared to the classic AOP game. Is this supposed to be this way? And what other ways do you suggest in raising reputation besides governor missions which takes 3 to 4 missions per rep increase?
I think any good deed such as helping citizens find lost friends/spouses, delivering store cargo missions on time, mayor missions, etc. The church missions were not changed as far as I remember, so if they are not granting reputation increase like they should, I will need to investigate.
– When I started with my character I had a special document given to me by Cartagena governor for killing Spain’s enemies. How can I get it back since I lost it?
You will lose LoM when killing friendly soldiers, firing on ships that are allied with, or part of the nation you received the LoM from. If you want another, you must either buy one (very expensive if you have poor reputation) from a Pirate Diplomat, or do many mayor missions and earn one…or perhaps find another NPC hero that has one and loot it.
– I also have this issue with TEHO and base AOP game, and existing here too: When shooting any ship from 3rd person view, it’s normal. But when shooting manually on 1st person deck, I get hostility and bounty raises and any trading license or LOM on me get invalidated. How comes?
I just investigated this and I see why that happens. The difference in first person shooting event shows that there is always a call to a certain function that will keep increasing the nation hostility, but the 3rd person shooting does this only if you are not enemies to begin with, one time. Not sure what their intent was for this decision. I will discuss with MK perhaps changing this.
Additional issues:
– This one is quite notable: when boarding a ship and completing the captain’s cabin, you have to move in a special direction in order to loot chests, otherwise when you click on space bar it could take you to next capture screen.
Therefore to loot chest you need the “hand” logo to appear on top and not the “unlock chain” logo. But in ERAS you need to move very carefully and stand in the right position in order to loot chest otherwise if you accidentally press space button while the hand logo is not appeared then you would miss out on the chest lootsI believe that is only certain ship cabins. We have several newer cabin models and I’ve noticed the same thing in some of them…the defined locator radius is a bit small and difficult to “hit” for specific cabins. I will need to investigate which ones present this issue and change the locator radius to a larger value.
– I have a Brescian flint pistol – it keeps unequipping from my inventory lately. Not sure why or how or when it started to do that
No idea about why that would be. I will make a note to check out how/why this might happen.
-
July 8, 2019 at 7:00 pm #7749BarbarossaParticipant
Thanks for all the clarifications.
I did investigate a little and here my notes on the last two mentioned:– The radius for looting a chest in captain’s cabin after boarding enemy ship can mostly be achieved by going towards the right side, then turn and face left and then the loot chest can be stable without interruption from moving on to the next stage.
– The Brescia pistol I just found out and found a solution: the tavern duels with AI heros. Everytime I insult them, dare them, then challenge them on the spot inside the tavern, my pistol gets auto-unequipped because no pistols allowed in tavern apparently, and the sword I use is given to me, not mine. So after the tavern duel you can equip again.
No wonder I kept getting unequipped and thinking it was a bug of some sort!Btw Portugal has no ports in this mod right? And I read somewhere that there is Florida and other new ports, which I have not come across yet. Hope there are more nice features like this in the future, including more trade good varieties, and perhaps if there’s some good coin in me pockets, would love to pay for a customized historical character maybe!
-
July 8, 2019 at 8:50 pm #7750JeffreyKeymaster
LOL, yes, the NPC Hero duels. That insult feature was actually built into COAS, but was disabled. I recently enabled it again with an infamous Star Trek-inspired quote, instead of “Beta Test” in the dialog they used.
After enabling it, I thought it was too easy to dispatch them if you had a good pistol, because you both spawn at a fair distance apart and therefore put in some logic to unequip both of you and only give each a sword. I had forgotten I did this unequip until you now mention it.
I will still attend to the other things you mentioned…they are on my list to research and address.
-
-
July 8, 2019 at 9:06 pm #7751BarbarossaParticipant
Yea it’s no big deal, but the duel thing makes becoming a millionaire way too easy! I scored 2.5 million on this one hero. ModernKnight also fell victim unfortunately…
On one treasure hunt, I got over 95 jewels which was sold at about 97k each, netting me more than 9 million in a single treasure hunt.
Such rare items also can be found on dead bodies when boarding ships. Just today I came across a deadbeat with 3 jewel types that were 61 kg each, and I could not carry even one due to poor carry capacity limit. -
July 9, 2019 at 8:24 am #7752OldtimerParticipant
EDITING .toml file
Hi all,
since this issue was recently mentioned by a poster I kinda bump my question from before.
I still run Win7 Home Pro 64 bits. Itch updates Maelstrom and ERAS correctly AFAIK but I cannot start either from itch, only from desktop shortcuts. AFAIU it`s the .toml file that needs editing, but how?
Rgds, Oldtimer
-
July 9, 2019 at 8:29 am #7753OldtimerParticipant
BUMPING AGAIN.
For good measure I meke another bump as per below:
Mr. Jeffrey,
my apologies for not noticing your reply until now. Anyway from the below:
– float iLevHalfBonus, iLev1Bonus, iLev2Bonus, iLev3Bonus, iLev12Bonus, iLev15Bonus, iLev25Bonus, iLev35Bonus
if (LowerSkillBooks) {
iLevHalfBonus = 0.5;
iLev1Bonus = 1;
iLev2Bonus = 1;
iLev3Bonus = 1;
iLev12Bonus = 0.5;
iLev15Bonus = 0.8;
iLev25Bonus = 1;
iLev35Bonus = 1.5;
} else {
//original skill bonuses
iLevHalfBonus = 0.5;
iLev1Bonus = 1;
iLev2Bonus = 2;
iLev3Bonus = 3;
iLev12Bonus = 1.2;
iLev15Bonus = 1.5;
iLev25Bonus = 2.5;
iLev35Bonus = 3.5;
}I gather that similar code should be made for all skill item groups like, say, jewellery, right? As only books are indicated above.
Rgds, Oldtimer
-
July 11, 2019 at 5:55 pm #7754JeffreyKeymaster
Yes, that is the correct idea. Just an aside, remember to make sure there is a ; semicolon on the end of the lines, where needed, like this one:
float iLevHalfBonus, iLev1Bonus, iLev2Bonus, iLev3Bonus, iLev12Bonus, iLev15Bonus, iLev25Bonus, iLev35Bonus;
But, be sure to understand, changing the existing values, like iLev1Bonus will automatically change items that are already set to use iLev1Bonus, but simply adding iLevHalfBonus is not enough…none of that is “automatic.” You have to then change and/or use that new value in the items you want. For instance, alter one of them from
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, "bookleader_1", iLev1Bonus);
to this
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, "bookleader_1", iLevHalfBonus);
If you want other items for bonus consideration, that are not already present, then insert them within that same code function, with the iLev value you want, and the skillset “area” such as SKILL_LEADERSHIP or another in the list you see in characters.h file:
#define SKILL_F_LIGHT "FencingLight" #define SKILL_FENCING "Fencing" #define SKILL_F_HEAVY "FencingHeavy" #define SKILL_PISTOL "Pistol" #define SKILL_FORTUNE "Fortune" #define SKILL_LEADERSHIP "Leadership" #define SKILL_COMMERCE "Commerce" #define SKILL_ACCURACY "Accuracy" #define SKILL_CANNONS "Cannons" #define SKILL_SAILING "Sailing" #define SKILL_REPAIR "Repair" #define SKILL_GRAPPLING "Grappling" #define SKILL_DEFENCE "Defence" #define SKILL_SNEAK "Sneak"
Something like this, using the .id of the item from initItems.c:
//Add different item skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_F_LIGHT, "jewelry19", iLev1Bonus);
-
-
July 12, 2019 at 5:28 am #7755BarbarossaParticipant
Good day.
A few more issues I came across lately:– When you board a ship, you lose an enormous amount of crew via musket salvo despite the other ship having less men. If you board an equal ship (eg. manowar vs manowar) then you both lose 150-170 men each. In smaller ships you still lose 150-170 but enemy loses 50-100. In very very small ships you lose 30-50 while enemy loses only 5-10.
– Cannon firing is weird in ERAS 2. Sometimes you keep shooting and don’t make a single damage. I spent 4 hours last night trying to storm Fort de France in Martinique, and I just spent hours waiting for fort to break but in the end it didn’t so i left the scene. I used 12k powder and 12k explosive shots and after reaching 60% damage with 40% remaining, the fort just didn’t respond to any attacks from me. I kept reloading the game and going from different directions but to no avail…
– I realized this after launching a land assault on Port Royal: after you finish and leave, the opera music is on the background while other music is overlaying. So there is an issue where one music is playing after assaulting and leaving Port Royal and other random musics play after you sail, etc.
– When you have a full limit of ships in your fleet, you cannot view your remaining 3 (3 or 2 is it?), so when you are assaulting a fort – big problem. Has this got to do with graphics/screen options?
– Similar to the above, when clicking “sail to” in sea view mode, you often find up to 20 different ships nearby, so you have to keep ticking right right right right until you find the port/land you want to sail to. Is there any option to get this of this hassle?
– Is there any way to change the font? I often get mixed up a lot in the words and especially numbers of the current font and wish for something more easier to view
– From level one to level 27 I kept getting spammed by requests for “pirate proposition” in taverns, but i realized yesterday all the sudden it stopped and I no longer get them. I killed a total of 37 heros, which means there are at least 110 remaining.
There were a few more technical issues but I forgot now, so I’ll try to repost when I remember.
Cheers.-
July 15, 2019 at 3:33 am #7758JeffreyKeymaster
I posted the updates here this time, because it addresses several of your issues:
Tailor battle interface icon sizes based on actual screen resolution.
**If you only see 4 ships, you are probably using something like 800×600 and when we expanded both ships and fighter numbers from the original COAS, a lower resolution monitor will not display them all. I always meant to work this, but it had remained a low priority as I assumed by now, most people are running closer to 1920×1080. Anyway, I finally just worked it out where it will scale them down so that they fit in lower resolutions.Fix alarm for land/fort assault
I believe this should correct the music problem after sacking a city/town by land.Adjust musket volley to give benefit to defending ship and for overwhelming forces
Probably not exactly what you were hoping for, but some discussion with MK and we arrived at a better solution for musket volley. The original was a pure percentage. But, considering that the defending ship will have better opportunities for cover, and that initiating ships will have more exposure while trying to board, a defending ship will suffer fewer musket losses, initiators will suffer greater losses…however, if vastly outnumbered, then the casualty percentage is reduced, because even though many enemies, fewer people shooting can’t get that many before they are overwhelmed.Feature to cancel dialog delay
Also, the default is reduced to 3/4 of a second, but the option is still manual edit to dialog.iniChange order of sail to command for ships as last
This was a pretty good idea. The engine determines the order, so I reversed it where land/ports are first, ships last.Change radius for medium cabin chests
I’m pretty sure the two medium cabins were the ones referred, because I always noticed the same thing. The radius for the “problem” chests were expanded on these two.I’ll address the other items in a different post.
-
July 15, 2019 at 3:49 am #7759JeffreyKeymaster
– Cannon firing is weird in ERAS 2. Sometimes you keep shooting and don’t make a single damage. I spent 4 hours last night trying to storm Fort de France in Martinique, and I just spent hours waiting for fort to break but in the end it didn’t so i left the scene. I used 12k powder and 12k explosive shots and after reaching 60% damage with 40% remaining, the fort just didn’t respond to any attacks from me. I kept reloading the game and going from different directions but to no avail…
Looking at the code for fort damage, I see that subduing a fort mostly depends on disabling/damaging the cannons vs. pure “hit points.” As such, the explosive shots have a more limited range of fire and since the Martinique fort is so large, I suspect that the remaining cannon locators are probably beyond the range; if you had switched to balls, I suspect you would continue to make progress toward defeating that fort. After discussion with MK, I don’t think the current scheme will be changed.
– Is there any way to change the font? I often get mixed up a lot in the words and especially numbers of the current font and wish for something more easier to view
Not easily; the original scheme for defining/using fonts is convoluted and I’ve not yet arrived at a good way to simplify it yet. This has been on my mind, but not something I’ve arrived at a better solution.
– From level one to level 27 I kept getting spammed by requests for “pirate proposition” in taverns, but i realized yesterday all the sudden it stopped and I no longer get them. I killed a total of 37 heros, which means there are at least 110 remaining.
Even if they don’t approach you, the player can approach them at a table and sometimes arrive at a collaborative deal. However, some of the reasons they won’t approach you and will also cause them to decline if you initiate conversation:
1. You already have the max number of ships in your squadron; they can’t join you anyway.
2. If the player’s ship is 2 or more classes “worse” than the ship of the NPC. This is not the best in your squadron, but the one you personally captain. So if you want deals, always make sure to swap yourself to your best ship before entering the tavern.
3. You’ve degraded your relation to them below a certain point (mucking up a deal, declining their offers while on their ship during the meeting, etc.). I doubt this is your reason, since it seems like you don’t interact with them beyond insulting them to instigate and duel and/or meeting them to kill them, LOL -
July 18, 2019 at 6:36 pm #7780JeffreyKeymaster
OK, turns out I was wrong about the fort damage problem. Someone else tried Belize fort and it turns out you can’t do any damage to that fort at all; I tried in my own game and the claim was correct. I suspect that the problem you had with Martinique, though only “partial” is similar.
So, I troubleshoot and find that it is only certain forts and was due to a new tracing efficiency. Found the issue, corrected, and as soon as it finishes compiling, I will update Itch. The problem was the engine, so just Maelstrom needed an update for this fix.
-
-
July 15, 2019 at 3:22 am #7757JeffreyKeymaster
Maelstrom updates
Feature to cancel dialog delay
Check for data error in Sea block calc
Sea raindrop performance
SinkSplash remove unneeded method call
Dynamic array correction
GetFPS function
Sails corrections
Correct 64 bit bias for underwater scenes
Fix no-cannon BI display showing full ready
Correct ship dead problem when assigning new commander
Group power messages
Revamp power/near ships calc to replicate GOF script code, but now handled in engine
Remove redundant logic loops
Fix ship lights staying on under water
Fix boarding point distance/position
Mast crash fix due to bad type cast with virtual call
Best bort side selection improvement AI using weighted determinate based on # of operable guns
Change order of sail to command for ships as last
ERAS II Updates
Sea now shows from inside windows where was blackness
Fix Teno swim animations for underwater location changeanimation/defaultanimation
Cabin chest fix
Fix onload missing fix attribute set for cabin/7 and repel board
Add raindrops to day
Revert Lugger sails back to original
Fix BI main char dead ship image
Fix SwedishIndiaman taffrail flag
Fix Polacker sails
FishingFleet flee as group if hit/attacked
WM Encounters in direct sail ****If you use the world map, the last encounter positions are “remembered” and if you use direct sail mode toward the last known locations of the encounters (and storms), you will encounter them in direct sail too. This is an option that can be disabled.
Remove sunk ships from memory when removed from BattleInterface
Ship swap flag refresh fix
Fix direct sail to different scale islands and better use directed investigation of nearest island ****There were some direct sail directions that would not work properly from the old GOF code used for island transitions.
Notably, south from Jamaica to Portobelo, or West from Hispaniola to Cuba; this was corrected using directional orientation while traveling to find the true, closest, next island.Revamp power/near ships calc to replicate GOF script code, but now handled in engine (efficiency enhancement)
Add missing 2nd ship name to “grapple with” message
ServiceLock day randomization, instead of always 5 days max for store, tavern crew, etc.
Fix AutoReloadSave sometimes overwriting with “Bad save”
Better post-boarding decisions based on commander, near friendly ships, remaining crew and enemy power, etc.
Fix companion rescue at sea
Fix ships sometimes firing upon surrendered and allocating new targets in case of dead/surrendered
Advance Sloop sail fix
Fix Pirate Hunter land encounter to disable alarm
Fix forts still firing on ships released/set free
Change radius for medium cabin chests
WatchFort AI now uses fort power vs. egroup’s power
Greyhound ship rey sail correction
Move AI decisions for both PC enemy and non-enemy to be similar (non-enemy had no real AI…this will be further enhanced as we go forward)
Adjust nation ratios on WorldMap appearances
Adjust musket volley to give benefit to defending ship and for overwhelming forces
Fix alarm for land/fort assault
Tailor battle interface icon sizes based on actual screen resolution.
-
July 15, 2019 at 1:08 pm #7760BarbarossaParticipant
Nice progress, good work!
Thanks for addressing all the issues.I stopped playing yesterday to give my brain some break from dozens of hours of continuous play but here are a few notes on recent encounters:
– There is a Portuguese NPC hero and Nathaniel Hawk that I come across at the tavern which keep telling me “I’ll just finish my drink and return back to the ship” but thing is I never hired them nor do I have them anywhere on my officer list
– In my first hour of playing last week, I took a quest from harbormaster to chase a closeby ship and give them a ship log, but it just happened to be an enemy nation so when I reach to the ship that I must give the ship log to, I sank it. So this ship log remained with me this whole time with no end to the quest
– This annoyance is from vanilla version and all the other mods that I played, including TEHO: when one cannon is destroyed from your ship, suddenly the rest of them start to pop like popcorn one by one. In the national questline missions, sometimes I end up with just 20 cannons remaining out of my 80. This only happens after you lose your first cannon then you lose one or two cannons everytime you fire
– Sailor loyalty: I have a 80 gun fully upgraded ship with 1316 crew, and I always have to pay a hefty 100k sum to up the loyalty from Ship screen several times until it becomes “Heroic”. If I travel from, let’s say, Havana to Guadelupe, then it would sink down to “Average” or around there. Another distant travel and it would go down to “low”, eventually reaching to rebellion.
Now I have the rum rations at double, and I confirm that consumption is at double, but I’m not sure what is causing this rebellious attitude from them ungrateful sailors.
I realized it sinks really low after you perform land attacks on cities, and it somewhat increases/remains the same when you plunder ships on the high seas.– Related to the old boarding issue I told you about, this is correlated or maybe not: when I board smaller ships (I mean really smaller than mine), after the battle I end up losing HUNDREDS of men. I’m talking about 1316 crew of mine Vs 3 or 400 in the enemy ship, and this is without any musket fire.
With musket fire, sometimes I lose the same thing, and sometimes I just lose the amount that I lost via musket fire. Cannot identify which situations cause the massive crew loss after a boarding action compared to minimal-to-no crew loss which is what is supposed to be, since none of my men get killed in action.For now that’s all I can think of, I’m done with my Spanish playthrough for the timebeing: reached lvl 35 or 36 and finished storyline. Next one perhaps I’ll do England 🙂
Too bad I never came across a 48 cannon ship until now, really wanted to have a go at some forts. -
July 15, 2019 at 4:02 pm #7761JeffreyKeymaster
Much of what you write is standard COAS behavior and is unchanged for ERAS.
– There is a Portuguese NPC hero and Nathaniel Hawk that I come across at the tavern which keep telling me “I’ll just finish my drink and return back to the ship” but thing is I never hired them nor do I have them anywhere on my officer list
This is in the Bermudes tavern, I bet. That is Atila, and it sounds like you had the initial meeting with him (he drags you to the tavern) and you started the Isabela Quest. You can check your quest log to verify. I think he will stay there for a bit, always answering that way until you progress a little in that quest and he will disappear to his home. I don’t think there is any harm in not commencing that quest right away.
– In my first hour of playing last week, I took a quest from harbormaster to chase a closeby ship and give them a ship log, but it just happened to be an enemy nation so when I reach to the ship that I must give the ship log to, I sank it. So this ship log remained with me this whole time with no end to the quest
That was always the problem when accepting those types of quests when you are a base nation that is different and enemy of the quarry you seek. However, I did implement a way around it where if you approach them with a friendly flag where the “flag check” will always succeed and they will not “detect” you as an enemy in those cases. If you did raise a friendly flag upon approach, but still had the problem, I may have missed this particular type of quest, as there are several and I have to apply that fix to each of them. I know I did a couple of them already and will have to check for that harbormaster one to double-check.
– This annoyance is from vanilla version and all the other mods that I played, including TEHO: when one cannon is destroyed from your ship, suddenly the rest of them start to pop like popcorn one by one. In the national questline missions, sometimes I end up with just 20 cannons remaining out of my 80. This only happens after you lose your first cannon then you lose one or two cannons everytime you fire
Each cannon has a damage threshold and since acquiring a ship, they all degrade at a similar rate, so when one fails, they will all fail at roughly the same time because they take a small amount of damage each time you fire them. We are working on some different mechanics for that in ERAS, where some types of guns will be more durable (for instance, bronze guns vs. iron, larger guns vs. smaller guns), but that is still work-in-process.
– Sailor loyalty: I have a 80 gun fully upgraded ship with 1316 crew, and I always have to pay a hefty 100k sum to up the loyalty from Ship screen several times until it becomes “Heroic”. If I travel from, let’s say, Havana to Guadelupe, then it would sink down to “Average” or around there. Another distant travel and it would go down to “low”, eventually reaching to rebellion.
Now I have the rum rations at double, and I confirm that consumption is at double, but I’m not sure what is causing this rebellious attitude from them ungrateful sailors.
I realized it sinks really low after you perform land attacks on cities, and it somewhat increases/remains the same when you plunder ships on the high seas.The sailor morale is the result of several factors. Some ways to maintain it better:
Enough rum on each ship; insufficient rum degrades morale faster and this is the primary way to retain crew morale.
Keep the sailor count at or below the “optimal”; overloading crew (displayed as red) degrades morale very fast.
Your Leadership/Authority score – higher keeps morale better, low degrades morale.– Related to the old boarding issue I told you about, this is correlated or maybe not: when I board smaller ships (I mean really smaller than mine), after the battle I end up losing HUNDREDS of men. I’m talking about 1316 crew of mine Vs 3 or 400 in the enemy ship, and this is without any musket fire.
With musket fire, sometimes I lose the same thing, and sometimes I just lose the amount that I lost via musket fire. Cannot identify which situations cause the massive crew loss after a boarding action compared to minimal-to-no crew loss which is what is supposed to be, since none of my men get killed in action.This sounds like either a very bad Grappling/Defence score, or more likely, you don’t have enough weapons on-board. If you don’t have at least one weapon for each crew member, a large portion of them will die automatically because they have no defense. If you navigate to the ship screen and double-click the weapons in your cargo, you will see this explained, “You need weapons to arm your crew; one for each and every hand. A lack of weapons during a boarding action will increase your losses…”
-
July 16, 2019 at 1:00 pm #7764BarbarossaParticipant
Thanks for the followup.
Unfortunately I tried all of what you suggested but problems seemed to persist.
Anyhow no worries I’ll jot down new notes next time I start a new game.-
July 16, 2019 at 2:05 pm #7765JeffreyKeymaster
Oh, another thing about losing crew during boarding I forgot to mention. When you land on deck, every person you see on your “team” in the scene represents the number of crew, divided by the number of spawned crew shown. For instance, let’s say your ship has 1,000 crew and you see 20 people spawn on deck (just an example, I don’t remember the exact number that will spawn). That means that each of them represents 50 crew members (1000 / 20); this also assumes that you have enough weapons for all 1,000 crew in your cargo. If you don’t have enough weapons, the number without weapons are automatically dead. If during the fight, one of them dies, then you just lost 50 crew. If another one dies, that is another 50 dead. So you need to finish off the enemy crew quickly, and that usually means jumping into as many of the conflicts as you can, quickly, and make sure very few of them die in the scene.
-
-
July 16, 2019 at 5:13 pm #7766FilipeParticipant
?Is there a way to link the hero describe gender “sex_X {X}” to some type of placeholder on the files where it needs a distinction between man and woman? If that is doable I guess its 99% of the thing done except for some asian language where it changes the way you talk to people depending on if you’re older or younger than them but that might be too much of a stretch to give age to all chars… all in all not a whole lot of lines would be created but still not an easy task.
-
July 16, 2019 at 5:49 pm #7767JeffreyKeymaster
If you are looking for a global replace type feature, that would require some work.
Right now, the method they set up was to use a function GetAddress_FormToNPC that uses the character attribute .sex to look up in the globals.txt gender and nation:
Address_FormSpa {Señor }
Address_FormFra {Monsieur }
Address_FormEng {Sir}
Address_FormHol {Mynheer }
Address_FormPir {Laddie }
Address_FormFSpa {Señorita }
Address_FormFFra {Mademoiselle }
Address_FormFEng {Miss }
Address_FormFHol {Lady }
Address_FormFPir {Lassie }
Address_FormSpaW {Señora}
Address_FormFraW {Madam }
Address_FormEngW {Mrs. }
Address_FormHolW {Mevrouw }
Address_FormPirW {Missus }Those are all set in Set_inDialog_Attributes function. Then, in the dialogs, where they want to insert a form of address, they insert it like this:
DLG_TEXT_TV[5] + GetAddress_Form(NPChar)
Unfortunately, this does not cover all the text and is only partially correct so far.
If what I understand you asking, is there a way to perhaps just insert some conventional string in either dialog.h files, or all the text files, like common.ini, or globals.txt and replace any instance with an appropriate word?
Like perhaps this in either a dialog or .txt file where it sees $genAddress$:
This is my text and when $genAddress$ is seen in the file, it will replace
On the screen, it will display:
This is my text and when Señorita is seen in the file, it will replace
Something like that could be done, but the work would require to first find all words like that in all the .h and .txt files and change to a key in the word to search for. There are also several, where instead of sir/madam, maybe he/she, man/woman, etc. We’d make a list of what to search for:
$genSex$ man/woman
$genAddress$ for sir/madam
$genNom$ for he/sheThen we would have to make sure that every file read for both dialog and text from the INI files does a mass search/replace before displaying, which would require changing all the dialog.c file functions and anywhere in the game that reads/displays any sort of text from the INI files.
Probably won’t happen any time soon…
-
-
July 16, 2019 at 10:41 pm #7770FilipeParticipant
Hmmmm. What if there is some kind of ‘IF’ statement in the .c file, like in the case of “… and I’m captain…” having some way of determining if it is he or she then using another line accordingly.
Ex:
If (this that and theet) {
DLG_TXT_ImCAPTAIN_MAN[01];
link.go = “tavern”;
}
else {
DLG_TXT_ImCAPTAIN_WOMAN[599]
link.go = “somewhere_else”;
}So in this case just add the new line in the fem form if of course this all makes sense or is more doable.
-
July 18, 2019 at 5:04 am #7778JeffreyKeymaster
Yes, you could add dialog like that.
Then, in the dialog.h file, change the top to add how many extra dialog lines
string DLG_TEXT_BASE [240] = {
If you add 3 more lines at the bottom, then add 3:
string DLG_TEXT_BASE [243] = {
“This is the last line in the current file”,
“This is line 1 added”,
“This is line 2 added”,
“This is line 3 added”,
};Then in the .c file, your if statement for the difference:
if(pchar.sex == “man”) ) {
link.l1 = DLG_TEXT_BASE[01];
link.go = “tavern”;
}
else {
link.l1 = DLG_TEXT_BASE[242];
link.go = “somewhere_else”;
}- This reply was modified 5 years, 4 months ago by Jeffrey.
-
-
July 22, 2019 at 2:22 am #7783BlakeParticipant
Just a small note, LOVE ERAS 2!!! Started with an earlier version ’bout a year ago, came back around to see that the Maelstrom had been released. THIS.. this has made this game what I have longed for so long! Been enjoying every minute of the enhanced performance. PLEASE keep up the hard work, we unspoken general populous do genuinely appreciate it! That being said I have only two questions, 1 technical and another more gameplay based:
1. During gameplay at sea, I notice moonlight and sunlight at different times of day create a bad flickering on screen when looking in the direction of said light source? Is this a noted problem? Or something on my end?
2. (This probably doesn’t need to be asked here, however:) Can anyone possibly explain the Reputation/Loyalty system in this game in detail?
For example: I have a Dutch Letter ‘o Marque, I proceed on my way: I am run down by an English squadron, we engage in battle. I trade a few volleys when: ALERT! A window pops up with the captain offering gold for me to let him go. No matter my choice it lowers my reputation. How do engagements work? How can I fight for the glory of the Provinces when I get penalized for defending myself?I know question 2 is a long one but I can not find this answer anywhere. Desperately need some help if anyone would be obliging enough to offer some schooling..
-
July 22, 2019 at 6:13 am #7784JeffreyKeymaster
Thanks.
Question 1: The flicker is not just you. I’ve noticed it and so has MK. I’ve looked into it various times before, but never narrowed it down. But, I tried again, and I finally found what causes it…it is a feature for the sun, not a bug, and only affects some hours of the day. I think the darker atmosphere of COAS made it less noticeable, but with our much lighter skies, the alpha blending of the feature is way too too much and causes a major screen flicker across the whole sky. Now that I know what causes it, I was able to adjust some numbers for the feature and it is much better. The fix is uploading to Itch right now.
Question 2: It’s very late for me right now, so let me research some of the script code and get back to this later.
-
July 22, 2019 at 2:06 pm #7785BlakeParticipant
Thank you for your response. I appreciate it very much.
1. Glad to hear it! Will look forward to using this fix this evening.
2. I may be the only one who finds the system hard to understand, however I just can find no rhyme or reason to how it truly works at all from simply an outward point of view. I look forward to seeing what you can find!
Thanks again for your help!
-
-
-
July 22, 2019 at 7:10 pm #7786JeffreyKeymaster
There are many, many things that affect reputation and from the looks of things, not all of them are intuitive or even consistent, if you ask me.
But, a short list, for the general idea…
Your personal reputation will go up if you do nice things for citizen quests (rescue husband/wife, find friend/deliver message), rescue woman in jungle from thugs, etc., setting a ship free after boarding. This moves you toward “Hero” status.
But things that cause it to go down sometimes cancel that out…for instance boarding a ship in the first place causes both nation and personal reputation to take a slight hit. So setting it free will slightly cancel the personal reputation that went down, but nation rep is unaffected by setting it free. Anyone that ever asks for a ransom to stop firing in a battle, regardless of the answer causes it to go down. Since that feature was not original, coming from the GOF mod, I think that is a bit ridiculous to have your rep go down no matter what, just for them asking, but that’s how it is right now. Firing on surrendered ships (this requires 1st person mode), sinking a companion ship, killing a captain prior to boarding (in a ship battle…you can’t control that), not showing up to a duel on time. Casting captains/captives overboard. Not showing up to a duel on time.
Things that affect your nation reputation/bounty hunter score…Directly firing upon a non-enemy ship (requires 1st person mode) will cause a huge hit. Ship-to-ship collision that causes much damage to a non-enemy ship, cannon fire hitting the hull of a non-enemy, attacking a town via land attack, boarding a ship and fighting the captain (both cause a small degradation, but the boarding process will automatically cause the captain-fight, so seems a bit redundant), capturing a non-pirate ship, failing a trader quest, failing a convoy quest, sinking a non-pirate ship, setting a non-pirate ship free (again, seems redundant since the other actions of boarding and fighting the captain also cause a hit), attacking/killing nation soldiers.
There are many more things, but generally, doing work/quests for mayors/citizens cause your personal reputation to go toward Hero, and the mayor work also gains nation reputation. Tossing people overboard, sinking/boarding/taking ships cause personal and nation rep to go down (if non-pirate). Your officers, if they are below mid reputation themselves, will generally “like” if you do bad things; their loyalty will go up if they are “sharks” and you keep moving downward, their loyalty to you will increase and will decrease the more “good” things you do…and vice versa for officers that are closer to heroes themselves — loyalty goes up if you do the nice things, down if you do the “bad” things.
In your case, yes, defending yourself against attack will make your nation rep to the “enemy” go down, and your personal rep also takes a small hit…but the personal rep can usually be offset by letting them go, taking prisoners, etc. There is no such option for national reputation against them, so if they are not pirate, it will continue to degrade the more battles…and they will come after you. Killing bounty hunters will skyrocket your national “badness” that are already hostile, but personal reputation and rep for your own nation is easy to keep up by continuing to do quests that boost it because the “defense” degradation is usually quite small in comparison to the boost you get for completing the work. At least that’s what I see so far…
-
July 22, 2019 at 8:51 pm #7787BlakeParticipant
Thank you very much for the information. It would seem that there truly is no honor among thieves, eh? Be they in service to the crown or to themselves. All kidding aside, thank you for this write up. I now see that there would be no way of truly knowing how it all works without looking at the internals.
From looking over what you’ve found, It just slightly bugs me that regardless of what you do, your destined to receive all these small bad personal rep hits if you stay at sea long (the whole “I attacked you, however I now wish for you to leave me alone: Take my gold!” interaction being the chief culprit).
In my mind I would see self-defense against pirates (whether they be licensed or nay) or an enemy navy, as completely neutral to reputation. Only the decision of what fate you decide to bestow upon said encroaching individuals once conquered to be considered. There really should be no possibility for the interaction of “gold in exchange for release” if they instigated the engagement. It would seem a more plausible option/interaction to arise from traders/merchants that you engaged yourself in the idea of self interest. Would love to see this possibly addressed one day down the road, not that you all don’t have enough to do already, or for that fact if it would even be possible!
I guess for now the life of a scoundrel is what I’m destined for. Thanks again Jeffrey!
-
July 23, 2019 at 8:01 am #7788OldtimerParticipant
I agree, self defence should not result in rep decrease, neither “I`ll pay youf if you leave me alone, never mind I killed half of your crew when attacking your good self…”
Rgds, Oldtimer
- This reply was modified 5 years, 4 months ago by Oldtimer.
-
July 25, 2019 at 4:48 pm #7792modernknight1Keymaster
I don’t actually look at it that way. I look at it as if you take their money, you besmirch your own honor because of what they did. I never take the money unless its very clear its my only way out because I am heavily damaged and/or undermanned. Instead I always say no and demand surrender.
Once you have a decent reputation and have a formidable ship and crew they will often surrender – sometimes not until you board. Once I’ve boarded I will usually plunder the ship and let it go. Letting it go will boost your reputation.
Its not difficult to keep a decent reputation once you’ve got a lot of money and skills. Going into the jungles will give you rapist encounters. Be certain to talk to the lady you’ve saved a couple of times so she says she will tell everyone about how great you are. Don’t just take the money. Talk to her again.
If you see beggars in the street, give them a couple thousand gold.
Take the errand for the madames in the cat houses and take the donations to the priest.
Keep taking passengers along the way and take the odd cargo carrying job.
Kill the cave denizens for the church.
Once you have millions in gold running out your pockets and have layed up a bunch in the banks, start making large donations to the churches. That alone will keep your reputation at the hero level. Sort of the same with politics in real life LOL.
As far as the Wicked Wench goes. Do you realize there are actually TWO models of the Black Pearl variants in game? I think only the later one has the transluscent windows and no lights. That’s because it was a direct port from POTC. I’m the one who did the reskins on those ships. In fact one of my reskins was put back into New Horizons LOL (no acknowledgement of course) I could tell it was my work because I re-highlighted and detailed the gilding work on the stern transom both on the outside and the inside.
What I would recommend is that you find another ship that has a good semi-opaque/semi transluscent window texture. There are many models that do. I would cut and past that into where you want it with the ALPHA map for the new piece kept in place and matching it by expanding it or contracting it into the space to whatever alpha mapping that the old texture has on the windows – or on the fonar/lantern textures used. I never cared very much about the little lights and that’s why there is a mixed bag in the game. From what I understand they are not hard to add using tool to put locators on the model itself. But I’ve never bothered trying to do one – as I have a lot more important work I am trying to finish up.
MK
https://www.facebook.com/photo.php?fbid=2313437342300103&set=pcb.2313437398966764&type=3&theater
https://www.facebook.com/photo.php?fbid=2313437308966773&set=pcb.2313437398966764&type=3&theater
-
July 27, 2019 at 8:00 am #7798OldtimerParticipant
Mr. Knight,
AFAIU you think that I besmirch my honour by taking money instead of “punishing” the attacker/s by destroying them. By morals of the time you could be right. For most people honour was then more important than life.
But by taking money you save lives of both parties. This might be an argument for increased rep with the nation of the hostiles. So it is a matter of taste.
Concerning your other arguments/explanations I do what you say with a small ship. I am able, when I wish so, to keep myself stinking rich at constant Hero lvl. with a Tartana or Barco Costero with all officer post filled with high lvl men. And I do not bother with madames, church or national quests. When sailing these midgets storms are my only real worry.Rgds, Oldtimer
- This reply was modified 5 years, 4 months ago by Oldtimer.
-
-
-
July 24, 2019 at 5:48 pm #7791BlakeParticipant
Hello again all, new quick question. I have been trying to no avail, to fix a texture file for the Armed English Galleon (Wicked Wench Model) in GOF Eras 2. WickedWench01_lamps.tga.tx is the file I have been attempting to alter. This file controls the textures for the lamps as well as the great-cabin windows.
On this particular model the cabin interior is modeled and textured so therefore windows are transparent to allow you to see within. I am having an issue with the interior of the cabin disappearing which leads to seeing straight through the hull from the inside through the windows. I have attempted to tweak the texture to resolve the issue however I have had no such luck.
On one test I successfully ported the original Black Pearl model over from GOF 2.5 with it’s respected textures which resolved this cabin issue. However the lanterns do not light up at night on this particular model, So I was not satisfied with that result. I lack the skills and knowledge to even attempt to incorporate that function to this ship. I assume it is incorporated through the model itself?
All this being said, I do not know if it is the texture file, or the model itself which is causing this issue. And it may be the addition of the lit lamps that caused it in this particular game. If anyone could offer some advise or instruction on how to fix this I will be glad to attempt to do so on my own in my personal game files.
-
June 30, 2020 at 10:43 am #8100OldtimerParticipant
BUMP, kinda,
How and where can I change the stats of a ship I currently command?
Rgds, Oldtimer
-
July 5, 2020 at 2:19 am #8108JeffreyKeymaster
It depends on what stats you want to change…
The easiest method is to assign the ship to yourself, otherwise you need to know the character ID of your companion. So if you swap the ship to yourself, then change the stats, then you can assign it back.
Some examples:
RealShips[sti(Pchar.Ship.Type)].MaxCaliber = ??;
RealShips[sti(Pchar.Ship.Type)].Class = ??;
RealShips[sti(Pchar.Ship.Type)].Capacity = ??;
RealShips[sti(Pchar.Ship.Type)].SpeedRate = ??;
RealShips[sti(Pchar.Ship.Type)].MaxCrew = ??;
RealShips[sti(Pchar.Ship.Type)].HP = ??; //Hull points
RealShips[sti(Pchar.Ship.Type)].SP = ??; //Sail points
RealShips[sti(Pchar.Ship.Type)].TurnRate = ??;Chose a line, copy it to the void ExecuteConsole() function in console.c file, replace the ?? with the value you want, then load the game, press F4 and it should execute. Your character is the Pchar reference, so it will use your ship identifier in the RealShips array to change that particular ship. When you assign it back to another companion, the values are still in RealShips, attached to it.
-
July 5, 2020 at 8:28 am #8110OldtimerParticipant
Mr.Jeffrey,
should it look like:
– ExecuteConsole(RealShips[sti(Pchar.Ship.Type)].SpeedRate = ??;)
And if I have several playthroughs running, where do I find the PC in question?
THX for your attn.,
Oldtimer
-
July 5, 2020 at 9:36 pm #8111JeffreyKeymaster
It should be inside the function, like this:
void ExecuteConsole() { RealShips[sti(Pchar.Ship.Type)].SpeedRate = 15.0; }
You can also just put the line near the top, then an early return statement and it will just execute your line, then leave early, without executing anything that follows, so you can leave the rest of that function intact if you like:
void ExecuteConsole() { RealShips[sti(Pchar.Ship.Type)].SpeedRate = 15.0; return; //Nothing after this line will execute Log_SetStringToLog(GetKeyboardLayout()); //Bunch of other code follows }
If you have other playthroughs, the pchar is always the main character, so you load the save, press F4, then save. Now the save game you just loaded will have the player’s ship altered. Load a different save and you can do the same thing. Remember, it will only apply to that save, so if you load an older save, it will not have the changes and would also need the F4 treatment.
-
July 6, 2020 at 8:06 am #8112OldtimerParticipant
Mr. Jeffrey,
if I want to change several parameters can I just put them one after another between the brackets like:
– void ExecuteConsole()
{
RealShips[sti(Pchar.Ship.Type)].SpeedRate = 15.0;
RealShips….;
}THX for your attn.,
Oldtimer
-
July 6, 2020 at 5:13 pm #8113JeffreyKeymaster
Yes, you can run with as many lines as you wish within the function.
-
July 7, 2020 at 9:03 am #8118OldtimerParticipant
Mr. Jeffrey,
THX for your attn. Now my armed tartane will become truly invincible…
Rgds, Oldtimer
-
-
-
-
August 9, 2020 at 1:25 pm #8137MaltacusParticipant
Is there a limit to how many heroModel models a character can have?
Is it hardcoded?
The text at the start of HeroDeescribe mentions 8 levels of armor:
“(without armor, light, medium, tough, golden, clothes_1, clothes_2, clothes_3)”
…but I can’t find any line in initItems that says if the item is light or medium etc, so I’m wondering if that help text is obsolete.What do I need to do in order to be able to make a charcter have a different model for each cuirass type item in the game, from fencing gloves to a gilded breast plate?
-
August 10, 2020 at 11:05 pm #8139JeffreyKeymaster
Right now, the only characters that will show different armor (and that is not always, but they are the only ones that can), are the player and all the NPCs that are considered the other “heroes”, that are defined in HeroDescribe.txt.
When those characters are created, they are assigned the .HeroModel attribute that will equal that heroModel_x string. So for instance Diego will get:
ch.HeroModel = “Espinosa,Espinosa_Cirass,Espinosa_Cirass1,Espinosa_Cirass2,Espinosa_Cirass3,Espinosa_Cirass4,Espinosa_Cirass3,Espinosa_mush,Espinosa_Cirass_mush,Espinosa_Cirass1_mush,Espinosa_Cirass2_mush,Espinosa_Cirass3_mush,Espinosa_Cirass4_mush”
Whenever that character gets a clothing or cuirass assigned, the function SetEquipedItemToCharacter in file characters\CharacterUtilite.c, will check for the .heroModel attribute, and if it exists, will use the item’s .model attribute to get the index of the string to use to assign a new model to the character; if the index is too high (e.g. #7 doesn’t exist for that character’s model list that might only have one or two entries), then it defaults to just the first one. If you check the ITEMS\initItems.c code for all the CIRASS_ITEM_TYPE groupID types, then you will see they have itm.model = “7” or itm.model = “8” or itm.model = “1”. So in those cases, it will get that number index from that HeroModel string. But, it is “zero based” in that the first entry is actually index 0, index 1 would be the second one, index 2 would be the third one, etc.
Given this, what I have noticed, is that the ERAS definitions were not really set up properly for this, because there was the erroneous thought that all the “_mush” models needed to be in that list, adjacent to the regular model. That was before my time and is both unnecessary and doesn’t technically work correctly for itm.model = “1” in the cases of all those characters that are set up with just one model: heroModel_73 {Binckes,Binckes_mush} This probably works, because I think all those _mush models were just a copy of the original model, and renamed. It should have just been left as heroModel_73 {Binckes}, would get the same result if that model was simply copied and renamed. If not, a better name would be heroModel_73 {Binckes,Binckes_cirass1}. For _mush, that is musket carrying and actually requires both the animation mushketer be compatible with the model, and also a change to the gunbelt locator to actually just be the hands (but that’s another story and an additional problem someone recently brought up).
So, in the case of Diego, all those _mush definitions should be removed and the remaining list members check to be sure the match whatever the .model for the cuirass items defined. I have not yet bothered to research and fix all those, so they remain as-is.
Anyway, there is no limit, but there are only a handful of .model numbers defined in the item init, so just be sure the list has at least 9 comma separate items, because the highest .model in the items is “8”.
-
August 11, 2020 at 6:55 am #8142MaltacusParticipant
This game sure has peculiar spelling sometimes… I first thought “mush” in the model names was supposed to be “mesh” of some kind, since that term is used in some other games’ models.
I made no less than 12 different textures for Manuel Pardal but consequently only got to see five of them in-game due to this. Grumble… Now I’ll go over the itm.model entries. Would you like a copy? I could do one version based on only nine models too, since that is the most any hero has right now.
-
-
-
August 9, 2020 at 10:00 pm #8138MaltacusParticipant
Looking through the files in order to edit officer models I can’t find where they are listed. How does the game detrmine which models to use for officers? Or for pirate captains for that matter.
-
August 10, 2020 at 11:28 pm #8140JeffreyKeymaster
The non-Hero officers in taverns, are created in loc_ai\LAi_utilites.c, function CreateHabitues. They are created in the call: NPC_GeneratePhantomCharacter(“pofficer”, iNation, MAN, 1), and tracing through the function, it gets the model string from CreateModelString:
case “pofficer”:
sBody = “officer”;
iNumber = rand(20)+1;
break;So it will choose model officer_1 through officer_21
Other pirate captains are chosen similarly, but are created in the SEA_AI\sea.c code, depending on the Ship.Mode, or encounter type: SetCaptanModelByEncType
That function sets both the model and faceid, depends on whether trade, war or pirate and also by nation:
switch (sFantomType)
{
case “trade”:
ModelPirate = CreateModelString(“trader”, iNat, MAN);
break;
case “war”:
ModelPirate = CreateModelString(“officer”, iNat, MAN);
break;
case “pirate”:
ModelPirate = CreateModelString(“pofficer”, iNat, MAN);
break;
}-
August 11, 2020 at 6:41 am #8141MaltacusParticipant
In what file is CreateModelString and this code? I’m not finding it in LAi_utilites.c.
case “pofficer”:
sBody = “officer”;
iNumber = rand(20)+1;
break;-
August 11, 2020 at 7:20 am #8143JeffreyKeymaster
Sorry, did not mention that one…it is found in scripts\utils.c
-
August 11, 2020 at 9:33 am #8144MaltacusParticipant
Thanks, found it now. There are about 40 officer character models in the character model folder though, were models 22-40 left out for any particular reason?
-
September 24, 2020 at 4:16 pm #17771JeffreyKeymaster
Don’t know…MK found and added many models over the years. Some he may have decided don’t work, doesn’t like them, are duplicates, or haven’t yet been retextured, or in some cases, may actually be used by something other than Pirates, even though they were named such…any number of reasons, I suppose.
-
-
-
-
September 10, 2020 at 9:50 am #8474OldtimerParticipant
Change data of player ship.
Mr, Jeffrey,
Following your instructions above I could change my ships data, but no longer.
This is the code change:void ExecuteConsole()
{
RealShips[sti(Pchar.Ship.Type)].TurnRate = 16.07;
}
But now nothing happens after pressing F4.What`s wrong?
Rgds, Oldtimer
-
September 24, 2020 at 4:13 pm #17770JeffreyKeymaster
Code looks fine. You can add a message that will display in the rolling text of the upper right of the screen to verify the F4 key registered with the game:
void ExecuteConsole() { RealShips[sti(Pchar.Ship.Type)].TurnRate = 16.07; Log_SetStringToLog("Success"); }
You should see the Success text message, then F2 to check Maneuverability of the player ship.
If it still doesn’t work, check for error.log to see if something went wrong.
-
-
February 27, 2021 at 8:31 pm #20730MaltacusParticipant
The fencing gloves, girdle and boots do not alter the characters appearance. I would like to change that so that every “cirass” item type can have a unique character model tied to it (for my favourite heroes/villains at least).
If I recall correctly they are coded somewhere to specifically not alter the characters appearance, even if you alter the itm.model entry in init.items.c. Is that correct, and if so what do I need to change to remove that?
-
March 4, 2021 at 12:20 am #20733JeffreyKeymaster
The change is in characters\CharacterUtilite.c, function void SetEquipedItemToCharacter(ref chref, string groupID, string itemID).
Find the line: if(!CheckAttribute(arItm, “skipPerkCheck”)) {
The gloves, girdle and boots have the skipPerkCheck attribute, so they fail the ‘if’ test. If you want them to be considered, remove the if {} block surrounding the model/animation assignments.
But more work must also be done.
Change the model list of the applicable heroes in HeroDescribe.txt
heroModel_9 {HeroEB,officer_13_cirass,officer_13_cirass1,officer_13_cirass2,officer_13_cirass3,officer_13_cirass4}
Change the .model of the items to a number that you want to use from the hero model list, keeping in mind that number will be the same index for all heroes; if the index is too high for some heroes, it will just default to the “zero” entry, which is the first.
The GetSubStringByNum function starts from zero, so GetSubStringByNum(“zero,one,two,three,four,five”, 1) will get “one”,
GetSubStringByNum(“HeroEB,officer_13_cirass,officer_13_cirass1,officer_13_cirass2,officer_13_cirass3,officer_13_cirass4”, 1) will get “officer_13_cirass”, GetSubStringByNum(“zero,one,two,three,four,five”, 7) will get “zero” or “HeroEB” if using the hero exampleA new game would be required to get both the item init changes and the changed hero model lists.
-
March 7, 2021 at 3:32 pm #20734MaltacusParticipant
I got a crash on starting when I tried changing the characterutilite.c. Could you show exactly how it is supposed to look?
-
March 8, 2021 at 9:32 pm #20738JeffreyKeymaster
Find the following lines and comment out the if( and the closing brace } lines like this:
//#20190113-03 //if(!CheckAttribute(arItm, "skipPerkCheck")) { chref.model = GetSubStringByNum(chref.HeroModel, sti(arItm.model)); //#20180103-02 Hero animation extension if (CheckAttribute(chref, "HeroAnim")) chref.model.animation = GetSubStringByNum(chref.HeroAnim, sti(arItm.model)); //}
-
March 9, 2021 at 5:48 am #20739MaltacusParticipant
That did it, many thanks Jeffrey.
-
-
-
-
March 7, 2021 at 7:35 pm #20735OldtimerParticipant
Nation relations.
Sailing for England as Mary Harvey I survived a sinking. My Nation relations are neutral with all. Still I was attacked as an enemy agent by the French upon entering a French city. Spaniards are friendly though…
Had no ship by that time so I could not fly a flag.
Well, I was wrong, I had no ship but it could fly Spanish flag nevertheless…Rgds, Oldtimer
- This reply was modified 3 years, 8 months ago by Oldtimer.
-
March 8, 2021 at 9:27 pm #20737JeffreyKeymaster
The shore chosen is not fully random. I actually give the player a better chance, as it would suck to wind up an English character, stuck on Saint Martin, with only the enemy Dutch town of Marigot. So how it works:
It will only choose shores on islands with colony nations that match whatever Flag perks your character can fly. However, the game currently disallows changing flags when you have no ship, which of course you just lost, so I also coded it to change the flag you were flying to match one of the nearby colonies, because once you are on shore with no ship, you will not be able to change the flag.
Since you tried a French and Spanish town, I’m going to guess you washed up somewhere on Hispaniola? Anyway, you apparently had both the French and Spanish flag perk, so Hispaniola shores were an eligible option during the “wash ashore” feature, and it randomly selected the Spanish flag perk to change you so that you would have some chance of entering a town on the island and more easily find some means of transport.
-
March 9, 2021 at 11:22 am #20740OldtimerParticipant
@Jeffrey post 20737
Well, that might(?) explain things. I “changed” flag to English which the French thought fishy. I could tell the guards that I flew English flag though… Anyway when under Spanish flag which I “flew” on being washed ashore I was friendly to Spanish patrols but not city guards.
I did not think abt. entering a French settlement under French flag.Rgds, Oldtimer
-
March 12, 2021 at 1:07 am #20743DraiksParticipant
-
May 15, 2021 at 8:31 am #20785OldtimerParticipant
Walk/Run automation.
If the game is set to walk for PC, run must be activated by player when combat starts.
It would be good if run was activated automatically whenever a weapon is drawn and back to walk after sheathing.
I feel kinda simple running everywhere all the time.Rgds, Oldtimer
-
-
AuthorPosts
- You must be logged in to reply to this topic.
by Maltacus