Bouncing fireballs

Weekly updated column for helping skill development. Users can't directly post requests but a PM or mail can be sent to Skill-Clinician.

Moderator: Skill Clinician

Post Reply
User avatar
Kizkit
Posts: 3
Joined: Mon Oct 11, 2021 3:10 pm
Canada

Bouncing fireballs

Post by Kizkit » Mon Oct 11, 2021 9:14 pm

Usually I just trial and error this stuff and figure it out as I go, but this time I'm going to be breaking a whole bunch of stuff if I do this wrong and may not be able to find my way back to functionality again, and I haven't been able to find anything searching the forums which addresses this particular problem.

In short, looking to have fireball bounce like chain lightning does, exploding each time it bounces, using warmth blvl/2 to control the number of bounces. Most of that I can get to work just fine, but then I noticed a problem: the damage radius on the missile is the same one as used by the bounce target finding radius. I don't actually want radius 20 fireballs, nor do I want the chain radius to be 4, and I'm not sure if there's any way to split these functions up since they're both referencing the same parameter(s) of {filtered} (apparently server hit triggers the profanity filter, rawr) and cHitPar1.

So yeah, is there any way to actually do this? And if so, does it mean I'm going to have to use submissiles to be spawned or is there a nice, clean and easy(ish) way to handle this?
---------
Update
---------
Soooo I might have gotten impatient after I fixed a few other things and figured I'd just run with a backup file instead. Totally got it to work, and it's as silly as expected.

In particular, this problem was solved by the following:

server hit and param description for such were set to 0 and range (0 = skill) for parameter 1, while the damage radius and explosions radius/explosions density were moved over to parameters 2 and 3. It looks like this has allowed it to just have the radius be sent to the aurarangecalc field in skills.txt, while leaving the aoe to be a separate value. It looks like there's only the one aurarangecalc which accepts math functions though, so whichever one is going to be sent from missiles.txt to check skills.txt needs to be the one which is a variable and there's only one variable allowed, the others have to be fixed values. Lightning fury seems to claim you can use multiple things here sent to look at skills.txt, but looking at it, I'm not really sure how this works. Either way, shall test some more stuff but hopefully this helps anyone who wants to have chaining explosions in the future.
-----------
Update 2
-----------
I spoke too soon. Further testing has shown a tiny problem... the fireballs aren't actually dealing any AoE damage because they need client/server functions 14/13 to explode, but 16/12 to chain. I'm not sure if it's possible to fix this and now I'm actually not sure what can be done to fix this, or if it's possible within the engine. Looking at https://d2mods.info/forum/viewtopic.php ... ty#p501340 more carefully suggests that there's only one way to do chain lightning, and only a few ways to do explosions, and they seem to be mutually exclusive to one another. It doesn't look like you can release subprojectiles either if you're using chain lightning bounces.

If anyone knows a way around this, it would be nice to know hooow because I'm not sure it's even possible.

User avatar
Cypress
Junior Member
Paladin
Posts: 226
Joined: Fri Dec 01, 2017 2:08 am

Re: Bouncing fireballs

Post by Cypress » Tue Oct 12, 2021 5:07 pm

