• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Feedback] Request Features for JASS and the World Editor

Status
Not open for further replies.
This thread will be keeping track of the features that THW users want implemented for modding. The old thread is getting outdated and unorganized.

The way it will work is:
  • You submit an idea for JASS or the World Editor by replying with as much information as you can about the idea.
  • If it's reasonable then a moderator will add it to the "Open Requests" section.
  • Blizzard will periodically look through the list and if they plan to implement a feature it will be added to the "In Progress" section. However if they do not it will be added the "Closed" section with a reason as to why it wont be implemented.
  • Features that have been implemented will be moved to the "Implemented" section under the patch it was added.
If you support an idea someone else already requested, simply reply saying so and with any additional information for the request you can think of.


Implemented


  1. Patch 1.30
    • Added support for vJass with JassHelper
    • Most buffs/debuffs can simultaneously apply to the same unit if their ID’s are different.
    • 4 new natives.
  2. Patch 1.29
    • 24 Player Support
    • World Editor Limits Increase
    • ~90 Natives (including mouse support)
    • Support for BLPs with dimensions higher than 512x512.
  3. Patch 1.27b
    • Raised file size limit from 8mb to 128mb.


In Progress




Open Requests

General
  1. The ability to create custom soundsets for units. (Post, Post)
  2. Increase tooltip length for items. (Post)
  3. Re-implement tree occlusion which was present in RoC 1.0. (Post)
  4. More control over unit collision. (Post)
  5. Heroes with more than 5 abilities. (Post)
  6. Allow configuration of aura update intervals. (Post)
  7. Improved crash/error logs for custom maps, including for desyncs. (Post).
  8. Copy & Paste doodads without resetting their height. (Post)
  9. Multiple instances of the World Editor. (Post)
  10. Ability to add custom races. (Post)
  11. Allow dynamic collision. (Post)
  12. Support for .ogg audio files. (Post)

Trigger Editor
  1. Add GUI actions for handle destructors (RemoveLocation, DestroyGroup ect..).
  2. Add locust and other missing abilities/orders to the trigger list in GUI. (Post, Post, Post, Post)
  3. Syntax Highlighting (for JASS). (Post)

AI
  1. Increase flexibility of captain widgets. (Post)
  2. Fix basic common.j functions for AI scripts. (Post)
  3. Custom base layout offsets. (Post)

JASS
  1. code array support for JASS. (Post, Post)
  2. Apply individual locust properties to units through JASS natives. (Post)
  3. Ability to show, hide, create, and manipulate UI elements. (Post)
  4. Keyboard/Input API for more than just the escape and arrow keys. (Post)
  5. Access to pathing functions. (Post)


Closed


 
Last edited:
Level 26
Joined
Oct 2, 2011
Messages
2,482
My heart desire these natives:
function TriggerRegisterPlayerKeyboardEvent takes trigger whichTrigger, player whichPlayer, keyboardbutton hotkey, boolean state returns event
//Fires when the corresponding key is pressed by the player. The keyboardbutton constants are not mentioned but should cover most common keyboard buttons. If state is true then fires when key is pressed, otherwise fires when key is released. Attaching this event causes keyboard button sync traffic from the player.
function GetTriggerKeyboardButton takes nothing returns keyboardbutton
//In response to player keyboard event returns which button caused the event.
function GetTriggerKeyboardState takes nothing returns boolean
//In response to player keyboard event returns the state that caused the event. True if it was pressed, false if released.
function GetLocalKeyboardButtonState takes keyboardbutton whichButton returns boolean
//Returns true if the local client has the specified keyboard button (eg arrow keys) depressed or false if released. Not net safe.

From here: Producer Update: Natives List
I'd be excited for every single thing implemented from that list. :)
 
Last edited:
I'm not gonna rewrite what I did on that thread. I hope you people had the decency to collect the information from there.

Working on going through the last few months.

I want the ability to hide/show certain parts of the UI, moving parts around would be a +.
Was possible with memory hack

I agree. I'll add it to the list.

All Blizzard has to do is follow what Netease did over in China.

【暴雪API】最新API发布!-魔兽争霸官方对战平台

