[MOD] Meaner Monsters

A curated forum for compatible and maintained mods. Users are unable to create new topics in this forum but can reply to existing topics. Please message a moderator to have your mod moved into this forum area.
Post Reply
L57
Posts: 227
Joined: Tue Dec 31, 2019 7:53 pm
Location: Moscow, Russia

Re: [MOD] Meaner Monsters

Post by L57 »

squerol wrote: Thu Feb 27, 2020 11:58 am But every melee human or humanoid daedra (like daedroth or daedra lord) have no windup. Those enemies hit player immediately - visuals doesn't match colisions because player is getting hit even before enemy begin to swing his weapon
Yep, kinda. Especially those thievery-based NPCs whose fast combos are hard to evade.

I don't understand what's the problem with enemies not being able to reach player though. In my game they hit me easily while I'm stepping back. Is it possible that some mods unintentionally change how fight works? Have you tested all of this in pure vanilla DFU?

squerol
Posts: 6
Joined: Tue Feb 25, 2020 7:01 am

Re: [MOD] Meaner Monsters

Post by squerol »

L57 wrote: Thu Feb 27, 2020 2:57 pm
Yep, kinda. Especially those thievery-based NPCs whose fast combos are hard to evade.

I don't understand what's the problem with enemies not being able to reach player though. In my game they hit me easily while I'm stepping back. Is it possible that some mods unintentionally change how fight works? Have you tested all of this in pure vanilla DFU?
When You got in their attack range You just can't evade NPCs because hit register happens before enemy animation is played.

Thanks for suggestion. Nope I've didn't tried vanilla dfu - I've installed tons of mods at same time right of the bat so indeed maybe something is messed by mods because even at 10 speed and 5% running skill no melee attacker can reach me while I'm walking back :roll:

Also I have idea how to improve dashing system - adding god-mode effect on player during few first frames of dash. Maybe with that it will be possibile to avoid damage from wrongly designed enemies attack animations.

L57
Posts: 227
Joined: Tue Dec 31, 2019 7:53 pm
Location: Moscow, Russia

Re: [MOD] Meaner Monsters

Post by L57 »

squerol wrote: Thu Feb 27, 2020 5:01 pm
Thanks for suggestion. Nope I've didn't tried vanilla dfu - I've installed tons of mods at same time right of the bat so indeed maybe something is messed by mods because even at 10 speed and 5% running skill no melee attacker can reach me while I'm walking back :roll:
The skeleton in your video is unusually slow, apparently there is some kind of buggy AI behaviour indeed.
When You got in their attack range You just can't evade NPCs because hit register happens before enemy animation is played.
Looks pretty close to the truth. However, it's still possible to provoke human enemy to make hit when you're no longer under attack. This works relatively well with warrior-type NPCs, but thieves are way too agile.
Last edited by L57 on Fri Feb 28, 2020 12:46 pm, edited 2 times in total.

User avatar
Magicono43
Posts: 1139
Joined: Tue Nov 06, 2018 7:06 am

Re: [MOD] Meaner Monsters

Post by Magicono43 »

So I made some modifications to the values in your most recent release of the .dfmod and was wondering if you or anyone might find them more appropriate to their tastes or they think some of the numbers might have a better balance to them.

Code: Select all

