Jump to content

Eternal Fire - strange behavior?


idbeholdME

Recommended Posts

So, I've just been quickly giving a test run to all of the Dragon Mage's CAs to potentially play a build in the future and ran into a weird thing with Eternal Fire. After casting it, it does nothing and then deals all the damage towards the end of its duration. See the video:

https://www.dropbox.com/scl/fi/j0r0rcxwi8bcvjzuutkew/Sacred-2-Ice-Blood-2023-11-02-22-24-34.mp4?rlkey=18nbcmq865rvgmimq5fdndhgw&dl=0

From the description, I assumed that it'd tick every second, the listed damage spread over the duration, so many small ticks of damage. The current behavior is really turning me off from trying to play around this CA, mainly because the duration also goes up per level. Will I have to wait 16 seconds for the damage to be dealt once the CA is level 100? The reason I'm posting this is because in the video on the wiki for Eternal Fire, the CA seems to be doing ticking damage instantly after casting (the bandit dies after a couple seconds).

https://www.youtube.com/watch?v=_by0HGK8oNg

ef.png.f2eb885ffeedba7a13d03a531aba541a.png

At level 1, it is supposed to be doing 60 damage over 8 seconds. But nothing is happening for the first 7 and then on the last second, it quickly deals 2 ticks of damage, 41 and 19 respectively. Even when I leveled it up and it was supposed to be doing 117 over 8.3 seconds, it just dealt 2 ticks of damage at the end of the duration for 80 and 37 damage respectively.

Has it always behaved this way?

Edited by idbeholdME
Link to comment

It should not do that in PFP 1.4. It should be a constant "stream" of small damage ticks.

While I did fiddle around with Eternal Fire a lot in CM Patch and EE ( as well as PFP up through 1.3), I just checked the 1.4 scripts and I did not touch the spell at all in the current release. There were complaints about erratic behavior.

  • Thanks! 1
Link to comment
7 hours ago, Flix said:

It should not do that in PFP 1.4. It should be a constant "stream" of small damage ticks.

While I did fiddle around with Eternal Fire a lot in CM Patch and EE ( as well as PFP up through 1.3), I just checked the 1.4 scripts and I did not touch the spell at all in the current release. There were complaints about erratic behavior.

Thanks for confirming. I compared the spell definition from vanilla and PFP 1.4 and it's the same. No idea why it's behaving like this for me, but it makes the CA nigh on useless.

I am using the vanilla s2render.dll and PhysX, but I doubt that could be the cause here? Hasn't caused any mechanical issues with any CAs before for me.

  • Like! 1
Link to comment

Also checked Viperish Disease, which mechanically seems to be pretty much the same as Eternal Fire and same problem. Only deals 2 damage ticks at the end of its duration.

Edited by idbeholdME
Link to comment

Any clue when this started? I mean... this doesn't sound like a script change... more like lag or something?

I guess you use the CM patch/EE Patch, but in IB Eternal Fire is pretty much like Viperish, the exception being the damage is flat instead of a percentage. It seems to spread faster and more easily, and the script pretty much confirms this. At high levels, when CA level is capped, I found it starts becoming less useful as it won't OHKO mobs (so no killing whole map thing). Doing all the damage at once at the end of it's duration won't really do anything to make it less OP, it would pretty much function the same broken way unless this issue also affects it's ability to spread.

I don't use it (same as viperish) as it's basicly broken. In CM/EE I would say it's pretty much useless (unlike viperish) due to the flat damage and the OP Range/infect chance being changed. It's unfortunate as DM is already kind of the "useless except for familiar tree". Both Mentalism and Elementalism are insanely good but I found DM is useless apart from the broken Eternal Fire (And the essential Familiar).

Edited by Shinryuu
Link to comment

Couple things:

EE adds flat damage on top of the "plague fire" property, it doesn't replace it. This is because vanilla Eternal FIre is a joke. The damage cannot scale at all, no item modifiers, no skills, nothing can boost it, so it falls wayyyy behind quickly. Beyond Silver difficulty or higher levels, Eternal FIre can't kill anything, even the weakest trash mobs. Sure, it can't spread really, really far, really really fast. So what, if nothing ever dies? You're just applying a neat burning visual to every enemy. It was the very first issue I noticed with Sacred 2 over 10 years ago when I rolled my very first character: a Dragon Magic focused Dragon Mage.

What EE did "nerf" was the burning duration. So the target burns for less time, meaning the full damage payload is still delivered but over a shorter period of time. Combine this with the addition of the flat damage, and the target is more likely to die before he can spread the fire to a mass of enemies.

It's not the best solution, which would be to alter the code so that the "plague fire" property actually scales with aspect lore skills (this was done in Addendum).  But at least with EE's version the target might actually die.

At no point were any of those changes causing what OP is describing.

 

EDIT: I do remember that previous CM Patch iterations did just nerf the spread chance and range which was a hard nerf, since the spell already had sad damage and then it would never spread.