JASS:
//gui
/////////////////////////////// 原生UI修改
//隐藏界面元素
native DzFrameHideInterface takes nothing returns nothing
//修改游戏世界窗口位置
native DzFrameEditBlackBorders takes real upperHeight, real bottomHeight returns nothing
//头像
native DzFrameGetPortrait takes nothing returns integer
//小地图
native DzFrameGetMinimap takes nothing returns integer
//技能按钮
native DzFrameGetCommandBarButton takes integer row, integer column returns integer
//英雄按钮
native DzFrameGetHeroBarButton takes integer buttonId returns integer
//英雄血条
native DzFrameGetHeroHPBar takes integer buttonId returns integer
//英雄蓝条
native DzFrameGetHeroManaBar takes integer buttonId returns integer
//道具按钮
native DzFrameGetItemBarButton takes integer buttonId returns integer
//小地图按钮
native DzFrameGetMinimapButton takes integer buttonId returns integer
//左上菜单按钮
native DzFrameGetUpperButtonBarButton takes integer buttonId returns integer
//鼠标提示
native DzFrameGetTooltip takes nothing returns integer
//聊天信息
native DzFrameGetChatMessage takes nothing returns integer
//unit message
native DzFrameGetUnitMessage takes nothing returns integer
//top message
native DzFrameGetTopMessage takes nothing returns integer
//获取game ui
native DzGetGameUI takes nothing returns integer
/////////////////////////////// 自定义UI
//取rgba色值
native DzGetColor takes integer r, integer g, integer b, integer a returns integer
//设置界面更新回调(非同步)
native DzFrameSetUpdateCallback takes string func returns nothing
//显示/隐藏Frame
native DzFrameShow takes integer frame, boolean enable returns nothing
//创建frame
native DzCreateFrame takes string frame, integer parent, integer id returns integer
//创建SimpleFrame
native DzCreateSimpleFrame takes string frame, integer parent, integer id returns integer
//销毁frame
native DzDestroyFrame takes integer frame returns nothing
//加载toc
native DzLoadToc takes string fileName returns nothing
//设置frame相对位置
native DzFrameSetPoint takes integer frame, integer point, integer relativeFrame, integer relativePoint, real x, real y returns nothing
//设置frame绝对位置
native DzFrameSetAbsolutePoint takes integer frame, integer point, real x, real y returns nothing
//清空frame锚点
native DzFrameClearAllPoints takes integer frame returns nothing
//设置frame禁用/启用
native DzFrameSetEnable takes integer name, boolean enable returns nothing
//注册UI事件回调
native DzFrameSetScript takes integer frame, integer eventId, string func, boolean sync returns nothing
//获取触发ui的玩家
native DzGetTriggerUIEventPlayer takes nothing returns player
//查找frame
native DzFrameFindByName takes string name, integer id returns integer
//查找SimpleFrame
native DzSimpleFrameFindByName takes string name, integer id returns integer
//查找String
native DzSimpleFontStringFindByName takes string name, integer id returns integer
//查找Texture
native DzSimpleTextureFindByName takes string name, integer id returns integer
//点击frame
native DzClickFrame takes integer frame returns nothing
//自定义屏幕比例
native DzSetCustomFovFix takes real value returns nothing
//使用宽屏模式
native DzEnableWideScreen takes boolean enable returns nothing
//设置文字(支持EditBox, TextFrame, TextArea, SimpleFontString、GlueEditBoxWar3、SlashChatBox、TimerTextFrame、TextButtonFrame、GlueTextButton)
native DzFrameSetText takes integer frame, string text returns nothing
//获取文字(支持EditBox, TextFrame, TextArea, SimpleFontString)
native DzFrameGetText takes integer frame returns string
//设置字数限制(支持EditBox)
native DzFrameSetTextSizeLimit takes integer frame, integer size returns nothing
//获取字数限制(支持EditBox)
native DzFrameGetTextSizeLimit takes integer frame returns integer
//设置文字颜色(支持TextFrame, EditBox)
native DzFrameSetTextColor takes integer frame, integer color returns nothing
//获取鼠标所在位置的ui控件指针
native DzGetMouseFocus takes nothing returns integer
//设置所有锚点到目标frame上
native DzFrameSetAllPoints takes integer frame, integer relativeFrame returns boolean
//设置焦点
native DzFrameSetFocus takes integer frame, boolean enable returns boolean
//设置模型(支持Sprite、Model、StatusBar)
native DzFrameSetModel takes integer frame, string modelFile, integer modelType, integer flag returns nothing
//获取控件是否启用
native DzFrameGetEnable takes integer frame returns boolean
//设置透明度(0-255)
native DzFrameSetAlpha takes integer frame, integer alpha returns nothing
//获取透明度
native DzFrameGetAlpha takes integer frame returns integer
//设置动画
native DzFrameSetAnimate takes integer frame, integer animId, boolean autocast returns nothing
//设置动画进度(autocast为false是可用)
native DzFrameSetAnimateOffset takes integer frame, real offset returns nothing
//设置texture(支持Backdrop、SimpleStatusBar)
native DzFrameSetTexture takes integer frame, string texture, integer flag returns nothing
//设置缩放
native DzFrameSetScale takes integer frame, real scale returns nothing
//设置tooltip
native DzFrameSetTooltip takes integer frame, integer tooltip returns nothing
//鼠标限制在ui内
native DzFrameCageMouse takes integer frame, boolean enable returns nothing
//获取当前值(支持Slider、SimpleStatusBar、StatusBar)
native DzFrameGetValue takes integer frame returns real
//设置最大最小值(支持Slider、SimpleStatusBar、StatusBar)
native DzFrameSetMinMaxValue takes integer frame, real minValue, real maxValue returns nothing
//设置Step值(支持Slider)
native DzFrameSetStepValue takes integer frame, real step returns nothing
//设置当前值(支持Slider、SimpleStatusBar、StatusBar)
native DzFrameSetValue takes integer frame, real value returns nothing
//设置frame大小
native DzFrameSetSize takes integer frame, real w, real h returns nothing
//根据tag创建frame
native DzCreateFrameByTagName takes string frameType, string name, integer parent, string template, integer id returns integer
//设置颜色(支持SimpleStatusBar)
native DzFrameSetVertexColor takes integer frame, integer color returns nothing
/*
DzFrameSetPoint achor定义,从0开始
enum class AnchorPoint
{
    TOPLEFT = 0,
    TOP = 1,
    TOPRIGHT = 2,
    LEFT = 3,
    CENTER = 4,
    RIGHT = 5,
    BOTTOMLEFT = 6,
    BOTTOM = 7,
    BOTTOMRIGHT = 8,
};
DzFrameSetScript  注册ui事件的事件ID
enum class CFrameEvents
{
    NONE = 0,
    FRAME_EVENT_PRESSED = 1,
    FRAME_MOUSE_ENTER = 2,
    FRAME_MOUSE_LEAVE = 3,
    FRAME_MOUSE_UP = 4,
    FRAME_MOUSE_DOWN = 5,
    FRAME_MOUSE_WHEEL = 6,
    FRAME_FOCUS_ENTER = FRAME_MOUSE_ENTER,
    FRAME_FOCUS_LEAVE = FRAME_MOUSE_LEAVE,
    FRAME_CHECKBOX_CHECKED = 7,
    FRAME_CHECKBOX_UNCHECKED = 8,
    FRAME_EDITBOX_TEXT_CHANGED = 9,
    FRAME_POPUPMENU_ITEM_CHANGE_START = 10,
    FRAME_POPUPMENU_ITEM_CHANGED = 11,
    FRAME_MOUSE_DOUBLECLICK = 12,
    FRAME_SPRITE_ANIM_UPDATE = 13,
};
*/
 

