HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

JESP standard update draft

10-15-2006, 07:22 PM#1
Vexorian
For a spell to be included in this category it must follow the standard:



This is the JESP standard document, if a map contains this document it means that there are
spells that follow this standard.

Spells of this map that follow the standard:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- "Spell1"
- "Spell2"
...
- "SpellN"
(must change this part to mention the spells)

Advantage of the Standard
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- Implementing spells that follow the standard is relatively easier than implementing JASS
spells that don't follow the standard.

- Configuring/Balancing spells that follow the standard is relatively easier than
implementing JASS spells that don't follow the standard.

- Users may do the following procedure to make a new ability that uses the spell's script :

* Create a new Trigger with a name (case sensitive)
* Convert that trigger to custom text.
* Copy the spell's script to a text editor like Notepad or your OS equivalent.
* Replace the spell's Code name with the name you used on the trigger.
* Copy the new text to the new trigger
* Duplicate the Spell's original objects to have new ones for the new spell script.

You are now able to use that new version of the spell.

- In case two guys give the same name to 2 different spells, there are no conflict problems
because you can easily change the name of one of them

What is the JESP Standard?
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
The JESP standard was designed to make spell sharing much better. And to make sure JASS
enhanced spells follow a rule, to prevent chaos.

What does JESP Standard stands for?
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
JASS
Enhanced
Spell
Pseudotemplate

Requirements for a spell to follow the JESP Standard
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯
- The spell is written in JASS
- The spell is 100% multi instanceable.
- The spell script supports spells of any number of levels.
- The Spell has an specific code name.
- All the spell's specific code is inside the spell's "Trigger" (Trigger== that custom text
slot that world editor calls Trigger, the spell may use as many 'trigger' objects as needed)

- Every single function of the script, handle variables (attached variables) of a public object,
or global variable used by the spell depends on the spell's codename, in general, functions
and globals begin with the <Codename>_ preffix and the rest could either use the <Codename>_
preffix as well or if possible use <Codename> as main key.

Another way to understand this rule is that text-replacing the <codename> of the spell with
another value would create a non conflicting new instance of the spell.

Because of this, the spell's code might include //! library or scope statements as long as the name
of the library/scope matches the spell's codename.

- The Spell's trigger must have the spell's codename as name
- The Spell's InitTrig function must be named: InitTrig_<CodeName>
- The Spell has a header of functions/ constant global variables used to configure it.

- Eyecandy and spell's balance have to be easy to configure

- The rawcode of the spell has to be input once.
- The name of the author should be included in the spell's script.

- The reason to exist of this standard is spell sharing. This document should be included
in the map explaining which spell follows the standard, and to promote the standard.





The bold text is what changed and I also removed the anti - spell specific globals rule.

The reason is clear, now that there are preprocessors globals can be created by copypaste of JASS code as well so it is as easy to implement and replace their name as functions. And a global constant configuration header is also allowed now.
11-06-2006, 06:01 PM#2
Vexorian
changed once again, it would now be possible to use libraries or scopes so the member function/variables are private, in the case the members are private and belong to an scope that has the codename as name, it is now allowed.