Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
Description
An event to detect every instance of attack ground. Replaces regular attack ground for the units that use it.
It works by replacing attack ground with two abilities - one to detect player orders, and another for the actual attack.
Additional Features:
Accuracy. Attacks can be set to land in a random location around the target point, and this point is newly randomised every time the unit fires. Random point scales with distance between unit and target.
Group attacks. When a group is ordered to attack together, they can be set to space their attacks according to their position from the center of the group.
Choose between missile targeting and artillery targeting for unit-target attacks. (missile attacks lead their targets, artillery attacks land at the target's position on attack launch)
Drawbacks:
Does not register attack speed, damage or any other modifier bonuses.
Cooldown can be inaccurate at very low cooldowns. Currently it's set at 0.05, but this can be changed.
When attacking a unit in artillery mode, the artillery will continue to attack the point where the unit was when first targetted. (fix coming soon)
To use the event, use Game - Value of real variable. There are 4 events:
1.00 - Projectile is launched.
2.00 - Attack is started.
3.00 - Unit is ordered.
4.00 - Attack finishes. (only captures AGES_EventUnit)
With associated event response variables:
EventUnit - Unit performing the attack.
EventTarget - Target location of attack.
Installation
Readme in the triggers.
Triggers
AGES Config
Events
Map initialization
Conditions
Actions
Hashtable - Create a hashtable
Set AGES_Table = (Last created hashtable)
-------- ------ --------
-------- System Ability --------
-------- ------ --------
Set AGES_AttackAbility = Attack Ground (Attack Order)
Set AGES_AttackAbilityOrder = channel
-------- ------ --------
-------- Options --------
-------- ------ --------
-------- Group Attack: All units selected will attack ground when ordered. When disabled, you have to g-click once for each unit. --------
-------- Group Spacing: Units selected will fire so that their attacks will land in the same formation as the units are in. --------
-------- Artillery Targeting: Units will use their attack ground instead of their missile attack. --------
Set AGES_GroupAttackEnabled = True
Set AGES_GroupAttackSpacingEnabled = True
Set AGES_ArtilleryTargetingEnabled = True
-------- ------ --------
-------- Units that use the system --------
-------- ------ --------
Set AGES_SaveUnitType = Mortar Team
Set AGES_SaveDummyType = Mortar Team (Attack Ground)
Set AGES_SaveAbility = Attack Ground (Icon) (Mortar Team)
Set AGES_SaveOrderString = cloudoffog
Set AGES_SaveAccuracy = 0.00
Set AGES_SaveCooldown = 2.50
Set AGES_SaveMaxRange = 1150.00
Set AGES_SaveMinRange = 250.00
Trigger - Run AGES Register <gen> (ignoring conditions)
-------- ------ --------
AGES Register
Events
Conditions
Actions
Custom script: set udg_tempInt = udg_AGES_SaveUnitType
Set tempString2 = (String(AGES_SaveDummyType))
Hashtable - Save tempString2 as 0 of tempInt in AGES_Table
Custom script: set udg_tempInt2 = udg_AGES_SaveAbility
Hashtable - Save tempInt2 as 1 of tempInt in AGES_Table
Hashtable - Save True as 2 of tempInt in AGES_Table
Hashtable - Save AGES_SaveOrderString as 3 of tempInt in AGES_Table
Hashtable - Save AGES_SaveAccuracy as 4 of tempInt in AGES_Table
Hashtable - Save AGES_SaveCooldown as 5 of tempInt in AGES_Table
Hashtable - Save AGES_SaveMaxRange as 6 of tempInt in AGES_Table
Hashtable - Save AGES_SaveMinRange as 7 of tempInt in AGES_Table
AGES Order Event
Events
Unit - A unit Is issued an order targeting a point
Conditions
Actions
Set tempUnitTrigger = (Triggering unit)
-------- Get unit type and ability ids --------
Custom script: set udg_tempInt = GetUnitTypeId(udg_tempUnitTrigger)
-------- Check if the order matches the unit's attack order --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 3 of tempInt from AGES_Table) Equal to (String((Issued order)))
Then - Actions
Unit Group - Add tempUnitTrigger to AGES_AttackingGroup
-------- Create the event --------
Set AGES_EventUnit = tempUnitTrigger
Set AGES_EventTargetPoint = (Target point of issued order)
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
Required changes:
There is a location leak in AGES Start Event
The system bugs when units are ordered to attack a location where they have no vision
Required changes:
Turn...
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
Reviewed by Maker, Attack Ground Event 1.01, 29th Jan 2012
Required changes:
There is a location leak in AGES Start Event
The system bugs when units are ordered to attack a location where they have no vision
Reviewed by Maker, Attack Ground Event 1.00, 28th Jan 2012
Required changes:
Turn off Ages Cooldown when it is not needed.
Suggested changes:
IssuePointOrderLocBJ->IssuePointOrderLoc
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
(tempUnitTrigger is in AGES_CDGroup) Equal to True
(tempUnitTrigger is in AGES_AttackingGroup) Equal to False
Then - Actions
Else - Actions
->
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(tempUnitTrigger is in AGES_CDGroup) Equal to True
(tempUnitTrigger is in AGES_AttackingGroup) Equal to False
Then - Actions
Else - Actions
Start/Attack/Finish event triggers could be off when there are no active attacks.
Set tempUnitType1 = (Unit-type of tempUnitTrigger)
Custom script: set udg_tempInt = udg_tempUnitType1
->
Custom script: set udg_tempInt = GetUnitTypeId(udg_tempUnitTrigger)
And there's GetSpellAbilityId also.
In Cancel attack, exit the loop when correct unit is found.
You could turn this trigger off when it is not needed.
The dummies remain too long after they die, set their
death type to Can't raise, doesn not decay
This system could be useful. Drawbacks are that the attacking unit
does not deal the damage or get the credit from the kill and that
editing animation - Cast point affects all spells.
you should make the cooldown be saved to an individual unit, this would increase the accuracy of your cooldown timer
example
units cooldown is .83
your system will set it, with its current settings, to
-.02 and then recover it to 0, making the unit fire .02 seconds slower but if you were to save the cooldown to the unit and then did this
set unitscool[index] = unitscool[index] +unittypecooldown the unit would average the correct number of hits a minute.
but i have some problem when i'm trying to configure it to fit my need.
I ordered several mortar teams to attack ground to certain point, but they shot on different points. is this just a feature ?
anyway, i want to create a special effect at the position of unit when the unit is ordered (AGES_Event == 3.00), but it's only worked for a unit while i ordered 5 units.
so i tried to change the AGES_Event == 2.00, it worked well.
i also tried to change the AGES_Event == 4.00, didn't work at all.
On the AGES Group Attack trigger on the custom scripts instead of calling "GetEnumUnit()" you already have the unit set into a variable so it should be the variable instead.
Set tempUnitPicked = (Picked unit)
so just replace all the "GetEnumUnit()" with "udg_tempUnitPicked"
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.