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

Solved Rebalancing the Fighting System

I admit that multidmg for the mtoon makes sense and so may the other changes do as well but:
there are posts here and there complaing about the new difficult level in fights.
Maybe it's best to reset all/do minor finetuning?
Agh, I don't want to be moving backwards. And those gun modifications were to make the general game more playable and a bit easier, not harder.

There has happened something with my enemies too.
It has no effect that they were given only HP14 each, they now are very strong and it takes 3 - 4 shots
with unchanged questpistols to kill them.
That is probably this modification of mine at work: http://www.piratesahoy.net/threads/enemy-town-guards-too-strong-during-quests.20714
Are they GuardianType or PatrolType by any chance? That would confirm it.
This is on my to-do list though and I think I know how to set this up so it won't interfere with quests anymore.

Also fists now give very little damage. Maybe realistic but I get problems. Most of the enemies though.
Not frustrated but o_O:confused:
The fist damage depends on the character level, but wasn't rewritten since Build 14 Beta 1 Patch 7.
It might be those changes mentioned above reducing the damage though. Anyway, I'll have an attempted fix for that soon. :yes
 
Sit & StayType from the beginning. ActorType later on when they are enemies.

Another thing I can't find the right thread: You talked about utils something instead of JRH_Functions.
Please tell me exact where the files should be placed (folders) and maybe I can fix it already now.
I have a little action belonging to Bartolomeu's quest and more to new storyline so it's good to split
it up already now I think.

Where are the new files 'defined/declared' or what it's called?

Pieter, how do you get any time over to mod/fix things? You seem to be online most of the time! :confused:
 
Ah, then this is NOT the soldier problem. Probably caused by my code that sets characters' HP properly according to their character level then in PROGRAM\Characters\characters_init.c:
Code:
void AddGameCharacter(ref n, ref ch)
{
    if (!CheckAttribute(ch, "id")) return;
    int chridx = GetCharacterIndex(ch.id);
    ref chr;
    if (chridx >= 0) {
        makeref(chr, Characters[chridx]);
    } else {
        makeref(chr, Characters[n]);
        chridx = n;
        n++;
    }
    DeleteAttribute(chr, "");
    CopyAttributes(chr, ch);
    chr.index = chridx;
    InitCharacter(chr);
    DeleteAttribute(ch, "");
    if (!CheckAttribute(chr,"quest.officerprice"))    chr.quest.officerprice = 0;//PB
    if (isSoldier(chr) > -1)
    {
        chr.model.uniform = chr.model;
        int iNation = sti(chr.nation);
        string model = "m" + sti(chr.model);
        if (iNation >= 0 && iNation < NATIONS_QUANTITY) model = Nations[iNation].fantomModel.(model);
        if (iNation == PERSONAL_NATION) model = characters[GetMainCharacterIndex()].Soldier.(model);
        SetModel(chr, model, chr.sex, chr.sex, 0.0, false);
        // PB: Strong Soldiers -->
        chr.rank = 20;
        chr.skill.Fencing = "10";
        chr.skill.Accuracy = "10";
        chr.perks.list.BasicDefense = true;
        chr.perks.list.AdvancedDefense = true;
        chr.perks.list.SwordplayProfessional = true;
        chr.perks.list.CriticalHit = true;
        chr.perks.list.Gunman = true;
        chr.perks.list.ProfessionalGunman = true;
        chr.perks.list.Rush = true;
        chr.perks.list.Toughness = true;
        // PB: Strong Soldiers <--
    }
    ResetHP(chr); // PB: To initialize HP for character level + HP bonus
}
That last line there overrides any HP value you set, because my attempts to make Clint Eastwood much stronger were failing until I did that.
In that case, we have to look at different solutions:
1. Add an attribute to those characters to prevent this ResetHP line from executing
or
2. Try adding a negative HP bonus to them; that should maintain the HP you want them to have even after that line of code runs

I think #2 is probably the best way to go about it.

Another thing I can't find the right thread: You talked about utils something instead of JRH_Functions.
Please tell me exact where the files should be placed (folders) and maybe I can fix it already now.
I have a little action belonging to Bartolomeu's quest and more to new storyline so it's good to split
it up already now I think.
See PROGRAM\Storyline\standard\SL_utils.c .
The only challenge is that in this case we'd be adding functions that aren't run from the Storyline folder, but from the main PROGRAM folder.
But I think we can address that by using extern void functions instead.

Pieter, how do you get any time over to mod/fix things? You seem to be online most of the time! :confused:
I broke my hip several months ago and have had a lot of "free time" since. Not the most ideal of reasons for it, but at least we're getting somewhere now. :facepalm
 
In that case, we have to look at different solutions:
Why not make a void AddStrongGameCharacter() with the ResetHP(chr);
and leave the AddGameCharacter() without it.
This way most of all existing characters don't have to changed. Or are there many besides Clint?

ResetHP(chr);
I can of course temp. make a if "mystoryline" around it.

Just don't burn yourself out with POTC, Pieter.
 
Interesting idea. Though I'd prefer to keep it in the regular function, because then at least when you set a character's rank, it takes effect.
For some strange reason, it wasn't doing it before.

Your second option sounds nice and simple for now though; I'll take it! :cheeky
 
...because then at least when you set a character's rank, it takes effect.
Yes, but it's not easy to know now how to set it when 14 is not 14.

Ok, I'll make the if around it and it comes with my bugfix pack.
 
I've added the if around it as well. Currently uploading my fix pack. Will be done in 15 minutes.

Yes, but it's not easy to know now how to set it when 14 is not 14.
The HP they get is calculated like this:
40+(rank-1)*10 or easier: 30+rank*10
So a character of level 5 will get 80 HP. If you want them to have 14 instead, that should be possible by giving them an HPbonus of -66 .
But the if-statement is easier. ;)
 
Ok, I double posted. Your reply came before I noticed it.

Another suggestion, if there are just a few characters HP you're after with this code why not
something like if char.id == "Eastwood" etc
 
We could put the ResetHP line in their respective character init entries, I suppose.
But if I give a character a certain level and HP bonus, I want that to take effect without me specifically telling the game to update it.

Also, ResetHP is executed whenever a character levels up anyway.
So if a level 5 character with 14 HP somehow ends up leveling up, he'll jump immediately to having 90 HP.
Using HPBonus would prevent that effect, so he would only go up to 24 HP on a level up.
 
Is the fighting system now really more playable than before? Any further balancing issues that would need to be looked at?
 
Melee is working much better for me. The sojers seem to be the least consistent with pretty weak ones mixed in with pretty strong ones. One will drop quickly while the one next to him takes out 1-3 of us.
 
Which soldiers are you running into? As per my latest change, the Town Guards and Patrols are really strong, but any others are not.
However, now that we've got that "Apprentice" change for that too, perhaps we can return the soldiers to being universally strong again on other difficulty levels?
 
"Which soldiers are you running into?"

The ones wearing uniforms. There is no way to tell who is what until you hurt one and can see how much HP he has.
 
The storyline ones in the jungle? That's strange; they can't be town guards, can they? :eek:
 
Anyway, I'm changing the code. Now Standard storyline has ONLY weak town guards and all other storylines get ONLY strong ones.
Let's see how that one works. :confused:
 
Back
Top