System Damage

Jesus4Lyf

Good Idea™
Reaction score
397
JASS:
//          function UnitDamageTargetEx takes lots of things returns boolean
//              - Replaces UnitDamageTarget in your map, with the same arguments.
See that "with the same arguments" thing? ;)

GUI users should use Damage_Pure, Damage_Spell or Damage_Physical, which list their arguments explicitly and may not even suck for GUI users to actually use.

>what the returned booleans mean for the functions
Ah. In case you're wondering, that's success - whether the damage was dealable or not. I suppose you're right. *Puts it on his mental to-do list.* <_<
 

Andrewgosu

The Silent Pandaren Helper
Reaction score
716
I don't see a reason why not to approve this, as this is really-really useful.
 

chobibo

Level 1 Crypt Lord
Reaction score
48
An O(n) sorting algorithm wouls be awesome....
\
O(1)

The system looks good, it works. I was thinking of a different approach to this but I can't comment yet since I haven't made things like this. Anyways great system.
 

Troll-Brain

You can change this now in User CP.
Reaction score
85
Version 1.0.2: Added Damage_IsPure(), Damage_IsSpell(), Damage_IsPhysical() and Damage_IsAttack() (so damage can be physical but not count as an attack).

I've only found Damage_IsAttack
Also you should mention clearly that the user must code itself every spells which are causing damages, and not use the ones already made in the object editor. (even if it should be obvious)
 

Jesus4Lyf

Good Idea™
Reaction score
397
Quote sentence 3 of documentation:
It also provides a means to detect what type
// of damage was dealt, so long as all damage in your map is dealt using
// this system's deal damage functions (except for basic attacks).
And the other functions are made with a textmacro, and should inline to DamageTargetEx. :p
 

13lade619

is now a game developer :)
Reaction score
398
using this... thanks.

um, you should update the map. it still contains 1.0.1..
i had to return to get the isattack condition

sorry.. but Damage_IsAttack() doesnt actually seem to work for me...

i have this trigger:

