I am trying to make a buff that I want to disappear out of combat.
What I mean by this is that instead of lasting X seconds I want the buff to last until the unit has been out of combat for X seconds.
I know shields do not regenerate unless a unit has been outside of combat, so I tried looking into that, but I couldn't find shields in the data (since they're more of an inherent vital in the game, rather than an ability). I also found the "Combat Damage Response" field in the behavior, but I don't really understand how I could make it apply (or really how it works).
1. Your actual buff. This is set to last X seconds. Upon expiry it removes buffs 2 and 3 (this can be done with an effect or with validators on buffs 2 and 3).
2. A damage response from the attacker point of view that always runs. Each time this triggers and that the damaged unit is nearby (say within 10-20 range) then you re-add buff 1, resetting its duration to X.
3. A damage response from the defender point of view that always runs. Each time the unit is damaged you re-add buff 1, resetting its duration.
Buffs 2 and 3 detect combat. If the unit is taking damage it must still be in combat. If the unit is dealing damage it must still be in combat but only if it is nearby the unit taking that damage since otherwise it would register as in combat from a long DoT effect even if the unit is not nearby and combat ended ages ago.
An easier way of doing it is through a "combat time" validator to deactivate/nullify the behaviour. Now i don't remember (and i wont look it up right now) if the validator checks for combat time as the time since the unit was attacked or since itself attacked, so maybe do both in a combine with the NOT flag.
@ImperialGood
Thank you for the input! Could you explain the damage response part? (How to do it)
@gundrust
I couldn't find a "Combat Time" validator. There is a "damage taken time" I'm assuming the time field is the time SINCE taking damage? That would help a lot, thanks!
Firstly, the Damage Taken Time validator is indeed what you want. And yes the time field is the time since taking damage, and used in conjunction with the compare (so in your case, you want the validator to be true when time is less then X).
As for damage response, it is a field set in a Buff behavior. Damage response can be set to occur on the defender (ie when the unit with the buff is damaged) or on the attacker (ie when the unit with the buff deals damage). Damage responses can modify the damage dealt in a variety of ways, and also can run an effect. One thing of interesting note is that the effect that is run will complete BEFORE the damage is dealt (you can use this to get a critical strike system working).
The main issue is what you want to define as "in combat". A common error I see in maps is that they define it as "time since last damage taken" so as long as you are never hit it will count you as out of combat or if you have a persistent dps buff it will always count you as in combat. Even if you factor in "time since last damage dealt" then nothing stops you running around casting abilities on allies in a battle and remaining "out of combat".
I am trying to make a buff that I want to disappear out of combat.
What I mean by this is that instead of lasting X seconds I want the buff to last until the unit has been out of combat for X seconds.
I know shields do not regenerate unless a unit has been outside of combat, so I tried looking into that, but I couldn't find shields in the data (since they're more of an inherent vital in the game, rather than an ability). I also found the "Combat Damage Response" field in the behavior, but I don't really understand how I could make it apply (or really how it works).
Can someone help??
You do this by using 3 buff behaviours.
1. Your actual buff. This is set to last X seconds. Upon expiry it removes buffs 2 and 3 (this can be done with an effect or with validators on buffs 2 and 3).
2. A damage response from the attacker point of view that always runs. Each time this triggers and that the damaged unit is nearby (say within 10-20 range) then you re-add buff 1, resetting its duration to X.
3. A damage response from the defender point of view that always runs. Each time the unit is damaged you re-add buff 1, resetting its duration.
Buffs 2 and 3 detect combat. If the unit is taking damage it must still be in combat. If the unit is dealing damage it must still be in combat but only if it is nearby the unit taking that damage since otherwise it would register as in combat from a long DoT effect even if the unit is not nearby and combat ended ages ago.
An easier way of doing it is through a "combat time" validator to deactivate/nullify the behaviour. Now i don't remember (and i wont look it up right now) if the validator checks for combat time as the time since the unit was attacked or since itself attacked, so maybe do both in a combine with the NOT flag.
@ImperialGood Thank you for the input! Could you explain the damage response part? (How to do it)
@gundrust I couldn't find a "Combat Time" validator. There is a "damage taken time" I'm assuming the time field is the time SINCE taking damage? That would help a lot, thanks!
Firstly, the Damage Taken Time validator is indeed what you want. And yes the time field is the time since taking damage, and used in conjunction with the compare (so in your case, you want the validator to be true when time is less then X).
As for damage response, it is a field set in a Buff behavior. Damage response can be set to occur on the defender (ie when the unit with the buff is damaged) or on the attacker (ie when the unit with the buff deals damage). Damage responses can modify the damage dealt in a variety of ways, and also can run an effect. One thing of interesting note is that the effect that is run will complete BEFORE the damage is dealt (you can use this to get a critical strike system working).
The main issue is what you want to define as "in combat". A common error I see in maps is that they define it as "time since last damage taken" so as long as you are never hit it will count you as out of combat or if you have a persistent dps buff it will always count you as in combat. Even if you factor in "time since last damage dealt" then nothing stops you running around casting abilities on allies in a battle and remaining "out of combat".
You could factor in actively using the attack ability and that the unit is firing its weapon.
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg