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

Some questions

Does setting it to 50,000 for ropes and vants have any adverse effects on performance, compared to around 20,000, would you say?
I say that because we probably could bump it up a bit when we update the vants draw distance, if performance doesn't decrease noticeably.
 
I suppose we can try and see what happens. Feel free to include it in your ship pack. :yes
 
I just did it and really can't tell about any performance hit yet. Setting it that large is mainly only for looking at ships through the telescope. They fade away smoothly instead of suddenly disappearing.
 
I've just tried it for myself, and yes, it does affect the draw distance! Thanks for figuring this one out, mate! :woot
You're welcome. :)

I would also say that setting the draw distance for both ropes and vants to "50000.0" would be better so they don't suddenly disappear when zooming out. I use that value in my game and it works fine.
 
I just watched some ships coming and going and at 50000 the ropes and vants come in and out of view smoothly and progressively. 20000 is definitely too short, but I don't know if 50000 is too long.

Baste: Have you experimented with distances less than 50000?



edit: 50000 seems to cause the ropes and vants to fade away around the 500 yards mark.
 
While we're talking about the crew on deck, is there any way to position the camera a little higher above the deck while moving around on the ship? I don't like being as tall or taller as/than everybody else on land but shorter than the crew while on the ship. I looked in "AICameras" and tried some changes but it didn't work.
Fixed, and it is possible through code in "AICameras".

Miklkit: Yes, I have tried both lower and higher, and it seems that anything below "50000.0" is too low. I might actually think that even that value is too low. The ropes and vants disappear at a distance where they probably should still be able to be seen, but however, since the crew also disappear at a distance where it probably should still be able to be seen and since it does not look like the draw distance for the crew can be changed, I guess there is not much point in increasing the draw distance for ropes and vants above "50000.0".
 
You have already looked into the crew draw distances? :bow I was thinking that was the next thing to do.

It seems one can see the ropes and vants at a greater distance with large ships than with small ships. I was able to see them on a 3rd rate at a longer distance than on brigs last night.
 
Fixed, and it is possible through code in "AICameras".
Isn't that also possible by moving the 'Camera' locator on the offending ship model?
And surely changing it in 'AICameras' would globally affect all ships?
 
There's several ships where I definitely would like to have the camera moved up, because you can hardly see over the railing. :facepalm
 
Well then, let me know of the offending ships and I'll sort that out for the ship pack. ;)
 
Miklkit: Yes, but feel free to look into it too. I couldn't find anything that affects the crew draw distance, but perhaps it is there somewhere. :)

They are visible at the same distance for all ships, although it might be easier to see them at a longer distance on large ships than on small ships simply because it's easier to see the large ships.

Armada: I think it is, and yes, changing it in "AICameras" affects all ships. I have so far tested it on the stock ships "Manowar GUBER" and "Lugger ENGLAND" and it didn't seem bad. I don't know if there's some ship in the build mod where it would seem bad.

Pieter Boelen: That's also part of the reason why I wanted to move the camera a little higher. I don't know which solution would be best, change "AICameras" or move the locator, but if you want the code, here it is:
Code:
// Deck camera paramerets
SeaDeckCamera.Perspective = 1.285;
SeaDeckCamera.SensivityDistance = 0.01;
SeaDeckCamera.SensivityHeightAngle = 0.0015;
SeaDeckCamera.SensivityAzimuthAngle = 0.0015;
SeaDeckCamera.StepUp = 0.5;
SeaDeckCamera.StepMin = 0.01;
SeaDeckCamera.h_max = 2.0;
SeaDeckCamera.h_min = 1.8; // Baste
SeaDeckCamera.h_step = 0.1;
SeaDeckCamera.h_def = 1.8; // Baste
SeaDeckCamera.MaxAngleX = 1.5;
SeaDeckCamera.MinAngleX = -1.5;
SeaDeckCamera.RockingX = 0.8;
SeaDeckCamera.RockingZ = 0.8;
Anything higher than that value seems to be too high.
 
Well, glad you like it, but what about Armada's idea? Is it better to change it for all ships globally or is it better to adjust each ship individually? Any significant difference?
 
All I can suggest is to test and see what it's like. :shrug

Ideally, all ships at once would be best because it's just a lot simpler and quicker to do. :wp
 
That's true. :)



