flareteam / flare-game

Fantasy action RPG using the FLARE engine
http://flarerpg.org/
Other
1.1k stars 235 forks source link

Avoidance, absortion, elemental protection and debuff effects #820

Closed Danimal696 closed 4 years ago

Danimal696 commented 4 years ago

Hello again, i noticed that the engine doesnt distinguish between a dodge or a full absorption of damage, this has a few bad outcomes. I think the dodge should be announced with a floating message like damage instead of "Miss"("Dodged"), to differentiate from absorption.

Absorption should at least let pass a single damage point to the hero, since rigth now if you have higher absorption than the attacker power you wont be affected by any debuff like shocked or the likes; as an example i had a bunch of enemies zap my hero with ligthing, everything missed due to my high absorption so i didnt recieve damage or get stunned.(the power is ligthing damage based) After that i tried the same thing with a electric resistance item and no armor, it lessened the damage by a % and let the debuffs in, that works pretty well in my opinion; but after this i put armor on along the ring, everything started missing. Thats when i realized that absorption is acting as a universal protection even agaisnt things it shouldnt like elemental damages.

In my opinion absorption should only work against physical damage and always let one point of damage pass to allow debuffs (not counting protector items or enemy resistant to debuffs) and let the elemental resistances do its proper work. While if you dogde something nothing should happen to you(damage or debuffs).

dorkster commented 4 years ago

You could try setting the maximum absorb/block/resist values in engine/combat.txt to less than 100:

absorb_percent=0,99
block_percent=0,99
resist_percent=0,99

These will make sure targets take 1% of the potential damage, with a bottom cap of 1 damage. So attacks will never do 0 damage and thus "miss".

Alternatively, you could try setting ignore_zero_damage=true on powers that you want to apply debuffs even when doing zero damage. However, there will be no combat text displayed when doing zero damage.

As for having absorption only affect physical damage, this could be achieved by setting trait_armor_penetration=true for all magic powers. But for the sake of simplicity and maintaining the current balance, flare-game will keep it so that magic attacks are affected by absorption.

Danimal696 commented 4 years ago

Thank you, ill try that.

Danimal696 commented 4 years ago

A question about the above; how does blocking works? is it a chance to block all damage? That would be real useful for shields, but besides block_percent | int, int : Minimum, Maximum | Limits the percentage of damage that can be blocked. i cant find anything else about it. Its just absortion with another name?

dorkster commented 4 years ago

block_percent is the same as absorb_percent, except it only applies when the target entity is in the "block" animation state. The animation state name must be "block", as this behavior looks specifically for an animation with that name. As an example, the alpha_demo has a Block power that puts the player in this state.

I'll update the documentation accordingly.

Danimal696 commented 4 years ago

Sorry for asking again, i know this can be avoided by careful item creation, but i tried testing an item with 100% electric defense against enemies firing 100 damage electric spells with armor penetration, supposedly resist_percent=0,90 should cap the protection at 90% suffering 10 damage points , but it doesnt, all spells go "Miss", all others % lower than 100 are working correctly though.

dorkster commented 4 years ago

Looks like that was an engine bug. It's been fixed now for version 1.11.23.