Small favour from a jass user

Xenoche

Member
Reaction score
18
Xeno here, I'm simply asking for favour from someone who knows jass, the following code revives neutral hostile creeps, but I want it to not revive neutral hostile creeps that have the 'ancient' classification.

If someone could take this and modify it for me that would be awesome.

Code:
function Trig_Respawn5_Func_Test takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), Player(PLAYER_NEUTRAL_AGGRESSIVE)) )
endfunction

function Trig_Respawn5_Actions takes nothing returns nothing
    local location tmpPoint = GetUnitLoc(GetDyingUnit())
    local integer tmpUnit = GetUnitTypeId(GetDyingUnit())
    loop
        call PolledWait( GetRandomReal(10.00, 20.00) )
        exitwhen ( IsUnitGroupEmptyBJ(GetUnitsInRangeOfLocMatching(700.00, tmpPoint, Condition(function Trig_Respawn5_Func_Test))) )
    endloop
    call CreateNUnitsAtLoc( 1, tmpUnit, Player(PLAYER_NEUTRAL_AGGRESSIVE), tmpPoint, bj_UNIT_FACING )
endfunction

//===========================================================================
function InitTrig_Respawn_Creeps takes nothing returns nothing
    set gg_trg_Respawn_Creeps = CreateTrigger(  )
    call TriggerRegisterPlayerUnitEventSimple( gg_trg_Respawn_Creeps, Player(PLAYER_NEUTRAL_AGGRESSIVE), EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddAction( gg_trg_Respawn_Creeps, function Trig_Respawn5_Actions )
endfunction
 

Terrabull

Veteran Member (Done that)
Reaction score
38
JASS:
function Respawn_Creeps_Condition takes nothing returns boolean
    return IsUnitType(GetTriggerUnit(), UNIT_TYPE_ANCHIENT)
endfunction


add that at the top of the trigger and add this to the InitTrig_Respawn_Creeps
JASS:
call TriggerRegiserCondition(gg_trg_Respawn_Creeps,Condition(function Respawn_Creeps_Condition)


tah-dah!
 

Xenoche

Member
Reaction score
18
Thanks man! :)

Have a rep cookie.

If it wasn't for the supreme awesomeness of thehelper.net, I swear half my maps would never get finished (not that they do as it is anyway :p)

Peace.
 

trb92

Throwing science at the wall to see what sticks
Reaction score
142
Terrabull, there are 3 problems with your code.

1) It's TriggerAddCondition(), not TriggerRegisterCondition()

2) There's no H in Ancient, it's just UNIT_TYPE_ANCIENT.

3) He wanted it to stop Ancients from reviving, yours will only revive ancients.

Here's the proper code.

JASS:
function Respawn_Creeps_Condition takes nothing returns boolean
    return not (IsUnitType(GetTriggerUnit(), UNIT_TYPE_ANCIENT))
endfunction

function Trig_Respawn5_Func_Test takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), Player(PLAYER_NEUTRAL_AGGRESSIVE)) )
endfunction

function Trig_Respawn5_Actions takes nothing returns nothing
    local location tmpPoint = GetUnitLoc(GetDyingUnit())
    local integer tmpUnit = GetUnitTypeId(GetDyingUnit())
    loop
        call PolledWait( GetRandomReal(10.00, 20.00) )
        exitwhen ( IsUnitGroupEmptyBJ(GetUnitsInRangeOfLocMatching(700.00, tmpPoint, Condition(function Trig_Respawn5_Func_Test))) )
    endloop
    call CreateNUnitsAtLoc( 1, tmpUnit, Player(PLAYER_NEUTRAL_AGGRESSIVE), tmpPoint, bj_UNIT_FACING )
endfunction

//===========================================================================
function InitTrig_Respawn_Creeps takes nothing returns nothing
    set gg_trg_Respawn_Creeps = CreateTrigger(  )
    call TriggerRegisterPlayerUnitEventSimple( gg_trg_Respawn_Creeps, Player(PLAYER_NEUTRAL_AGGRESSIVE), EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddCondition(gg_trg_Respawn_Creeps, Condition(function Respawn_Creeps_Condition))
    call TriggerAddAction( gg_trg_Respawn_Creeps, function Trig_Respawn5_Actions )
endfunction
 

Xenoche

Member
Reaction score
18
I just went to add that code, and was like, wait a sec, this dude cant spell.
Like me :p

Thanks mate!
 

Terrabull

Veteran Member (Done that)
Reaction score
38
Yeah, but Firefox said anchient was spelled right, so I left it. I also was typing it directly into the fast reply, which doesn't have a syntax checker.
As for the true/false thing, that was just a plain mistake.
 

Xenoche

Member
Reaction score
18
Wow, thanks for the tip Cohadar.

Just tested the trigger works fine, thanks to you guys.

Cheers
 

trb92

Throwing science at the wall to see what sticks
Reaction score
142
Really Cohadar? Well damn, learn something new every day... *Runs off to change about half the conditions in his latest never to be finished map*
 
Reaction score
456
>Does every 'IsUnitYTpe(whichUnit,UNIT_TYPE_UNKNOWN)' needs comparison to boolean?

Don't think so.

>At least if you want it to work all the time.

I've never (sometimes maybe) done so, I've never had problems with it ;s.
 

Cohadar

master of fugue
Reaction score
209
Yes EVERY IsUnitType needs comparison to boolean.

You can read about it (and many other bugs) here.
 

Terrabull

Veteran Member (Done that)
Reaction score
38
Wouldn't putting this inside a larger conditional (I.E. and statements or If Statements) remove the problem as well? (Going by the bug description linked.)
Thank you for posting that link, I didn't know about those bugs.
 
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