WayofTime / BloodMagic

The place where all of my mod stuffs is!
Other
298 stars 274 forks source link

[1.20.1] Bug or mod interaction issue with Str buffs and Dagger of Sacrafice causig no LP generation at alter #2052

Open Warzer1 opened 4 months ago

Warzer1 commented 4 months ago

Issue Description:

Posted here first: as its with ATM9:tts 1.0.7 https://github.com/AllTheMods/All-the-mods-9-Sky/issues/508 Since I think this is an issue with the Sacrificial Dagger's execute I am also reporting it here as well.

I was getting LP in about 1 in 10 dagger kills at the blood alter. After some digging i found that if i remove the strength buff from the Everlasting abilities mod, I would start getting LP again. I do think there might be 1 or more other buffs that cause this issue but are lost prone to notice compared to the STR one.

What happens:

With a STR buff you rarely get LP at the blood alter with the Sacrificial Dagger

What you expected to happen:

To get full LP even with a strength buff.

Steps to reproduce:

  1. Build blood alter and mob farm above it.
  2. Use everlasting abilties Strength mod 1-5 (the more str the more this issue occurs)
  3. using sacraficial dagger kill mobs ... Potential cause (guess): I think the extra str might be causing the sacrifice execute feature to go negative on mob health causing this issue.

    Affected Versions (Do not use "latest"):

stellanera98 commented 4 months ago

Well, strength gives you melee damage which is applied before the dagger does its thing. There are not going to be any negative values since if the (stored floating point value) health is below 0.5 it simply refuses to work. Its also worth noting that much like every other variant of sacrifice the dagger works off of the health sacrificed which in this case is the health remaining after being hit. Im not sure this is intended to be this way but I would guess that if not the LivingHurtEvent would have been used instead of the item method called when damaging a mob.

I've been testing this with just bloodmagic and executing a villager with full health without strength gives 1900 lp (20 health - 1 damage = 19, 19 * 100 = 1900, checks out). Doing the same thing with strength 5 only nets 400 lp since the melee attack dealt 16 damage

If you actually got nothing from the villagers they might have been out of range of the altar when you hit them or already took 3.5+ damage

Unrelated to this you're going to be off better either setting up the ritual to automatically sacrifice mobs (which isnt affected by your strength at all) or by building an incense altar and getting some though palms and healthy levels on a set of living armour instead of combining the worst aspects of both methods

Warzer1 commented 4 months ago

Thanks for the info above, I didn't know they grant different values of LP based on there life. I put the spawner where i had a mob farm for they fall quite far and some times die on the fall so i think your right that they might be to low of health when i execute them and not getting LP or is so little with STR that it doesn't show a change in the LP count. They show from .5 hearts to 5 hearts after the fall. Will try adjusting the fall height and retest with str modifier and see if that changes anything.
As for distance from alter i tested it when them standing on it directly. Normally they are a half slab up so i can still see the contents of the alter.

stellanera98 commented 4 months ago

Should be in range then, but with a half heart even hitting them without strength would reduce them below the threshold. With 5 full hearts you'd get max 900 (without strength, before runes) but strength 3 or more you kill them before the LP gained is calculated. For the maximum benefit you want the villagers to fall max 3 blocks and have no strength.

Warzer1 commented 4 months ago

Yeah after some testing they need to be nearly full health with str 5 to get LP. without str i can get LP when they are at much lower life. So question is is that str modifier effect on LP gen expected behavior or a bug? It does help me either way I just want to pass on the correct info on the ATM9:TTS post as well.

stellanera98 commented 4 months ago

As I said, its because the damage goes through before the health is checked and it would have been relatively simple to make it so it would either take the max health of the mob or the health before the damage went through, so I dont think its unintentional behavior. I do not know what Way thinks about it though so cant say for sure. He's currently busy with other things so you're probably not getting a definitive answer anytime soon.