JESP is very outdated and was intended for pure JASS spells. It predates vJass and many of the guidelines don't make sense in the context of vJass, which is included in the editor by default now. There is hardly any reason to use plain JASS anymore.
I probably need to get familiar with vjass first in order to know how to use the natives and stuff, no? sounds like a big jump from GUI...
It's actually easier to learn something like TypeScript or C# than it is to learn vJass since the code editors you would be using are vastly superior to TESH or any vJass plugins you can find. You get full linting support which essentially means that the editor can statically analyze your code for potential errors before you even run your map. You also have access to
intellisense, meaning you get code hints, autocompletion, and other important information.
The only downside is you cannot convert GUI triggers to Lua in the editor like you can with JASS. However, that only helps you in learning plain JASS, not with using the features of vJass.
If I would try to do this, I would probably use this:
[python] WC3 Mapmaking in Python bc I know more python than c# currently. any opinion on this?
If you have experience with Python and are comfortable with it, it's an okay choice. I would certainly prefer it over Lua. I'm not sure how Python works within the context of WC3 (since Lua is dynamically typed), but generally type checking is done during runtime. I think there are some static type checkers for Python but I am unsure of how good they actually are.
C# is a decent choice as well, however it has some cons which in my opinion make it inferior to TypeScript in the context of WC3 modding.
- C# requires Visual Studio which has a pretty hefty install size (something like 10GB) and includes a ton of things you would never need for modding. With TypeScript, you can use VS Code which is only a few MBs and it is cross-platform so you get the same editor on each OS, unlike with Visual Studio.
- The .NET library in CSharp2Lua is ~25k lines of code whereas TypeScript has a much smaller bundle size.
- C# overall feels like a much heavier language with many features and tools that are not applicable to WC3 modding.
TypeScript is also becoming one of the most
loved languages and adoption and support for it is rapidly growing. I would say more modders use TypeScript for their maps than C# and the standard library for TypeScript is growing nicely. It comes with wrappers for most handles and includes system like FileIO and the ability to synchronize data out of the box.
JavaScript:
const unit = new Unit(Players[0], FourCC("hfoo"), 0, 0, 270);
unit.name = "TypeScript";
new Timer().start(1.00, true, () => {
unit.color = Players[math.random(0, bj_MAX_PLAYERS)].color;
});
The rest of it just comes down to preference.
Here is the TypeScript template if you want to get started:
cipherxof/wc3-ts-template