// Rat
            EnemyBasics.Enemies[0].MinDamage = 1;
            EnemyBasics.Enemies[0].MaxDamage = 2;
            EnemyBasics.Enemies[0].MinHealth = 15;
            EnemyBasics.Enemies[0].MaxHealth = 30;
            EnemyBasics.Enemies[0].Level = 1;
            EnemyBasics.Enemies[0].ArmorValue = 8;

            // Giant Bat
            EnemyBasics.Enemies[3].MinDamage = 1;
            EnemyBasics.Enemies[3].MaxDamage = 4;
            EnemyBasics.Enemies[3].MinHealth = 5;
            EnemyBasics.Enemies[3].MaxHealth = 12;
            EnemyBasics.Enemies[3].Level = 2;
            EnemyBasics.Enemies[3].ArmorValue = 3;

            // Grizzly Bear
            EnemyBasics.Enemies[4].MinDamage = 4;
            EnemyBasics.Enemies[4].MaxDamage = 8;
            EnemyBasics.Enemies[4].MinDamage2 = 6;
            EnemyBasics.Enemies[4].MaxDamage2 = 10;
            EnemyBasics.Enemies[4].MinDamage3 = 8;
            EnemyBasics.Enemies[4].MaxDamage3 = 16;
            EnemyBasics.Enemies[4].MinHealth = 55;
            EnemyBasics.Enemies[4].MaxHealth = 110;
            EnemyBasics.Enemies[4].Level = 4;
            EnemyBasics.Enemies[4].ArmorValue = 9;

            // Sabertooth Tiger		
            EnemyBasics.Enemies[5].MinDamage = 6;
            EnemyBasics.Enemies[5].MaxDamage = 12;
            EnemyBasics.Enemies[5].MinDamage2 = 8;
            EnemyBasics.Enemies[5].MaxDamage2 = 16;
            EnemyBasics.Enemies[5].MinDamage3 = 10;
            EnemyBasics.Enemies[5].MaxDamage3 = 24;
            EnemyBasics.Enemies[5].MinHealth = 30;
            EnemyBasics.Enemies[5].MaxHealth = 60;
            EnemyBasics.Enemies[5].Level = 4;
            EnemyBasics.Enemies[5].ArmorValue = 4;

            // Spider		
            EnemyBasics.Enemies[6].MinDamage = 3;
            EnemyBasics.Enemies[6].MaxDamage = 9;
            EnemyBasics.Enemies[6].MinHealth = 12;
            EnemyBasics.Enemies[6].MaxHealth = 28;
            EnemyBasics.Enemies[6].Level = 2;
            EnemyBasics.Enemies[6].ArmorValue = 4;

            // Werewolf		
            EnemyBasics.Enemies[9].MinDamage = 6;
            EnemyBasics.Enemies[9].MaxDamage = 10;
            EnemyBasics.Enemies[9].MinDamage2 = 8;
            EnemyBasics.Enemies[9].MaxDamage2 = 12;
            EnemyBasics.Enemies[9].MinDamage3 = 12;
            EnemyBasics.Enemies[9].MaxDamage3 = 26;
            EnemyBasics.Enemies[9].MinHealth = 25;
            EnemyBasics.Enemies[9].MaxHealth = 50;
            EnemyBasics.Enemies[9].Level = 8;
            EnemyBasics.Enemies[9].ArmorValue = 2;

            // Wereboar		
            EnemyBasics.Enemies[14].MinDamage = 5;
            EnemyBasics.Enemies[14].MaxDamage = 8;
            EnemyBasics.Enemies[14].MinDamage2 = 8;
            EnemyBasics.Enemies[14].MaxDamage2 = 10;
            EnemyBasics.Enemies[14].MinDamage3 = 10;
            EnemyBasics.Enemies[14].MaxDamage3 = 22;
            EnemyBasics.Enemies[14].MinHealth = 60;
            EnemyBasics.Enemies[14].MaxHealth = 100;
            EnemyBasics.Enemies[14].Level = 8;
            EnemyBasics.Enemies[14].ArmorValue = 5;

            // Giant		
            EnemyBasics.Enemies[16].MinDamage = 15;
            EnemyBasics.Enemies[16].MaxDamage = 30;
            EnemyBasics.Enemies[16].MinHealth = 70;
            EnemyBasics.Enemies[16].MaxHealth = 110;
            EnemyBasics.Enemies[16].Level = 10;
            EnemyBasics.Enemies[16].ArmorValue = 8;

            // Zombie		
            EnemyBasics.Enemies[17].MinDamage = 4;
            EnemyBasics.Enemies[17].MaxDamage = 10;
            EnemyBasics.Enemies[17].MinHealth = 40;
            EnemyBasics.Enemies[17].MaxHealth = 110;
            EnemyBasics.Enemies[17].Level = 5;
            EnemyBasics.Enemies[17].ArmorValue = 7;

            // Mummy		
            EnemyBasics.Enemies[19].MinDamage = 7;
            EnemyBasics.Enemies[19].MaxDamage = 17;
            EnemyBasics.Enemies[19].MinHealth = 90;
            EnemyBasics.Enemies[19].MaxHealth = 130;
            EnemyBasics.Enemies[19].Level = 15;
            EnemyBasics.Enemies[19].ArmorValue = -5;

            // Giant Scorpion		
            EnemyBasics.Enemies[20].MinDamage = 9;
            EnemyBasics.Enemies[20].MaxDamage = 18;
            EnemyBasics.Enemies[20].MinHealth = 16;
            EnemyBasics.Enemies[20].MaxHealth = 52;
            EnemyBasics.Enemies[20].Level = 4;
            EnemyBasics.Enemies[20].ArmorValue = 3;

            // Vampire Ancient		
            EnemyBasics.Enemies[30].MinDamage = 25;
            EnemyBasics.Enemies[30].MaxDamage = 55;
            EnemyBasics.Enemies[30].MinHealth = 80;
            EnemyBasics.Enemies[30].MaxHealth = 170;
            EnemyBasics.Enemies[30].Level = 20;
            EnemyBasics.Enemies[30].ArmorValue = -6;

            // Daedra Lord		
            EnemyBasics.Enemies[31].MinDamage = 45;
            EnemyBasics.Enemies[31].MaxDamage = 90;
            EnemyBasics.Enemies[31].MinHealth = 110;
            EnemyBasics.Enemies[31].MaxHealth = 210;
            EnemyBasics.Enemies[31].Level = 21;
            EnemyBasics.Enemies[31].ArmorValue = -13;

            // Lich		
            EnemyBasics.Enemies[32].MinDamage = 50;
            EnemyBasics.Enemies[32].MaxDamage = 80;
            EnemyBasics.Enemies[32].MinHealth = 80;
            EnemyBasics.Enemies[32].MaxHealth = 180;
            EnemyBasics.Enemies[32].Level = 20;
            EnemyBasics.Enemies[32].ArmorValue = -7;

            // Ancient Lich		
            EnemyBasics.Enemies[33].MinDamage = 90;
            EnemyBasics.Enemies[33].MaxDamage = 115;
            EnemyBasics.Enemies[33].MinHealth = 130;
            EnemyBasics.Enemies[33].MaxHealth = 250;
            EnemyBasics.Enemies[33].Level = 21;
            EnemyBasics.Enemies[33].ArmorValue = -10;

            // Orc		
            EnemyBasics.Enemies[7].MinDamage = 10;
            EnemyBasics.Enemies[7].MaxDamage = 22;
            EnemyBasics.Enemies[7].MinHealth = 30;
            EnemyBasics.Enemies[7].MaxHealth = 60;
            EnemyBasics.Enemies[7].Level = 6;
            EnemyBasics.Enemies[7].ArmorValue = 6;

            // Orc Sargeant		
            EnemyBasics.Enemies[12].MinDamage = 15;
            EnemyBasics.Enemies[12].MaxDamage = 30;
            EnemyBasics.Enemies[12].MinHealth = 40;
            EnemyBasics.Enemies[12].MaxHealth = 90;
            EnemyBasics.Enemies[12].Level = 9;
            EnemyBasics.Enemies[12].ArmorValue = 4;

            // Orc Shaman		
            EnemyBasics.Enemies[21].MinDamage = 8;
            EnemyBasics.Enemies[21].MaxDamage = 25;
            EnemyBasics.Enemies[21].MinHealth = 60;
            EnemyBasics.Enemies[21].MaxHealth = 100;
            EnemyBasics.Enemies[21].Level = 15;
            EnemyBasics.Enemies[21].ArmorValue = 6;

            // Orc Warlord		
            EnemyBasics.Enemies[24].MinDamage = 20;
            EnemyBasics.Enemies[24].MaxDamage = 45;
            EnemyBasics.Enemies[24].MinHealth = 80;
            EnemyBasics.Enemies[24].MaxHealth = 160;
            EnemyBasics.Enemies[24].Level = 19;
            EnemyBasics.Enemies[24].ArmorValue = -2;

            // Fire Atronach		
            EnemyBasics.Enemies[35].MinDamage = 20;
            EnemyBasics.Enemies[35].MaxDamage = 35;
            EnemyBasics.Enemies[35].MinHealth = 35;
            EnemyBasics.Enemies[35].MaxHealth = 90;
            EnemyBasics.Enemies[35].Level = 16;
            EnemyBasics.Enemies[35].ArmorValue = 2;

            // Iron Atronach		
            EnemyBasics.Enemies[36].MinDamage = 25;
            EnemyBasics.Enemies[36].MaxDamage = 45;
            EnemyBasics.Enemies[36].MinHealth = 60;
            EnemyBasics.Enemies[36].MaxHealth = 170;
            EnemyBasics.Enemies[36].Level = 21;
            EnemyBasics.Enemies[36].ArmorValue = 3;

            // Flesh Atronach		
            EnemyBasics.Enemies[37].MinDamage = 7;
            EnemyBasics.Enemies[37].MaxDamage = 15;
            EnemyBasics.Enemies[37].MinHealth = 120;
            EnemyBasics.Enemies[37].MaxHealth = 310;
            EnemyBasics.Enemies[37].Level = 16;
            EnemyBasics.Enemies[37].ArmorValue = 9;

            // Ice Atronach		
            EnemyBasics.Enemies[38].MinDamage = 15;
            EnemyBasics.Enemies[38].MaxDamage = 30;
            EnemyBasics.Enemies[38].MinHealth = 55;
            EnemyBasics.Enemies[38].MaxHealth = 125;
            EnemyBasics.Enemies[38].Level = 16;
            EnemyBasics.Enemies[38].ArmorValue = 3;
