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

Discussion Hornblower model & minor issues

FrozenHeart

Freebooter
I am playing Hornblower story line after a long with the new patch dated 08/10/2020.

Find some issues what I thought to discuss. I am playing Arcade mode as always.

1> About model.
Commander Hornblower has one shoulder boards placement missing (right one). He has got only left one. See picture below. Not looking good.

2> About experienced gained.
Character experienced gaining for the level up is not good. Its very hard to level up. Experience gap between one level to another is huge and experience earned form mission or other things are very low. It is expected to earn more considerable amount of experience after every successful mission to level up the character. Which is not happening. So there is only 'cheat code' to rescue and leveling up.

3> Auto disarmed.
When fighting, character sometimes get 'auto disarmed'. As other NPC (opponent too)
Note: Not taking about weapon breaking. As character has several weapon in stock but fighting with bare hands after disarmed. And disarmed weapon goes back in weapons slot but to the end of it and can be armed again with that. No visual breaking noted. And if character hit an auto disarmed NPC during fighting...bang... negative impact.

4> There is another one...but simply cant remember now. Will make you know all later.


Hornblower's shoulder board. Missing right one.
upload_2020-10-13_13-31-44.png
 
The single epaulette on one shoulder is historically correct for a Commander in the Royal Navy at that time.

Experience points are handed out in small amounts at various points. The rate at which they are given appears comparable to those given for various parts of "Tales of a Sea Hawk". Remember to make good use of officers - they gain experience more rapidly in their areas of expertise. Once you have command of a ship, you can recruit extra officers from taverns, you don't need to rely solely on story characters.

Auto disarming must be a feature of arcade play - I generally play "Realistic" mode and have never seen it. (Except when a "worn" sword deteriorates to "broken".) If you're disarmed, press "1" to quickly re-arm with a different sword - it might not necessarily be the one you want but it will usually be a good one and it's certainly better than bare hands!
 
Auto disarming must be a feature of arcade play
It's not.
Your exception is the only thing that happens.

If you are fighting with a Worn sword, when it breaks, you'll end up with your fists alone (and a "Broken" weapon in your inventory).
 
What does the "disarm" attribute on swords do?

There's certainly a problem with enemies who attack you with a worn weapon, it breaks, you don't notice it, and you lose reputation for continuing to attack. If he's attacked you then he's fair game, and if he was stupid enough to bring a half-knackered weapon to a fight then it's his problem, not yours. Another thing to try "one of these days" - try to add an attribute to a character who has been in a fight, then don't apply reputation loss if a character has that attribute and no weapon. He wasn't defenceless when the fight started!
 
What does the "disarm" attribute on swords do?
There is the DISARM_MODE toggle at the bottom of PROGRAM\InternalSettings.h that triggers this section in PROGRAM\Loc_ai\LAi_events.c:
Code:
       // CCC and PB: New attribute to weapons to allow for disarming opponents
       bool tbool = CheckAttribute(enemy, "equip.blade");
       if(tbool) tbool = GetCharacterEquipByGroup(enemy,BLADE_ITEM_TYPE) != "bladeX4";
       if( DISARM_MODE && CheckAttribute(weapon, "disarm" ) &&  LAi_IsFightMode(enemy) && !CheckAttribute(enemy, "nodisarm" ) && tbool)
       {
           int disarmbonus = 0;
           if(CheckAttribute(attack,"perks.list.SwordplayProfessional")) {disarmbonus = 20;}
           // if attacker has professional fencing skill, increase disarm chance with 20%

           int disarmpenalty = 0;
           if(CheckAttribute(enemy,"perks.list.SwordplayProfessional")) {disarmpenalty = 10;}
           // if attacked victim has professional fencing skill, decrease disarm chance with 10%

           if(sti(rand(100)+enemy.skill.Fencing) < sti(weapon.disarm)+sti(attack.skill.Fencing) + disarmbonus - disarmpenalty)
           {
               LAi_CharacterPlaySound(enemy,"OBJECTS\duel\sword_fallen.wav");
               string enemy_blade = GetCharacterEquipByGroup(enemy,BLADE_ITEM_TYPE);
               RemoveCharacterEquip(enemy,  BLADE_ITEM_TYPE );
               GiveItem2Character(attack, enemy_blade);

               if ( enemy.chr_ai.group !=  LAI_GROUP_PLAYER && !bAbordageStarted )
               // no disarming opponents during boarding
               {
                   LAi_SetCitizenTypeNoGroup(enemy);
                   Log_SetStringToLog(TranslateString("","Opponent disarmed !"));
               }
               else
               {
                   TakeItemFromCharacter(enemy, enemy_blade);
                   if ( sti(enemy.index) != GetMainCharacterIndex() && !bAbordageStarted ) // if NOT player
                   // officers safe from being disarmed boarding; player NOT safe from being disarmed during boarding
                   {
                       RemoveCharacterEquip(attack, BLADE_ITEM_TYPE );           // makes enemy use your blade against your officer
                       EquipCharacterByItem(attack, enemy_blade);           // and enables you to get it back by killing him/her
                       Log_SetStringToLog(TranslateString("","One of your officers was disarmed!"));
                       LAi_tmpl_afraid_SetAfraidCharacter(enemy, attack, true);   // makes officer flee
                       LAi_SetAfraidDead(enemy);
                   }
                   else
                   {
                       RemoveCharacterEquip(attack, BLADE_ITEM_TYPE );           // makes enemy use your blade against you
                       EquipCharacterByItem(attack, enemy_blade);           // and enables you to get it back by killing him/her
                       EquipCharacterByItem(enemy, "bladeX4");
                       Log_SetStringToLog(TranslateString("","You were disarmed!"));
                   }
               }
           }
       }
