Periodic Dummy Not Casting Invis

WolfieeifloW

WEHZ Helper
Reaction score
372
Hey there TH.net.

I'm trying to get a dummy to cast Invisibility on all units on certain terrain.
According to my BJDebugMsg's, everything should be working, so I'm thinking maybe it's something in the Object Editor that's causing my dummy not to cast.
Anyway, here's my trigger:
JASS:
scope BushInvis initializer Init
 
globals
private timer time
private group g = CreateGroup()
endglobals
 
private function GroupDo takes nothing returns nothing
local unit u
 
set u = CreateUnit(GetOwningPlayer(GetEnumUnit()), 'n000', GetUnitX(GetEnumUnit()), GetUnitY(GetEnumUnit()), bj_UNIT_FACING)
call BJDebugMsg("[" + R2S(GetFloatGameState(GAME_STATE_TIME_OF_DAY)) + "] U name: " + GetUnitName(u))
call UnitAddAbility(u, 'A000')
call SetUnitAbilityLevel(u, 'A000', 1)
call BJDebugMsg("[" + R2S(GetFloatGameState(GAME_STATE_TIME_OF_DAY)) + "] abillvl: " + I2S(GetUnitAbilityLevel(u, 'A000')))
call BJDebugMsg("Enum: " + GetUnitName(GetEnumUnit()))
call IssueTargetOrder(u, "invisibility", GetEnumUnit())
call UnitApplyTimedLife(u, 'BTLF', 3)
call BJDebugMsg("-=-=-=-")
endfunction
 
private function GroupCond takes nothing returns boolean
return ( GetTerrainTypeBJ(GetUnitLoc(GetFilterUnit())) == 'Lgrs' )
endfunction
 
private function TimerDo takes nothing returns nothing
 
call GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, Condition(function GroupCond))
call ForGroup(g, function GroupDo)
endfunction
 
private function Conditions takes nothing returns boolean
 
set time = CreateTimer()
call TimerStart(time, 2, true, function TimerDo)
return false
endfunction
 
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
 
call TriggerRegisterTimerEvent(t, 0.01, false)
call TriggerAddCondition(t, Condition(function Conditions))
endfunction
 
endscope

"U name:" displays 'DummyUnit', which is correct.
"abillvl:" displays '1', which is correct.
"Enum:" displays 'Paladin', which is correct.

Now, for my DummyUnit I've used the "Zone Indicator" as a base.
I've changed the following things:
Abilities - Normal to nothing
Art - Death Time (seconds) to '0.10'
Art - Has Water Shadow to 'False'
Art - Icon - Game Interface to 'None'
Art - Model File to 'None'
Editor - Categorization - Campaign to 'False'
Editor - Categorization - Special to 'True'
Movement - Height to ' 1.00'
Movement - Speed Base to '522'
Movement - Speed Maximum to '522'
Movement - Type to 'Fly'
Pathing - Collision Size to '0.00'
Stats - Build Time to '1'
Stats - Can Flee to 'False'
Stats - Gold Cost to '0'
Stats - Is a Building to 'False'
Stats - Mana Initial Amount to '100000'
Stats - Mana Maximum to '100000'
Stats - Mana Regeneration to '1000.00'
Stats - Point Value to '9000'
Stats - Repair Gold Cost to '0'
Stats - Repair Time to '1'
Stats - Sight Radius (Day) to '1800'
Stats - Sight Radius (Night) to '1800'
Text - Name to 'DummyUnit'
Text - Name - Editor Suffix to nothing
Text - Tooltip - Basic to nothing
Text - Tooltip - Extended to nothing

If anyone can help me solve this mystery I'd be very grateful.
Thank you for your time, and future help!
 

WolfieeifloW

WEHZ Helper
Reaction score
372
I believe it was my dummies fault, however I'm not looking at how to make the buff be removed when they are not on the specific terrain anymore.

Any help with that?
 

WolfieeifloW

WEHZ Helper
Reaction score
372
This isn't working:
JASS:
scope BushInvis initializer Init
 
    globals
        private timer time
        private group g = CreateGroup()
        private group bg = CreateGroup()
    endglobals
    
    private function GroupDo takes nothing returns nothing
        local unit u
        
        set u = CreateUnit(GetOwningPlayer(GetEnumUnit()), 'n000', GetUnitX(GetEnumUnit()), GetUnitY(GetEnumUnit()), bj_UNIT_FACING)
        call UnitAddAbility(u, 'A000')
        call SetUnitAbilityLevel(u, 'A000', 1)
        call IssueTargetOrder(u, "invisibility", GetEnumUnit())
        call UnitApplyTimedLife(u, 'BTLF', .5)
    endfunction
    
    private function GroupNotDo takes nothing returns nothing
        call UnitRemoveAbility(GetEnumUnit(), 'B000')
    endfunction
 
    private function GroupCond takes nothing returns boolean
        return (GetTerrainTypeBJ(GetUnitLoc(GetFilterUnit())) == 'Lgrs' and GetUnitTypeId(GetFilterUnit()) != 'n000' and GetUnitAbilityLevel(GetFilterUnit(), 'B000') <= 0)
    endfunction
    
    private function GroupNotCond takes nothing returns boolean
        return (GetTerrainTypeBJ(GetUnitLoc(GetFilterUnit())) != 'Lqrs' and GetUnitAbilityLevel(GetFilterUnit(), 'B000') >= 1)
    endfunction
    
    private function TimerDo takes nothing returns nothing        
        call GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, Condition(function GroupCond))
        //call GroupEnumUnitsInRect(bg, bj_mapInitialPlayableArea, Condition(function GroupNotCond))
        call ForGroup(g, function GroupDo)
        //call ForGroup(bg, function GroupNotDo)
    endfunction
    
    private function Conditions takes nothing returns boolean                
        set time = CreateTimer()
        call TimerStart(time, 0.03125, true, function TimerDo)
        return false
    endfunction
 
    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
    
        call TriggerRegisterTimerEvent(t, 0.01, false)
        call TriggerAddCondition(t, Condition(function Conditions))
    endfunction
    
endscope
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      • Ghan
        Administrator - Servers are fun

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top