I've made some changes to the code for the fists:
Code:
// Baste -->
punch = rand(rank)*0.5;
bool critical = false;
if(rand(100) <= 5)
{
punch = rank*0.5;
critical = true;
}
if(IsCharacterPerkOn(enemy, "BasicDefense"))
{
punch = rand(rank)*0.45;
if(critical == true) punch = rank*0.45;
}
if(IsCharacterPerkOn(enemy, "AdvancedDefense"))
{
punch = rand(rank)*0.4;
if(critical == true) punch = rank*0.4;
}
if(IsCharacterPerkOn(enemy, "SwordplayProfessional"))
{
punch = rand(rank)*0.35;
if(critical == true) punch = rank*0.35;
}
if(IsEquipCharacterByItem(enemy, "cheaparmor")) punch = punch*0.9;
if(IsEquipCharacterByItem(enemy, "commonarmor")) punch = punch*0.5;
if(IsEquipCharacterByItem(enemy, "goldarmor")) punch = punch*0.4;
if(makeint(punch) <= 0) punch = 1;
bool noExp = false;
if(CheckAttribute(attack, "chr_ai.group"))
{
if(CheckAttribute(enemy, "chr_ai.group"))
{
if(attack.chr_ai.group == enemy.chr_ai.group && !CheckAttribute(GetMainCharacter(),"TrainingFight") && !HasSubStr(attack.id,"TrainingFight_") && !HasSubStr(enemy.id,"TrainingFight_"))//MAXIMUS
{
// ccc mar05 REPLOSS tweak added
//	PB: I don't think we need this; no harm done = no reploss needed
//	LAi_ChangeReputation(attack, - REPLOSS);	// ccc rephit for attacking friends
//	if(sti(attack.index) == GetMainCharacterIndex()) traceandlog("CHANGE REP for player: " + -REPLOSS + " - attacking friends");	// LDH 19Dec08
punch = 0.0;
critical = false;
noExp = true;
}
}
}
if(critical == true)
{
if(sti(attack.index) == GetMainCharacterIndex())
{
Log_SetStringToLog(XI_ConvertString("Critical Hit"));
}
}
// Baste <--
With these changes it's possible to get critical hits when attacking unarmed, abilities and armor can both be used for protection, and characters in one's group can't be damaged. There might be a better way to implement the armor, but this way it at least gives some protection. Also "if(IsCharacterPerkOn(enemy, "SwordplayProfessional"))" is "0.35" instead of "0.3" since the "Professional Fencer" ability is supposed to decrease damage by 30%.

In "LAi_fightparams" the line "if(IsCharacterPerkOn(enemy, "SwordplayProfessional")) kDmg = 0.6;" should be "if(IsCharacterPerkOn(enemy, "SwordplayProfessional")) kDmg = 0.7;" for the same reason. Its description should be changed to say "30%" instead of "10%".



In the "Fast travel" command the "Prison" icons were pixelated and the "Fort" icons' borders were slightly misplaced, so I cleaned them up a bit. :)



What do you think about the critical hits in melee combat?