~El

Level 17
Joined
Jun 13, 2016
Messages
551
Not directly about to World Editor, but highly relevant to map development: allow multiple WC3 instances to connect to LAN from the same machine. Crucial for testing code for desyncs and other MP-only issues.

Also, take a look at this post I made a while ago:

Producer Update: Natives List

Maybe not the 'byte buffer' proposition, but not having bitwise functions is inane in this day and age. Re-implementing them in JASS is possible but the final implementions are very slow. Useful for many different things, especially in libraries.

Needs better functionality for persisting data still. At least being able read/write line-by-line from files instead of this Preload junk.

Re-interpreting type casts - e.g. re-interpreting a real as an int and vice-versa. Talking about raw memory representations without any conversion logic. Useful for save/load serializers.

Better hashing function, which is case sensitive and treats all characters separately. Even something as simple as CRC32 would be great. Useful everywhere since the StringHash function is prone to collisions.

Byte to Char and Char to Byte cast functions. Currently requires lookup tables to implement, which is slower than directly re-interpreting a string byte as an int. Old solutions also don't work for non-ASCII characters.

Native to get any object data field. TriggerHappy recently discovered a way to do this using extended tooltips, but it only works for a handful of fields.

Some form of "String Builder" or "String Buffer" or some other kind of native type to be able to build/modify strings without polluting the memory with intermediate products. This is really severe - trying to produce about 1 MB worth of Base64 encoded data takes up about 800 MB of intermediate string products in result. Useful for save/load.

Some form of dynamic allocation. Native structs, or dynamic array type, or whatever. Useful for everything.

More robust code reference type and natives to go along with it. Code arrays, ability to call code callbacks directly, etc. Passing arguments can be implemented with a stack, like ArgPushString, etc.

Ability to change font size in main display area.

Ability to hide/show player messages with triggers.

Ability to scale units/sfx in each individual axis direction, instead of just by size.

More than 16 terrain tiles per map (terrainers cry each time).

Ability to override unit color with rgb values vs using one of the pre-defined 25 playercolors.

CursorToMapPos function. Will be very useful for UIs and synergize with mouse natives very well.

Native to write to game log.

Dynamically change the model of a unit. This is already possible using some weird hacks, but should just be a native instead.

Fix SyncStoredString.

I think that's enough for now :)

If at least some of these get implemented, I'll be a happy man.
 

Kyrbi0

Arena Moderator
Level 44
Joined
Jul 29, 2008
Messages
9,487
This is a great thread; I don't care much for coding but I'm a huge fan of organization.

Question: I just noticed it's not just for JASS for also "the World Editor"... What kind of things are we allowed to suggest here? I mean there's that "Patch Wishlist" thread as well... But I have been compiling a list of Object Editor issues I would love to see addressed over time.
 
code arrays and a fast way to call them
fast binary operators.

+1 code arrays

Agreed, will add to the list.

* get screen mouse pos (terrain pos was added, which can be unprojected, but it's tedious)

Not to mention we need asynchronous mouse natives to properly make a smooth camera system. You don't want latency to affect camera movement. I suppose both synchronous and asynchronous natives should be implemented?

This is a great thread; I don't care much for coding but I'm a huge fan of organization.

Question: I just noticed it's not just for JASS for also "the World Editor"... What kind of things are we allowed to suggest here? I mean there's that "Patch Wishlist" thread as well... But I have been compiling a list of Object Editor issues I would love to see addressed over time.

I'm still working on the organization. I think I might separate the JASS requests in the "Open" section. I may also have to create pastebin entries for longer posts which suggest multiple ideas so I the relevant text will be obvious when linking.

The Object Editor is part of the World Editor so you can give feedback for it here. If someone wants to make/manage a new thread for general gameplay improvements which aren't necessarily related to modding (balance, widescreen, fixes ect..) then they can do that.

Not directly about to World Editor, but highly relevant to map development: allow multiple WC3 instances to connect to LAN from the same machine. Crucial for testing code for desyncs and other MP-only issues.

I think they are planning on this. We can already execute two instances in 1.30. Let's see if we can get any official word about it.

It will take me some time to go through your post and add each suggestion with links and information. I know others suggested similar things so I'll have to find their posts.

Oh, 2d arrays would be interesting.

I suppose, but would it just be bonus syntax for something we can already do with vJass. I don't imagine it providing much benefit for the time it would take to implement.
 

Kyrbi0

Arena Moderator
Level 44
Joined
Jul 29, 2008
Messages
9,487
The Object Editor is part of the World Editor so you can give feedback for it here. If someone wants to make/manage a new thread for general gameplay improvements which aren't necessarily related to modding (balance, widescreen, fixes ect..) then they can do that.
No, it's definitely related to modding; straight-up Object Editor concerns (y'know, like abilities that have wonky targetting restrictions, or misnamed fields, or hidden behaviors that mess things up, hardcoded nonsense, etc).

