- Joined
- May 20, 2009
- Messages
- 822
Picking unit with most buffs to target spell (Need help making MUI)
Using this: GUI-Friendly Damage Detection System
EDIT: It turns out, something was wrong with the spell that was causing the issue. I have no idea what, though...It's fixed now.
Onto what I want to do:
I want to make this spell's autocast target units that have the most positive buffs on them. How would I do that?
This is what I have so far:
Then, after that, it needs to be MUI compatible of course...
EDIT2: I think I'll need a unit indexer to make it MUI, so would this (GUI Unit Indexer) work?
EDIT3: How does this look for making it MUI compatible?
EDIT: I achieved MUI, and I only need one more issue solved.
That is, to pick units with the most buffs without using the method I used in my current triggers, as they are of course way more inefficient then I am comfortable with.
This is the one that needs fixing
-
BuffBurn
-
Events
-
Game - GDD_Event becomes Equal to 0.00
-
-
Conditions
-
(Unit-type of GDD_DamageSource) Equal to Arcane Spell Breaker
-
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(GDD_DamagedUnit has buff Buff Burn (Calculate Initial Damage) ) Equal to True
-
-
Then - Actions
-
Unit - Remove Buff Burn (Calculate Initial Damage) buff from GDD_DamagedUnit
-
Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing ((Real((Number of All buffs considered Magic or physical on (Triggering unit) (Exclude expiration timers, Exclude auras)))) x 5.00) damage of attack type Spells and damage type Normal
-
Unit - Remove All buffs considered Magic or physical from GDD_DamagedUnit (Exclude expiration timers, Exclude auras)
-
-
Else - Actions
-
-
-
Using this: GUI-Friendly Damage Detection System
EDIT: It turns out, something was wrong with the spell that was causing the issue. I have no idea what, though...It's fixed now.
Onto what I want to do:
I want to make this spell's autocast target units that have the most positive buffs on them. How would I do that?
This is what I have so far:
-
BuffBurn AutoCast On
-
Events
-
Unit - A unit Is issued an order with no target
-
-
Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Ordered unit)) Equal to Arcane Spell Breaker
-
(Issued order) Equal to (Order(poisonarrows))
-
-
Then - Actions
-
Set BuffBurnAutoCastOn = True
-
-
Else - Actions
-
-
-
-
BuffBurn AutoCast Off
-
Events
-
Unit - A unit Is issued an order with no target
-
-
Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Ordered unit)) Equal to Arcane Spell Breaker
-
(Issued order) Equal to (Order(unpoisonarrows))
-
-
Then - Actions
-
Set BuffBurnAutoCastOn = False
-
-
Else - Actions
-
-
-
-
BuffBurn Autocast
-
Events
-
Time - Every 0.10 seconds of game time
-
-
Conditions
-
Actions
-
Unit Group - Pick every unit in BBUnitGroup and do (Actions)
-
Loop - Actions
-
Set BBUnit = (Picked unit)
-
Unit Group - Pick every unit in (Units within 700.00 of (Position of BBUnit)) and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
BuffBurnAutoCastOn Equal to True
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than 0
-
-
Then - Actions
-
Unit - Order BBUnit to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
-
-
-
Then, after that, it needs to be MUI compatible of course...
EDIT2: I think I'll need a unit indexer to make it MUI, so would this (GUI Unit Indexer) work?
EDIT3: How does this look for making it MUI compatible?
-
BuffBurn AutoCast Toggle
-
Events
-
Unit - A unit Is issued an order with no target
-
-
Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Triggering unit)) Equal to Arcane Spell Breaker
-
(Issued order) Equal to (Order(poisonarrows))
-
-
Then - Actions
-
Set BBUnit[BBAutoMaxIndex] = (Triggering unit)
-
Set BuffBurnAutoCastOn[BBAutoMaxIndex] = True
-
Set BBAutoMaxIndex = (BBAutoMaxIndex + 1)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Triggering unit)) Equal to Arcane Spell Breaker
-
(Issued order) Equal to (Order(unpoisonarrows))
-
-
Then - Actions
-
Set BuffBurnAutoCastOn[BBAutoMaxIndex] = True
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Triggering unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
Set BBUnit[BBAutoTempInit] = No unit
-
Set BBAutoTempInit2 = (BBAutoTempInit + 1)
-
For each (Integer BBAutoTempInit) from BBAutoTempInit2 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
Set BBUnit[BBAutoMaxIndex] = No unit
-
Set BBUnit[BBAutoTempInit] = BBUnit[(BBAutoTempInit - 1)]
-
Set BuffBurnAutoCastOn[BBAutoMaxIndex] = False
-
Set BBAutoMaxIndex = (BBAutoMaxIndex - 1)
-
-
-
-
Else - Actions
-
-
-
-
-
Else - Actions
-
-
-
-
-
EDIT: I achieved MUI, and I only need one more issue solved.
That is, to pick units with the most buffs without using the method I used in my current triggers, as they are of course way more inefficient then I am comfortable with.
-
BuffBurn Start
-
Events
-
Unit - A unit Is issued an order with no target
-
-
Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Triggering unit)) Equal to Arcane Spell Breaker
-
(Issued order) Equal to (Order(poisonarrows))
-
-
Then - Actions
-
Set BBAutoMaxIndex = (BBAutoMaxIndex + 1)
-
Set BBUnit[BBAutoMaxIndex] = (Triggering unit)
-
Set BuffBurnAutoCastOn[BBAutoMaxIndex] = True
-
Trigger - Turn on BuffBurn AutoCast Calc <gen>
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Triggering unit)) Equal to Arcane Spell Breaker
-
(Issued order) Equal to (Order(unpoisonarrows))
-
-
Then - Actions
-
Set BuffBurnAutoCastOn[BBAutoMaxIndex] = False
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Triggering unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
Set BBUnit[BBAutoTempInit] = No unit
-
Set BBAutoTempInit2 = BBAutoTempInit
-
For each (Integer BBAutoTempInit) from BBAutoTempInit2 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
Game - Display to (All players) the text: ((VARIABLE + (String(BBAutoMaxIndex))) + UNSET!)
-
Set BBUnit[BBAutoMaxIndex] = No unit
-
Set BuffBurnAutoCastOn[BBAutoMaxIndex] = False
-
Set BBUnit[BBAutoTempInit] = BBUnit[(BBAutoTempInit - 1)]
-
Set BuffBurnAutoCastOn[BBAutoTempInit] = BuffBurnAutoCastOn[(BBAutoTempInit - 1)]
-
Set BBAutoTempInit = (BBAutoTempInit - 1)
-
Set BBAutoMaxIndex = (BBAutoMaxIndex - 1)
-
-
-
-
Else - Actions
-
-
-
-
-
Else - Actions
-
-
-
-
-
-
BuffBurn Target Unit
-
Events
-
Unit - A unit Is issued an order targeting an object
-
-
Conditions
-
Actions
-
Unit Group - Pick every unit in (Units of type Arcane Spell Breaker) and do (Actions)
-
Loop - Actions
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Picked unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Ordered unit)) Equal to Arcane Spell Breaker
-
Or - Any (Conditions) are true
-
Conditions
-
(Issued order) Equal to (Order(attack))
-
(Issued order) Equal to (Order(smart))
-
(Issued order) Equal to (Order(move))
-
-
-
-
Then - Actions
-
Set BBAttackMove[BBAutoTempInit] = False
-
Set BBTargetRange[BBAutoTempInit] = 150.00
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
-
-
-
-
BuffBurn Target Point
-
Events
-
Unit - A unit Is issued an order targeting a point
-
-
Conditions
-
Actions
-
Unit Group - Pick every unit in (Units of type Arcane Spell Breaker) and do (Actions)
-
Loop - Actions
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Picked unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
-
(Issued order) Equal to (Order(attack))
-
(Issued order) Equal to (Order(patrol))
-
-
-
-
Then - Actions
-
Set BBAttackMove[BBAutoTempInit] = True
-
Set BBTargetRange[BBAutoTempInit] = 700.00
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Picked unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
-
(Issued order) Equal to (Order(move))
-
(Issued order) Equal to (Order(smart))
-
-
-
-
Then - Actions
-
Set BBAttackMove[BBAutoTempInit] = False
-
Set BBTargetRange[BBAutoTempInit] = 700.00
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
-
Else - Actions
-
-
-
-
-
-
-
-
BuffBurn NoTarget
-
Events
-
Unit - A unit Is issued an order with no target
-
-
Conditions
-
Actions
-
Unit Group - Pick every unit in (Units of type Arcane Spell Breaker) and do (Actions)
-
Loop - Actions
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Picked unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Unit-type of (Ordered unit)) Equal to Arcane Spell Breaker
-
Or - Any (Conditions) are true
-
Conditions
-
(Issued order) Equal to (Order(holdposition))
-
(Issued order) Equal to (Order(stop))
-
-
-
-
Then - Actions
-
Set BBAttackMove[BBAutoTempInit] = True
-
Set BBTargetRange[BBAutoTempInit] = 250.00
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
-
-
-
-
BuffBurn Idle
-
Events
-
Time - Every 1.00 seconds of game time
-
-
Conditions
-
Actions
-
Unit Group - Pick every unit in (Units of type Arcane Spell Breaker) and do (Actions)
-
Loop - Actions
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Picked unit) Equal to BBUnit[BBAutoTempInit]
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Current order of (Picked unit)) Equal to (Order(none))
-
-
Then - Actions
-
Set BBAttackMove[BBAutoTempInit] = True
-
Set BBTargetRange[BBAutoTempInit] = 700.00
-
-
Else - Actions
-
-
-
Else - Actions
-
-
-
-
-
-
-
This is the one that needs fixing
-
BuffBurn AutoCast Calc
-
Events
-
Time - Every 0.10 seconds of game time
-
-
Conditions
-
Actions
-
For each (Integer BBAutoTempInit) from 1 to BBAutoMaxIndex, do (Actions)
-
Loop - Actions
-
Unit Group - Pick every unit in (Units within BBTargetRange[BBAutoTempInit] of (Position of BBUnit[BBAutoTempInit])) and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
And - All (Conditions) are true
-
Conditions
-
BuffBurnAutoCastOn[BBAutoTempInit] Equal to True
-
BBAttackMove[BBAutoTempInit] Equal to True
-
((Picked unit) is alive) Equal to True
-
((Picked unit) is A structure) Equal to False
-
(Picked unit) Not equal to BBUnit[BBAutoTempInit]
-
((Owner of (Picked unit)) is an ally of (Owner of BBUnit[BBAutoTempInit])) Equal to False
-
Or - Any (Conditions) are true
-
Conditions
-
((Owner of (Picked unit)) is an enemy of (Owner of BBUnit[BBAutoTempInit])) Equal to True
-
(Owner of (Picked unit)) Equal to Neutral Hostile
-
-
-
-
-
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than or equal to 5
-
-
Then - Actions
-
Unit - Order BBUnit[BBAutoTempInit] to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than or equal to 4
-
-
Then - Actions
-
Unit - Order BBUnit[BBAutoTempInit] to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than or equal to 3
-
-
Then - Actions
-
Unit - Order BBUnit[BBAutoTempInit] to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than or equal to 2
-
-
Then - Actions
-
Unit - Order BBUnit[BBAutoTempInit] to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than or equal to 1
-
-
Then - Actions
-
Unit - Order BBUnit[BBAutoTempInit] to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of Positive buffs considered Magic or physical on (Picked unit) (Exclude expiration timers, Exclude auras)) Greater than or equal to 0
-
-
Then - Actions
-
Unit - Order BBUnit[BBAutoTempInit] to Neutral - Poison Arrows (Picked unit)
-
-
Else - Actions
-
-
-
-
-
-
-
-
-
-
-
-
-
Else - Actions
-
-
-
-
-
-
-
-
BuffBurn Calc
-
Events
-
Game - GDD_Event becomes Equal to 0.00
-
-
Conditions
-
(Unit-type of GDD_DamageSource) Equal to Arcane Spell Breaker
-
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(GDD_DamagedUnit has buff Buff Burn (Calculate Initial Damage) ) Equal to True
-
-
Then - Actions
-
Unit - Remove Buff Burn (Calculate Initial Damage) buff from GDD_DamagedUnit
-
Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing ((Real((Number of Positive buffs considered Magic or physical on (Triggering unit) (Exclude expiration timers, Exclude auras)))) x 5.00) damage of attack type Spells and damage type Normal
-
Unit - Remove Positive buffs considered Magic or physical from GDD_DamagedUnit (Exclude expiration timers, Exclude auras)
-
-
Else - Actions
-
-
-
Last edited: