System Damage

Forcing everything under one Logic library is not a solution at all...

edit.
Well, ok, Maybe it is. Actually, it looks pretty good and everything and you can call that shit from another library, so it wont end up being too big.

Actually, that looks pretty good, since you can actually see the order of stuff with one look.

edit2. Faerie Fire dealing 0 damage is no problem. If you really need faerie fire for something, you can always trigger it. You dont need 0 damage event to detect projectile spells either, because you can do that stuff with some projectile system, which offers much more flexibility and stuff.
 
How do I grab the attacker in conjunction with Damage_RegisterEvent()?
 
[LJASS]GetEventDamageSource()[/LJASS].
You may also refer to the damaged unit: [LJASS]GetTriggerUnit()[/LJASS]
And the amount of damage: [LJASS]GetEventDamage()[/LJASS]

Actually, that looks pretty good, since you can actually see the order of stuff with one look.
Yay. It replaces magic numbers with labelled constants, effectively.
 
Actually, magic numbers are not less efficient, since you only do that array sorting in map init anyways.

They are kinda cool, although that way there has its upside too.
 
Hi there,
gotta mention again how awesome this system is as it really helps me like THAT much.

But now a little bug report.

Argh sorry for massive editing >_< but got some issues.

Now the bug seems to be the following, passive poison damage like the dryad's one returns true for Damage_IsAttack() and Damage_IsPhysical() whereas I think the former one is wrong.
I can work around this in my map, nevertheless I wanted to report this bug.
 
Hi there,
gotta mention again how awesome this system is as it really helps me like THAT much.

But now a little bug report.

Argh sorry for massive editing >_< but got some issues.

Now the bug seems to be the following, passive poison damage like the dryad's one returns true for Damage_IsAttack() and Damage_IsPhysical() whereas I think the former one is wrong.
I can work around this in my map, nevertheless I wanted to report this bug.
if i'm not mistaken, for the IsSpell, IsAttack, etc. to fully work you need to have all the damage in your map triggered. So having something like a Dyrad's poison, doing its actual damage will throw it off (it assumes it's physical cause the damage wasn't triggered?)
 
whenever i save my map with this system it's gives me an error:(
first i had an error with Event but after i updated jass helper it didn't give me the same error now it gave me:
Expected: "type", "struct", "interface", "function", "keyword" or "scope"
and here it gives the error:
private module InitModule
line 257 of the system

can anyone help me?
 
well been out of wc3 scripting for some time now so bit outdated on updated things:p but thanks for the help:)
 
Does Damage do something with AIDS when it kills a unit that is handled differently than when you call KillUnit()?

In this sample map downloaded form this site and it has these triggers:
Trigger:
  • Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • Environment - Set sky to Outland Sky
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units in (Playable map area) owned by Neutral Hostile) and do (Actions)
        • Loop - Actions
          • Set Integer = (Integer + 1)
          • Set Creep_Loc[Integer] = (Position of (Picked unit))
          • Set Creep_Face_Ang[Integer] = (Facing of (Picked unit))
          • Unit - Set the custom value of (Picked unit) to Integer
      • Destructible - Pick every destructible in (Entire map) and do (Trigger - Add to Revive Trees &lt;gen&gt; the event (Destructible - (Picked destructible) dies))
      • Game - Display to (All players) for 45.00 seconds the text: Press &#039;Esc&#039; to rest...

Trigger:
  • Revive Creeps
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Owner of (Triggering unit)) Equal to Neutral Hostile) and (((Triggering unit) is Summoned) Not equal to True)
    • Actions
      • Wait (Random real number between 10.00 and 25.00) seconds
      • Unit - Create 1 (Unit-type of (Triggering unit)) for (Owner of (Triggering unit)) at Creep_Loc[(Custom value of (Triggering unit))] facing Creep_Face_Ang[(Custom value of (Triggering unit))] degrees
      • Unit - Set the custom value of (Last created unit) to (Custom value of (Triggering unit))