I have a few reasons to want to make a separate topic, but at the same time we don't want too many threads for Blizzard devs to have to go through... Hmm. I'll ponder it.
 
Level 12
Joined
Nov 3, 2013
Messages
989
Currently, you can change the team color on units, but there's no way to change the color on the minimap. e.g. if you change the color of Blue player's units to Red, they'll still be blue on the minimap since they're owned by the Blue player.

So in essence, what I want is the ability to change player colors, both for specific units, but it would also be nice to be able to just have multiple players that have the same color.


Atm there's no way make teams of a single color, e.g. team Red, Green, and Blue, where every player in the same team would have one the respective player colors.

Or changing player colors locally, like if you wanted to make a custom "display allay colors" setting for example. If there's two or more enemy factions, you might want to be able to differentiate between them instead of seeing all enemies as red, but at the same time there's no need to know their specific player color either.


It would also be useful for maps where you assign one or more computer AI player(s) to each user player, castle fight-esque maps (though castle fight actually has you own the spawned units), survival chaos, stronghold, etc.
 
Level 16
Joined
Mar 27, 2011
Messages
1,349
I'd like to see support for the .ogg audio file format. Warcraft 3 got a new sound engine. I wonder if it'd be much work to get it supported?

Main Reason for request: [Import] - Warcraft 3 Audio Formats

Also:
- .ogg is free and open source
- .ogg generally sounds better than .mp3

If this happened, it'd also be cool if sounds via triggers could be played via .ogg (instead of only .wav). Currently I use a trick and rename .mp3 files to .wav files, but this might not be applicable if using .ogg lol
 
Level 12
Joined
Jun 15, 2016
Messages
472
I'd like to request additional functionalities/native functions for the AI. There are several possible quality of life improvements which I believe can be done without breaking current scripts:

1. Increase flexibility of captain widgets (already thoroughly explained in this post).

2. Fix basic common.j functions for AI scripts: for example natives such as I2S, and natives for special effects cause maps to crash during loading time (both functionalities are needed for debugging purposes and require hacky workarounds). By the way, one good thing to say for patch 1.30 is that crashes from a faulty AI script will now generate an error message as opposed to previous patches.

3. AFAIK, pathing is still not solved, and some of hive's best and brightest tried implementing custom pathing detections, and failed mostly due to performance issues. A built-in pathing function will also be very helpful as an AI function, as unpathable routes cause a unwanted and unexpected behavior for AI captains. Two prime examples are attack captains getting stuck due to unpathable goal, and in case a map is initialized with player units separated by unpathable terrain (i.e. they can't reach each other), an arbitrary location is selected for the defense captain (since all non-worker units are automatically assigned to the defense captain). Something like this should probably do the trick:
JASS:
native PathExists takes real x1, real y1, real x2, real y2, [possible additional flags] returns boolean
// This function should check if there exists a path on the ground between point (x1,y1) and point (x2, y2).
// Possible additional boolean flags for water pathing/air pathing/unit blocking/doodad blocking etc.

Along with adding it to attack functions such as CommonSuicideOnPlayer in order to check possible pathing problems.

4. Custom base layout: I'm pretty sure the AI uses a predefined "map" of offsets from the starting location/town hall to build bases, having a function to access this offset map will allow creating smarter/predefined bases for the AI.
 
Level 5
Joined
Dec 20, 2008
Messages
67
Object Editor: Export/Import of object data: Exporting and Importing of single, multiple or all objects of a specific category
Jass: Add trigger for detecting gold/lumber trades and add native to set the trade increments (which is gameplay constant currently).
 
Level 31
Joined
Jul 10, 2007
Messages
6,306
I added this list to the other thread. Adding it here too I guess = P. Too many threads! D:

My not so comprehensive list


get unit stock initial cooldown remaining
get unit stock initial cooldown
set unit stock initial cooldown
set unit stock initial cooldown remaining
get unit stock cooldown
set unit stock cooldown
get unit stock cooldown remaining
set unit stock cooldown remaining

get unit decay time
set unit decay time
get unit remaining decay time
set unit remaining decay time

Currently, or as I last knew, missiles had a lifetime of 90 seconds. Once a missile expired, if it did not hit its target at that point, it automatically applied its damage to its target.

