Extend Attack speed tables in LOD?
Moderator: Nizari
Extend Attack speed tables in LOD?
In D2R there have been increases to the attack speed tables apparently.
I was wondering if there's any knowledge of how this might be enabled (or manipulated) in D2Legacy.
I was wondering if there's any knowledge of how this might be enabled (or manipulated) in D2Legacy.
Last edited by zjat on Mon Dec 13, 2021 6:50 am, edited 1 time in total.
Re: D2R Attack Speed tables in LOD?
This is kind of forbidden knowledge as the changes done locally to the attack speed affect the battlenet.
Re: D2R Attack Speed tables in LOD?
I'm not asking how D2R does it (they patched it out anyway).
I am asking if it is possible and known how to extend the attack/cast speed table's breakpoints in LoD via CE, COF, TXT?
I am asking if it is possible and known how to extend the attack/cast speed table's breakpoints in LoD via CE, COF, TXT?
Re: Extend Attack speed tables in LOD?
Hello again, I first deleted my post because I had no idea what I was talking about and misunderstood the goal of the thread. But then I remembered I do know a little about this, although it probably isn't quite what you are after since it only applies to monsters. Namely, monsters do not have attack speed breakpoint limits. Monsters also appear to calculate attack speed differently, such that attackrate and item_fasterattackrate are functionally equivalent when given by weapons (for non-monster-transformed characters, item_fasterattackrate has massive diminishing returns and is no different when on weapons or non-weapons).
So in other words, you could have unlimited attack speed breakpoints, but only if the character transforms into a monster. Werewolf/werebear form are capable of this by default, if you give them a 999% attack speed weapon they will hit a maximum breakpoint and become incapable of dealing damage since they are too fast for the game to handle.
Also, how I tested the weird behavior where attackrate and item_fasterattackrate are the same on weapons for monsters/characters turned into monsters, in case you want to prove it for yourself:
(1) Cloned wolf state, made it transform into fallenshaman1, gave the state as a passive to Raven (to show that it isn't hardcoded to the wolf token, nor to the wolf state, nor to the werewolf/werebear srvdofunc)
(2) Created four hand axes: 850% attackrate, 851% attackrate, 850% item_fasterattackrate, 851% item_fasterattackrate
(3) Gave Tornado A1 animations
(4) At 850% attackrate or item_fasterattackrate, I was able to hit the maximum effective speed for casting Tornado, which is so fast that the cltside graphics do not appear. At 851% attackrate or item_fasterattackrate, I became so fast that I was no longer able to deal damage
It is possible that this behavior is somehow given by cofs (monster and character cofs have quite a few settings that I haven't seen described anywhere), in which case it may be possible to add unlimited breakpoints to character cofs, although this is me being optimistic.
So in other words, you could have unlimited attack speed breakpoints, but only if the character transforms into a monster. Werewolf/werebear form are capable of this by default, if you give them a 999% attack speed weapon they will hit a maximum breakpoint and become incapable of dealing damage since they are too fast for the game to handle.
Also, how I tested the weird behavior where attackrate and item_fasterattackrate are the same on weapons for monsters/characters turned into monsters, in case you want to prove it for yourself:
(1) Cloned wolf state, made it transform into fallenshaman1, gave the state as a passive to Raven (to show that it isn't hardcoded to the wolf token, nor to the wolf state, nor to the werewolf/werebear srvdofunc)
(2) Created four hand axes: 850% attackrate, 851% attackrate, 850% item_fasterattackrate, 851% item_fasterattackrate
(3) Gave Tornado A1 animations
(4) At 850% attackrate or item_fasterattackrate, I was able to hit the maximum effective speed for casting Tornado, which is so fast that the cltside graphics do not appear. At 851% attackrate or item_fasterattackrate, I became so fast that I was no longer able to deal damage
It is possible that this behavior is somehow given by cofs (monster and character cofs have quite a few settings that I haven't seen described anywhere), in which case it may be possible to add unlimited breakpoints to character cofs, although this is me being optimistic.
Re: Extend Attack speed tables in LOD?
Been a little while and have had some time recently to mess with animations and learn.
I figure the attack speed breakpoints thing is out of reach. But I figure while I'm messing with animdata stuff, I'd try to make shapeshifters (maybe) a bit more standardized.
I can get player character cof's speed changes to work but nothing I do to werewolf or werebear works (Tokens: 40, TG). With them being monsters is there an extra step for anim speed changes or something else I'm missing?
I figure the attack speed breakpoints thing is out of reach. But I figure while I'm messing with animdata stuff, I'd try to make shapeshifters (maybe) a bit more standardized.
I can get player character cof's speed changes to work but nothing I do to werewolf or werebear works (Tokens: 40, TG). With them being monsters is there an extra step for anim speed changes or something else I'm missing?
Re: Extend Attack speed tables in LOD?
You can uncap character A1/A2 breakpoints too by transforming into the same character. So if a druid has a state that turns him into a druid, then he will become an unlimited druid that can attack at absurd rates (he will attack slower at first though). Although it probably also still follows the monster transformation rules, where only IAS/attackrate contained on the weapon is unlimited, which is rather awkward.
As for the transformed attack speeds not changing, from what I can tell, animdata's animationspeed column for A1/A2 is not used from the creature you transform into. The game instead uses the original character's A1/A2 animationspeed settings, so for a druid that would be from DZ(A1/A2)(HTH/1HS/1HT/2HS/2HT/STF/XBW/BOW). This is unfortunate, since it means you have to change your base character to change the speeds of the monster you transform into, which kind of defeats the whole point of becoming something different. Although I suppose you can get around this by using other animmodes like S1/S2/S3/S4, but then you won't have the unlimited A1/A2 breakpoints.
I don't get how the base attack speed frames are determined at all though, since A1/A2 when transformed into a wolf/bear is slower than both wolf/bear frames and druid frames, so there is some additional hidden modifier that makes the transformation form's A1/A2 frames slower than they should be.
As for the transformed attack speeds not changing, from what I can tell, animdata's animationspeed column for A1/A2 is not used from the creature you transform into. The game instead uses the original character's A1/A2 animationspeed settings, so for a druid that would be from DZ(A1/A2)(HTH/1HS/1HT/2HS/2HT/STF/XBW/BOW). This is unfortunate, since it means you have to change your base character to change the speeds of the monster you transform into, which kind of defeats the whole point of becoming something different. Although I suppose you can get around this by using other animmodes like S1/S2/S3/S4, but then you won't have the unlimited A1/A2 breakpoints.
I don't get how the base attack speed frames are determined at all though, since A1/A2 when transformed into a wolf/bear is slower than both wolf/bear frames and druid frames, so there is some additional hidden modifier that makes the transformation form's A1/A2 frames slower than they should be.
Re: Extend Attack speed tables in LOD?
Hi, i got a failure when i did this, with LOD 1.14d.
I don't know if blizzard changed something in that patch, perhaps i shall rollback to 1.13c and test again.
and in 1.14d. werewolf/bear is same as before.
Ah... that was strange... not the game version, but you also have to add meleenoly=1 in state.txt to get this work.
i tried to make whirlwind faster, but it seems useless with sequence anims, only a1/a2 breakpoints uncapped...
Edit: After more tests, i found it seems that only whirlwind is uncapable with this uncapping, other melee sequences are fine...
that's weird... maybe whirlwind is much too special.
Re: Extend Attack speed tables in LOD?
It might not be quite what you are looking for Nagahaku, but one thing you can do to make Whirlwind sort of attack faster is to make it release missiles while whirlwinding. For example, you could make it so whirlwind produces weapon damage explosions as you move, which would be kind of like extra attacks for Whirlwind. If you are interested, I could elaborate (the way to make it work is a bit complicated).
Re: Extend Attack speed tables in LOD?
of course i'm interested
actually i've already tried to make it release missiles by modifying whirlwind state into some kind of 'armageddon' that keep releasing missiles, but failed... the missiles seems to be only clt side and displayed like a mess.
Re: Extend Attack speed tables in LOD?
Hi, i believe i have just found something really funny about this, during my attemps to improve the whirlwind by removing breakpoints, although failed.
meleenoly=1 in state.txt is the switch to make transformed charactor using original animation speed, turn it to 0 would make them using the animation speed of what they transformed into, that would also make them keep the cap of A1/A2 animation breakpoints.
and also, turn meleenoly=0 would not make a werewolf/bear shooting arrows when using bows, a bow wielding werewolf/bear would just melee only as usual.
Re: Extend Attack speed tables in LOD?
Hi Nagahaku, sorry for the delay. I was hoping to post it sooner, but the cltside part of it is still a mess. The main idea is to create an aura/state that periodically creates missiles, and the missiles will deal radial weapon damage. The most important thing to know is that the volcano missile is the only missile in the game that allows you to conditionally create more missiles. So you use the volcano as a gate, if your defined condition is true, then the volcano will spit out your missiles, otherwise it will do nothing. So basically:
Whirlwind gives a stat that only it has while whirlwinding.
An aura/state which can produce srvside missiles without interrupting the player like Thunderstorm, Armageddon, or aura Blade Fury.
Cltside missiles are produced by Blaze, Thunderstorm, Shiver Armor or Sanctuary (not sure what is the best, I've been doing a lot of testing on cltside missiles and these were the only ones that weren't horribly broken).
Both the srvside and cltside missile are the same. Namely, a volcano clone which uses calcs to allow missile release only when desired (i.e. when whirlwinding).
The volcano, when whirlwinding, releases radial weapon damage, using a missile like explodingjavalin to deal radial weapon damage. Be sure that it can't trigger ctc via hitflags, otherwise whirlwind will lock up and break.
I should have a working version of it tomorrow that I can post the rows for, hopefully with reasonably synchronized cltside graphics as well.
Note that if you try and make your own version of it before I do: what I've said above is just suggestions and you can vary it up as to your tastes, except for the part about volcano. Pretty much every part of this system can be done in a bunch of ways, except for volcano, which, as far as I know, is the only missile in the entire game which can be controlled via calcs to either produce submissiles or produce no submissiles (other missiles will always produce at least 1 submissile, they cannot produce 0 submissiles). This is an absolutely essential behavior, as otherwise the missile will leak and create submissiles even when not whirlwinding.
Whirlwind gives a stat that only it has while whirlwinding.
An aura/state which can produce srvside missiles without interrupting the player like Thunderstorm, Armageddon, or aura Blade Fury.
Cltside missiles are produced by Blaze, Thunderstorm, Shiver Armor or Sanctuary (not sure what is the best, I've been doing a lot of testing on cltside missiles and these were the only ones that weren't horribly broken).
Both the srvside and cltside missile are the same. Namely, a volcano clone which uses calcs to allow missile release only when desired (i.e. when whirlwinding).
The volcano, when whirlwinding, releases radial weapon damage, using a missile like explodingjavalin to deal radial weapon damage. Be sure that it can't trigger ctc via hitflags, otherwise whirlwind will lock up and break.
I should have a working version of it tomorrow that I can post the rows for, hopefully with reasonably synchronized cltside graphics as well.
Note that if you try and make your own version of it before I do: what I've said above is just suggestions and you can vary it up as to your tastes, except for the part about volcano. Pretty much every part of this system can be done in a bunch of ways, except for volcano, which, as far as I know, is the only missile in the entire game which can be controlled via calcs to either produce submissiles or produce no submissiles (other missiles will always produce at least 1 submissile, they cannot produce 0 submissiles). This is an absolutely essential behavior, as otherwise the missile will leak and create submissiles even when not whirlwinding.
That's interesting and very good to know. Also worth noting that if the value of a stat with updateanimvalue=1 is changing every frame, then it is like you keep the original animation speed + no animation breakpoint cap.Nagahaku wrote: ↑Thu Jun 15, 2023 3:03 pmHi, i believe i have just found something really funny about this, during my attemps to improve the whirlwind by removing breakpoints, although failed.
meleenoly=1 in state.txt is the switch to make transformed charactor using original animation speed, turn it to 0 would make them using the animation speed of what they transformed into, that would also make them keep the cap of A1/A2 animation breakpoints.
and also, turn meleenoly=0 would not make a werewolf/bear shooting arrows when using bows, a bow wielding werewolf/bear would just melee only as usual.
Re: Extend Attack speed tables in LOD?
Thank you for the hints Cypress, I'll try the volcano
It's amazing that you also have an idea to deal with the clt side graphics, i thought they have to be invisible so there would be no messed up anims.
It's amazing that you also have an idea to deal with the clt side graphics, i thought they have to be invisible so there would be no messed up anims.
Re: Extend Attack speed tables in LOD?
It would happen by using an aura (or passive if you have a passive state updater which updates every frame) which gives rand(1,2) to a stat with updateanimvalue=1. A good stat for this in vanilla is other_animrate, since all it does is modify NU speed.
Another way you can increase attack speed beyond the normal limits is give yourself 100% ctc level 1 Delerium on striking and 100% ctc level 2 Delerium on striking. This makes it so that the moment you deal your hit, you will transform and untransform, cancelling the rest of the animation and allowing you to immediately attack again. It's kind of like frame rollback that activates when you successfully hit something.
---
And for adding "extra attacks" (missile hits) while Whirlwinding. Note that I realized a major flaw only after actually making it, in that the extra attacks skill uses one weapon over the other most of the time. There might be a way to make the distribution more even, but I have no idea what that would be.
In itemstatcost.txt:
This is a new stat which will be used to identify different skills while they are being used.
In skills.txt, Whirlwind:
aurastat1=action
aurastatcalc1=1
This tells the game that, when using Whirlwind, we have an action ID of 1; behaviors that will only activate for Whirlwind will use this stat and value for conditionals.
In missiles.txt, new missile which is a clone of volcano:
This creates extra hits and cltside missiles when a condition defined in the skill's calc4 is true (i.e. when whirlwinding)
In missiles.txt, new missile which is a clone of explodingjavalin:
This releases radial weapon damage. The radius is set to 5, but you can make it calc-controlled by setting it to 0, in which case aurarangecalc of the skill becomes the radius.
In skills.txt, new skill which is a clone of Blade Fury:
This is Blade Fury (srvside) + Shiver Armor (cltside) + periodic + perdelay to repeat while the state is active. Calc2 controls how often to release missiles, calc4 controls the whirlwind-only conditional.
So while it's not perfect, I still think it is pretty fun to use and has a lot of application for releasing other missiles while Whirlwinding too.
Another way you can increase attack speed beyond the normal limits is give yourself 100% ctc level 1 Delerium on striking and 100% ctc level 2 Delerium on striking. This makes it so that the moment you deal your hit, you will transform and untransform, cancelling the rest of the animation and allowing you to immediately attack again. It's kind of like frame rollback that activates when you successfully hit something.
---
And for adding "extra attacks" (missile hits) while Whirlwinding. Note that I realized a major flaw only after actually making it, in that the extra attacks skill uses one weapon over the other most of the time. There might be a way to make the distribution more even, but I have no idea what that would be.
In itemstatcost.txt:
Code: Select all
action 385 1 15 1024 0
In skills.txt, Whirlwind:
aurastat1=action
aurastatcalc1=1
This tells the game that, when using Whirlwind, we have an action ID of 1; behaviors that will only activate for Whirlwind will use this stat and value for conditionals.
In missiles.txt, new missile which is a clone of volcano:
Code: Select all
extrawhirlwind-start 708 50 28 0 damage freq (0 = look at skill) 0 radius (0 = look at skill) 0 start frame 2 end frame 30 lob 0 damage freq (0 = look at skill) 1 radius (0 = look at skill) 0 start frame 2 end frame 30 lob 2 0 0 0 0 0 1 null 1024 30 16 8 1 1 extrawhirlwind-hit volcano debris 2 0
In missiles.txt, new missile which is a clone of explodingjavalin:
Code: Select all
extrawhirlwind-hit 709 1 1 44 5 damage radius 1 255 255 255 1 0 0 null 1024 1 16 8 1 1 1 1 5 2 8 128 32 explodingjavalinexp 0
In skills.txt, new skill which is a clone of Blade Fury:
Code: Select all
Extra Whirlwind 400 delerium change 28 48 clc2 extrawhirlwind-start shiverarmor 1000 8 6 extrawhirlwind-start clc2 sparkle delay 1 sparkle radius 1 sparkle height 1 0 rng SC A1 SC 23 12 18 20 Blade Sentinel Wake of Fire Sentry 1 1 0 0 0 0 0 1 1 1 10 bonus "attack" delay (stat('action'.accr)==1)?(0):(100) conditional 0 "Don't Use, missile range mod" 0 "Don't Use, missile range mod" 6 Min Mana to start casting 5 Frame delay between blades 1 8 128 pst4*skill('physb'.ast3)/100+skill('physb'.ast4) phys 5 640 8000
So while it's not perfect, I still think it is pretty fun to use and has a lot of application for releasing other missiles while Whirlwinding too.
Re: Extend Attack speed tables in LOD?
Hmm... I didn't make it
so after these modifications, the skill 'Extra Whirlwind' would be automaticly activated when whirlwind start? or i should do something more?
so after these modifications, the skill 'Extra Whirlwind' would be automaticly activated when whirlwind start? or i should do something more?
Re: Extend Attack speed tables in LOD?
You have to cast Extra Whirlwind. It works kind of like Thunderstorm or Armageddon, but only shoots damaging missiles when you are whirlwinding.
Re: Extend Attack speed tables in LOD?
Yeah, i understand. thank you for the great hints, although not what i expected, it would be more than helpful
and another question: which skill/missile functions could be triggered by thies calc4 conditional?
and another question: which skill/missile functions could be triggered by thies calc4 conditional?
Re: Extend Attack speed tables in LOD?
Any missiles which do not rely on a skill's srvdofunc should work. You could make the Extra Attacks spit out frozen orbs, meteors, fireballs, lightning, bone spear, state applying missiles, grimwards for more complex missile behaviors like missiles that cast Static Field.
As for skills, you are limited to skills which (1) do not interrupt the player and (2) can have their functionality stopped/controlled via calculations such that it will effectively not do anything when you are not using the trigger skill. Very few skills meet these requirements. Blade Fury is one of the few skills which can release missiles as a periodic state without interrupting the player, which is why I used it for Extra Attacks.
As for skills, you are limited to skills which (1) do not interrupt the player and (2) can have their functionality stopped/controlled via calculations such that it will effectively not do anything when you are not using the trigger skill. Very few skills meet these requirements. Blade Fury is one of the few skills which can release missiles as a periodic state without interrupting the player, which is why I used it for Extra Attacks.
Re: Extend Attack speed tables in LOD?
thank you Cypress, that would be amazing, very helpful for my mod.