Extend Attack speed tables in LOD?

Post here about all aspects of D2 mod making whether it's information, problems or whatever. Please specify whether your post is relating to Classic D2 or the Expansion.

Moderator: Nizari

Post Reply
User avatar
zjat
Junior Member
Champion of the Light
Posts: 323
Joined: Tue Jan 18, 2011 10:59 pm
United States of America

Extend Attack speed tables in LOD?

Post by zjat » Thu Nov 25, 2021 5:55 pm

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.
Last edited by zjat on Mon Dec 13, 2021 6:50 am, edited 1 time in total.

User avatar
Nizari
Site Admin
Paladin
Posts: 115
Joined: Fri Feb 16, 2018 11:39 pm
Poland

Re: D2R Attack Speed tables in LOD?

Post by Nizari » Fri Nov 26, 2021 3:45 am

This is kind of forbidden knowledge as the changes done locally to the attack speed affect the battlenet.

User avatar
zjat
Junior Member
Champion of the Light
Posts: 323
Joined: Tue Jan 18, 2011 10:59 pm
United States of America

Re: D2R Attack Speed tables in LOD?

Post by zjat » Sat Dec 11, 2021 10:05 pm

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?

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Mon Dec 13, 2021 1:20 pm

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.

User avatar
zjat
Junior Member
Champion of the Light
Posts: 323
Joined: Tue Jan 18, 2011 10:59 pm
United States of America

Re: Extend Attack speed tables in LOD?

Post by zjat » Fri Feb 11, 2022 11:01 pm

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?

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Tue Feb 15, 2022 6:12 pm

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.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Tue Jun 13, 2023 4:34 pm

Cypress wrote:
Tue Feb 15, 2022 6:12 pm
You can uncap character A1/A2 breakpoints too by transforming into the same character.
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.

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Tue Jun 13, 2023 10:58 pm

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).

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Wed Jun 14, 2023 11:00 am

Cypress wrote:
Tue Jun 13, 2023 10:58 pm
If you are interested, I could elaborate (the way to make it work is a bit complicated).
of course i'm interested :D
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.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Thu Jun 15, 2023 3:03 pm

Cypress wrote:
Tue Feb 15, 2022 6:12 pm
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.
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.

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Sat Jun 17, 2023 2:26 am

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.
Nagahaku wrote:
Thu Jun 15, 2023 3:03 pm
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.
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.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Sat Jun 17, 2023 3:46 am

Thank you for the hints Cypress, I'll try the volcano :D
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.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Sat Jun 17, 2023 4:04 am

Cypress wrote:
Sat Jun 17, 2023 2:26 am
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.
i don't quite understand this, when and how would this happen?

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Sat Jun 17, 2023 11:20 am

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:

Code: Select all

action	385		1	15													1024																																			0
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:

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
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:

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
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:

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
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.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Sat Jun 17, 2023 2:22 pm

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?

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Sat Jun 17, 2023 5:04 pm

You have to cast Extra Whirlwind. It works kind of like Thunderstorm or Armageddon, but only shoots damaging missiles when you are whirlwinding.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Sat Jun 17, 2023 5:34 pm

Yeah, i understand. thank you for the great hints, although not what i expected, it would be more than helpful :D
and another question: which skill/missile functions could be triggered by thies calc4 conditional?

User avatar
Cypress
Moderator
Champion of the Light
Posts: 446
Joined: Fri Dec 01, 2017 2:08 am

Re: Extend Attack speed tables in LOD?

Post by Cypress » Sun Jun 18, 2023 1:04 am

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.

User avatar
Nagahaku
Junior Member
Paladin
Posts: 119
Joined: Sat Nov 30, 2019 1:11 am

Re: Extend Attack speed tables in LOD?

Post by Nagahaku » Sun Jun 18, 2023 2:59 am

:D thank you Cypress, that would be amazing, very helpful for my mod.

Post Reply

Return to “General Mod Making”