Whattoput( having a trouble with my code)

Azwan Izhar

New Member
Reaction score
0
Hello, I would like some help regarding my code. As you can see, it is very basic but I'm having a trouble with it. It works fine on target but when I redo it with the same skill on the same target for the second time, it wouldn't damage the target.

Code:
function Trig_Tiger_Fang_Actions takes nothing returns nothing
    local unit sfxdummy
    local unit caster = GetTriggerUnit()
    local unit target = GetSpellTargetUnit()
    local unit target2
    local real xa = GetUnitX(caster)
    local real ya = GetUnitY(caster)
    local real xb = GetUnitX(target)
    local real yb = GetUnitY(target)
    local group g = CreateGroup()
   
 
    set g = GetUnitsInRangeOfLocAll( 50, Location(xb, yb))
    set sfxdummy = CreateUnit(GetOwningPlayer(caster), 'h003', xb, yb, 0.00)
    set target2 = FirstOfGroup(g)
    call UnitApplyTimedLife( sfxdummy, 'BTLF', 2.00)
    call IssueTargetOrderById( sfxdummy, 852231, target2)
    call DestroyEffect( AddSpecialEffect( "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl", xb, yb))
   
    set bj_wantDestroyGroup = true
    set caster = null
    set target = null
    set target2 = null
    set sfxdummy = null
endfunction
 

DrEvil

FCRI Associate!
Reaction score
111
since you create the 'sfxdummy' right on top of the target's location, the next cast will include it in the group enum.
FirstOfGroup returns a random unit, so it may be returning the dummy unit.

You should add a condition comparing the enumerated units to check they are enemies?

Something along the lines of: (bear in mind I haven't used wc3 in ages...)

JASS:
function condition takes nothing returns boolean
return IsAnEnemy( GetOwningPlayer (GetTriggerUnit()), GetOwningPlayer(GetEnumeratedUnit()))
// do note IsAnEnemy isn't the right name of the function
// maybe it takes units as parameters...
// It might not be enumerated unit... maybe matching?
endfunction
 
function Trig_Tiger_Fang_Actions takes nothing returns nothing
local unit sfxdummy
local unit caster = GetTriggerUnit()
local unit target = GetSpellTargetUnit()
local unit target2
local real xa = GetUnitX(caster)
local real ya = GetUnitY(caster)
local real xb = GetUnitX(target)
local real yb = GetUnitY(target)
local group g = CreateGroup()
 
 
set g = GetUnitsInRangeOfLocAll( 50, Location(xb, yb))// somehow use a GetUnitsInRange With condition .. (Condition(function condition))
set sfxdummy = CreateUnit(GetOwningPlayer(caster), 'h003', xb, yb, 0.00)
set target2 = FirstOfGroup(g)
call UnitApplyTimedLife( sfxdummy, 'BTLF', 2.00)
call IssueTargetOrderById( sfxdummy, 852231, target2)
call DestroyEffect( AddSpecialEffect( "Abilities\\Spells\\Human\\ManaFlare\\ManaFlareBoltImpact.mdl", xb, yb))
 
set bj_wantDestroyGroup = true
set caster = null
set target = null
set target2 = null
set sfxdummy = null
endfunction


But I'm sure that you are grouping the dummy unit when the next spell cast is casted.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top