Forum Rules

  • No flaming or derogatory remarks, directly or through insinuation.
  • No discussion, sharing or referencing illegal software such as hacks, keygen, cracks and pirated software.
  • No offensive contents, including but not limited to, racism, gore or pornography.
  • No excessive spam/meme, i.e. copious one liners in a short period of time, typing with all caps or posting meme responses (text/image).
  • No trolling, including but not limited to, flame incitation, user provocation or false information distribution.
  • No link spamming or signature advertisements for content not specific to Dota 2.
  • No Dota 2 key requests, sell, trade etc.
  • You may not create multiple accounts for any purpose, including ban evasion, unless expressly permitted by a moderator.

  • Please search before posting. One thread per issue. Do not create another thread if there is an existing one already.
  • Before posting anything, make sure you check out all sticky threads (e.g., this). Do not create new threads about closed ones.
  • It is extremely important that you post in correct forum section.

  • Balance discussion only in Misc.
  • All art related (such as hero model) feedbacks go to Art Feedback Forum.
  • All matchmaking feedback should go here: Matchmaking Feedback
  • All report/low priority issues should go here: Commend/Report/Ban Feedback
  • No specific workshop item feedback. These should go to workshop page of that item.
  • When posting in non-bugs section (such as this), use [Bugs], [Discussion] or [Suggestion] prefix in your thread name.

In case you object some action by a moderator, please contact him directly through PM and explain your concerns politely. If you are still unable to resolve the issue, contact an administrator. Do not drag these issues in public.

All rules are meant to augment common sense, please use them when not conflicted with aforementioned policies.
See more
See less

[BUG] LUA based modifier listening to EVENT_ON_TAKEDAMAGE receives ALL damage events

  • Filter
  • Time
  • Show
Clear All
new posts

  • [BUG] LUA based modifier listening to EVENT_ON_TAKEDAMAGE receives ALL damage events

    The event MODIFIER_EVENT_ON_TAKEDAMAGE is expected to only trigger on damage events which have the unit with this modifier as their target. It works correctly like this using datadriven modifiers.

    However with LUA based modifiers the corresponding OnTakeDamage method gets called for every take damage event on every unit.
    You can check this (and circumvent this bug) by checking if the unit key in the paramaters of OnTakeDamage is equal to self:GetParent in the modifier. Of course it should still get fixed .

    Example code modifier.lua:
    modifier = class({})
    function modifier:DeclareFunctions()
    	local funcs = {
    	return funcs
    function modifier:OnTakeDamage(keys)
    	if keys.unit == self:GetParent() then
    		print("correct damage event")
    		print("incorrect damage event")
    Give this modifier to some unit and let other units hit eachother. You will see many "incorrect damage event" printed and only "correct damage event" if something really hits the unit with the modifier.

  • #2
    This is the intended behavior. Data-driven OnTakeDamage (and other events ) could not perform conditional checks for triggering without using a RunScript action, so they have an implied unit/attacker context.