Currently damage is calculated either on impact or on launch (don't remember which). This will result in incorrect damage being applied to the target in some cases. To get the correct behavior, an attack should be created with a variety of values. When the attack impacts a target, damage should be calculated for that target using those values. This will give the correct behavior as the target's armor will be reflective of the time of impact and the attack's values will be reflective of the time of launch.

EVENT_ITEM_REMOVED
EVENT_ITEM_CREATED
EVENT_UNIT_CREATED

logical right shift

bitwise operators on the bytes type (will make cryptographic libraries easy)

why not just a new byte primitive?

EVENT_UNIT_REINCARNATED

GetWidgetLocation etc on an item, when that item is carried by a unit, will return that item's last position before it was being carried rather than its current position (the unit's position).

Currently the overhead of function executions is pretty abysmal. It would be nice to be able to actually
use things like ForGroup without destroying performance.

Lambda expressions (Java style ^)^)

Streams for arrays (just look at the javascript or java API) (full Scala reactive streams would be nice)
array.forEach(lambda)
array.map
array.filter

EVENT_PLAYER_UNIT_ACQUIRE_TARGET
nestharus/JASS

SetUnitFlyHeight without unit type flying being required
nestharus/JASS

bigint (probably can be a JASS lib)
nestharus/JASS

natives for working with sloped terrain
nestharus/JASS

Amount of resources actually spent on a unit through upgrades (total gold/wood cost)
nestharus/JASS

Day/Night Events
nestharus/JASS

All Players Loaded Map Event
nestharus/JASS

GetItemOwner (unit carrying item)
nestharus/JASS

GetLearnedAbilities (should return an array of abilities that the unit has learned)
nestharus/JASS

IsTerrainPathable apparently doesn't work
nestharus/JASS

Function overloading

Trade events
nestharus/JASS

Item ownership change events (unit/player)

TriggerRemoveEvent(trigger, event)

TriggerClearEvents(trigger)
Got this garbage right now because of no event removal --> nestharus/JASS

Allow TriggerRemoveCondition for currently evaluating condition inside of a trigger evaluation without
crashing the trigger -> Trigger v1.1.0.2

Some sort of instanceof operator
nestharus/JASS

EVENT_UNIT_DECAYED
EVENT_UNIT_EXPLODED
EVENT_UNIT_ANIMATED
EVENT_UNIT_STARTED_REINCARNATING
https://github.com/nestharus/JASS/blob/master/jass/Systems/Unit Event/script.j

A list of orders somewhere in native.j
nestharus/JASS

EVENT_ATTACK_IMPACT (will have a target point. From here, a custom library can define units within the range of impact and do things like special effects).

EVENT_ATTACK_RESOLVED

Introduce iterables, allowing to loop over something like a group without a ForGroup

A damage event isn't necessarily useful for a very comprehensive custom combat system. A custom combat system cares more about attacks than damage ; ). It also cares about when attacks are applied, not when damage is applied ^_-. From there, it can apply its own damage and acquire its own targets to apply the damage to.

For simpler cases, minimally, the source attack of the damage should be able to be acquired. This allows a map to calculate values and attach them to the attack and then let it fly. It'll be interesting to see how to weave spells, missiles, and melee attacks into some sort of common attack interface given that not all spells are attacks : ). Can think of it in terms of some spells can be wrapped and some spells can't: some spells implement the interface while others don't.


Now for my super wishlist <3
Many of these things can't really be coded in JASS effectively

Get Closest Tile Type (water, blight, etc)
Find the closest tile with a given type to a point.

Matrix Operations
Support creation of matrices size n,m and operations for them (addition, cross, dot, unit vector, etc) (only sensible ones)

Polygon (can be used with EVENT_ATTACK_IMPACT)
Support creation of polygons with n vertices and support checking if two polygons intersect and where, the area of an intersection between two polygons, and checking if a point is within a polygon. Polygons may be 3D. Given option to use polygon as an ubersplat or model with a texture.

Library for Intersections with Common Shapes (can be used with EVENT_ATTACK_IMPACT)
Support intersections of shapes given positions and rotations (do they intersect, where, and area of intersection). These shapes do not only include polygons, but ellipsoids, circles, cones, and so forth. Accept defined Polygons from Polygon library as well. Be sure to allow definitions of these shapes (ellipse for example) by things such as width, height, rotation, and phi or by focal points.

Library for Intersections with Motion (can be used with EVENT_ATTACK_IMPACT) (improved AI?)
Given a velocity [x,y,z] and acceleration [a,b,c] for a shape and then another velocity/acceleration for another shape, as well as locations, rotations, etc for both shapes, determine whether they intersect in an interval over a period of time, what time they intersect/where, what time they stopped intersecting/where, how much the intersected, how long they intersected, and the average area of intersection with respect to time.

Coordinate Transformation (really interesting/cool motions, mainly used in maze maps and for spells)
Support creating a basis in R^3 given a theta, phi, and linear transformation and support mapping coordinates from one basis to another, accounting for the change in theta (if basis one is rotated 30 degrees and basis two is 60 degrees, only rotate by an additional 30 degrees).

Custom Unit Formation (this definitely should not be done in JASS) (this will allow maps to define custom formations!!)
Support creating custom unit formations of n size with various position properties (like where a commander should go, siege units, and so forth) and allow them to be ordered about while maintaining the formation as much as possible.