JASS:
function Trig_BladebaneReturn_Conds takes nothing returns boolean
    return Damage_IsAttack()==true and ( UnitHasItemOfTypeBJ(GetTriggerUnit(), &#039;I01K&#039;) or UnitHasItemOfTypeBJ(GetTriggerUnit(), &#039;I01L&#039;) )
endfunction

function Trig_BladebaneReturn_Callback takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local unit target = GetEventDamageSource()
        
        call BJDebugMsg(&quot;CONSIDERED PHYSICAL&quot;)
        
        if UnitHasItemOfTypeBJ(caster, &#039;I01K&#039;) then
            call UnitDamageTargetBJ(caster,target,25,ATTACK_TYPE_HERO,DAMAGE_TYPE_NORMAL)
        elseif UnitHasItemOfTypeBJ(caster, &#039;I01L&#039;) then
            call UnitDamageTargetBJ(caster,target,55,ATTACK_TYPE_HERO,DAMAGE_TYPE_NORMAL)
        endif
    
    set caster = null
    set target = null
endfunction

function InitTrig_BladebaneReturn takes nothing returns nothing
    set gg_trg_BladebaneReturn = CreateTrigger()
    call Damage_RegisterEvent(gg_trg_BladebaneReturn)
    call TriggerAddAction(gg_trg_BladebaneReturn,function Trig_BladebaneReturn_Callback)
    call TriggerAddCondition( gg_trg_BladebaneReturn, Condition(function Trig_BladebaneReturn_Conds) )
endfunction


tried using the condition as action (as in the sample) but doesnt work either..
it detects almost all damages.. specially from spells..

i'd like it so that my trigger only responds to attacks, not spells.
 

Jesus4Lyf

Good Idea™
Reaction score
397
sorry.. but Damage_IsAttack() doesnt actually seem to work for me...
JASS:
//          all such functionality. It also provides a means to detect what type
//          of damage was dealt, so long as all damage in your map is dealt using
//          this system&#039;s deal damage functions (except for basic attacks).
Mmm. Includes IsAttack().

If you need to detect IsSpell, IsPure, IsPhysical, IsAttack, and GetType, you need to build your whole map around Damage. Unfortunate WC3 limitation.

Hope you still see some nice use out of this, even if you don't use those features. :thup:
 

13lade619

is now a game developer :)
Reaction score
398
tsk... oh man..

Unfortunate WC3 limitation.
*too lazy to rebuild my map* :p..

i was using the OnAttack template before.. the limitation was that DmgPerSec abilities were triggering the 'attack'..

anyways.. i had this idea before about a damage detecting system by using nulled passives..
but my problem is about buff stacking though.. i foresee some conflicts with it.. but maybe i'd give it a shot when i have time..
 

Jesus4Lyf

Good Idea™
Reaction score
397
I admit that I could accomplish "IsAttack" without that limitation, probably. But I don't think it would be completely reliable, and it wouldn't be as efficient...

I don't know. These days I just code my maps on Damage, and it serves me that extra functionality. <3

I may consider adding one thing - a filter that defines unit types that deal spell damage. So if you use dummy casters, it pick up the type as spell.

I admit I blatantly stole that idea off a user suggestion on WC3C for some system.
 

BRUTAL

I'm working
Reaction score
118
When I try saving my map with Damage I get this.
errordmg.jpg

:p
 

Bryce

New Member
Reaction score
0
Sorry but there's an error in your library. Last week i made test about DAMAGE_TYPE_XX.
DAMAGE_TYPE_NORMAL are spell damage, then there aren't physical and unaffect units with magic immunity, like SpellBreaker. You just have to replace DAMAGE_TYPE_NORMAL by DAMAGE_TYPE_FORCE for example.
 

Jesus4Lyf

Good Idea™
Reaction score
397
Sorry but there's an error in your library. Last week i made test about DAMAGE_TYPE_XX.
DAMAGE_TYPE_NORMAL are spell damage, then there aren't physical and unaffect units with magic immunity, like SpellBreaker. You just have to replace DAMAGE_TYPE_NORMAL by DAMAGE_TYPE_FORCE for example.
This simple snippet amplifies all damage by 500 physical.
JASS:
scope NoDamageOnMap initializer StartZeroDamage
    private function BlockAllDamage takes nothing returns boolean
        //call Damage_BlockAll()
        call DisableTrigger(GetTriggeringTrigger())
        call Damage_Physical(GetEventDamageSource(),GetTriggerUnit(),500,ATTACK_TYPE_NORMAL,true,false)
        call EnableTrigger(GetTriggeringTrigger())
        return false
    endfunction
    
    private function StartZeroDamage takes nothing returns nothing
        local trigger t=CreateTrigger()
        call TriggerAddCondition(t,Condition(function BlockAllDamage))
        call Damage_RegisterEvent(t)
    endfunction
endscope
It proves that you are mistaken (the amplification worked on a Phoenix just fine).

Thanks for your interest in this system.
Kind regards. :)
 

GoGo-Boy

You can change this now in User CP
Reaction score
40
Hmm I really dunno whether I should implant this system into my map. While it grants some advantages I had to reorganize every trigger that deals damage and had to work around other skills that I didn't want to do by dealing the damage via script.
Hmmm :/
Got some questions which are most likely already pointed out somewhere... but whatever:
This works kinda as a damage detection system as long as the damage is either dealt via your functions or through basic attacks?
Other damage detection systems suffer from some sorts of leaks. Is this free of such leaks duo to the restriction that the damage must be dealt with your functions?
My map will generate a lot creeps over time (a Diablo map ;P) and there will be some huge battles. Also there are some other triggers that consume some performance like a fixed-cam script. Do you think this system performs well enough with like 50-60 units in a battle field?

And last but not least... could you tell me where I can add your functions to allow the NewGen Editor to show me the arguments it takes etc?^^

Edit:
It seems to be really awesome btw :D
 

Jesus4Lyf

Good Idea™
Reaction score
397
I had to reorganize every trigger that deals damage and had to work around other skills that I didn't want to do by dealing the damage via script.
Only if you want to detect Damage_IsAttack, Damage_IsPure/Spell/Physical, and Damage_GetType.
This works kinda as a damage detection system as long as the damage is either dealt via your functions or through basic attacks?
Actually, copy pasting the library in and changing none of your code provides Damage_RegisterEvent, Damage_Block, Damage_BlockAll, Damage_Spell, Damage_Pure, Damage_Physical. Everything except type detection.
Other damage detection systems suffer from some sorts of leaks.
This is leakless regardless. The "any unit damaged" event is often implemented in ways that leak. This in this system is not dependent on using the special functions.
Do you think this system performs well enough with like 50-60 units in a battle field?
I think I tested it with about 100, blocking all damage that was dealt. I didn't drop a single fps on my 3 year old laptop that runs DotA at 25 fps (this map ran at 60).
And last but not least... could you tell me where I can add your functions to allow the NewGen Editor to show me the arguments it takes etc?^^
Hm. I should really start adding this to my systems. I was mapping and decided I want this feature just yesterday. I'll look into it.

Edit: Added TESH highlighting (see first page). :)

>It seems to be really awesome btw :D
Thanks! Lots of effort in this...

Two more things. The main point this stands out from other damage systems on is that it supports recursion (damage in response to a damage event, most systems get the types mixed up and such).
Even though you don't -have- to use the functions to deal all damage in your map, it is recommended because the Damage_IsSpell() and Damage_IsAttack() stuff is just awesome. And then you have it. :D
 

GoGo-Boy

You can change this now in User CP
Reaction score
40
Now that sounds promising! I will try it out once I get my JNGP working correctly again. Even TESH doesn't seem to work :/

For the highlighing I just need to create a .txt file, copy the code in there (the one with only the function names and arguments) and save it in the 'include' folder?
Because it doesn't seem to work for me, but then again it's probably duo to my malfunctioning JNGP anyway :eek:
 

GoGo-Boy

You can change this now in User CP
Reaction score
40
Hmm I dunno how to create a .j file.
Notepad seems to know ".txt" only :/
Is there some program you got suggest?
 
General chit-chat
Help Users
  • Varine Varine:
    They also were digging threw old shit at the sheriff's office and I tried to get them to give me the old electronic stuff, but they said no. They can't give it to people because they might use it to impersonate a cop or break into their network or some shit? idk but it was a shame to see them take a whole bunch of radios and shit to get shredded and landfilled
  • The Helper The Helper:
    whatever at least you are free
  • Monovertex Monovertex:
    How are you all? :D
    +1
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top