setting the custom value like that is no good with AIDS so I changed it to this:
Trigger:
  • Initialization
    • Events
      • Time - Elapsed game time is 0.10 seconds
    • Conditions
    • Actions
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • Environment - Set sky to Generic Sky
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units in (Playable map area) owned by Neutral Hostile) and do (Actions)
        • Loop - Actions
          • Custom script: set udg_Integer = GetUnitIndex(GetEnumUnit())
          • Set Creep_Loc[Integer] = (Position of (Picked unit))
          • Set Creep_Face_Ang[Integer] = (Facing of (Picked unit))
      • Destructible - Pick every destructible in (Entire map) and do (Trigger - Add to Revive Trees &lt;gen&gt; the event (Destructible - (Picked destructible) dies))
      • Game - Display to (All players) for 45.00 seconds the text: Press &#039;Esc&#039; to rest...

Trigger:
  • Revive Creeps
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Owner of (Triggering unit)) Equal to Neutral Hostile) and (((Triggering unit) is Summoned) Not equal to True)
    • Actions
      • Wait (Random real number between 10.00 and 15.00) seconds
      • Custom script: set udg_Integer = GetUnitIndex(GetEnumUnit())
      • Unit - Create 1 (Unit-type of (Triggering unit)) for (Owner of (Triggering unit)) at Creep_Loc[Integer] facing Creep_Face_Ang[Integer] degrees
      • Custom script: set udg_Integer = GetUnitIndex(bj_lastCreatedUnit)
      • Set Creep_Loc[Integer] = (Position of (Last created unit))
      • Set Creep_Face_Ang[Integer] = (Facing of (Last created unit))

And to test it i made this trigger (i know it leaks, don't care. just made it to test the respawn trigger):
Trigger:
  • Kill All
    • Events
      • Player - Player 1 (Red) types a chat message containing -kill as An exact match
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • Unit - Kill (Picked unit)


when i kill every unit in the map by typing -kill they all respawn no problem but when i kill a unit with Damage it never respawns. I'm not sure if this is an issue with AIDS or with Damage or with the triggers but I know it doesn't work when a unit dies form Damage so I'm posting this here.
 
Trigger:
  • Custom script: set udg_Integer = GetUnitIndex(GetEnumUnit())

Whatt? ;)
(In "Revive Creeps".)
On a side note, I guess that means GetEnumUnit() works after waits in a different thread. :p

PS. That line in Revive Creeps should be
Trigger:
  • Custom script: set udg_Integer = GetUnitIndex(GetTriggerUnit())
 
HAHA... wow... I just copied the action from the 1st trigger into the 2nd trigger didn't even think about what function it was calling. Since it worked when I did -kill I never even though that could possibly be the problem. Weird. I probably would have caught that if it was in somebody else's code.

Atomic brain fart.
 
Hi, does this detect normal non-triggered physical damage??
if so how?

can someone kindly give me a clear framework?
 
Hi, does this detect normal non-triggered physical damage??
if so how?

can someone kindly give me a clear framework?

[ljass]call Damage_IsAttack()[/ljass] this? o.o

but you'll need to trigger every skill damage and only what you don't trigger will include in that boolean
 
JASS:
scope OnAttackDamage initializer OnInit
    private function OnDamage takes nothing returns boolean
        if Damage_IsAttack() then
            // here. use GetTriggerUnit() for damaged unit, GetEventDamageSource() for damager, GetEventDamage() for damage amount.
        endif
        return false
    endfunction
    private function OnInit takes nothing returns nothing
        local trigger t=CreateTrigger()
        call TriggerAddCondition(t,Filter(function OnDamage)) // you can use a trigger action instead if you wish.
        call Damage_RegisterEvent(t)
    endfunction
