def int unit.disarm = 0;
def unit.disarmSub() {
unit.disarm--;
if (unit.disarm == 0) {
UnitRemoveAbility(unit, cargo);
}
}
def unit.disarmAdd() {
unit.disarm++;
if (unit.disarm == 1) {
UnitAddAbility(unit, cargo);
}
}
def spellInstance.durationTimer;
def spellInstance.targetGroup;
def spellInstance.destroy() {
ForGroup(spellInstance.targetGroup, () -> {
GetEnumUnit().disarmSub();
})
DestroyTimer(spellinstance.durationTimer);
DestroyGroup(spellinstance.targetGroup);
}
def spellInstance.onExpire() {
spellInstance.destroy();
}
def spellInstance.start() {
GroupEnumUnitsInRange(spellInstance.targetGroup, range, filter);
ForGroup(spellInstance.targetGroup, () -> {
GetEnumUnit().disarmAdd();
})
TimerStart(spellinstance.durationTimer(), 5., false, function spellinstance.onExpire);
}
def spellinstance.create() {
spellinstance.durationTimer = CreateTimer();
spellinstance.targetGroup = CreateGroup();
spellInstance.start();
}