Yea but I wasn't talking about simple critical chance, evades or scaling damage.
I am talking about separating spells into different types (Fire, Water, Holy, Undead, etc) and separating it into AoE damage and Single Target damage and using only custom data to use as damage scaling, damage reduction, resistance penetration, etc.
Also how do you tell the difference between on-hit damage and additional damage?
If you will use these things inside a DDS, you will first of all have a very big problem in coding it and secondly it will be very performance heavy.
Once again, my MS Paint skillz show again what a DDS does compared to what a ADE can do.
Here is how a DDS works.
In a DDS, every single damage that is done inside your system will tell the DDS that a unit is damaged unless you turned the DDS off (for a little time).
In the DDS, you do not know what the damage actually was before it was reduced or what kind of damage it was.
You cannot even know when it was invoked.
looking_for_help invented the Spell Invertion workaround to make a DDS know the difference between basic attacks and spell damage but even then it is still limited to one invoke and that is "A unit takes damage".
This is how an ADE (Alternative Damage-Engine) works.
In an ADE, you deal damage through the engine. As the name already says, it is a new damage engine that will override the regular one. This means that you have to trigger ALL damage inside your map. That is why I do not recommend new people or people who want something for only a few things, to use an ADE at all.
However, if you call functions instead of just dealing damage and responding to it, you can create anything that will make your map look nice and it will maybe even run faster than the reguar damage engine.
In the picture, you don't see a lot because you don't use things that already exist like you do in the DDS.
You have to write everything yourself which also opens "infinite" possibilities.
Also every ADE is map dependent so you cannot use the same ADE for a map with the same stats as League of Legends in a map with the same stats as in World of Warcraft.
In my map, I have customized basic attacks so I can tell the difference between ranged and melee attacks and even give effects to an attack.
I also give parameters such as (damage amount, damage source, damage target,) damage type, damage subtype, scaling type, damage source angle, damage power, etc, etc, etc.
Everything that you want can be put in it without problems as soon as you have it installed properly.
But next to that all, a DDS has one event so you will be having to check every time when a unit takes damage if that damage is ... for every trigger that responds to specific damage.
In an ADE, you can create dynamic events so you can have events like these:
- A unit takes damage
- A unit takes damage from basic attacks
- A unit takes damage from spells
- A unit takes damage from melee basic attacks
- A unit takes damage from ranged basic attacks
- A unit takes damage from fire spells
- A unit takes damage from holy spells
- A unit takes damage from basic attacks that are modified with ... buff
- A unit takes damage from holy spells that are modified with ... ability
- Unit <...> takes damage from spells
- Unit <...> takes damage from <...> spell
etc etc etc etc etc etc.
In my system, every single event that I mentioned is made in 6 dynamic calls:
call AEM_Call_Event(udg_ADE_Event_Damage)
call AEM_Call_Event(udg_ADE_Event_Damage, udg_ADE_Damage_Type)
call AEM_Call_Event(udg_ADE_Event_Damage, udg_ADE_Damage_Type, udg_ADE_Damage_Subtype)
call AEM_Call_Event(udg_ADE_Event_Damage, udg_ADE_Damage_Target, 1)
call AEM_Call_Event(udg_ADE_Event_Damage, udg_ADE_Damage_Source, 2)
call AEM_Call_Event(udg_ADE_Event_Damage_Modified, udg_ADE_Damage_Index, udg_ADE_Damage_Effect)
These events are made with my Advanced Event Management System which I haven't released yet.
I can make a simple template for you to make a very nice yet simple ADE if you want.