I have an ability that has a decent number of effects that I would like to avoid duplicating for every level of the ability. All the effects stay the same for each level except for the damage effect.
Ability -> Launch Missile Effect -> Search Area Effect at impact point -> Set (Damage Effect, Apply Behavior Effect)
Right now it looks like I have to replace every effect just to put a higher damage effect for higher levels of the ability. Anyone know how I could do this only adding a new damage effect per level of the ability, rather than all the effects duplicated for every level of the ability?
Ability -> Launch Missile Effect -> Search Area Effect at impact point -> Set (Set Effect, Apply Behavior Effect)
For all levels using the same Effect
Set Effect
{
Damage Effect (Level 1): Validator count ability level of BLAH = 1
Damage Effect (Level 2): Validator count ability level of BLAH = 2
Damage Effect (Level 3): Validator count ability level of BLAH = 3
}
EDIT:
Hmm... actually I'm pretty sure damage effect don't have caster validators.. only target ones are applicable
If that's the case try this
Set Effect
{
Set Effect : Validator count ability level of BLAH = 1; Damage Effect (Level 1)
Set Effect : Validator count ability level of BLAH = 2; Damage Effect (Level 2)
Set Effect : Validator count ability level of BLAH = 3; Damage Effect (Level 3)
}
That's a great idea and I think it will work if I can just get the validators to work. I made a validator of type Unit Ability, set the ability link to the level 1 ability, and set Find to enabled. That worked for the level 1 damage. I made another validator that did the exact same thing for the level 2 ability, but the level 2 damage isn't added on. Is this the proper way to see if a unit has an ability? Is there a way to see if a token in an ability is equal to something using validators?
That's a great idea and I think it will work if I can just get the validators to work. I made a validator of type Unit Ability, set the ability link to the level 1 ability, and set Find to enabled. That worked for the level 1 damage. I made another validator that did the exact same thing for the level 2 ability, but the level 2 damage isn't added on. Is this the proper way to see if a unit has an ability? Is there a way to see if a token in an ability is equal to something using validators?
Usually common mistake when using validator is not selecting the correct target, e.g. validator validating the target not the caster.
I remember that I used requirement (Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 2) and validator (Player requirement). Perhaps there is a better way, you let me know.
Field ScattershotL1 (Scattershot L1)
CRequirement_NodeArray + (GTCountAbilScattershotCompleteOnlyAtUnit0|GTCountAbilScattershotCompleteOnlyAtUnit0) <- requirement for count of ability scattershot L1 greater than 0 completed at unit
validator:
Field ScattershotL1
Validator - Find Disabled
Validator - Ignore While Channeling 0
Validator - Other Player + e_effectPlayerUnknown
Validator - Player + Scattershot (Damage) L1:Caster
Validator - Result - Failure Error
Validator - Result - No Player OKPlaceholder
Validator - Value Scattershot L1
This does not work. It works if I set find to enabled, but it doesn't work for the L2 version if I check Find to enabled on the L2 validator.
I know the requirements work because I tested them on the Learn ability. I think the problem is that you can't use player requirement validators to see if a unit has an ability. We just need to find a validator that checks to see if a unit has an ability. I tried a bunch of things but none of them worked. Maybe you just can't see if a unit has an ability through validators?
Na I saw what I did in my test map few days ago. I forgot I'm a genius.
I made a requirement for behavior that changes damage for the damage effect. Let me explain.
I have Requirements
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 1
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 2
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 3
For each of my three behaviors
These behaviors have
Combat - Damage Response - Chance: 1
Combat - Damage Response - Required Effect Array: HERO_ABILITY's Damage effect (I had a dummy effect, just put your damage effect here)
Combat - Damage Response - Modify Fraction: 0 (removes the damage, though it's not required if the damage is 0 but whatever)
Combat - Damage Response - Location: Attacker
Combat - Damage Response - Damage Handled: Damage Effect 1 (other damage effect for level 2, 3 behaviors)
Okay, I'm a gigantic idiot. After all that messing around I realized i forgot to switch my L1 damage effect to the damage set effect.... So thats why only the L1 would work and not the L2... So Unit ability does work for this. Although I decided to to use the Switch effect instead because it's more organized. Sorry for wasting your time zifoon.
yeah. However, I would do what I did in my previous post, since if you use player validator, it doesn't really work well if one player have 2 same heroes. I guess that usually never happens. I just like MUI, personal reference.
I have an ability that has a decent number of effects that I would like to avoid duplicating for every level of the ability. All the effects stay the same for each level except for the damage effect.
Ability -> Launch Missile Effect -> Search Area Effect at impact point -> Set (Damage Effect, Apply Behavior Effect)
Right now it looks like I have to replace every effect just to put a higher damage effect for higher levels of the ability. Anyone know how I could do this only adding a new damage effect per level of the ability, rather than all the effects duplicated for every level of the ability?
Ability -> Launch Missile Effect -> Search Area Effect at impact point -> Set (Set Effect, Apply Behavior Effect)
For all levels using the same Effect
Set Effect
{
Damage Effect (Level 1): Validator count ability level of BLAH = 1
Damage Effect (Level 2): Validator count ability level of BLAH = 2
Damage Effect (Level 3): Validator count ability level of BLAH = 3
}
EDIT:
Hmm... actually I'm pretty sure damage effect don't have caster validators.. only target ones are applicable
If that's the case try this
Set Effect
{
Set Effect : Validator count ability level of BLAH = 1; Damage Effect (Level 1)
Set Effect : Validator count ability level of BLAH = 2; Damage Effect (Level 2)
Set Effect : Validator count ability level of BLAH = 3; Damage Effect (Level 3)
}
That's a great idea and I think it will work if I can just get the validators to work. I made a validator of type Unit Ability, set the ability link to the level 1 ability, and set Find to enabled. That worked for the level 1 damage. I made another validator that did the exact same thing for the level 2 ability, but the level 2 damage isn't added on. Is this the proper way to see if a unit has an ability? Is there a way to see if a token in an ability is equal to something using validators?
Usually common mistake when using validator is not selecting the correct target, e.g. validator validating the target not the caster.
I remember that I used requirement (Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 2) and validator (Player requirement). Perhaps there is a better way, you let me know.
Field ScattershotL1 (Scattershot L1)
CRequirement_NodeArray + (GTCountAbilScattershotCompleteOnlyAtUnit0|GTCountAbilScattershotCompleteOnlyAtUnit0) <- requirement for count of ability scattershot L1 greater than 0 completed at unit
validator:
Field ScattershotL1
Validator - Find Disabled
Validator - Ignore While Channeling 0
Validator - Other Player + e_effectPlayerUnknown
Validator - Player + Scattershot (Damage) L1:Caster
Validator - Result - Failure Error
Validator - Result - No Player OKPlaceholder
Validator - Value Scattershot L1
This does not work. It works if I set find to enabled, but it doesn't work for the L2 version if I check Find to enabled on the L2 validator.
Should really post a map. Looks like your requirement nodes are the problem though.
I know the requirements work because I tested them on the Learn ability. I think the problem is that you can't use player requirement validators to see if a unit has an ability. We just need to find a validator that checks to see if a unit has an ability. I tried a bunch of things but none of them worked. Maybe you just can't see if a unit has an ability through validators?
Na I saw what I did in my test map few days ago. I forgot I'm a genius.
I made a requirement for behavior that changes damage for the damage effect. Let me explain.
I have Requirements
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 1
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 2
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 3
For each of my three behaviors
These behaviors have
Combat - Damage Response - Chance: 1
Combat - Damage Response - Required Effect Array: HERO_ABILITY's Damage effect (I had a dummy effect, just put your damage effect here)
Combat - Damage Response - Modify Fraction: 0 (removes the damage, though it's not required if the damage is 0 but whatever)
Combat - Damage Response - Location: Attacker
Combat - Damage Response - Damage Handled: Damage Effect 1 (other damage effect for level 2, 3 behaviors)
Add all the behaviors to the hero beforehand.
Okay, I'm a gigantic idiot. After all that messing around I realized i forgot to switch my L1 damage effect to the damage set effect.... So thats why only the L1 would work and not the L2... So Unit ability does work for this. Although I decided to to use the Switch effect instead because it's more organized. Sorry for wasting your time zifoon.
yeah. However, I would do what I did in my previous post, since if you use player validator, it doesn't really work well if one player have 2 same heroes. I guess that usually never happens. I just like MUI, personal reference.
How would you make the Learn ability add 1 to the behavior stack when the player chooses the next level of the ability?
0 Stack
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 1 (Only at level 1)
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 2 (Only at level 2)
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) == 3 (Only at level 3)
Stack
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) >= 1 (Only at level 1)
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) >= 2 (level 1,2)
Requirement Node: CountAbil(HERO_ABILITY,CompleteOnlyAtUnit) >= 3 (level 1,2,3)
Of course you add all three behaviors before hand with the requirements.