Unit Clustering (this has an application for intelligent squad formation and improved AI)
Given properties such as target group count, minimum group count, maximum group count, minimum group size, maximum group size, target group size, maximum radius, minimum radius, target radius, maximum density, minimum density, target density, equal distribution, minimal distribution, and maximal distribution for a list of units, cluster them into appropriate groups as efficiently as possible.

Influence Regions (this has an application for things like morale systems and improved AI)
Dynamic influence by a force over an area. Be able to determine the net influence of any given point. This has a variety of applications. For example, it can state how dangerous, neutral, or safe an area is. It can also define conflict areas and shape what a battle looks like.

A package manager with the ability to publish resources, declare dependencies, and allow easy installation of resources + dependency fetching. Detect when updates occur and allow users to update or not (think npm). The community has needed this for such a long time, lol.

Note:
If we are going to be allowed to return arrays and accept arrays, shall we deprecate
forces and groups and just work with player arrays/unit arrays instead? Same goes with widget groups.

Should some natives be added to accept arrays instead?


edit
Added the following

get unit decay time
set unit decay time
get unit remaining decay time
set unit remaining decay time

EVENT_ATTACK_IMPACT (this is actually SUPER useful)
EVENT_ATTACK_RESOLVED
 
Last edited:
Level 8
Joined
Jul 7, 2011
Messages
264
Add new Weapon Type: Attack in Movement. So you can make units that attack while they are moving from place to other. Can make for some war tank similar to Red Alert 2, and other games.
 

Wrda

Spell Reviewer
Level 25
Joined
Nov 18, 2012
Messages
1,864
Remove WE limits on objects
That sounds unreasonable. There are reasons for which there's such a limit, one of them is performance issues, although the limit could be increased.
We want a damage detection system/ or just give us a way to trace attack damage.
And also detecting between normal, spell and triggered damage would be great.
I think this native could prove useful.
JASS:
native TriggerRegisterDestDeath takes trigger whichTrigger, boolexpr filter returns event
Also being able have 2 abilities of the same base ability in the same units (like it is achieved with Channel ability with - Base Order ID) would be great.
 

~El

Level 17
Joined
Jun 13, 2016
Messages
551
That sounds unreasonable. There are reasons for which there's such a limit, one of them is performance issues, although the limit could be increased.

Virtually all and any performance-related limits can and have been bypassed by mapmakers in the past innumerable times. If people want to do, they will do it. It's on the mapmaker if his map doesn't perform well.

As it stands, these limits are entirely artificial, and they don't serve any purpose whatsoever other than to inconvenience the user.
 
Level 7
Joined
Jun 5, 2018
Messages
180
New natives were presented, but not game constants for the patches 1.29+. Many constants lists such as unit types ones are old and incomplete. I also have another post in Producer updates: natives list thread.

There are still many unit types that aren't be defined, e.g. UNIT_TYPE_WARD. So the unit identification for the missing types becomes a bit difficult and complex.

I think the missing and independent constants are (red = critical):
vJASS:
// Unit types
UNIT_TYPE_WARD
UNIT_TYPE_NEUTRAL
// Sound types
SOUND_TYPE_3D
SOUND_TYPE_UI

Missing natives:
vJASS:
native IsDestructableDebris takes destructable d returns boolean

Maybe other constants are still incomplete.
 
Last edited:

deepstrasz

Map Reviewer
Level 68
Joined
Jun 4, 2009
Messages
18,706
I would like to request the removal of hero glow from units like the eredars. I'm referring to the non-hero units (I mean excluding Archimonde and Kil'jaeden). Also, I think Archimonde doesn't have hero glow, Mannoroth certainly doesn't. They should have that. :D
 
Level 6
Joined
Aug 28, 2015
Messages
213
I have some requests towards the minimap
JASS:
MINIMAP_ICON //Is an icon/image on the minimap that can be handled via triggers

native CreatePlayerMinimapIcon takes integer PlayerId, string ".Blp", real PosX, real PosY, boolean IsVisible return MINIMAP_ICON
native ChangePlayerMinimapIcon takes integer PlayerId, MINIMAP_ICON, string ".Blp", real ScaleX, real ScaleY, real RotationDegree return nothing
native ChangePlayerMinimapIconColour takes integer PlayerId, MINIMAP_ICON, real Red, real Green, real Blue, real Alpha return nothing
native SetPlayerMinimapIconPosition takes integer PlayerId, MINIMAP_ICON, real PosX, real PosY return nothing
native EnablePlayerMinimapIcon takes integer PlayerId, MINIMAP_ICON, boolean IsVisible return nothing
native RemovePlayerMinimapIcon takes integer PlayerId, MINIMAP_ICON return nothing

native ResetPlayerMinimapBlackMask takes integer PlayerId return nothing
 
Last edited:
Level 8
Joined
Jul 7, 2011
Messages
264
I made a compilation of some viable suggestions I think for topic, believing without intention to offend that @TriggerHappy will be too lazy to review all post from the old topic Wishlist.

