Devrak
New Member
- Reaction score
- 17
Sorry for the messy trigger, but it should be leakless? Right?
Trigger:
- BlightGrass Damage
- Events
- Time - Every 0.25 seconds of game time
- Conditions
- Actions
- -------- XXX - Units - XXX --------
- Set UnitGroup = (Units in (Playable map area) matching ((((Matching unit) is Magic Immune) Not equal to True) and ((((Matching unit) is A Hero) Not equal to True) and ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) is Magic Immune) Not equal to T
- Unit Group - Pick every unit in UnitGroup and do (Actions)
- Loop - Actions
- Set BlightGrassPickedUnit[1] = (Picked unit)
- Set BlightGrassLastHitterPoint[(Custom value of (Picked unit))] = (Position of BlightGrassLastHitter[(Custom value of (Picked unit))])
- Set BlightGrassHitUnitPoint[(Custom value of (Picked unit))] = (Position of BlightGrassPickedUnit[1])
- Set BlightGrassUnitTerrainPoint = (Position of BlightGrassPickedUnit[1])
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- And - All (Conditions) are true
- Conditions
- (Terrain type at BlightGrassUnitTerrainPoint) Equal to Village Fall - Thick Grass
- ((Picked unit) is Undead) Equal to True
- Conditions
- And - All (Conditions) are true
- Then - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Or - Any (Conditions) are true
- Conditions
- BlightGrassLastHitter[(Custom value of (Picked unit))] Equal to No unit
- (Distance between BlightGrassLastHitterPoint[(Custom value of (Picked unit))] and BlightGrassHitUnitPoint[(Custom value of (Picked unit))]) Greater than 1000.00
- Conditions
- Or - Any (Conditions) are true
- Then - Actions
- Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 15.00)
- Else - Actions
- Unit - Cause BlightGrassLastHitter[(Custom value of (Picked unit))] to damage (Picked unit), dealing 15.00 damage of attack type Chaos and damage type Normal
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- And - All (Conditions) are true
- Conditions
- (Terrain type at BlightGrassUnitTerrainPoint) Equal to Village Fall - Rough Dirt
- ((Picked unit) is Undead) Not equal to True
- Conditions
- And - All (Conditions) are true
- Then - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Or - Any (Conditions) are true
- Conditions
- BlightGrassLastHitter[(Custom value of (Picked unit))] Equal to No unit
- (Distance between BlightGrassLastHitterPoint[(Custom value of (Picked unit))] and BlightGrassHitUnitPoint[(Custom value of (Picked unit))]) Greater than 1000.00
- Conditions
- Or - Any (Conditions) are true
- Then - Actions
- Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 15.00)
- Else - Actions
- Unit - Cause BlightGrassLastHitter[(Custom value of (Picked unit))] to damage (Picked unit), dealing 15.00 damage of attack type Chaos and damage type Normal
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Loop - Actions
- Custom script: call RemoveLocation(udg_BlightGrassUnitTerrainPoint)
- Custom script: call RemoveLocation(udg_BlightGrassLastHitterPoint[GetUnitUserData(GetEnumUnit())])
- Custom script: call RemoveLocation(udg_BlightGrassHitUnitPoint[GetUnitUserData(GetEnumUnit())])
- -------- XXX - Heroes - XXX --------
- Set BlightGrassDamageGroup = (Units in (Entire map) matching ((((Matching unit) is A Hero) Equal to True) and (((Matching unit) is dead) Not equal to True)))
- Unit Group - Pick every unit in BlightGrassDamageGroup and do (Actions)
- Loop - Actions
- Set BlightGrassPickedUnit[2] = (Picked unit)
- Set BlightGrassLastHitterPoint[(Custom value of (Picked unit))] = (Position of BlightGrassLastHitter[(Custom value of (Picked unit))])
- Set BlightGrassHeroTerrainPoint = (Position of BlightGrassPickedUnit[2])
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- And - All (Conditions) are true
- Conditions
- (Terrain type at BlightGrassHeroTerrainPoint) Equal to Village Fall - Thick Grass
- ((Picked unit) is Undead) Equal to True
- Conditions
- And - All (Conditions) are true
- Then - Actions
- Set HeroGroundDamageInteger[(Player number of (Owner of (Picked unit)))] = (HeroGroundDamageInteger[(Player number of (Owner of (Picked unit)))] + 1)
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Or - Any (Conditions) are true
- Conditions
- BlightGrassLastHitter[(Custom value of (Picked unit))] Equal to No unit
- (Distance between BlightGrassLastHitterPoint[(Custom value of (Picked unit))] and BlightGrassHeroTerrainPoint) Greater than 1000.00
- HeroGroundDamageInteger[(Player number of (Owner of (Picked unit)))] Less than or equal to 0
- Conditions
- Or - Any (Conditions) are true
- Then - Actions
- Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - (BlightResistance[(Player number of (Owner of (Picked unit)))] x (15.00 + ((Real((Hero level of (Picked unit)))) / 2.00))))
- Else - Actions
- Unit - Cause BlightGrassLastHitter[(Custom value of (Picked unit))] to damage (Picked unit), dealing (BlightResistance[(Player number of (Owner of (Picked unit)))] x (15.00 + ((Real((Hero level of (Picked unit)))) / 2.00))) damage of attack type Chaos and damage type Normal
- If - Conditions
- Else - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- And - All (Conditions) are true
- Conditions
- (Terrain type at BlightGrassUnitTerrainPoint) Equal to Village Fall - Rough Dirt
- ((Picked unit) is Undead) Not equal to True
- Conditions
- And - All (Conditions) are true
- Then - Actions
- Set HeroGroundDamageInteger[(Player number of (Owner of (Picked unit)))] = (HeroGroundDamageInteger[(Player number of (Owner of (Picked unit)))] + 1)
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Or - Any (Conditions) are true
- Conditions
- BlightGrassLastHitter[(Custom value of (Picked unit))] Equal to No unit
- (Distance between BlightGrassLastHitterPoint[(Custom value of (Picked unit))] and BlightGrassHeroTerrainPoint) Greater than 1000.00
- HeroGroundDamageInteger[(Player number of (Owner of (Picked unit)))] Less than or equal to 0
- Conditions
- Or - Any (Conditions) are true
- Then - Actions
- Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - (BlightResistance[(Player number of (Owner of (Picked unit)))] x (15.00 + ((Real((Hero level of (Picked unit)))) / 2.00))))
- Else - Actions
- Unit - Cause BlightGrassLastHitter[(Custom value of (Picked unit))] to damage (Picked unit), dealing (BlightResistance[(Player number of (Owner of (Picked unit)))] x (20.00 + ((Real((Hero level of (Picked unit)))) / 2.00))) damage of attack type Chaos and damage type Normal
- If - Conditions
- Else - Actions
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Loop - Actions
- Custom script: call RemoveLocation(udg_BlightGrassHeroTerrainPoint)
- Custom script: call RemoveLocation(udg_BlightGrassLastHitterPoint[GetUnitUserData(GetEnumUnit())])
- Custom script: call RemoveLocation(udg_BlightGrassHitUnitPoint[GetUnitUserData(GetEnumUnit())])
- Custom script: set bj_wantDestroyGroup = true
- Custom script: call DestroyGroup(udg_UnitGroup)
- Custom script: call DestroyGroup(udg_BlightGrassDamageGroup)
- Wait 1.00 seconds
- For each (Integer A) from 1 to 12, do (Actions)
- Loop - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- HeroGroundDamageInteger[(Integer A)] Greater than 0
- Then - Actions
- Set HeroGroundDamageInteger[(Integer A)] = (HeroGroundDamageInteger[(Integer A)] - 1)
- Else - Actions
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Events