The Guide to Almost All Non-Missile Skill Functions
Moderator: Nizari
Re: The Guide to Almost All Non-Missile Skill Functions
Hey guys, im green with modding the Diablo 2, i tried to add Diablo skills onto the ring but when i try to use them all it does is just bugging my character is there a way to fix it? if you guys could help me with this issue i would really really appreciate that .
Re: The Guide to Almost All Non-Missile Skill Functions
Hi mac13lx, that's probably because of an improper animation, which is defined by the anim column of the skill. A lot of monster skills have SQ as their default animation, which doesn't work for players unless it has a seqnum associated with it to determine what sequence it should play. You can change the skill's anim from SQ to SC to make it use the casting animation.
Re: The Guide to Almost All Non-Missile Skill Functions
Thanks @Cypress for the quick reply , can you tell me please in what file i can make those changes?
Re: The Guide to Almost All Non-Missile Skill Functions
The changes would be made in skills.txt
Re: The Guide to Almost All Non-Missile Skill Functions
Starting from fresh 1.13c txt files, this is what I had to change to make it be usable with the fewest changes, in skills.txt:
skilldesc=delerium change
anim=SC
skilldesc=delerium change
anim=SC
Code: Select all
DiabWall 197 delerium change 102 diabwallmaker diablo_fire_cast 58 diabwallmaker 1 0 none SC SQ S1 1 1 1 lvl #missiles 0 ? 0 ? 0 ? 0 ? 1 8 0
- eleriaqueen
- Posts: 57
- Joined: Mon Dec 16, 2019 8:49 am
Re: The Guide to Almost All Non-Missile Skill Functions
Hi, idk if you're keeping track of D2R behavior but I did some (naive) testing in up to date version and it seems that Vengeance can't apply magic damage type through eMin/eMax. I simply switched to Bash/Concentrate func and magic damage went through.
Re: The Guide to Almost All Non-Missile Skill Functions
Thanks eleriaqueen! That's not a D2R specific difference, that was my mistake in testing. Turns out Vengeance can't use elemental damage nor Etype; it always applies cold length with ELen regardless of the etype set. I've updated the guide accordingly.
Re: The Guide to Almost All Non-Missile Skill Functions
Hi, I found something strange with Blade Shield.
It would interrupt some finishing strikes from releasing charge-ups at its damaging frame, especially Dragon Tail.
Dragon Tail would totally fail at Blade Shield's damaging frame on srv side, no mana cost, no damage, no releasing charge-ups, yet clt side anims are fine.
Dragon Talon would normally do the multiple kicks, dealing its own damage but without releasing charge-ups.
Dragon Claw seems to be OK, but I modificated its srvstfunc to 28 which is same as Blade Shield to apply a state, don't know if it would be interrupted with vanilla 25.
Dragon Flight seems to be OK as well.
It would interrupt some finishing strikes from releasing charge-ups at its damaging frame, especially Dragon Tail.
Dragon Tail would totally fail at Blade Shield's damaging frame on srv side, no mana cost, no damage, no releasing charge-ups, yet clt side anims are fine.
Dragon Talon would normally do the multiple kicks, dealing its own damage but without releasing charge-ups.
Dragon Claw seems to be OK, but I modificated its srvstfunc to 28 which is same as Blade Shield to apply a state, don't know if it would be interrupted with vanilla 25.
Dragon Flight seems to be OK as well.
Re: The Guide to Almost All Non-Missile Skill Functions
Awesome find Nagahaku! From my testing:
•Blade Shield's srvdofunc is causing the interruption (the srvstfunc is like an aura, it will repeat the srvdofunc every perdelay frames, so every time the srvdofunc 54 is repeated, it may interrupt)
•Dragon Talon is also getting interrupted fully like Dragon Tail, it's just that the interruption occurs on a per-kick basis, so when you only have 1 kick you often times miss entirely, but with multiple kicks you'll end up missing only some kicks
•The interruption only occurs while srvdofunc 54 is hitting the target that you want to kick with Dragon Talon or Dragon Tail. I used a Hand Axe with rangeadder=25, and found that, when far away, these kicks will hit like normal. Even when close, the kicks will hit, but only if targeting an enemy that isn't getting hit by srvdofunc 54
•Hurricane (srvdofunc 145) and Armageddon (srvdofunc 146) do not interrupt these kicks when paired with srvstfunc 28, although Hurricane doesn't seem to want to do weapon damage, and Armageddon is slightly random in terms of where its missiles appear, so it won't perfectly mimic Blade Shield's aoe being centered on the player
So probably the best fix for this would be to use srvstfunc 28 with srvdofunc 146, set aurarangecalc=1 and make it shoot missiles that deal weapon splash damage, like ice javalin psrvhitfunc 44. You will lose out on Blade Shield's odd properties, like how it can trigger ctc-on-attack and it's spell physical damage being reduced by srcdam, but otherwise it seems to work okay.
•Blade Shield's srvdofunc is causing the interruption (the srvstfunc is like an aura, it will repeat the srvdofunc every perdelay frames, so every time the srvdofunc 54 is repeated, it may interrupt)
•Dragon Talon is also getting interrupted fully like Dragon Tail, it's just that the interruption occurs on a per-kick basis, so when you only have 1 kick you often times miss entirely, but with multiple kicks you'll end up missing only some kicks
•The interruption only occurs while srvdofunc 54 is hitting the target that you want to kick with Dragon Talon or Dragon Tail. I used a Hand Axe with rangeadder=25, and found that, when far away, these kicks will hit like normal. Even when close, the kicks will hit, but only if targeting an enemy that isn't getting hit by srvdofunc 54
•Hurricane (srvdofunc 145) and Armageddon (srvdofunc 146) do not interrupt these kicks when paired with srvstfunc 28, although Hurricane doesn't seem to want to do weapon damage, and Armageddon is slightly random in terms of where its missiles appear, so it won't perfectly mimic Blade Shield's aoe being centered on the player
So probably the best fix for this would be to use srvstfunc 28 with srvdofunc 146, set aurarangecalc=1 and make it shoot missiles that deal weapon splash damage, like ice javalin psrvhitfunc 44. You will lose out on Blade Shield's odd properties, like how it can trigger ctc-on-attack and it's spell physical damage being reduced by srcdam, but otherwise it seems to work okay.
Re: The Guide to Almost All Non-Missile Skill Functions
An issue concerning Bash:
It seems like after using Bash, its aurastats will persist as long as I keep hitting enemies--and it doesn't matter which skill I use. I am trying to use the Bash function to trigger a CTC effect that is only possible as long as the Bash-granted aurastat is in effect. However, this little feature enables players to use other skills alongside this CTC effect, which makes the class completely OP.
Cypress, or anyone, are you aware of any workarounds? Thanks.
It seems like after using Bash, its aurastats will persist as long as I keep hitting enemies--and it doesn't matter which skill I use. I am trying to use the Bash function to trigger a CTC effect that is only possible as long as the Bash-granted aurastat is in effect. However, this little feature enables players to use other skills alongside this CTC effect, which makes the class completely OP.
Cypress, or anyone, are you aware of any workarounds? Thanks.
Re: The Guide to Almost All Non-Missile Skill Functions
Good idea, i tried this and much everything became better. however it would also lose triggering functions, no longer triggering ctc or crush blow, open wounds, so i tried a psrvhitfunc=5 missile to release a small nova. i know NHD sould be used as less as possible, but still prefered triggering functions.Cypress wrote: ↑Fri Feb 16, 2024 11:15 amSo probably the best fix for this would be to use srvstfunc 28 with srvdofunc 146, set aurarangecalc=1 and make it shoot missiles that deal weapon splash damage, like ice javalin psrvhitfunc 44. You will lose out on Blade Shield's odd properties, like how it can trigger ctc-on-attack and it's spell physical damage being reduced by srcdam, but otherwise it seems to work okay.
Re: The Guide to Almost All Non-Missile Skill Functions
Hi nothing5, great find! I didn't know it works that way, that is a rather annoying result. The only workaround I can think of is to use a skill that supports a length based aurastate, like Berserk or Frenzy, and make the duration really short maybe like 20 frames or so. You wouldn't lose much, since Bash's added damage is broken/weird anyways.nothing5 wrote: ↑Fri Feb 16, 2024 5:25 pmAn issue concerning Bash:
It seems like after using Bash, its aurastats will persist as long as I keep hitting enemies--and it doesn't matter which skill I use. I am trying to use the Bash function to trigger a CTC effect that is only possible as long as the Bash-granted aurastat is in effect. However, this little feature enables players to use other skills alongside this CTC effect, which makes the class completely OP.
Cypress, or anyone, are you aware of any workarounds? Thanks.
Nagahaku, you can use hitflags=32 to enable ctc on striking with radial damage, so you don't need to use nextdelay.
Re: The Guide to Almost All Non-Missile Skill Functions
thanks, it worked.
and i found an interesting (bug?) for this armaggedon style blade shield: cast it in town, then touch a healer npc, go out to the field and it won't do any damage. no idea what the healer did to it, without touching a healer, it would work normally even casted in town.
Re: The Guide to Almost All Non-Missile Skill Functions
Sorry to necropost this. @Cypress: In your guide you wrote that fend's par2 allows you to play with attack speed. I just wanted to say this should be edited out of your post because this is a purely client side change. Kingpin had a look at the code and there is no acknowledgement of the par2 value on the two srv side functions so even though you will appear to attack faster visually, you are not hitting faster on the server and thus are actually desyncing yourself.
Re: The Guide to Almost All Non-Missile Skill Functions
Hi GreenDude, that's not a necropost at all, I'm always glad to see contributions to our understanding of Diablo 2. However, I'm not so sure that's correct. From my brief testing, the difference between Fend with par2=60 and par2=1 is immediately clear. 60 takes it's time clearing out an area, and 1 seems to attack at 1 frame per attack.
Video evidence:
Video evidence:
Re: The Guide to Almost All Non-Missile Skill Functions
Thanks for the video. In this case it must mean that singleplayer trusts the client for this while online multiplayer doesnt. Otherwise you'd have the client deciding the attack speed on the server. I always thought that even d2's singleplayer still respects the srv side over the client and that mostly seems true which is why srvdo functions will always be the real thing happening and not cltdo but based on your video it does seem like the kill is happening faster on srvdo side. Very strange. Even the cloak of shadows CD is only possible client side although because this one actually restricts the casting on the client end, for singleplayer, this works adequately.
Re: The Guide to Almost All Non-Missile Skill Functions
Is it possible to make hydra or other non-druid funcs to summon pet with caster level or area level?
Re: The Guide to Almost All Non-Missile Skill Functions
Hi aasa0001, you can give your pet a 'level' stat bonus. For example, aurastat1=level and aurastat1calc=ulvl. This will give your pet a unit level bonus equivalent to your character level.
Re: The Guide to Almost All Non-Missile Skill Functions
Thanks. But:
- When I tried to use it for death-skill/hydra drop (viewtopic.php?t=19228) in D2R, the drop item level is monstats.<pet>.level, not caster level.
Is it that level for item drop is handled differently or D2R changed the behavior?
- I wanted to verify level in other ways, but then I realized that golem/skeleton/valkyrie... have level=<blank> in monstats.
How does non-druid summon skills setup the level for pet? (And how to check pet level?)
Re: The Guide to Almost All Non-Missile Skill Functions
aasa0001, I have updated every pet entry to show the pet level. In the case of Hydra:
•if monstats.txt noratio=0:
◦NORMAL: PET LEVEL=monstats.txt Level
◦NIGHTMARE: PET LEVEL=levels.txt MonLvl2Ex
◦HELL: PET LEVEL=levels.txt MonLvl3Ex
•if monstats.txt noratio=1:
◦NORMAL: PET LEVEL=monstats.txt Level
◦NIGHTMARE: PET LEVEL=monstats.txt Level(N)
◦HELL: PET LEVEL=monstats.txt Level(H)
This means you can either have a consistent pet level by setting noratio=1, or keep noratio=0 and only have pet level scale with area level in Nightmare and Hell. Personally, I wouldn't use Hydra as an item dropper since the number of drops can't easily be controlled through calcs. Using Teeth + monspawn, you can have the number of drops based on a calc. This allows for massive item drops of dozens of items (every monspawn missile created could have up to 6 drops, and you could spawn dozens of missiles for many drops), or make the item dropper even rarer than 1% ctc, since you can also reduce the effective ctc by having a chance to spawn 0 missiles (so instead of 1-100%, you could have fractional values, like 50.5% or 0.5% or 0.0001%).
EDIT: And the way I check for level is to give the pet an aura with aurastat1=fireresist and aurastatcalc1=stat('level'.accr), such that the pet gives fire resistance equivalent to its pet level.
•if monstats.txt noratio=0:
◦NORMAL: PET LEVEL=monstats.txt Level
◦NIGHTMARE: PET LEVEL=levels.txt MonLvl2Ex
◦HELL: PET LEVEL=levels.txt MonLvl3Ex
•if monstats.txt noratio=1:
◦NORMAL: PET LEVEL=monstats.txt Level
◦NIGHTMARE: PET LEVEL=monstats.txt Level(N)
◦HELL: PET LEVEL=monstats.txt Level(H)
This means you can either have a consistent pet level by setting noratio=1, or keep noratio=0 and only have pet level scale with area level in Nightmare and Hell. Personally, I wouldn't use Hydra as an item dropper since the number of drops can't easily be controlled through calcs. Using Teeth + monspawn, you can have the number of drops based on a calc. This allows for massive item drops of dozens of items (every monspawn missile created could have up to 6 drops, and you could spawn dozens of missiles for many drops), or make the item dropper even rarer than 1% ctc, since you can also reduce the effective ctc by having a chance to spawn 0 missiles (so instead of 1-100%, you could have fractional values, like 50.5% or 0.5% or 0.0001%).
EDIT: And the way I check for level is to give the pet an aura with aurastat1=fireresist and aurastatcalc1=stat('level'.accr), such that the pet gives fire resistance equivalent to its pet level.
Re: The Guide to Almost All Non-Missile Skill Functions
I figured out how to fix it in some cases. If your skill has aurastate=concentrate then every other attack will miss. With interrupt=0, you won't have this random missing. So with both, you will lose the aurastate upon swapping due to the concentrate interruption. You still can carry over aurastates if there is another skill with the same two settings, although in which case only the old aurastate will remain while the new aurastate won't get applied until you interrupt.nothing5 wrote: ↑Fri Feb 16, 2024 5:25 pmAn issue concerning Bash:
It seems like after using Bash, its aurastats will persist as long as I keep hitting enemies--and it doesn't matter which skill I use. I am trying to use the Bash function to trigger a CTC effect that is only possible as long as the Bash-granted aurastat is in effect. However, this little feature enables players to use other skills alongside this CTC effect, which makes the class completely OP.
Cypress, or anyone, are you aware of any workarounds? Thanks.
Re: The Guide to Almost All Non-Missile Skill Functions
two things about itCypress wrote: ↑Sun Sep 06, 2020 5:23 pm[fenris rage] Consume a corpse to gain a state with full aurastats.
(srvdofunc=137; cltstfunc=51,cltdofunc=79 if you want cltmissilea to be released from the consumed corpse)
(aurastate=,auralencalc=,aurastat1-6=; aurastate determines the state applied, auralencalc is the length of the state, all aurastats are applied)
1. this srvdofunc is hardcoded to be targeting a 'soft' corpse, changing selectproc won't work. the wolf would always keep trying to eat a skeleton corpse and keep failing.
2. the fenris_rage state (id=138) is the only state that makes the wolf stop eating another corpse through its duration, if another state is applied, the wolf would always try to find a corpse to eat.
Re: The Guide to Almost All Non-Missile Skill Functions
Awesome finds Nagahaku! That is annoying that it seems to try and eat non-soft corpses even though they are not valid targets. For player use, selectproc=4 or 6 works good since they preclude soft corpses. I think this is more of a problem of the AI's corpse selection, so I'm not sure if there is a skill related fix. I tried using srvstfuncs that only allow soft corpses, but the AI seems to ignore those too.
Being able to choose if it keeps eating corpses is fun though, in some cases that might be useful, like if you make it so the fenrisrage skill produces damaging missiles as well as the buff. Also more of an AI problem, as noted here: https://d2mods.info/forum/viewtopic.php?f=4&t=65398
Being able to choose if it keeps eating corpses is fun though, in some cases that might be useful, like if you make it so the fenrisrage skill produces damaging missiles as well as the buff. Also more of an AI problem, as noted here: https://d2mods.info/forum/viewtopic.php?f=4&t=65398
Re: The Guide to Almost All Non-Missile Skill Functions
yes, for a further test, AIs targeting corpse do not check selectproc of a skill, they would target anything that was a corpse. i tried to make a potion finder with CycleOfLife AI, it kept trying to dig potions from skeleton corpses too.