- In the Object Editor have different cost options such as gold, wood and variables of Trigger Editor for skills, unit training, etc.
- Something I believe is not very laborious, I wish it had. No need to change modem settings to host a match. It's the only game that did not enter\can not entering into my lobby because of it.
- Add options in orb effect abilities, to be able to stack with other orb effects in the Object Editor and in the Trigger Editor.
- Have new triggers that makes the effect of skill directly, without the need for dummys.
- I wish that have in the options in the object editor, have the name and description available in several languages. Have in the forms, place them to fill in English and others to fill in other languages. If the user is using Warcraft 3 in a language other than not be in the English, and the map is available in multiple languages with the same file. It can see in the name and description on the language that it defined in Warcraft 3.
- Buffs (Debuffs) with skill that has defined negative value (as example Endurance Aura), to show text buff name in red instead of green, having system that recognizes when the ability improves or worsens the units.
- Have in the object editor and in the trigger editor, have features that increases and decreases the cooldown of the skills. For example: Octarine Core of Dota 2, reduces 25% cooldown of skills and items.
- Inside the World Editor, have a string color generator system, etc.
- In World Editor have an easy option to make so that the map allows more than 12 selected units.
 
Last edited:

Wrda

Spell Reviewer
Level 25
Joined
Nov 18, 2012
Messages
1,864
- Have new triggers that makes the effect of skill directly, without the need for dummys.
While this would indeed be a good thing, I doubt how they are going to come up with something like that. Well, like, the trigger doesn't magically do what you want it to do as an effect since there are tons of them.

- I wish that have in the options in the object editor, have the name and description available in several languages. Have in the forms, place them to fill in English and others to fill in other languages. If the user is using Warcraft 3 in a language other than not be in the English, and the map is available in multiple languages with the same file. It can see in the name and description on the language that it defined in Warcraft 3.
Who types the names and descriptions of everything in a different language other than English? Does the map maker do it? Or is it a translator? These are questions that need to be answered. Otherwise it seems like it is going to be counterproductive since English is a universal language and almost everyone knows it, users could learn from there, although some maps are in a lame language...

- Buffs (Debuffs) with skill that has defined negative value (as example Endurance Aura), to show text buff name in red instead of green, having system that recognizes when the ability improves or worsens the units.
That existed since Stone Age? Weird, at least on items with give negative attributes show red text.

- Have in the object editor and in the trigger editor, have features that increases and decreases the cooldown of the skills. For example: Octarine Core of Dota 2, reduces 25% cooldown of skills and items.
There is in object editor since Stone Age, in trigger editor it is recent.

- Inside the World Editor, have a string color generator system, etc.
This is completely unnecessary, just google colorpicker by webpageFX and you'll find this one good to make coloured texts.
 
Last edited:
Level 11
Joined
Nov 23, 2013
Messages
665
Who types the names and descriptions of everything in a different language other than English? Does the map maker do it? Or is it a translator? These are questions that need to be answered. Otherwise it seems like it is going to be counterproductive since English is a universal language and almost everyone knows it, users could learn from there, although some maps are in a lame language...
Many people use English, but not everyone. I know a lot of people who cannot play a game, read a book a watch a movie if it's not in their own mother tongue. As a mapmaker, I would be happy to provide an English version of my maps for English speakers such as Hivers, but I would like my fellow countrymen who don't read English to be able to play them too.
Therefore I totally support the idea of a multilanguage option in triggers and objects editor. Not everyone would want to use it but many people would benefit from it! :)
 
Level 14
Joined
Jun 15, 2016
Messages
749
WE need more essential things, such as:
1. Multiple map windows:
- Able to select/deselect (all) multiple data objects and triggers and copy/paste/cut them to correlate OE tab of another map windows. The most "important things" is allow users to change manually object ID of custom units if it is valid.
- Allow users to identify which data variables being used or not related to any custom triggers, even variables created by vJass or Wurst. Allow them to delete all of unused resources at once.
- Allow users to delete custom spells created by older WE versions which can cause crash immediately. Also fix the crash where the map has many custom object data by expanding that limit.
2. More Interface:
- Built-in comprehensive list with easy explanation of each trigger function, library such as Jass or Wurst (how it work, require which parameter...) so new people can easily catch up or cant be missed out. It also allow more creative and better modding experience. Something like a programming wiki.
- More advanced built-in map optimization to reduce loading time and map size.
- Allow users to import all custom resources with custom paths, similar to what we see in NewGenJass v5.
3. More unique built-in function, native:
Note: So people can mainly rely on each universal system.
- Timed effect, Timed ability, Timed model animation.
- Action counting/detection.
- Unit event, Damage detection.
- Knockback, Cooldown.
- Detect Terrain type, pathability.
- Detect object speed such as movement, attack.
- Transitional sky or weather type, not limit with only 1 type. For example, change sky or weather when moving camera in different region.
- More tile-set spaces to use.
4. Better AI Editor:
- Not limit with only 3 chosen heroes.
- Allow to edit them with text or allow to open/edit .AI file type, right inside WE because that is faster and more effective.
5. Other:
- Unlimited doodad model sizes.
- More terrain editor editing technique.
- Trigger leak detection, better crash report.
 
Level 8
Joined
Jul 7, 2011
Messages
264
A how to have an item and / or skill that reduces even cooldown? For example, I buy an item to reduce the cooldown of the hero's abilities I'm playing. I suspect that you are referring to the Engineering Upgrade, however this skill works the way it is to replace the current skill of the hero or item with that of the Engineering Upgrade skill. That is, does not have features that directly edits cooldown of the heroes skills or items.

