• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

No more missing...

Status
Not open for further replies.
Level 10
Joined
Apr 9, 2004
Messages
502
Hey all I have a fairly simple question for a complex problem.

I want to make a specific damage detection system for my map but a lot of the systems out there are already trying to accommodate things in regular wc3 that I want to completely customize (i.e. evasion)

So i have a simply question, is it possible to completely remove evasion instances from wc3 that aren't tied to the evasion ability itself?

So far I have spells that cause the target to miss, differences in terrain height, which are both easy to solve.

However the blink dilemma I'm not sure about.

My system was going to base everything on melee or instant attacks for ranged which trigger a separate projectile launch.

That being said can evasion or other instances still create a miss event?

Are there other instances I need to track? Any clarity on this would be extremely appreciated.
 
Level 11
Joined
May 16, 2016
Messages
730
Hey all I have a fairly simple question for a complex problem.

I want to make a specific damage detection system for my map but a lot of the systems out there are already trying to accommodate things in regular wc3 that I want to completely customize (i.e. evasion)

So i have a simply question, is it possible to completely remove evasion instances from wc3 that aren't tied to the evasion ability itself?

So far I have spells that cause the target to miss, differences in terrain height, which are both easy to solve.

However the blink dilemma I'm not sure about.

My system was going to base everything on melee or instant attacks for ranged which trigger a separate projectile launch.

That being said can evasion or other instances still create a miss event?

Are there other instances I need to track? Any clarity on this would be extremely appreciated.
Here is GDD system with evasion example. If you want to enable triggerring dodge you have to divide attack damage and damage caused by spells.
In this template peasant dodges all attacks, orc worker dodges 50% of attack.
The system works next way:
When unit gets damage you can add it in the healgroup and store in its ID hash the damage taken. You can control the chance of miss (for example if damagesource has curse then chance to add damaged unit in the healgroup and store its damage taken is 45% (use random between 1 to 100))
In the LOOP trigger the system picks all in the healgroup, removes them from the group and heals it by stored damage taken. The illusion like unit doesn't get any damage.
In this case you can control chance and amount of damage to be dodged.
Disadvantage:
-you can't dodge the damage which is higher than max health.
- you have to divide damaged caused by abilities and damage caused by attacks. Or else dodge will react on damage caused by spells. So the best way is creating "empty" abilities and abilities for dummy units.
 

Attachments

  • Dodge example.w3x
    21.4 KB · Views: 25
Last edited:
Level 13
Joined
Mar 24, 2013
Messages
1,105
I'm not sure I am clear on what you are trying to accomplish.

You can turn off hardcoded uphill miss, you can not use hardcoded spells that cause miss chance, and you can not use the ability evasion. Because you are unable to detect when these happen. Instead you can catch when a unit dodges by calculating their current "triggered evasion."

What I mean by this is upon the damage happening you can look up all this information (status buffs, passive evasion, low ground etc.) and gain the value of their current evasion and then determine if the damage ought to miss.

I am not entirely clear on why you need to write your own DDS. Basically all you're doing is rolling a number based on a units % evasion and if it is a dodge you set the damage taken to zero, otherwise it takes the damage.

Unit A attacks unit B, unit B has a 10% chance to dodge from their evasion. We roll a number from 1 to 100. If its <= to 10 then unit B dodged the attack.

Unit A attacks Unit B, unit B has a 10% chance to dodge from their evasion. This time Unit A has our pseudo Drunken Haze buff which adds a 25% chance for unit A's attack to miss. This time we roll a number from 1 to 100 and if its between 1 and 35 we know it was a miss/dodge.

( In these examples you would need to be using a DDS that can distinguish between physical and spell damage unless evasion can dodge both spell damage and right clicks)

As far as the "blink dilemma" is concerned I think you're referring to disjointing projectiles. In which case if I remember right can be achieved through hiding and unhidding a unit.
 
Last edited:
Level 10
Joined
Apr 9, 2004
Messages
502
ok so it sounds like there aren't any other hardcoded instances where the game applies an evasion then?

My main concern is that I want to trigger all evasion in the system so that I don't have to worry about actually accommodating any hardcoded evasion instances that can't be removed.

There's workarounds to detect magical damage in the on damage event so it's easy enough to distinguish.

As for the blink dilemma, I thought it had to do with the distance a unit could move before breaking homing (single blink can cover a large distance quickly you can dodge projectiles this way.)

So just to sum up, then there aren't any hidden scenarios where evasion randomly happens aside from having an evasion ability, a miss buff, the evasion from gameplay constants which can be set to 0, and issues with projectiles malfunctioning with abilities which quickly move the unit beyond that buffer tracking region?
 
Level 13
Joined
Mar 24, 2013
Messages
1,105
The hardcoded blink disjoints projectiles because that is the intended behavior, nothing to do with moving a large distance after the projectile is launched. So no worries there if you need units to move across map instantly.

As far as I am aware you are correct in your summary. On that last point, so long as the unit completed its attack animation and launched the projectile (and it is set to be homing) it will home in on the target regardless of distance traveled after launch.
 
Status
Not open for further replies.
Top