System Damage

Viikuna

No Marlo no game.
Reaction score
265
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.
 

codemonkey

Code monkey not crazy, just proud.
Reaction score
66
How do I grab the attacker in conjunction with Damage_RegisterEvent()?
 

Jesus4Lyf

Good Idea™
Reaction score
397
[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.
 

Viikuna

No Marlo no game.
Reaction score
265
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.
 

GoGo-Boy

You can change this now in User CP
Reaction score
40
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.
 

SYI

New Member
Reaction score
1
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?)
 

dudeim

New Member
Reaction score
22
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?
 

dudeim

New Member
Reaction score
22
well been out of wc3 scripting for some time now so bit outdated on updated things:p but thanks for the help:)
 

Grundy

Ultra Cool Member
Reaction score
35
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.
 

Jesus4Lyf

Good Idea™
Reaction score
397
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())
 

Grundy

Ultra Cool Member
Reaction score
35
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.
 

ertaboy356b

Old School Gamer
Reaction score
86
Hi, does this detect normal non-triggered physical damage??
if so how?

can someone kindly give me a clear framework?
 

Laiev

Hey Listen!!
Reaction score
188
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
 

Jesus4Lyf

Good Idea™
Reaction score
397
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.
  • 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!
    +1
  • 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.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      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