I'm doing "Custom Hero with Enfos and with only one team", and I discovered a bizarre error, if I put it to create for the Neutral Hostile player, Trigger does not work correctly, but if I set it to 24 player or another, it works.
Developers of Blizzard if want, download this map, there in the Trigger Editor, go Spawn Creeps -> Create Creeps change in unit create of player 24 to Neutral Hostile, done this, test and is to show error.

Add option in the Trigger Editor for players, the same information appearance as hostile creeps (Neutral Hostile).
 
Level 12
Joined
Nov 3, 2013
Messages
989
A native to check whether a unit has an ability toggled/turned on/off.

So for an autocast ability it would return true/false depending on whether the ability is on auto-cast or not. For a toggle ability (e.g. defend or mana shield) it would check whether the ability is toggled on/off. For morphing abilities it would check whether the unit is morphed or not. Root/uproot same deal.

something like this:
JASS:
native IsAbilityToggledOn takes unit whichUnit integer abilityId returns boolean


Currently you can work around it by detecting order ids and adding the units to unit groups, hashtable, etc.
 
Level 7
Joined
Jun 5, 2018
Messages
180
A request for world editor:
Make it possible to customize the user-interface (UI) for a map. I think it is very important for people who want to develop a map with ultrahigh quality. This is also the trend of the wc3 modding.
 
Level 12
Joined
Nov 3, 2013
Messages
989
Edit: A couple of months late edit, but I just saw this in Producer Update: Natives List:

JASS:
    unitevent EVENT_UNIT_BUFF_APPLIED
    unitevent EVENT_UNIT_BUFF_EXPIRED

And other buff-related stuff as well.


__________________________________________________________________________________


I think two new events could be handy, a unit gains a buff and a unit loses a buff. Ideally also with the source of the buff. (So a new event response as well)


So for instance, if a unit receives a buff from an aura, you'll be able to use GetBuffSource takes unit buffedUnit integer buffId returns unit

Also, an "Ability being cast" equivalent event response for buffs would be nice to go along with that as well.

So presumably it would look like this: constant native GetBuffId takes nothing returns integer


Now I don't know if wc3 actually keep track on what the source of a buff was, so maybe one will only be able to use GetBuffSource as an event response instead of being able to check the source of any buff on any unit at any time, but it would still be useful I think. (Since it can be worked around.)
 
Last edited:
Level 15
Joined
Dec 21, 2013
Messages
910
Make a text based object editor (or whatever it called) Typing is faster than clicking :p Idk where i get this idea but it sounds great when i thought it but i forget what it is -_-
 
Level 6
Joined
Aug 28, 2015
Messages
213
I just recognize that the "Unit Enters Region" event with the "Region Contains Unit" Condition still use to fail many times, so I would like to either fix this that the condition will always return true or have a "Triggering Region" variable for this kind of event so we can check which region is entered.
 
Level 18
Joined
Jan 1, 2018
Messages
728
apsyll said:
have a "Triggering Region" variable for this kind of event
This already exists: constant native GetTriggeringRegion takes nothing returns region

Keep in mind that the region type in JASS is not usable with GUI, and what's called a region in GUI is really the rect type in JASS.
"Unit Enters Region" event from Blizzard.j:

JASS:
function TriggerRegisterEnterRectSimple takes trigger trig, rect r returns event
    local region rectRegion = CreateRegion()
    call RegionAddRect(rectRegion, r)
    return TriggerRegisterEnterRegion(trig, rectRegion, null)
endfunction
 

deepstrasz

Map Reviewer
Level 68
Joined
Jun 4, 2009
Messages
18,706
I don't remember if it's been mentioned or how it is right now in the most recent PTR but it would be nice to have a scrollbar for the map's description. Many melee (and not only; I'm not sure if also Blizzard ones though) have a description ingame which cannot be seen wholly.
 
Level 11
Joined
Nov 23, 2013
Messages
665
Some suggestions, some of which were already made in other threads, but I think I'm not the only wanting this:
- Allow advanced building (like Warcraft 2 and Starcraft). With one advanced building button or perhaps even more.
- Increase the max number of units selection (up to 24? 36? using tabs like Starcraft II?)
- Allow multiple language managing: wherever there is text (map description, object editor, triggers displaying text (quests, dialogs, floating text…), make an option to display one or more columns with the text equivalent in other language(s).
- Take advantage of widescreen support to add new features such as extra slots of action buttons (or even extra slots of hero inventory?)
 
Level 30
Joined
Mar 14, 2014
Messages
1,215
"Request Features for JASS and the World Editor"

Well i have nothing to do with the JASS-Language, i however like to experiment and play around with the World Editor.

So Here's a Request that i made some time ago:
Wish:
1.Make it possible to use something else than "Mana".
For Example: Warrior using Mana to strike the ground? No he should instead use "Rage" as his/her fuel.
And make it possible to color it like we want.

2.Make it easier to raise and lower the water level, instead of constantly switching between maps with different Water levels, after a while you will get frustrated with it.

3.Make it possible to change the color of Water in different places of the map instead of coloring the water of the entire map.
For Example: I want Poisonous Green Water in one place, but i want clear normal water in another, without using Doodads for this.

Of course it is a bit more demanding than requesting.
 
Status
Not open for further replies.
Top