LearningCode
New Member
- Reaction score
- 24
Yea..
I re-made it.
But this time, it's a new problem, hence, the new thread.
This time, When I enable the trigger, All my other triggers get disabled.
JASSHelper doesn't complain, but something is disabling every one of my triggers.
When I disable the AoE Astral Imprisonment trigger, all my other triggers work as though nothing bad has happened o.0
I am so confused =/
Neater version of trigger coming up:
I re-made it.
But this time, it's a new problem, hence, the new thread.
This time, When I enable the trigger, All my other triggers get disabled.
JASSHelper doesn't complain, but something is disabling every one of my triggers.
When I disable the AoE Astral Imprisonment trigger, all my other triggers work as though nothing bad has happened o.0
I am so confused =/
Neater version of trigger coming up:
JASS:
scope AstralCuratio initializer AstralTrig
private struct A
private static A data = 0
private static A data2 = 0
private static hashtable ht = InitHashtable()
unit caster
unit hide
integer A029Level
integer INT
integer NumberInGroup
integer ArrayAmount
integer ExitLoop
group Hide
group UnHide
effect array AC[400]
real TargetX
real TargetY
real Range
real HP
real damage
timer t
static method AstralUnHide takes nothing returns nothing
local A a = A.data2
local integer i
set a.hide = GetEnumUnit()
loop
exitwhen i == a.ArrayAmount + 1
if a.AC<i> != null then
call DestroyEffect(a.AC<i>)
set a.AC<i> = null
endif
set i = i+1
endloop
call ShowUnit(a.hide, true)
call UnitDamageTarget(a.caster, a.hide, a.damage, false, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, null)
call PauseUnit(a.hide, false)
set a.hide = null
endmethod
static method AstralTimer takes nothing returns nothing
local A a = LoadInteger(A.ht, GetHandleId(GetExpiredTimer()), 0)
set A.data2 = a
call ForGroup(a.UnHide, function A.AstralUnHide)
call GroupClear(a.UnHide)
call DestroyGroup(a.UnHide)
set a.UnHide = null
endmethod
static method AstralGroup takes nothing returns nothing
local A a = A.data
local real x
local real y
set a.hide = GetEnumUnit()
set x = GetUnitX(a.hide)
set y = GetUnitY(a.hide)
if IsUnitEnemy(a.hide, GetOwningPlayer(a.caster)) == true and IsUnitInGroup(a.hide, a.UnHide) == false then
call PauseUnit(a.hide, true)
call ShowUnit(a.hide, false)
loop
exitwhen a.ArrayAmount == 400
if a.AC[a.ArrayAmount] == null then
set a.AC[a.ArrayAmount] = AddSpecialEffect("Abilities\\Spells\\Undead\\ReplenishHealth\\ReplenishHealthCasterOverhead.mdl", x, y)
set a.NumberInGroup = a.NumberInGroup + 1
set a.ExitLoop = 1
endif
exitwhen a.ExitLoop == 1
endloop
set a.ExitLoop = 0
call GroupAddUnit(a.UnHide, a.hide)
endif
set a.hide = null
endmethod
static method AstralAct takes nothing returns nothing
local A a = A.allocate()
set a.caster = GetTriggerUnit()
set a.A029Level = GetUnitAbilityLevel(a.caster, 039;A029039;)
set a.INT = GetHeroInt(a.caster, true)
set a.NumberInGroup = 0
set a.ArrayAmount = 0
set a.ExitLoop = 0
set a.Hide = CreateGroup()
set a.UnHide = CreateGroup()
set a.TargetX = GetSpellTargetX()
set a.TargetY = GetSpellTargetY()
set a.Range = a.A029Level * 100.00
set a.damage = (a.A029Level * 0.1) * a.NumberInGroup
set a.HP = GetUnitState(a.caster, UNIT_STATE_LIFE) + a.damage
set a.t = CreateTimer()
set A.data = a
call GroupEnumUnitsInRange(a.Hide, a.TargetX, a.TargetY, a.Range, null)
call ForGroup(a.Hide, function A.AstralGroup)
call GroupClear(a.Hide)
call DestroyGroup(a.Hide)
set a.Hide = null
call SetUnitState(a.caster, UNIT_STATE_LIFE, a.HP)
call TimerStart(a.t, 4.00, false, function A.AstralTimer)
call SaveInteger(a.ht, GetHandleId(a.t), 0, a)
endmethod
endstruct
private function AstralCond takes nothing returns boolean
return GetSpellAbilityId() == 039;A029039;
endfunction
private function AstralTrig takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i
loop
exitwhen i == 8
call TriggerRegisterPlayerUnitEvent( t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
set i = i+1
endloop
call TriggerAddCondition( t, Condition(function AstralCond))
call TriggerAddAction( t, function A.AstralAct)
endfunction
endscope
</i></i></i>