Avoid Bj functions

WolfieeifloW

WEHZ Helper
Reaction score
372
BJ's call upon "natives".

Doing something like:
JASS:
call AddSpecialEffectLocBJ() //BJ version, we'll call this (1)

Is the same as doing:
JASS:
 call AddSpecialEffectLoc() //Native version, we'll call this (2)

Except for the fact that doing the BJ one(1) just calls upon the native one(2).
So instead of calling upon a function(1) that calls upon another function(2);
Why not just call upon (2) itself.
 

GooS

Azrael
Reaction score
154
Except for the fact that doing the BJ one(1) just calls upon the native one(2).
So instead of calling upon a function(1) that calls upon another function(2);
Why not just call upon (2) itself.

Indeed, as few functioncalls as possible is a good thing!

Some BJ's even call other BJs, or as some BJs that call multiple BJ's that call BJ's themselves, now that is not efficient!

//==GooS
 

WolfieeifloW

WEHZ Helper
Reaction score
372
There are some BJ's that are okay though;
Or that are just easier since the native version has like 50 lines.

Although if you're just starting out that may get confusing so I won't say anything ;) .
 

GooS

Azrael
Reaction score
154
There are some BJ's that are okay though;
Or that are just easier since the native version has like 50 lines.

Although if you're just starting out that may get confusing so I won't say anything .

Such as events, people will tell you that some, if not most, events aren't worth removing from a BJ.

//==GooS
 

Viikuna

No Marlo no game.
Reaction score
265
Yep.

You dont know what they exactly do. They usually do some useless stuff you dont need to be done, some of them even leak or do something really harmful.

Not all of them are bad ofc, TriggerRegisterAnyUnitEventBJ and BJDebugMsg are most common good ones.

Just never ever use a BJ function without first checking what it really does. ( You can use NewGens function list for that )
 

Dinowc

don't expect anything, prepare for everything
Reaction score
223
yeah one of the most funniest BJs is "IsUnitAliveBJ" function...

it goes something like this:

JASS:
function IsUnitAliveBJ takes unit u returns boolean
     return not IsUnitDeadBJ(u)
endfunction

function IsUnitDeadBJ takes unit u returns boolean
     return GetUnitState(u, UNIT_STATE_LIFE) <= 0
endfunction


it just keeps calling another BJ, so you could just use GetUnitState(u, UNIT_STATE_LIFE) > 0 to check if the unit is alive :thup:
 

Romek

Super Moderator
Reaction score
964
> The funniest BJ has to be this one:
Actually, DoNothing has uses.
In single-line If/then/else blocks in GUI, a function has to be in the else part. If nothing is wanted, DoNothing is the only candidate. :)

It's more useful than the swapped-argument BJs.

I don't see any uses for this though:
JASS:
function UnitId2OrderIdBJ takes integer unitId returns integer
    return unitId
endfunction

:p
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Yeah...
It's weird.
In Conditions (Function conditions) I use "IsUnitType(u, UNIT_TYPE_DEAD)" but then if it's just an 'if' statement I use "GetWidgetLife(u) <= 0.405" :p .
 

Romek

Super Moderator
Reaction score
964
PolledWait is one.
 
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