Link to comment
9 hours ago, Shinryuu said:

Any clue when this started? I mean... this doesn't sound like a script change... more like lag or something?

I guess you use the CM patch/EE Patch, but in IB Eternal Fire is pretty much like Viperish, the exception being the damage is flat instead of a percentage. It seems to spread faster and more easily, and the script pretty much confirms this. At high levels, when CA level is capped, I found it starts becoming less useful as it won't OHKO mobs (so no killing whole map thing). Doing all the damage at once at the end of it's duration won't really do anything to make it less OP, it would pretty much function the same broken way unless this issue also affects it's ability to spread.

I don't use it (same as viperish) as it's basicly broken. In CM/EE I would say it's pretty much useless (unlike viperish) due to the flat damage and the OP Range/infect chance being changed. It's unfortunate as DM is already kind of the "useless except for familiar tree". Both Mentalism and Elementalism are insanely good but I found DM is useless apart from the broken Eternal Fire (And the essential Familiar).

It does affect the way it spreads. Just came back from further testing.

As only 2 damage ticks happen at the end of the duration, it will only spread once the duration runs, because it is the damage ticks that can cause the spread to happen. So for example, if you levelled the CA to 100, you'd have to:

A) Wait 16 seconds for the damage to be dealt in 2 quick ticks of damage on the initial enemy.

B) Only those 2 ticks of damage actually have a chance of spreading the damage. If it does spread to another enemy, it is instantly dealt the same 2 ticks of damage as the initial enemy from point A. These 2 ticks can then also further spread Eternal Fire. Meaning that after the duration runs out on the initial target (when literally nothing is happening), it can cause a chain reaction and very quickly annihilate large groups of enemies.

Here is a video with an example of how the spreading now works. I have it only on level 1, so only 30% chance, meaning it only spread a couple times, but it's enough to see the behavior:

https://www.dropbox.com/scl/fi/qysganmdzbt8hj5pmswqs/Sacred-2-Ice-Blood-2023-11-06-23-54-32.mp4?rlkey=0lxt8j5v2jivofa8uvqc46fih&dl=0

Cast on the initial target, nothing happens for 8 seconds, then the 2 ticks of damage happen (42 and 18), which spread, other enemies are dealt the 2 ticks instantly (42 and 18) and this can repeat as long as enemies are within radius and the chance keeps proccing.

Viperish disease suffers from the same behavior. Would really be interested in seeing how the CAs behave in a completely unmodded game. I'm starting to suspect one of the changed .dll files might be responsible for the broken behavior because everything normally readable (script files) is the same as vanilla.

Edited by idbeholdME
Link to comment

@Flix
FOUND IT!!!

It is caused by s2logic.dll. When I copied back the vanilla file, Eternal Fire started doing damage and behaving as it should. Deals 7 ticks of 7 damage and a final tick of 11 damage = 60 damage as per the tooltip and spreads properly.

https://www.dropbox.com/scl/fi/76c49lgpb61t1kfgxo7ry/Sacred-2-Ice-Blood-2023-11-07-00-38-32.mp4?rlkey=dld1hbvxctd4vk8o0yr2fjsjn&dl=0

Now the question is, how safe would it be to use the vanilla file with everything else from PFP? What sort of changes are included in this file compared to vanilla?

Link to comment

:cstars: Let me think a bit. It works in EE, I just had to play around with the duration parameter. You cut out s2logic.dll and I can't even count how many of the hardcoded fixes are gone. Most of them.

  • Appreciation 1
Link to comment
12 hours ago, Flix said:

:cstars: Let me think a bit. It works in EE, I just had to play around with the duration parameter. You cut out s2logic.dll and I can't even count how many of the hardcoded fixes are gone. Most of them.

Great. Really hope you can think of something that'd allow keeping the patched s2logic file.

Link to comment

So it's totally broken then...

Honestly, based on what Flix said you are prolly not missing much. Only way to make it usable would be to make it a boss melter... but then again DM already had plenty of that stuff. Or "OP in a balanced way", like you cast it on a champ in a pack of monsters and it rapidly spreads to that group and wipes them all out in short order without going through the whole map.

So I guess the function for the script is in the dll and something messed up that function. Afaik a pain to fix and you'll have to mess around with compiling and stuff... but I guess it's possible since modders already changed it.

Link to comment
17 hours ago, Shinryuu said:

So it's totally broken then...

Honestly, based on what Flix said you are prolly not missing much. Only way to make it usable would be to make it a boss melter... but then again DM already had plenty of that stuff. Or "OP in a balanced way", like you cast it on a champ in a pack of monsters and it rapidly spreads to that group and wipes them all out in short order without going through the whole map.

So I guess the function for the script is in the dll and something messed up that function. Afaik a pain to fix and you'll have to mess around with compiling and stuff... but I guess it's possible since modders already changed it.

If the original behavior could somehow be restored, then balancing it further locally is an option.

