Well, Another Question

TheCrystal

New Member
Reaction score
36
I've been rather stumped as to what is wrong. Recently I began making an ability (first actual 'Complicated' one) that summons a skull, attacks a unit (effectively attaching itself to the attacked unit), wait two seconds before it does an effect, then goes to the next target. My current problem is getting the trigger to actually start. I haven't really done anything with JASS eventwise ^_^

So I have three triggers outside of the Library.
Here's the startup for the JassAbilitiesInit (I created this in case the startup itself was not working).
Trigger:
  • InitJassAbilitiesInit
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Custom script: call JASSAbilitiesInit()


Here is the thing it runs.
JASS:
function JASSAbilitiesInit takes nothing returns nothing
    call TriggerRegisterAnyUnitEventBJ( gg_trg_ManaCoil, EVENT_PLAYER_UNIT_SPELL_EFFECT )
endfunction



Here is the trigger itself, the first thing (after locals) was to test if it was running, the second part is the ability check condition, it then goes on. I don't even know if what I had planned will work but I've just been trying to get the trigger to activate.

JASS:
function NMCC takes nothing returns boolean
if (IsUnitEnemy(GetFilterUnit(), Player(udg_TempInteger)) == true) then
return true
else 
return false
endif
endfunction





function ManaCoil takes nothing returns nothing
local group g = CreateGroup()
local unit c = GetTriggerUnit()
local unit u = null
local unit w = GetSpellTargetUnit()
local real r = 0
local integer i = 1
local location l = GetUnitLoc(c)
local location q = null
local effect e = null
local real px = 0
local real py = 0
call DisplayTextToPlayer(Player(0),0,0,"Wtf")
if 'A00D' != GetSpellAbilityId() then

set u = CreateUnitAtLoc(GetOwningPlayer(c),'h001',l,0)
call IssueTargetOrder(u,"attack",w)
loop
    exitwhen UnitHasBuffBJ(w, 'B006') == true
    call Wait(.1)
endloop
call RemoveUnit(u)
set e = AddSpecialEffectTarget("Abilities/Spells/Undead/DeathCoil/DeathCoilMissile.mdl",w,"head")
call Wait(2)
call DestroyEffect(e)
call DamageUnit(udg_ZZZWisdom[GetPlayerId(GetOwningPlayer(c))],w,c,0)
set w = null

loop
    exitwhen GetUnitAbilityLevel(c,'A00D') == i
    set i = i+1
    set u = CreateUnitAtLoc(Player(12),'h001',l,0)
    set udg_TempInteger = GetPlayerId(GetOwningPlayer(c))
    call GroupEnumUnitsInRange(g,px,py,350,Condition(function NMCC))
    set w = FirstOfGroup(g)
    call IssueTargetOrder(u,"attack",w)
    loop
        exitwhen UnitHasBuffBJ(w, 'B006') == true
        call Wait(.1)
    endloop
    call RemoveUnit(u)
    set e = AddSpecialEffectTarget("Abilities/Spells/Undead/DeathCoil/DeathCoilMissile.mdl",GetSpellTargetUnit(),"head")
    call Wait(2)
    call DestroyEffect(e)
    call DamageUnit(udg_ZZZWisdom[GetPlayerId(GetOwningPlayer(c))],GetSpellTargetUnit(),c,0)
    set w = null
    call GroupClear(g)    
endloop

endif
call RemoveLocation(l)
call RemoveLocation(q)
set g = null
set u = null
set c = null
endfunction

So, why isn't it initializing?

Thanks in advanced.
 

Larcenist

REP: Respect, Envy, Prosperity?
Reaction score
211
There is no triggering unit in the GUI-trigger since it has a timer event.
 

TheCrystal

New Member
Reaction score
36
Jeez, I didn't even notice that condition.
[Editted First Post and removed silly GUI condition]
Still no activation.
 

Larcenist

REP: Respect, Envy, Prosperity?
Reaction score
211
Any reason why you do not just use an init function in the JASS code to begin with? You must add the Conditions and Actions to the trigger aswell.
 

TheCrystal

New Member
Reaction score
36
It was an "In case that's being stupid for some reason" move.

Wait, does the "Add Event" basically creates a whole new trigger?
 

Larcenist

REP: Respect, Envy, Prosperity?
Reaction score
211
A typical init function would look something like this:

JASS:
function Init takes nothing returns nothing
    local trigger trig = CreateTrigger()  //Creates the trigger
    call TriggerRegisterAnyUnitEventBJ(trig, EVENT_PLAYER_UNIT_SPELL_EFFECT) //Registers the event
    call TriggerAddCondition(trig, Condition(function MyConditionFunc)) //Adds the conditions
    call TriggerAddAction(trig, function MyActionsFunc) //Adds the actions
endfunction


Of course apropriate naming of the init function should be used, and "local trigger trig = CreateTrigger()" can be replaced with the "set gg_Trg_Blabla...".
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top