We experimented with that, but it ended up being set OFF by default.
I don't think it serves any real purpose anymore, since the bladedamage mod kind-of took over from it.

There's certainly a problem with enemies who attack you with a worn weapon, it breaks, you don't notice it, and you lose reputation for continuing to attack.
Either the enemy continues to fight with his fists (in which case: no problem), OR he gives up and tries to run away.
Only in the second case you would get the reputation loss. (And this second case never happens in boardings.)

I don't think fighting, let alone killing, someone who is running away is a very respectable thing to do; so the reputation loss makes sense.
I can see the problem though when it just happened and you haven't had the chance to notice it.

At sea, a similar situation applies to ships that surrender in the middle of a cannon volley.
This is why there is a 'grace period' coded in per ship so that any hits right after a surrender don't immediately trigger the reputation loss.
This doesn't happen on shore.

Adding this could be done here (also in PROGRAM\Loc_ai\LAi_events.c:
Code:
           if(BladeBreak)
           {
               if(sti(enemy.index) == GetMainCharacterIndex()){
                   Continue_Bladedamage = false;
                   LogIt("Your blade decreased in quality!"); }
               if(CheckAttribute(enemy, "nodisarm")) Continue_Bladedamage = false;
               if(enemy.chr_ai.group == LAI_GROUP_PLAYER) Continue_Bladedamage = false;
               if(bAbordageStarted) Continue_Bladedamage = false;

               if(Continue_Bladedamage && rand(1) > 0)
               {
                   LAi_SetCitizenTypeNoGroup(enemy);
               }
               else
               {
                   if(CheckCharacterItem(enemy, FindCharacterItemByGroup(enemy, BLADE_ITEM_TYPE)) && GetItemQualityByID(FindCharacterItemByGroup(enemy, BLADE_ITEM_TYPE)) != 0 && BLADEDAMAGE_USEOTHERBLADE)
                   // If character has another blade and the other blade is not broken and USEOTHERBLADE is on
                   {
                       // Then use the other blade
                       EquipCharacterByItem(enemy, FindCharacterItemByGroup(enemy, BLADE_ITEM_TYPE));
                   }
                   else
                   {
                       // Else use the default blade
                       if(!CheckCharacterItem(enemy, BLADEDAMAGE_DEFAULTBLADE))
                       {GiveItem2Character(enemy, BLADEDAMAGE_DEFAULTBLADE);}
                       // To prevent characters being given another defaultblade if they already have one
                       EquipCharacterByItem(enemy, BLADEDAMAGE_DEFAULTBLADE);
                   }
               }
           }
Would have to be next to the 'LAi_SetCitizenTypeNoGroup' line.
And here is an example of how to code a delayed execution of a custom function from PROGRAM\NK.c:
Code:
    PostEvent("KrakenAttackFinished", delay, "i", rCharacter);
}

#event_handler("KrakenAttackFinished", "FinishKrakenAttack");
void FinishKrakenAttack()
{
   ref pchar = GetMainCharacter();
   aref rCharacter = GetEventData();
   LogIt("Captain, the Kraken has finished its attack on the " + rCharacter.ship.name + "!");
   if(CheckAttribute(pchar, "KrakenAttack"))   PostEvent("EnableKraken", 5*60*1000);
}