I think the damage between them and normal hits is too large. It can be, for example, "20, 19, 21, 200". I think it's a too sudden difference. I have changed the critical hit check code and I am trying to determine if it's better with the changes:
Code:
void LAi_ApplyCharacterBladeDamage(aref attack, aref enemy, float attackDmg, float hitDmg, bool isBlocked)
{
//Åñëè íåóáèâàåìûé, òî íåòðîãàåì åãî
if(CheckAttribute(enemy, "chr_ai.immortal"))
{
if(sti(enemy.chr_ai.immortal) != 0) return;
}
//Ïðèìåíÿåì àáèëèòè
float pBreak = 0.0;
if(IsCharacterPerkOn(attack, "SwordplayProfessional"))
{
pBreak = pBreak + 0.25;
}
// Baste - critical hit check moved down
float kDmg = 1.0;
if(IsCharacterPerkOn(attack, "Rush"))
{
kDmg = 1.5;
pBreak = pBreak + 0.5;
}
if(IsCharacterPerkOn(enemy, "Rush"))
{
pBreak = pBreak + 0.9;
}
isBlocked = isBlocked && CheckAttribute(enemy,"equip.blade") && GetCharacterEquipByGroup(enemy,BLADE_ITEM_TYPE) != "bladeX4";
// PB: Disable blocking for enemies with either no sword or their fists equiped
if(isBlocked)
{
//Âåðîÿòíîñòü ïðîáèâêè
float p = LAi_BladeFindPiercingProbability(attack, enemy, hitDmg);
p = p + pBreak;

//Åñëè øàíñîâ ïðîáèòü íåò, òî íåíàíîñèì ïðîâðåæäåíèÿ
//		if(p < 0.0) return;										// LDH removed 06Apr09
//Åñëè øàíñîâ ïðîáèòü íåò, òî íåíàíîñèì ïðîâðåæäåíèÿ
if(rand(10000) > p*10000)	// if block is NOT pierced
{
// LDH rewrite 06Apr09
if(GetCharacterEquipByGroup(attack, BLADE_ITEM_TYPE) == "bladeX4")	// if attacker uses fists, he gets damaged instead
{
if(!LAi_IsImmortal(attack))
{
LAi_ApplyCharacterDamage(attack, 2*rand(makeint(attack.skill.Fencing)));	// LDH 0..20
LAi_CheckKillCharacter(attack);
}
//				return;		// LDH so blocked fists don't damage defender - 11Apr09
}
return;
}
}
//Âû÷èñëÿåì ïîâðåæäåíèå
float dmg = LAi_BladeCalcDamage(attack);
dmg = dmg*kDmg;
//Àòòàêà ñâîåé ãðóïïû
kDmg = 1.0;
if(IsCharacterPerkOn(enemy, "BasicDefense")) kDmg = 0.9;
if(IsCharacterPerkOn(enemy, "AdvancedDefense")) kDmg = 0.8;
if(IsCharacterPerkOn(enemy, "SwordplayProfessional")) kDmg = 0.7; // Baste
dmg = dmg*kDmg;
float damage = LAi_BladeApplySkills(attack, enemy, dmg);
// Baste - critical hit calculation changed -->
float critical = 0.0;
if(IsCharacterPerkOn(attack, "SwordplayProfessional"))
{
if(rand(100) <= 25)
{
critical = damage*2.0;
}
}else{
if(IsCharacterPerkOn(attack, "CriticalHit"))
{
if(rand(100) <= 10)
{
critical = damage*2.0;
}
}
}else{
if(rand(100) <= 5)
{
critical = damage*2.0;
}
}
if(isBlocked)
{
damage = damage*0.3;
}
bool noExp = false;
if(CheckAttribute(attack, "chr_ai.group"))
{
if(CheckAttribute(enemy, "chr_ai.group"))
{
if(attack.chr_ai.group == enemy.chr_ai.group && !CheckAttribute(GetMainCharacter(),"TrainingFight") && !HasSubStr(attack.id,"TrainingFight_") && !HasSubStr(enemy.id,"TrainingFight_"))//MAXIMUS
{
// ccc mar05 REPLOSS tweak added
//	PB: I don't think we need this; no harm done = no reploss needed
//	LAi_ChangeReputation(attack, - REPLOSS);	// ccc rephit for attacking friends
//	if(sti(attack.index) == GetMainCharacterIndex()) traceandlog("CHANGE REP for player: " + -REPLOSS + " - attacking friends");	// LDH 19Dec08
damage = 0.0; // dmg = 0.0;
critical = 0.0;
noExp = true;
}
}
}
if(critical > 0.0)
{
if(sti(attack.index) == GetMainCharacterIndex())
{
Log_SetStringToLog(XI_ConvertString("Critical Hit"));
}
}
// Baste <--
// TIH --> do not show XP messages for other characters, its annoying! Aug24'06
bool resetshowXP = false;
if(sti(attack.index) != GetMainCharacterIndex())
{
attack.donotshowXP = true;
resetshowXP = true;
}
// TIH <--
// if(!LAi_IsFightMode(enemy) && attack.equip.blade=="blade5") {damage = damage*(rand(5)+sti(attack.skill.Sneak)+5);}	// ccc sneakmod backstab

//Íàíîñèì ïîâðåæäåíèå
// Baste -->
if(critical > 0.0)
{
LAi_ApplyCharacterDamage(enemy, MakeInt(ApplyArmor(enemy, attack, critical, true) + 0.5)); // GreatZen-NK
}
else
{
LAi_ApplyCharacterDamage(enemy, MakeInt(ApplyArmor(enemy, attack, damage, true) + 0.5)); // GreatZen-NK
}
// Baste <--
With these changes a critical hit deals twice the damage a normal hit would deal, and it's possible to get critical hits without an ability. The "Critical Hit" ability gives a 10% chance of scoring a critical hit instead of 5%, and its name should be changed to "Improved Critical Hit" and its description should be changed to reflect the change.

What do you think about this?
 
shouldn't professional fencing increase damage, instead of decreasing it? also, i'm a little worried about swordfights potentially getting rather drawn out with the lowered crit damage, though that could be fixed by raising the basic damage a little. might be fine though.

what about lowering the chance of recieving critical hits when wearing armor?
 
The "Professional Fencer" ability decreases damage done to the character who has the ability. This in addition to increasing the character's pierce chance and critical hit chance. So, in a way it increases damage done to enemies, since it increases the chance of successfully hitting them and getting a critical hit on them. :)
The "Rush" ability, on the other hand, increases the base damage and the pierce chance, but lowers the block chance. Just for 30 seconds, though.

Yeah, that is a concern, that fights might take too long. Hopefully they won't. Or, if not base damage, perhaps the multiplier. Critical hits could perhaps deal triple the base damage instead of double, for example.

I don't know. :/ As it is now it will lower the damage taken even if it is a critical hit.
 
well, i was thinking that big swordfights might become a little too hard later on in the game, since most enemies will be professional fencers by then. the doubled crit chance might make things a bit too nasty. i was thinking of decreasing the chance by 1 or 2% per armor quality level, down to the 5% it used to be, for the gilded cuirass.
 
Well, regardless if the Critical Hit ability gives a 5% or 10% chance, it won't matter if the character has the Professional Fencer ability, since that ability gives the character a 25% chance of scoring a critical hit.

But armor decreasing the probability of receiving a critical hit might be a good idea.
 
i never watch those stats, tbh. i just put ability points in the melee skills and whack. oh well, increase to 10% sounds fine then. from 5 to 25 does seem like a bit of a big jump.
 
Back
Top