As you can see, it's not THAT much different to what your original values were, but I think some of them make a bit more sense in my mind, as well as making some of the damage values for lower level monsters a bit less punishing for characters with a lower overall health pool perhaps. I also went with Armor Values sort of based on what I would imagine would be based on the creatures size, speed, and skill more than anything, at least if they were actually real creatures in a physical world. So a big hulking bear would not be a difficult target to hit, but a small flying bat would be a decent amount harder, but obviously MUCH more flimsy overall.

I might even add the rest of the roster of "monster" creatures into your script as well, since I think some of them could honestly use some work as well, like Dreugh being laughably weak, the Gargoyle doing stupidly little damage for being a huge construct of stone, or even the Fire Daedra having a surprisingly low minimum health pool for what it is, etc.

User avatar
Hazelnut
Posts: 3015
Joined: Sat Aug 26, 2017 2:46 pm
Contact:

Re: [MOD] Meaner Monsters

Post by Hazelnut »

You should collaborate with Ralzar about the values, but just so you know that code will be changing back since I have tracked down the issue that was stopping the mod from working.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

User avatar
Magicono43
Posts: 1139
Joined: Tue Nov 06, 2018 7:06 am

Re: [MOD] Meaner Monsters

Post by Magicono43 »

Hazelnut wrote: Thu Feb 27, 2020 7:28 pm You should collaborate with Ralzar about the values, but just so you know that code will be changing back since I have tracked down the issue that was stopping the mod from working.
I'm guessing it was something silly? Or was it something really hard to notice?