Then again in LAi_events.c, this is where the reputation loss for unarmed victims is applied:
Code:
       if(!isSetBalde)
       {
           // ccc mar05 REPLOSS tweak added
           if(enemy.chr_ai.group != LAi_monsters_group)
           {
               if(!CheckAttribute(enemy,"corpse")) enemy.corpse = false; //Fix by levis
               if(enemy.corpse==false) //Levis: fix so you won't get reploss from hitting corpses
               {
                   if (!CheckAttribute(enemy,"pickgold") || GetCharacterEquipByGroup(attack, BLADE_ITEM_TYPE) != "bladeX3") // GR: no reploss if he robbed you and you use a thief's knife
                   {
                       if(GetAttribute(attack, "index") && sti(attack.index) == GetMainCharacterIndex()) LogIt(TranslateString("","CHANGE REP for player:") + " " + -REPLOSS + " - " + TranslateString("","undrawn blade 2"));    // LDH 19Dec08
                       LAi_ChangeReputation(attack, - REPLOSS); // NK tempfix for un-drawn blades 04-17
                   }
               }
           }
           //exp = 0.0;
       }
(You knew that already; I see your initials there. :cheeky )

On a side-note... I think this code has never functioned as intended:
Code:
bool isSetBalde = (SendMessage(enemy, "ls", MSG_CHARACTER_EX_MSG, "IsSetBalde") != 0);
It should return whether a character has drawn his/her blade.
But as far as I know, it only returns 'true' for characters who don't have a blade equipped at all.
Which is stupid, because we can check that easily on the PROGRAM side; without a need to ask the engine itself using 'SendMessage' .

I wonder if that was ever fixed in later releases like CoAS or TEHO...
 
The single epaulette on one shoulder is historically correct for a Commander in the Royal Navy at that time.

Don't know about that. Its ok then.

Experience points are handed out in small amounts at various points.

But a considerable amount of experience added after a successful mission can be considered.

Once you have command of a ship, you can recruit extra officers from taverns, you don't need to rely solely on story characters.

:onya

If you're disarmed, press "1" to quickly re-arm with a different sword

That is what I am doing. But I discovered another worried thing what fighting. Coming to it shortly... *

There's certainly a problem with enemies who attack you with a worn weapon, it breaks, you don't notice it, and you lose reputation for continuing to attack. If he's attacked you then he's fair game
Either the enemy continues to fight with his fists (in which case: no problem), OR he gives up and tries to run away.
Only in the second case you would get the reputation loss.

There is the point. If they attack me bare hands then its acceptable. But at least one place it was not happened that way. Just the opposite. I got negative points.

If you are fighting with a Worn sword, when it breaks, you'll end up with your fists alone (and a "Broken" weapon in your inventory).

I do always have several blades in the inventory. And never fight with worn blade (expect story made). Now coming to the worried part...

* What I had found yesterday while fighting. I had 6 blade in the inventory. All are excellent quality. Along with a tribal axe (forgot real name) and I was using that axe.
1: Sharp with me out strike of Canoy. Sharp had excellent english blade and using it. I started the fight with tribal (indian as describe). Suddenly I was auto disarmed with a cracking/dropping sound. I immediately pressed 1 and start fighting with another excellent blade. After the fight ends I suddenly discover I picked up Sharp's excellent english saber automatically. And Sharp has no blade in his hand. Though he had another blade which is an excellent dulling saber in his inventory (I gave him earlier).
Later I found probably my tribal axe in one of the indian's dead body when I was looting manually (mostly they do not use them as I never saw it earlier).
Now question is why Sharp dropped his excellent blade when its intact. And how Hornblower collect it automatically. Same with the axe.

2: Discovered that when Hornblower using an excellent blade it still sometimes gone (through auto disarm). Later found at the last of the weapon slot and most importantly still intact. Not broken or below quality.

3: Yesterday capture a pirate ship and was fighting with her caption on upper deck (dulling). Hornblower had an excellent herbesion blade (sorry for spelling). After few swing bang... auto disarm with cracking/dropping sound ... pressed 1 and select another blade. After the fight when tried for manual looting just found my excellent herbesion blade in opponent bead body... Question is how the opponent got my blade :shrug
 
Could you post your file "PROGRAM\InternalSettings.h"? Apparently there is a setting for disarming, so I'd like to see what your file says about that.
 
Solved it. After I examined InternalSettings.h found that the Disarming option was on. Mostly done by me when I was edited the file.
Sorry for the inconvenience.
Still attaching the file (if you want to see).

Basic Hornblower story line finished. But two guy Wills and Stylar remained in the passenger list. But can not be added as companion at land or see battle.
Are they default officers provided by the Hornblower story line?
 

Attachments

  • InternalSettings.h
    70 KB · Views: 228
