Elemental Coder Guide

Elemental Coder Guide

This is a quick guide for coders to look up basic definitions and links to related tutorials for them.

Graphical User Interface is an interface inside the trigger editor
that allows the user to operate with symbols and mouse clicks to produce certain code.
However all code "written" in GUI will be converted to JASS later.
  • MyTrigger
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Game - Display to (All players) the text: Hello wordl!
Things You Should Know When Using GUI

Hive conventions when using GUI: GPAG

JustAnotherScriptingSyntax (probably) is the coding language from Blizzard made for the WorldEditor.
All code, no matter what syntax it uses, will end in JASS. JASS manual

function Trig_MyTrigger_Actions takes nothing returns nothing
    call DisplayTextToForce( GetPlayersAll(), "Hello world!" )

function InitTrig_MyTrigger takes nothing returns nothing
    set gg_trg_MyTrigger = CreateTrigger(  )
    call TriggerAddAction( gg_trg_MyTrigger, function Trig_MyTrigger_Actions )

veryJASS is a very spreaded extension of JASS, made by Vexorian and others.
If your map contains vJASS, it will require JassHelper to save and test the map inside editor.
JassHelper is included in the JNGP Editor.
Here is the manual: vJASS manual
As structs is most important to learn in vJASS:

Introduction to Structs
Structs for Dummies

Some more features explained here:

vJASS OOP Lesson

JASSNewGenPack is a tool that includes JassHelper and many other new features.
It works together with the WorldEditor and allows the user to be more limiteless. JNGP
On side note about JassHelper: It also allows to write in ZINC syntax. ZINC manual

JNGP is currently outdated!
SharpCraft World Editor Extended Bundle should be used to work with newest patch!​

Multiple Player Instanceability does mean that a code works for more than one player.
So we speak a code is MPI if multiple players can use the code at same time without any bug.

If one player only needs one instance at same time then (PlayerNumberOf(Player)) can be used as reference/index.​

Multiple Unit Instanceability does mean a code works for more than one unit.
So we speak a code is MUI if multiple units (instances) can use the code at same time without any bug.
This is not limited to units by different players, and so MUI does include MPI already.​

So MPI and MUI are like states for how code defines it's instanceability.
It is not related to the syntax or language inwhich the code is written with. GUI and JASS, both can, and can not be MUI/MPI.
Dynamic Indexing

If a unit should be instanced only once at same time, then these work, too.
GUI Unit Indexer
Hashtables and MUI

DamageDetetionSystem is widely used to manipulate many aspects of damage taking and making.

Please share ideas if you want something to be added or can share the one or other helpful link.
I also might add information every now and then.
Last edited:
cJASS, wurst, zinc are rarely used and it might be not too important to note it for beginners.
But if more people advice to add them, then I would see no problem in also noting them.

Added JPAG to JASS tutorials.

Yes, I also think it might be useful to link sometimes, because often people seem to have only semi-knowledge about some definitions.
Like for example mixing up GUI with MUI. And how often have we explained these stuff already?.. :)

Edit: Okay quickly noted zinc in JNGP.^^
Level 22
Feb 6, 2014
vJASS = very JASS I think.
The "v" is for very and not for "Vexorian". Vexorian wanted to call it JASS++ however Zoxc suggested vJASS for veryJASS and Vexorian liked the idea. Thanks to Vexorian for explaining me the origin of the name.

Not sure if it's legit info

it needs JessHelper to compiler to plain JASS.
Some mispelled terms. should be JassHelper and compile

Might also be helpful to link this
but not all are explained.

Elemental Definition Guide (EDO)
Shouldn't this be EDG?
Last edited:
Level 11
Dec 19, 2012

If i'm not mistaken, it should be veryJASS.

Although this is a simple explanation tutorial, but i think must be very useful for beginner to understand what those terms mean. :)

EDIT : Oh and one thing, should the definition of "DDS" need to be added into this tutorial? I've see people using it often.
You mean "deindexed" probably?
Yes that's true that a unit can't be registered multiple times for different instances in the same system when only using "custom value" as reference for registered unit.

But I don't really understand what you suggest.
To add a new point after "MUI" which explains this >MUI instanceability?
Any idea of an practical example or name? "LUI" ? :D LimitlessUnitInstanceability

With this logic, you are right, but idk if we should start to differ in MUI now.
I better change the text in MPI a bit for now, so it doesn't necessarily imply the player is necessarily limited to one instance.
And so MUI also won't imply the limit to "one" instance.

However it differs in MUI tutorials now.
I have a request:

Can you add a little bit more information to the 'vJass' section? Specifically, something along the lines of:

If you have vJass code in your map, you must edit the map using JNGP. If you use the regular editor, you will get errors.

A lot of users have asked me about JNGP and how it works with vJass. Some users thought they just needed to download it to save the map--and then they could go back to using the regular editor. Hopefully adding that note would clarify some things.

P.S. We're not sure if JASS stands for Just Another Scripting Syntax. :p Heck, we don't even know if it is supposed to be written as JASS or Jass. I think writing it as 'JASS' came out of the fact that there is a constant named JASS_MAX_ARRAY_SIZE, but that is only capitalized out of convention. In the Blizzard.j, 'JASS' is written as 'Jass2' (it is #2 because the original Starcraft's scripting language was considered #1). But in the patch notes, 'JASS' is written as 'JASS'. So who knows. ¯\_(ツ)_/¯