• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Reclassifying the ships (again)

Armada

Sea Dog
Staff member
Administrator
Project Manager
3D Artist
Storm Modder
First off, yes I know I was involved in setting up the class system we currently use. So, why the heck do I want to change it again? Because it's too damn complicated! :p

I've mentioned this before, but I'll say it again. The way things stand, the class numbers used by all ships can have one of three meanings: how effective each ship is as either a naval vessel, a merchantman or a combination of the two.
Now, when you see the spreadsheet detailing the system, it does make sense. However, there is no indication in-game of which categories the ships belong to, so the class numbers can be very confusing. "How can a 40-gun galleon and a 100-gun ship of the line both be in Class 1?", you might ask.

Sure, it seemed like a good idea to put the ships into three categories, and it seemed pretty cool to use the Royal Navy rating system for naval category... but without making it clear what the numbers mean, the categories are worthless.

So, let's get to the point. I propose we use a new, simplified system that classifies all ships under one roof.
My idea is simply to use the maximum crew values to govern which class each ship belongs to. Why? Because more crew generally means a larger ship, and a larger ship is harder to captain. This means the class number directly relates to the player's 'captain level' (the number with a little ship icon), regardless of which type of ship they want to sail. Makes sense, no?

Here's a quick guide to the new classes (I've called them 'tiers'), their boundaries, and ships placed at each end of each tier:
Tier 8: <30 crew, Dinghy -> Heavy Lugger
Tier 7: 30 - 59 crew, Barque Longue -> Pirate Schooner
Tier 6: 60 - 99 crew, Light Fluyt -> Snow Brig
Tier 5: 100 - 249 crew, Pinnace -> Light Fluyt-of-War
Tier 4: 250 - 399 crew, Corvette -> Frigate
Tier 3: 400 - 549 crew, 5th Rate Warship -> United States class Frigate
Tier 2: 550 - 899 crew, Spanish Heavy War Galleon -> Bellona class 3rd Rate
Tier 1: >900 crew, Barfleur class 2nd Rate -> Spanish Man O' War

Why 'tiers'? Because a "Class 2 Bellona class 3rd Rate" sounds odd. Two conflicting "classes" could get confusing. Why NOT a 'level'? Because the player progresses through 'levels' separately to their 'captain level'. So, at the end of the day, you could say you're at Level 10 and captaining a Tier 2 Bellona class 3rd Rate. If you can follow all those levels, tiers, classes and rates, then you probably need some more rum! xD

Anyway, the full spreadsheet detailing the system is in my SkyDrive folder (Ship Mod- Sept 2012 Edition). Here's where SkyDrive proves its usefulness, as you can view the spreadsheet online even if you don't have Excel.
The system is not yet perfect, mainly because a few ships have questionable stats, but overall it seems fairly balanced to me. It's also reminicent of the stock game's system, ironically.
Any comments would be appreciated.
 
If you're doing it solely based on crew numbers, we could adjust ships_init.c to automatically calculate the new class values.
That way, we would not require any massive overhauls of ships_init.c and would also still keep the current classification available in code.
We'd need to do a rename of all references to "Class" in the interfaces with "Tier", but it does make sense and sounds nice and simple.
 
Doing an automatic calculation sounds good, but how would we be looking to code that in? I managed it in spreadsheet form, but that's about it. :wp
Also, how would we tell the game not to use the old class values?
I forgot that the word 'Class' was actually used in-game. I'll have a look around for the relevant interface files that would need changing.

The only other adjustment would be making sure the Battle Interface pictures match up properly with the new Tier system.
I would need to change a few lines in Ships_init.c, and possibly some of the pictures' textures, but that's not a problem.

I'd also like some opinions from people that play the game, if possible. :checklist
 
Basing the rating system on crew size makes sense because the crew size is based on hull strength and number and caliber of cannons. This would make more sense for new players who are not familiar with the different types of ships.
Since this can all be done in code it should be an easy thing to implement.
 
Remind me in a few days and I should be able to add a few lines at the bottom of ships_init.c to make your change take effect.

If you can handle the visible pictures and interface parts, I'll take care of the actual numbers. :doff
 
OK then, sounds like a plan. :onya
 
As promised:
Code:
        // Armada -->
        refShip.Class = 1;
        if(sti(refShip.MaxCrew) < 900)    refShip.Class = 2;
        if(sti(refShip.MaxCrew) < 550)    refShip.Class = 3;
        if(sti(refShip.MaxCrew) < 400)    refShip.Class = 4;
        if(sti(refShip.MaxCrew) < 250)    refShip.Class = 5;
        if(sti(refShip.MaxCrew) < 100)    refShip.Class = 6;
        if(sti(refShip.MaxCrew) <  60)    refShip.Class = 7;
        if(sti(refShip.MaxCrew) <  30)    refShip.Class = 8;
        // Armada <--