It might be somewhat possible, using lightningfury (for chaining), moltenboulderemerge (to stack hitfuncs), fireball (for the explosion) and possibly volcano (to control the number of chains). There are two major flaws with this however:
(1) Chain lightningish behavior in general is extremely desynced, so the result will be very obviously off at times (it's less obvious for actual chain lightning and lightning fury since they tend to hit everything anyways).
(2) It won't be possible to have synergies which increase the number of chains. The only way I know to control the number of chains would involve limited volcanos with very negative range, which increases per level such that at specific level breakpoints it will shoot a missile (i.e. the next chain in succession).
If you are fine with these drawbacks, then I'll try to piece something together.

User avatar
Kizkit
Posts: 3
Joined: Mon Oct 11, 2021 3:10 pm
Canada

Re: Bouncing fireballs

Post by Kizkit » Tue Oct 12, 2021 8:37 pm

Cypress wrote:
Tue Oct 12, 2021 5:07 pm
It might be somewhat possible, using lightningfury (for chaining), moltenboulderemerge (to stack hitfuncs), fireball (for the explosion) and possibly volcano (to control the number of chains). There are two major flaws with this however:
(1) Chain lightningish behavior in general is extremely desynced, so the result will be very obviously off at times (it's less obvious for actual chain lightning and lightning fury since they tend to hit everything anyways).
(2) It won't be possible to have synergies which increase the number of chains. The only way I know to control the number of chains would involve limited volcanos with very negative range, which increases per level such that at specific level breakpoints it will shoot a missile (i.e. the next chain in succession).
If you are fine with these drawbacks, then I'll try to piece something together.
Huh... that's an interesting concept that it may even be possible doing it that way, though given the nature of the drawbacks it's probably better to just do something else with it. Thank you very much for the feedback, though save yourself the trouble of doing so unless you're just personally curious yourself at this point. At least it sounds like it's sorta vaguely possible, though far more... janky than expected. I'll keep the concept in mind at least for later, could be interesting to do some silly stuff with it then, so thanks again quite a bit for your thoughts!

For context, I'm mostly just trying to make relatively minor(ish) tweaks to keep the game mostly the same, but fixing some things that bug me for single player stuff. So like making more builds viable for solo in hell mode, or to make all the spells have an active use for different situations, not just passive benefits like synergies. So like if you're going to put points into firebolt, fireball and meteor anyway for the synergies, there should be different situations where you'd actually want to cast the spells themselves in. I've got firebolt acting like a close range shotgun which makes it surprisingly good for bosses that want to run into melee range, am changing meteor to be focused more on its burn effect for targets that stand still like if you get your hireling to hold a boss still, or use a choke point like a doorway, and was going to have fireball be mostly useful with lots of targets nearby due to the chain explosions while not being that useful against a single target. I can get fireball to do sorta what I want in other ways probably, though my next immediate thought is to see if I can get it to count how many targets were hit and scale the damage based on that. Sounds iffy already, but I'll figure something interesting out at least for it =P

Anyway, thank you again, shall be pursuing a different avenue of how to tweak this though looks like!

User avatar
Cypress
Junior Member
Paladin
Posts: 226
Joined: Fri Dec 01, 2017 2:08 am

Re: Bouncing fireballs

Post by Cypress » Wed Oct 13, 2021 4:42 pm

I made the chaining fireball, but the result was so bad that it's definitely not worth using. The issue is the chainlightning function prevents itself from targeting a monster that has the nextdelay state, but this can't be simulated with lightningfury as far as I know. And this brings us back to your original problem of having to use chainlightning: chainlightning already uses a dofunc that does not produce hitsubmissiles, so we can't stack other dofuncs onto it.

Good luck with your next idea, that sounds like it'd be fun to use. There's quite a few ways you could approach it depending on how exactly you want it to scale.

User avatar
Kizkit
Posts: 3
Joined: Mon Oct 11, 2021 3:10 pm
Canada

Re: Bouncing fireballs

Post by Kizkit » Thu Oct 14, 2021 4:01 pm

Cypress wrote:
Wed Oct 13, 2021 4:42 pm
I made the chaining fireball, but the result was so bad that it's definitely not worth using. The issue is the chainlightning function prevents itself from targeting a monster that has the nextdelay state, but this can't be simulated with lightningfury as far as I know. And this brings us back to your original problem of having to use chainlightning: chainlightning already uses a dofunc that does not produce hitsubmissiles, so we can't stack other dofuncs onto it.

Good luck with your next idea, that sounds like it'd be fun to use. There's quite a few ways you could approach it depending on how exactly you want it to scale.
Mmm, still thinking about how to do it. So far, the issue is counting targets. There are definitely abilities which do this, such as lightning fury, though that's "up to X targets" and apparently it's the aurafilter of 42371 which I think just makes it count hostile targets in range, and "num targets" is what's counting the number of enemies in range. I'm not quite sure how that works yet, but since it's an aura, and I wanted synergies anyway and to work with hell mode, I was probably going to be changing fire mastery to an offensive aura like I'd already tested effectively with heart of the wolverine, so that it reduces enemy resistance to fire. Since that would have an aura in place anyway and affecting enemies, I may as well have it count the number of enemies in range while it's at it, and then use that as a modifier to fireball's damage. So more targets affected by the fire mastery aura would mean more fireball damage, even if it's not counting the ones only near it, but it's fine that way probably. I'm just currently not sure how it's tracking that information or where it's putting it to reference it as an input is all. Like if I just use num targets, it should just give the max value, not the current number of targets in range. I'd like to use a min function where it uses the minimum value of either the targets in range or the maximum number of targets from num targets, just not sure how to reference that yet since I assume there's a function code for it and I've yet to find an example of such.

But yeah, basically it would just mean that, once I figure out hoooow to do this, that fireball will be great against lots of enemies by having a much larger explosion radius but doing weak initial damage which scales heavily with the number of targets nearby. Against a single target like diablo, it won't have much effect, but against something like shenk, it'd wipe out his whole army in a few shots, giving it a clearly different purpose than firebolt or fireball, so if you stack all of them, they're all useful in different situations.

...I just have no idea yet how to actually reference the number of targets in range is all. I know I can select the maximum number of targets, but not how to tell how many targets are actually in range right noooow. If you happen to know how to do that, it'd be a great help =P

Post Reply

Return to “Skill Clinic”