endscope
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Varine Varine:
    And since almost all of my programming experience is with defunct shit now, I figure my best place is helping preserve legacy stuff. Which I don't know how to do necessarily, but I need some kind of a hobby and figuring out how older things worked is the only shit that really interests me. Well soldering and restoration is fun too, but no one is bringing me new stuff to fix and restore, so it's mostly old shit, and I LOVE OG Xbox so much. I want to make sure it can function as long as possible, until someone can effectively emulate it at least. I have like 15 I was going to fix over the winter and didn't get to.
    +1
  • Varine Varine:
    I also have a couple OG gameboys, but idk if I can do that without like, manufacturing new parts that no one makes anymore and I can't do that right now
  • tom_mai78101 tom_mai78101:
    Currently in the middle of getting the probate process going. We're doing the informal probate process.
    +3
  • Varine Varine:
    A probate is usually done with a will, yes? If so I am sorry for your loss
    +1
  • The Helper The Helper:
    Yeah Tom, me too sorry for your loss buddy my mom told me she finds out her olds friend died from Google searching them. She had not talked to one of her old friends in a year and found out she died from Google. Also another one in the same session. RIP all of them my sincere condolences Tom
    +1
  • Varine Varine:
    We have some elderly guests that regularly come hang out at the bar at the end of the night, and every once in a while we don't see someone for a few weeks and then someone shows up with their obituary.
  • Varine Varine:
    We usually let them do their memorials there in the morning if they want to and I'll make them some snacks and drinks. There was one guy named Tom that came in like every night and would sit by himself and get a bunch of soup and a glass of wine. idk why but he LOVED our fucking soup, like he would order a fucking quart of it at a time and would always get so sad when we stop doing it for the summer.
    +1
  • Varine Varine:
    But he also loved our calamari, which is another thing I hate but it sells super well so I can't change it. There was one day he came in and was asking me how to make it, because he tried to at home once in the off season when we stop running it and he really wanted it lol
  • Varine Varine:
    I think he's one of the only people I've made recipes for for free because he really wanted a broccoli cheddar, and it was like dude I don't have a recipe, it's just whatever I have, but here, this is how you do it
  • Varine Varine:
    I don't think he ever figured out how to do the calamari in a pan though, like idk how to do that either. He was afraid of the at home deep fryers though and it's like yeah, that's fair, I am too
  • Varine Varine:
    He was just such a sweet old man, we had two servers pregnant and they held a baby shower together, he was soooooo fucking excited to get to see a baby. Unfortunately he died a month or so before they were born
  • The Helper The Helper:
    So I decided to Google some people that I had not seen or heard from in a while and sure enough one of my old best friends, we had a falling out years ago but whatever, find out he died of Pancreatic Cancer in January. I have also lost a few of my closer acquaintances from growing up the last year. Getting old - people die - I kinda thought it was going to be this way a few years ago....
    +2
  • The Helper The Helper:
    Forum running super slow again
  • Ghan Ghan:
    Not really clear from the stats as to what is causing the slowness.
  • Ghan Ghan:
    We get a lot of guest traffic so it may just be the load is getting too high and not from any particular source.
  • Ghan Ghan:
    Looks like the server is maxed out on CPU.
  • Ghan Ghan:
    Oh it looks like a lot of the traffic is Silkroad Forums. That domain isn't protected by Cloudflare.
  • Ghan Ghan:
    But the old Silkroad site is still on its own server. I just had a test site set up on this server for it.
  • Ghan Ghan:
    I just disabled that test site. Let's see if that helps the load.
  • Ghan Ghan:
    Looks much better already.
  • The Helper The Helper:
    I had actually forgot about the Silkroad site. I had asked
  • The Helper The Helper:
    SD Ryoko about it and he said the couple of people left on there really like it, that was a few years ago, maybe I should check back
  • jonas jonas:
    I guess when you're getting old, and the last day of soup season draws near, you start wondering
  • jonas jonas:
    will I make it to the start of the next season? or was this the last time I'll ever have my favorite dish?
  • The Helper The Helper:
    I am doing my first Vibe Coding project. In installed the environment and tools according to instructions but it is all chat doing this for me at my direction. It is fun really and holy shit I might finish in 2 hours what it would have taken a day to in my Access and this would be an electron app complete new

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials
      Top