This goes at the bottom of ships_init.c . At the moment, I've got it below the following code:
Code:
        // PB -->
        if(!CheckAttribute(refShip,"BigPic")) { refShip.BigPic = refShip.id; }
        if(!CheckAttribute(refShip,"BigPicTexName")) { refShip.BigPicTexName = "SHIPS16"; }
        switch(refShip.BigPicTexName)
        {
            case "SHIPS16": refShip.BigPicTex = 0; break;
            case "SHIPS1":  refShip.BigPicTex = 1; break;
            case "SHIPS2":  refShip.BigPicTex = 2; break;
            case "SHIPS3":  refShip.BigPicTex = 3; break;
            case "SHIPS4":  refShip.BigPicTex = 4; break;
        }
        if(DEBUG && !HasSubStr(refShip.id, "obj_")) refShip.model = "all"; // PB: Allow repainting to all ships
        // PB <--
Did a quick test and it seems to be working.
 
That does seem to work, thanks!
Initially I thought there would be conflicts, as anything < 30 is also < 900, for instance, but clearly the code doesn't see it that way. o_O

As for the interfaces, I've only found a couple of uses of the word "Class" to describe the numbers, so that's not too much to change.
One question though: any idea what the difference is between the "Class" and "BClass" strings in 'common.ini'?
 
Initially I thought there would be conflicts, as anything < 30 is also < 900, for instance, but clearly the code doesn't see it that way. o_O
Actually, it DOES see it that way. All ships are now set as class 1 ships at first, but changed to class 2, then 3, etc. afterwards. Eventually they're left at exactly what you want.
It may not be the most efficient way of coding it, but it's the easiest way and it works.

One question though: any idea what the difference is between the "Class" and "BClass" strings in 'common.ini'?
Looks like it's only used by the spyglass code. Why that uses another string, I do not know. Maybe it was for translation purposes?
 
Actually, it DOES see it that way. All ships are now set as class 1 ships at first, but changed to class 2, then 3, etc. afterwards. Eventually they're left at exactly what you want.
Oh I see, it makes sense that way. :onya

Looks like it's only used by the spyglass code. Why that uses another string, I do not know. Maybe it was for translation purposes?
Probably, though it shouldn't matter in that case.

One more file using "Class" is in the 'HELPSECTIONS' folder. Is anything there even used in-game? All the files are 2003 originals. :read
 
From what I understand, those HELPSECTIONS files were used as tips in the X-Box version of the game. Or something. Check with Baste.
 
The tips are shown during the loading screens in the American X-Box version, and can be enabled in other versions. The "help section" is an unfinished and disabled menu apparently intended for explanation of various things in the game. I tried to finish it and make it work but I don't understand much of its code so I haven't been successful. Here are some pictures showing examples of tips and the help section.

About the ships, I was under the impression that class was based on combat effectiveness, and that "class" and "rate" meant the same thing in this case.
 

Attachments

  • Tips 1.jpg
    Tips 1.jpg
    87 KB · Views: 73
  • Tips 2.jpg
    Tips 2.jpg
    50 KB · Views: 79
  • Help section 1.jpg
    Help section 1.jpg
    320.6 KB · Views: 88
  • Help section 2.jpg
    Help section 2.jpg
    544.4 KB · Views: 80
  • Help section 3.jpg
    Help section 3.jpg
    473.3 KB · Views: 96
If the help section stuff could somehow be re-enabled and improved, it might be a useful addition to the mod.
I think some players might appreciate some short, helpful hints and tips in the loading screens, especially since there are so many of them.
That's something to discuss elsewhere, though.

You're right about the current system using the Royal Navy rating system, but that only applies to naval vessels.
Merchant vessels are classified based cargo capacity and such, and "balanced" vessels take into account a combination of the two.
The trouble is that the class numbers are used for three different meanings, hence the confusion. :facepalm

I chose crew size as an alternative because it applies to all ships, no matter what they're used for, so the numbers will only have one meaning again.
 
Well, it's only a small code adjustment this time around so it should be fairly painless to implement.
If people REALLY don't like it and want to keep the old system, that'll be only too easy: just disable those new lines of code.
 
The only catch is the Battle Interface images with textured numbers. They will stay the same regardless of which system is being used.
However, I don't see why people would prefer to keep the current system. Using the crew numbers seems to make things fair enough, so making the BI images work with it should be fine.
 
Can we remove those numbers from the BI images altogether? If they're not there, they can't be wrong. And it won't matter if we occasionally reclassify ships either.
 
We can, yes. They're just meant as a guide for the player, though one can always use a spyglass to determine another ship's class/tier.
In fact, removing the textured numbers would mean there's no need to change any further code, since most ships use suitable BI images already. :cheeky
 
Right, I've now modified all the relevant files and uploaded them to my SkyDrive folder: Ship_Tier_Mod.7z :dance

I ended up reassigning several ships' BI images after all, but not nearly as many as if I had kept the textured numbers.
It was mostly because I made some changes to ships_32.tga to make a few of the images more unique, and some are now more suitable for late-period ships. See attached image.
ships_32.jpg

EDIT: Updated the file; slight mistake with ships_32.tga.
 
Some acknowledgement that I posted the files would be nice... :wp

Anyway... did I invent the whole "captain level" thing?! I can't seem to find any references to it in the game.
I REALLY haven't played it properly for ages now. xD

EDIT: Ah, it DOES exist! I didn't notice because I recently had a load of Arcade settings selected for my little brother to play the game...
just switched back to Realistic settings and the "captain level" is visible. I knew I wasn't imagining things... :cheeky
 
Back
Top