Thanks for confirming that it was the "Disarming" option. No harm done, and at least we now know there isn't a disarming bug lurking in the system. Meanwhile, I've done a bit of work to reduce the risk of losing reputation if an enemy's sword breaks, he tries to run, you don't notice this and hit him again.

Wilks and Styles remain in your crew but can not be assigned. They're sailors, not officers. So you can give them jobs but they're not your companions (except when required for story purposes).

Styles is trained as a gunner and Wilks as a navigator, or you can assign them different jobs and let them learn new skills. This can free up two of your officers for use as shore party or ship commanders.
 
Can Hornblower buy/change/use other good ships?
As provided ship is not enough. I forgot as I played once long ago.
 
Can Hornblower buy/change/use other good ships?
As provided ship is not enough. I forgot as I played once long ago.
Once you gain the rank of Commodore, you get more freedom in what you do with your ships
Until then, you should get a new ship on each promotion.
After the main storyline concludes, of course.
 
2 quick question. As I rarely played as naval officer before.

Cant find bombs.
Disabled or need to match any conditions to use bombs??
And any new ship will not be given after promoted to rare admiral and afterwards??

As I want to use own customized ship. And there is one setting on a deserted island :)
 
Cant find bombs.
Disabled or need to match any conditions to use bombs??
They're rare.
Very rare.

There are a few forts you can access from shore.
If you're lucky, you can steal some there.

Or sometimes in an abandoned hulk you might encounter when sailing from island to island in 3D Sailing Mode.

And any new ship will not be given after promoted to rare admiral and afterwards??
Once you reach the highest rank, indeed there won't be any more rewards.

As I want to use own customized ship. And there is one setting on a deserted island ;)
You're not really playing as a Naval Officer then, are you?

If need be, you can behave like a pirate and get kicked out of the navy.
Gives you a lot of your freedom back. ;)
 
They're rare.
Very rare.
:rumgone

There are a few forts you can access from shore.
If you're lucky, you can steal some there.

Or sometimes in an abandoned hulk you might encounter when sailing from island to island in 3D Sailing Mode.

These things are newly added I think! Steal form forts! How? That's means through fight? Or bribe a person inside?
Abandoned hulk that's an interesting thing! Never encounter any in NH when sailing! Remember one at Tortuga. But never tried to explore that. 3D sailing mode needs more time.

You're not really playing as a Naval Officer then, are you?

If need be, you can behave like a pirate and get kicked out of the navy.
Gives you a lot of your freedom back.

After reaching highest rank there is no obligation to go there and buy one ;)
 
Last edited:
These things are newly added I think! Steal form forts! How? That's means through fight? Or bribe a person inside?
Newly added; many MANY years ago.

The Barbados forts can be entered from the shore.
You're not supposed to be there though, so soldiers will fight you.
There are also civilians inside to talk with though.
One random one can help you get some bombs.
 
And any new ship will not be given after promoted to rare admiral and afterwards??
At Rear Admiral, you should get a companion ship, the heavy sloop of war Lotus, provided that you do not already have three companion ships.

At Vice Admiral, you should get a new flagship, the "Barfleur" class ship of the line Prince.

At Admiral, again provided that you do not have three companion ships, you should get the frigate Clorinda as a companion.

After that you will receive no more promotion ships. This is because in reality, the Admiral of the Fleet and First Lord of the Admiralty would command a desk somewhere in London, not a ship somewhere in the Caribbean!

These ships are specific to Horatio Hornblower and are based on ships which he received in the series of books about him. Other naval officers will receive different ships when they are promoted. Some other specifially named officers get ships based on the real officer's career. Otherwise you'll get a sequence of ships depending on your chosen nation and time period.
 
Styles health/hit point did not go up according to level up. He is in level 29 but health is still 80!

'Sail ho' system need to be rework. Its hard to fight close to an island. Middle of the fight sail ho suddenly appears and through character to other far places(except governor mission).
Same thing happening during 3D selling mode.
 
"Sail Ho" should not happen in the middle of a battle. It may be that you managed to sail far enough from all enemy ships that the game reckoned the battle to be over, then the system decided that you had moved within range of another island. It can certainly be expected during 3D sailing mode when no battle is in progress - it's called Direct Sail and is a feature of the mod allowing you to sail to another island without using the worldmap. Direct Sail is disabled during governor ship hunting missions to prevent you from accidentally sailing to another island in case that causes the target ship to disappear.

You can disable Direct Sail by pressing '0' - the one on the top row of the keyboard, not the one on the numeric keypad. You can enable it again by pressing '0' again.
 
Styles health/hit point did not go up according to level up. He is in level 29 but health is still 80!
Thought the Levelling system was supposed to take care of that uniformly for all characters in the game...
 
Back
Top