User avatar
Hazelnut
Posts: 3015
Joined: Sat Aug 26, 2017 2:46 pm
Contact:

Re: [MOD] Meaner Monsters

Post by Hazelnut »

Just a limitation of the compiler the mod system uses, has issues with structs. Had to make it a class instead. I posted on the mod tutorial thread.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

User avatar
Ralzar
Posts: 2211
Joined: Mon Oct 07, 2019 4:11 pm
Location: Norway

Re: [MOD] Meaner Monsters

Post by Ralzar »

Magicono43 wrote: Thu Feb 27, 2020 6:50 pm I might even add the rest of the roster of "monster" creatures into your script as well, since I think some of them could honestly use some work as well, like Dreugh being laughably weak, the Gargoyle doing stupidly little damage for being a huge construct of stone, or even the Fire Daedra having a surprisingly low minimum health pool for what it is, etc.
Agreed, a lot of these could use some adjustment. The original mod was just a first pass where I adjusted anything that looked completely absurd and to buff the boss monsters a bit.
The problem here is to make the monster stats more "realistic" while at the same time not make the game unplayable unless you make some kind of min/max munchkin character. I'll take a look at your numbers later today.

And agreed on the Gargoyle. It's pretty underwhelming.

Edit: Hm, I might actually create an alternative mod file with a "hard mode". Oh well, that's for later.

L57
Posts: 227
Joined: Tue Dec 31, 2019 7:53 pm
Location: Moscow, Russia

Re: [MOD] Meaner Monsters

Post by L57 »

Not contesting your idea, just want to notice that gargoyle attacks with a knobstick, and I think its effectiveness can be comparable with how humans could handle it. They have a thicker skin than usual for sure (and it's already reflected with their 0 armor rating), but their morphology is humanoid-like enough to not expect much larger force, in my opinion. So it's still not that absurd and even can be justified, unlike zombies stats.

Dreugh in Daggerfall has no chitin unlike later games, so it's hard to judge too.

To me, Iron Atronach, Zombies, and some animal stats balance are the weirdest ones in the game. Iron Atronachs are the worst, this is walking armor literally but it has absurdly high armor rating it's just makes no sense. Atronachs are very lazily done in the game in general.
Last edited by L57 on Fri Feb 28, 2020 1:26 pm, edited 1 time in total.

User avatar
Ralzar
Posts: 2211
Joined: Mon Oct 07, 2019 4:11 pm
Location: Norway

Re: [MOD] Meaner Monsters

Post by Ralzar »

Yeah, I wasn't sure what atronachs to give what buffs. So I split them up into:

Flesh: HP
Fire: Damage
Iron: Level
Ice: Armor

I can absolutely see the argument for switching ice and iron.

Post Reply