But I had a thought. If the CA was working properly before Flix changed the CA back to vanilla, then simply adding a fire DOT to Eternal Fire, dealing 1 damage could be enough to make it work?

Seems that a change was done to the .dll to accomodate the change done to Eternal Fire in the CM Patch, which was also initially transferred to PFP.

Will try once I get home.

Edited by idbeholdME
Link to comment

Who knows?

Never seen the script. I've seen some pretty funky stuff done by companies when it comes to coding. Unfortunately I lack the imagination to come up with the type of code that would have this kind of behavior...

Honestly, just doing away with the whole code and turn Eternal Fire into a built-in DoT with an obscene duration would be the best. Not sure if built-in DoT stacks, spiders suggest it does. It could be quite a good attack for bosses if it just does mondo Fire DoT. Then change that awful Dragon Strike into something that actually hits and DM is viable. It won't be Elemental Magic, but that's OP AF.

EDIT:
Also, I think that would make it the only Fire DoT available to players, Kinda cool.

Edited by Shinryuu
Link to comment

Some finds:

Eternal Fire has been modified through the .dll file (most likely through a change in the logic of the cSpellDrKrankheit spell class, as it also affects Viperish Disease) to now expect the "et_hits_persec" token in its definition, in order to deliver the flat fire damage it's been given. You can just use the persec value and through it, you can regulate how frequently and over how long a period the plague damage ticks. Without it, all damage is just dealt at the end of the duration because the game doesn't know how else to handle it without that token. Interestingly though, the value in that token affects two things:

1) The length of time the plague damage will tick.

2) The damage value of the ticks.

The lower the hits_persec value, the lower the tic damage but the longer the overall duration. It lasts basically forever with a value of 1, but ticks for 1 damage. Value of 800 seems to be the original 8 seconds, but causes EF to tick for much more damage every tick, multiple times above the value listed on the CA. The damage value of the fire plague can be changed to match the level 1 of the vanilla EF, but the problem arises the moment you level up the CA, because both the duration and damage go up. Some approximation to the original values could probably be found by fiddling with the duration, damage and hits_persec values, but to assure it remains consistent throughout the levelling process would be a very tough task.... :/

Example definition:

    tokens = {
        entry0 = {"et_duration_sec", 800, 8, 0, 8 },
        entry1 = {"et_plague_const_fire", 1600, 800, 0, 42 },
        entry2 = {"et_range_area", 200, 0, 0, 4 },
        entry3 = {"et_plague_infect", 300, 2, 0, 42 },
        entry4 = {"et_regThisCool", 0, 20, 0, 8 },
        entry5 = {"et_range_area", 80, 1, 1, 4 },
        entry6 = {"et_duration_sec", 300, 3, 2, 8 },
        entry7 = {"et_plague_infect", 100, 1, 3, 42 },
        entry8 = {"et_chance_fear", 300, 5, 4, 5 },
        entry9 = {"et_plague_const_fire", 600, 300, 5, 42 },
        entry10 = {"et_deathblow", 500, 0, 6, 5 },
        entry11 = {"et_hits_persec", 800, 0, 0, 4 },
    },

Causes a level 1 EF with damage value of 60 listed in the skill description to deal 8 ticks of damage, dealing 7*38 damage and 1*22 = 288 total damage (listed CA damage is 60).

Then lowering the damage value to entry1 = {"et_plague_const_fire", 295, 147, 0, 42 }, makes it deal 7*7 damage and 1*4 damage = 53 total damage (listed CA damage is 11).

One very notable thing about the above numbers - the value of the first 7 ticks (38 for example) + the value of the last tic (22) equals the listed CA damage. Same in the other example (7+4 = 11). The problem is in how it's distributed over the duration. The original behavior with only 2 quick ticks happening at the end of the duration is still there, the hits_persec just adds more of the same ticks before the final 2 happen.

Spreading behavior is maintained but when it spreads, it only deals the last two ticks and the spread EF is instantly removed. It only persists on the initial target. The problem is in how the damage is dealt/distributed. Also, no idea what would happen once the duration/damage went up or if the persec value would need to scale too. Maybe the same as duration? Would require further testing.

But I'm afraid the original behavior won't be restored without reverting whatever edit has been made to this particular spellClass. I'll probably drop any notion of playing around Eternal Fire, but wanted to try it at least once :P Might fiddle around with Dragon Strike instead.

Edited by idbeholdME
Link to comment
  • 2 weeks later...

Wow. So that's actually programmed pretty well, considering the failsafe if weird values that were not intended to be used in the function. Many games just freak out and crash if something like that is changed.

Maybe decompile a vanilla .dll and see if changing the values to that restores original function? As said though, if you are drowning in runes and money Eternal Fire is a quick path to Gold at best. You could also just edit it to dotdamage and make some debuff mods (-fire armor or w/e) instead of the range/spread. That also makes it work with lore and pairs well with dragon strike. Only thing broken then is viperish.

  • Like! 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
Please Sign In or Sign Up