[Feedback] Request Features for JASS and the World Editor

Level 24
Joined
Nov 9, 2006
Messages
2,558
I don't know, i don't think last hitting = ownership is really a cause for concern.
Just pull back your units if you don't want to give/take ownership.
The alternative is to release the unit as neutral victim.
From my experience with Warcraft Royale, the way neutral victim works at the moment is pretty clunky and gives ownership to the unit walking into range, not counting units already in range.

Here is an idea how teams could solve the unit distribution:
-Two allied players enter creep camp and attack it.
-The "jailor" creep releases the cage upon death, releasing the unit inside.
-The now free unit changes ownership to the (owner of the unit) closest to the cage, the condition being that the unit belongs to someone in the team that last hit the "jailor" creep.
-Last hitting still matter, but it's easier for teams to decide who gets the cage by simply having a unit closer to the cage. Sort of like how the closest hero can pick up items faster.
 

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
-Last hitting still matter, but it's easier for teams to decide who gets the cage by simply having a unit closer to the cage. Sort of like how the closest hero can pick up items faster.
Still pretty random as small units like Ghouls, Footmen might get there to attack the ranged creeps. Items, you can give to an ally, units, currently not without them still belonging to the owner and without the owner sharing control of all units and still having food slots occupied.
 
Level 24
Joined
Nov 9, 2006
Messages
2,558
What's random about it?
If a HU player and an NE player were allied and crept a "unit drop camp" together, then the NE player would simply move the archer up towards the cage and press hold position.
Regardless of who last hit the NE player would recieve the caged unit.
That would be the proximity solution, which is slightly more complicated, but more fair.

The simple solution is just last hit = ownership. Basicly if two players crept a camp, the one who didn't desire the unit would just attack the other creeps to avoid last hitting. Of course you can steal it from your allies, but then again stupid behavior has always been possible in teams, like item stealing, xp leeching, teamkilling, etc. Again nothing random with those things, except the fact that you might play with random allies that can be stupid/toxic.
 

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
The difference would be that you don't gain the benefit from last hitting with Coil or Crit.
Well, that would kill the randomness or danger for the last hit not to be intended and whomsoever takes the key rune will have the neutral unit under control.
An interesting mechanic would be for the rune to not be visible or allowed to be taken by an enemy hero.
 
Level 7
Joined
Feb 17, 2018
Messages
110
Here's my wish list:
1. implemented Damage Detection system like:
Events
Unit takes damage (generic unit event)
Conditions
Damage type of damage taken is Fire equals true
Attack type type of damage taken is Spell equals true

Actions


2. Ability to get unit’s attack damage (not base damage)
Actions
Set AttackDamageInteger = Attack damage of triggering unit (including bonuses) <- green numbers

3. Also ability do search while searching abilities,variables when triggering in GUI.
4. Auto leak remover so I don’t have to add custom scripts.
5. Automaking of DISBTN (shaded icons) icons to make map weight less.
6. Ability to make different types of cliffs on 1 landscape type.
7. Detetct when attack projectile was finally launched for ranged units, and when attack was landed for all kind of attacks.
8. Ability to get ability (spell) by it X and Y for a unit that has the ability
9. Unit - refresh ability cooldown abilty’s (X; Y) for triggering unit

10. Ability to set ability cooldown remaining:
Unit - set ability ( ability name ) cooldown remaining = (ability ( ability name or variable ) cooldown remainig for triggering unit arithemetics (cooldown remainig for ability for unit - 1)

11. Edit as many object editor field via triggers as possible

12. Extra functionality for “Channel” spell like:
1) Ability to use any anymation or no animation at all (at the moment forces spell animation)
2) Fileld like “Interrupts current order: True/False”
3) Make it possible for channel to put an “empty” buff/debuff
etc.

13. For every ability a new fileds like “Buff/Debuff is positive on allies/enemies: True/False”

14. Detect passive proc
15. If ability procs and cooldown is set to a value above 0 so ablity won't proc untill cooldown is over (for all passives not oly orb of lightning)

16. Ability to set for orb-like abilities “orb effect: True/Fasle”

17.Individual (for a stand alone unit) research uogrades.
 
Last edited:
Level 16
Joined
Jul 16, 2007
Messages
1,387
Quality of life improvement for custom made maps for modders and players:

-Universal camera control system (-camera ####)
With the ability to tick/untick while we make maps in the Editor.

*If you have other suggestions like this, please add to this list.
 
Level 12
Joined
Jan 2, 2016
Messages
972
Personally I would love to get a new event "Attack is launched", which happens the moment a unit launches a missile, or for melee units, just as the unit deals its damage, although that would be kind of obsolete, as we can just use "A unit takes damage".
However, this event will be quite useful for ranged units, as "A unit is attacked" happens too early and can be exploited by spamming the "Stop" order. And "A unit takes damage" happens way too late for ranged units.
When I was making my Custom Multishot, I originally wanted to use "Attack is launched" event, but due to the lack of one such, I had to use workarounds, that are quite clunky.

Also, I'd really love to have "Missiles" added to JASS, with functions like
JASS:
function CreateMissileTargeted takes unit source, unit target, real damage, real speed, string model, code onHitFunc returns missile
function CreateMissileToLocation takes unit source, real targetX, real targetY, real aoe, real damage, real speed, string model, code onHitFunc returns missile
That will truly make coding some custom spells much easier and lighter (resource wise), and custom libraries will no longer be needed for this purpose.
 
Level 3
Joined
Mar 8, 2006
Messages
26
I think a way to modify in-progress unit auto attack cooldowns would be a great addition. For example, if a unit swings and has a swing cooldown of 2 seconds, I want to be able to reset the cooldown to 0, or maybe increase the cooldown to 5 or any value.

Code:
BlzSetUnitCurrentAttackCooldown(unit, cd, weaponIndex)
BlzGetUnitCurrentAttackCooldown(unit, weaponIndex)
 
Level 17
Joined
Nov 18, 2012
Messages
1,460
Personally I would love to get a new event "Attack is launched", which happens the moment a unit launches a missile, or for melee units, just as the unit deals its damage, although that would be kind of obsolete, as we can just use "A unit takes damage".
However, this event will be quite useful for ranged units, as "A unit is attacked" happens too early and can be exploited by spamming the "Stop" order. And "A unit takes damage" happens way too late for ranged units.
When I was making my Custom Multishot, I originally wanted to use "Attack is launched" event, but due to the lack of one such, I had to use workarounds, that are quite clunky.

Also, I'd really love to have "Missiles" added to JASS, with functions like
JASS:
function CreateMissileTargeted takes unit source, unit target, real damage, real speed, string model, code onHitFunc returns missile
function CreateMissileToLocation takes unit source, real targetX, real targetY, real aoe, real damage, real speed, string model, code onHitFunc returns missile
That will truly make coding some custom spells much easier and lighter (resource wise), and custom libraries will no longer be needed for this purpose.
I think something has been said about this already, but I would make a few adjustments and more details:
JASS:
//both would trigger EVENT_MISSILE_LAUNCHED
native CreateMissile takes unit source, string model returns missile
//this one doesn't check for projectile launch X/Y/Z offsets from the unit.
native CreateMissileEx takes real x, real y, real z, string model returns missile

//this is a missle launch that suicides on widget/point and gets destroyed, and then removed.
//would trigger EVENT_MISSILE_IMPACT at the target/point, both check for projectile impact Z of the target if any
native MoveMissileToWidget takes missile whichMissile, widget target, real speed, real arc, real aoe, boolean homing returns nothing
native MoveMissileToPoint takes missile whichMissile, real targetX, real targetY, real speed, real arc, real aoe returns nothing

//not sure if this one will be needed, but let's throw it here.
native SetMissileDamage takes missile whichMissile, real damage, attacktype at, damagetype dt, weapontype wt returns nothing

//this is here so you can emulate missiles which have a target, but will collide with something on the way.
native MissileCollideUnits takes missile whichMissile, real collision, boolean onUnits, boolean onBuildings, boolean onHeroes returns nothing
native MissileCollideDestructables takes missile whichMissile, real collision, boolean onDestructables, boolean onDoodads returns nothing

//these natives below should make MoveMissileToWidget/Point stop, basically override
//you'd only use this if you want to make your own missile system, like if you wanted to make the projectile
//run around the source unit for a while and then use MoveMissileToWidget/Point or not
native SetMissileX takes missile whichMissile, real newX returns nothing
native SetMissileY takes missile whichMissile, real newY returns nothing
native SetMissileZ takes missile whichMissile, real newY returns nothing

native GetMissileX takes missile whichMissile, returns real
native GetMissileY takes missile whichMissile, returns real
native GetMissileZ takes missile whichMissile, returns real

native GetTriggerMissile takes returns missile
native GetMissileModel takes missile whichMissile returns string
native GetMissileSource takes missile whichMissile returns unit
native GetMissileTarget takes missile whichMissile returns widget

//Triggers EVENT_MISSILE_IMPACT
native DestroyMissile takes missile whichMissile returns nothing

native RemoveMissile takes missile whichMissile returns nothing
Also natives to change colour, animation and size of the missiles.
There's no way to manipulate doodads, things like doodad enumeration (pick every doodad), creation, removal and others would be absolutely great.

Please give a skill-shot type ability.
What would that be like?
 
Level 13
Joined
Nov 4, 2006
Messages
1,217
i would like to have different auras (or maybe also other spells for that matter) based off the same base aura to stack, maybe by setting different IDs and also the ability to choose on whether it's a buff or debuff, when it's shown on units.
 
Level 26
Joined
Jul 18, 2010
Messages
1,826
i would like to have different auras (or maybe also other spells for that matter) based off the same base aura to stack, maybe by setting different IDs and also the ability to choose on whether it's a buff or debuff, when it's shown on units.
Most abilities when not all do stack when having unique buffIds (in the up to date version).


I'd like to be able to get the orderId the local player currently wants to order while he is selecting the target for it. This Getter would make it more easy to create custom Frames that can be interacted/targeted with default abilities or items or it can be used to create custom indicator images. Through I think it should be async to not have a negative impact on the gameplay.

The frame api seem to miss the feature to populate menus/lists with items during game.

Get the mainfocus unit in group selection.

Command Button Index used for an ability owned by an unit. This should be the place the ability is shown in the command card. It can differ from the setup position when there are multiple abilities requesting the same slot.

In 1.31 one can not diretcly access many game frames:
dayTime clock
hp/mp (below portrait)
idle worker button
chat input
selected unit group frame
buffs
dead zone at the right bottom behind the command buttons
Inventory Title
Inventory Background when having something selected that has no inventory
Background Textures from ConsoleUI (that is only a problem cause of the strong connections to other frames)
Resource Bar Icons
Helper Message for Current Action (target has to be hero, select target)
Unit Hover Info

GetMouseX/Y on Screen
 
Last edited:
Level 5
Joined
May 10, 2018
Messages
125
I think something has been said about this already, but I would make a few adjustments and more details:
JASS:
//both would trigger EVENT_MISSILE_LAUNCHED
native CreateMissile takes unit source, string model returns missile
//this one doesn't check for projectile launch X/Y/Z offsets from the unit.
native CreateMissileEx takes real x, real y, real z, string model returns missile

//this is a missle launch that suicides on widget/point and gets destroyed, and then removed.
//would trigger EVENT_MISSILE_IMPACT at the target/point, both check for projectile impact Z of the target if any
native MoveMissileToWidget takes missile whichMissile, widget target, real speed, real arc, real aoe, boolean homing returns nothing
native MoveMissileToPoint takes missile whichMissile, real targetX, real targetY, real speed, real arc, real aoe returns nothing

//not sure if this one will be needed, but let's throw it here.
native SetMissileDamage takes missile whichMissile, real damage, attacktype at, damagetype dt, weapontype wt returns nothing

//this is here so you can emulate missiles which have a target, but will collide with something on the way.
native MissileCollideUnits takes missile whichMissile, real collision, boolean onUnits, boolean onBuildings, boolean onHeroes returns nothing
native MissileCollideDestructables takes missile whichMissile, real collision, boolean onDestructables, boolean onDoodads returns nothing

//these natives below should make MoveMissileToWidget/Point stop, basically override
//you'd only use this if you want to make your own missile system, like if you wanted to make the projectile
//run around the source unit for a while and then use MoveMissileToWidget/Point or not
native SetMissileX takes missile whichMissile, real newX returns nothing
native SetMissileY takes missile whichMissile, real newY returns nothing
native SetMissileZ takes missile whichMissile, real newY returns nothing

native GetMissileX takes missile whichMissile, returns real
native GetMissileY takes missile whichMissile, returns real
native GetMissileZ takes missile whichMissile, returns real

native GetTriggerMissile takes returns missile
native GetMissileModel takes missile whichMissile returns string
native GetMissileSource takes missile whichMissile returns unit
native GetMissileTarget takes missile whichMissile returns widget

//Triggers EVENT_MISSILE_IMPACT
native DestroyMissile takes missile whichMissile returns nothing

native RemoveMissile takes missile whichMissile returns nothing
Also natives to change colour, animation and size of the missiles.
There's no way to manipulate doodads, things like doodad enumeration (pick every doodad), creation, removal and others would be absolutely great.


What would that be like?
There should be a callback function as the parameter of the Missile function, triggered as the missile hits the target.
 
Level 12
Joined
Jan 2, 2016
Messages
972
JASS:
//not sure if this one will be needed, but let's throw it here.
native SetMissileDamage takes missile whichMissile, real damage, attacktype at, damagetype dt, weapontype wt returns nothing
Ofc it will be needed!
Just look at this:
JASS:
//...
set missile = CreateMissile(s, m)
call SetMissileDamage(missile, d, aT, dT, wT)
//...
and compare it to this:
JASS:
//...
set missile = CreateMissile(s, m)
set id = GetHandleId(missile)
call SaveReal(Table, id, 'amnt', d)
call SaveInteger(Table, id, 'atyp', aT)
call SaveInteger(Table, id, 'dtyp', dT)
call SaveUnitHandle(Table, id, 'srce', s)
//...

function OnMissileHit takes nothing returns nothing
    local integer id = GetHandleId(GetEventMissile())
    local real d = LoadReal(Table, id 'amnt')
    local attacktype aT = ConvertAttackType(LoadInteger(Table, id, 'atyp')
    local damagetype dT = ConvertDamageType(LoadInteger(Table, id, 'dtyp')
    call UnitDamageTarget(LoadUnitHandle(Table, id, 'srce'), GetTriggerUnit(), d, true, true, aT, dT, null)
    call FlushChildHashtable(Table, id)
endfunction

function InitTrig_MissileInit takes nothign returns nothing
    local trigger MissileInit = CreateTrigger()
    call TriggerAddMissileEvent(MissileInit, MISSILE_ON_HIT_EVENT)
    call TriggerAddAction(MissileInit, function OnMissileHit)
endfunction
The syntax may be a bit off, but you get the idea. It will be an immense amount of work to just make a missile deal damage (which should be it's core functionality for most cases) without this function.
Even if it's done partialy the way I'm suggesting (with an onHit event argument, which I think will be a lot better), it will still be more difficult to make missiles complete their main function:
JASS:
function OnHit takes nothing returns nothing
    local integer id = GetHandleId(GetMissileHit())
    local real d = LoadReal(Table, id 'amnt')
    local attacktype aT = ConvertAttackType(LoadInteger(Table, id, 'atyp')
    local damagetype dT = ConvertDamageType(LoadInteger(Table, id, 'dtyp')
    call UnitDamageTarget(LoadUnitHandle(Table, id, 'srce'), GetTriggerUnit(), d, true, true, aT, dT, null)
    call FlushChildHashtable(Table, id)
endfunction

//...
    set missile = CreateMissile(s, m, function OnHit)
    set id = GetHandleId(missile)
    call SaveReal(Table, id, 'amnt', d)
    call SaveInteger(Table, id, 'atyp', aT)
    call SaveInteger(Table, id, 'dtyp', dT)
    call SaveUnitHandle(Table, id, 'srce', s)   
//...
 
Last edited:

311

311

Level 4
Joined
May 12, 2019
Messages
65
-Add a way to change damage type of every spell in the game
-Add a way to add fields not normally on spells (example add a stun, damage over time, aoe ) to every spell, even if not in the object editor(would be best) but if not at least by triggers
-Unit takes damage event
-Add a way to modify your damage type with triggers(not change the type) for example your damage type stays the same for you, but you do 10% more to light armor(noly you do not anybody else even if they have same damage type as you
-Add a way to make better UI (though they did kind of say this was coming) if its like sc2, thats good enough, I just want an easier way to make skill trees.
 

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
I'd like icons for orb effect item abilities not to show as disabled but as passive.

orbFXPassiveLook.png
 
Level 12
Joined
Jan 2, 2016
Messages
972
There is already an event that detects when a unit takes damage but it's for specific units only. If you want to make it generic use this action :
  • Trigger - Add to (This trigger) the event (Unit - (Triggering unit) Takes damage)
Is that how it's done? Usually I convert the trigger to Jass and create the event there, as I couldn't find out how to do it in GUI.
 
Level 17
Joined
Nov 18, 2012
Messages
1,460
No it's not. That's how it WAS done, but still it isn't generic event. Blizzard added a much more simple way.
Use EVENT_PLAYER_UNIT_DAMAGED, to modify, get the amount of damage being dealt after all armor reduction and defense type calculations.
Use EVENT_PLAYER_UNIT_DAMAGING to get the pure amount of damage, without any modifications.
JASS:
call TriggerRegisterPlayerUnitEvent(gg_trg_MyTrigger, Player(0), EVENT_PLAYER_UNIT_DAMAGED, null)
That's for all units owned by red.
Don't ask me why it's not available in GUI yet.

-Add a way to change damage type of every spell in the game
-Add a way to add fields not normally on spells (example add a stun, damage over time, aoe ) to every spell, even if not in the object editor(would be best) but if not at least by triggers
-Unit takes damage event
-Add a way to modify your damage type with triggers(not change the type) for example your damage type stays the same for you, but you do 10% more to light armor(noly you do not anybody else even if they have same damage type as you
-Add a way to make better UI (though they did kind of say this was coming) if its like sc2, thats good enough, I just want an easier way to make skill trees.
No, no one wants to have 200 fields of ability for that, that's a mess. For that matter what we need and I've already posted somewhere is the possibility of getting the ability that damaged the target, and then you can already modify damage type and attack type and the weapon type of that damage dealt, keeping intact the ability on object editor. Many new natives aren't avaiable yet in GUI, and modifying some unit fields don't work yet.
About UI... well it's really complicated indeed.
 

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
Separate browsers for the import manager and map open/save window. I have imports on a disk and the maps on the OS drive because WcIII needs maps to be there to run them through the game.
Every time I want to import something or save a map as a different file I have to go to the proper locations because all browsers (including object editor's) share the same location memory.
 

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
Since (terrain) boundaries are basically ground+air pathing blockers, I'd really want a transparent version as the current black square look is terrain aspect breaking.
Of course, if it can be skinned to become transparent/invisible, then that's great.
 
Level 6
Joined
Mar 7, 2011
Messages
124
I wonder what you all think about a Blz vanilla day-night event? I'd recommend expanding the API with two events EVENT_GAME_DAY EVENT_GAME_NIGHT, as this will allow GUI implementations to infer their most common parameters from the event type. You can currently build your own version of this event via scanning or around other vanilla functionality, such as the Night Elf Moonwell, but it'd be nice to have it out of the box without any 3rd party abstractions (which have functional differences and may not be version safe). I think that the day-night cycle is one of the more unique mechanics to WC3's engine, but, right now, customization around it is limited due to its tight API. Personally, I think providing this natively could really pave the way for some interesting and new custom game mechanics

I posted this in another thread already, but I forgot that thread had been phased out for suggestions. It'd be useful to have async versions of the GetTriggerPlayerMouseX, GetTriggerPlayerMouseY functions (which currently are synchronized around the trigger player, and only work in response to the corresponding event). There are async functions for many of the other player gamestates, ex getting or setting camera position and just setting mouse position, so having async getters for player mouse position would supplement a similar, fairly specific, niche. I wonder if you might provide the async Mouse API as JASS only, to keep the sync Mouse API as straightforward as it is currently

I personally would really love to get access to the logic that converts a terrain coordinate (x, y) to their relative indices (xi, yi). Dealing with the edge logic of a tiles dimensions (which go 64.0...01 - 192 with soft lower and hard upper bounds) combined with float precision/rounding is kinda tricky, but more problematically, its difficult to be consistent with the implementation Blz developed for GetTerrainType native. That inconsistency can be problematic for the map maker, without them having the right tools to deal with it. For example, if I represent all WC3 tiles as either open space or square geometries, then implement a collision system on top of that, its important that my custom collision system agrees with the native terrain API
 
Level 17
Joined
Nov 18, 2012
Messages
1,460
I wonder what you all think about a Blz vanilla day-night event? I'd recommend expanding the API with two events EVENT_GAME_DAY EVENT_GAME_NIGHT, as this will allow GUI implementations to infer their most common parameters from the event type. You can currently build your own version of this event via scanning or around other vanilla functionality, such as the Night Elf Moonwell, but it'd be nice to have it out of the box without any 3rd party abstractions (which have functional differences and may not be version safe). I think that the day-night cycle is one of the more unique mechanics to WC3's engine, but, right now, customization around it is limited due to its tight API. Personally, I think providing this natively could really pave the way for some interesting and new custom game mechanics.
We already have Time of Day event, why would we possibly need this? Isn't it redundant?

I personally would really love to get access to the logic that converts a terrain coordinate (x, y) to their relative indices (xi, yi). Dealing with the edge logic of a tiles dimensions (which go 64.0...01 - 192 with soft lower and hard upper bounds) combined with float precision/rounding is kinda tricky, but more problematically, its difficult to be consistent with the implementation Blz developed for GetTerrainType native. That inconsistency can be problematic for the map maker, without them having the right tools to deal with it. For example, if I represent all WC3 tiles as either open space or square geometries, then implement a collision system on top of that, its important that my custom collision system agrees with the native terrain API

JASS:
function RoundToTileIndex takes real x returns integer
    return R2I(x/128)
endfunction 

function RoundToTile takes real x returns real
    local real abs = RAbsBJ(x)
    return abs - ModuloReal(abs,128.00)
endfunction
??? How hard can it be

Well, the float precision/rounding will always be an issue unfortunately...
 
Level 6
Joined
Mar 7, 2011
Messages
124
We already have Time of Day event, why would we possibly need this? Isn't it redundant?
That event is fine if you can assume or control when the day/night cycle happens, all the time. A weather system, for example, might change the timing of the day/night cycle as seasons progress, but in general it'd really just care about when its day and when it's night, to help determine temperature. That weather system can monopolize usage of the WC3 day/night system, which i guess would be okay, it seems important enough, but i'd still rather build my own dynamic day/night event that it can hook into, to be a bit less greedy

??? How hard can it be

Well, the float precision/rounding will always be an issue unfortunately...
I oversimplified it because I didn't think this needed to be discussed, but it's a little trickier than that, tiles actually go from 64.50..01 to 192.5 (though i might be wrong on which is the soft-side, and which is the hard-side). That said, even if you dealt with tiles properly, the implementation still doesn't match WC's implementation at very small edge conditions (much less than .1), which can be produced by anything that either deals with very small decimal parts (only relevant for certain systems) or very large integer parts + decimal parts (relevant for large maps). If you were to test your algorithm for data points (x,y), then reverse by multiplying 128. to get the real center for your original point, then call GetTerrainType on your reverse engineered center point, it would differ from the GetTerrainType result made for the original data points, when either of those values hits one of the above edge conditions
 

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
That event is fine if you can assume or control when the day/night cycle happens, all the time. A weather system, for example, might change the timing of the day/night cycle as seasons progress, but in general it'd really just care about when its day and when it's night, to help determine temperature. That weather system can monopolize usage of the WC3 day/night system, which i guess would be okay, it seems important enough, but i'd still rather build my own dynamic day/night event that it can hook into, to be a bit less greedy
Can't you just create a custom timeframe, via triggers, that shifts depending on four parts of time (as the seasons; using minutes for example) and make it cycle?
 
Level 6
Joined
Mar 7, 2011
Messages
124
Can't you just create a custom timeframe, via triggers, that shifts depending on four parts of time (as the seasons; using minutes for example) and make it cycle?
You could definitely abstract dealing with the Time-of-Day API into some implementation that gives what i want, i like your shifting timeframes idea, but at that point you're taking the vanilla API and expanding its API with your 3rd party implementation. You could build your own implementation of many of the new natives blizzard is providing, so i think it helps to consider other factors when it comes to considering these "not-so-basic" building blocks
Language Design Drawbacks:
A 3rd party implementation is limited in terms of 1. the accessibility users will have to it and 2. its compatibility with other mutually exclusive functionality
  1. Many mapmakers just want to make their vision come to life, which is a mentality i think should be respected. Having to do research and find 3rd party solutions is the same as that solution not existing to them. This is similarly true for solutions that only exist as JASS to other audiences
  2. I could make a Time of Day API that works great for all my systems, as I intended, but what about this sick Night Stalker spell I got from DotA, that has its own built in day/night logic? You have to pick one or the other, or nanny the two into compatibility. Also, we have historically not been the absolute best about agreeing on who's implementation gets to be the standard, which leads to "adapters" (I like to call them "ego nannies", to try and express my feelings on the topic) just to allow multiple implementations play nice together
A official JASS/GUI implementation adds complexity (reducing accessibility as a whole), defines implicit behavior, and adds to Blizzard's responsibilities for performance

Benefits:
A 3rd party implementation gets to choose exactly how it wants to do things, and if it wants to do them at all

A official JASS/GUI implementation improves accessibility to this specific feature, and provides a standard that multiple additional systems can coexist easily with

I also think that Bliz should try to highlight features that are unique to WC's engine, and make them as accessible to its endlessly creative map making community as it can. The majority of games that currently feature day-night cycle systems are developed by highly capable scripters (Werewolf and DotA are what I'm thinking of). I take that as a sign that there's a accessibility barrier to fully utilizing this feature, but maybe not a creative one

I just remembered that you can only configure the Day Night timeframe as a constant per map, not dynamically during a game session. That limits the range of ideas you can make using WC's Day/Night system, no shifting seasons possible there, but I think supplying the event is still a better place to start
 
Last edited:

deepstrasz

Map Reviewer
Level 56
Joined
Jun 4, 2009
Messages
16,197
I just remembered that you can only configure the Day Night timeframe as a constant per map, not dynamically during a game session. That limits the range of ideas you can make using WC's Day/Night system, no shifting seasons possible there, but I think supplying the event is still a better place to start
Yeah, as far as I know you can't change the length of day and night without reducing the timer which won't make night start farther or before 18.00 P.M. graphically. So, you'd have to use a multiboard or something to create custom timeframes while hiding the actual game's clock.
However, with the new natives pertaining UI modifications, you'll probably be able to create your own clock but not through GUI.
 
Level 2
Joined
Nov 1, 2010
Messages
19
A few things i think should be implemented:
Projectile Control and detection.
Damage System
Spell Amplification in %
More control on the classic spells like the damage, buff effects, for example if i want an ability to deal damage based on Int i would just need to change in the object editor. As for the buff part i meant something like if i put a slow buff on storm hammer it wouldnt stun, just damage and slow.
 
Well, If I'm to ask anything from them, is not bug fix, but to add new abilities to make mapmaking easier:

*leap ability: causes the hero to leap to a target or a location. Height can be adjusted, same as passing through obstacles, and the facing of the unit who jumps (if it jumps facing backwards, or upwards, or if it is a side jump.

*Stacking Poison ability: if you change the buff, any other instance of the ability will stack with it as a different poison buff.

*Stacking DPS on cast: same as above, but can either heal or damage, slow o haste, silence or stun, disarm, reduce or increase armor, damage, etc, and can be dispelled.

*An hp shield/barrier ability that stacks, and a function to add a shield with triggers, and proper display of them in health bars.

*Skillshot ability: launches an skillshot projectile that dies when it enters in contact with it's targets. You can choose it's collision radius or if it deals AoE damage upon launch and impact.

*Single target projectile damage ability that doesn't stun or has any effect: name.

*Cause Moon Glaive ability to actually cause attacks to baunce

*Cause Vorpal Blades to actually cause attacks to spill

*Add an attack range modifier ability

*Add a tome of armor

*Add an option to cause orb effects to stack

*Add a function in the GUI trigger to add timed buffs to a target and to select the type of buffs and modify their timers.

*Cooldown reduction ability/stat/and function for an specific ability. Cause making different level of abilities just for cooldown kinda sucks.

*Cause Spider Attack to detect when the spiders come back to the attacker, and to add some damage effect posibility to it upon the target and upon the user.
 
Last edited:
Level 8
Joined
Jul 22, 2010
Messages
32
**SIMPLE CAMERA QUALITY OF LIFE FIX**

I've been looking for a way to do this, and perhaps there is with JASS. But having a toggle in GUI would do me wonders.

All I'm looking for is a way to TOGGLE ON/OFF the math that auto calculates the active game camera's height based on the surrounding terrain. This would allow more precise control over the active game camera without interference from a source we can't (seemingly) control.


**BETTER IDEA** - In addition to, or in place of that idea... Being able to read the output of that formula as a real may be even more helpful. Then we could play with the output by setting a height offset with that real in it.

**APPLICATION** - I have a camera following a unit in a third person manner, whose camera source I want to set and stay about 1 meter above his head (and 3 meters back) which works easily on flat terrain. But whether the camera target is centered on him or not, the camera will raise up when nearby terrain goes upward, all while my unit's height remains unchanged. This auto formula appears to sample all the terrain geometry within about 500-1000 units from the camera target center to calculate a terrain height average to offset the game camera.

**ADDITIONAL POINTS** - Perhaps even allowing us to modify this sample radius of this formula would do the trick, at least in my case. (Since setting it to 1 unit would keep the camera height following my unit's height.)
 
Level 2
Joined
Aug 17, 2008
Messages
6
Any word on destructible limit being raised/removed in the reforged editor?
We've always had a workaround for disabling this limit in the past.
In big maps it's really easy to go over the limit of 30000 destructibles/doodads.
 
Level 17
Joined
Nov 18, 2012
Messages
1,460
Before raising the limit, better tell blizzard to fix the lags when you cast shockwave or stomp, because the doodads take part in the lag process of those abilities. Imagine having 100000 destructibles/doodads and cast shockwave: instant insane lag party.
 
Level 20
Joined
Feb 9, 2009
Messages
1,606
  • Unit - Ignore (Triggering Unit) to (Picked Unit) /// To computers, this unit does not exist, to players, it is can be seen but not interacted with.
  • Unit - Ignore (not Visible) (Triggering Unit) to (Picked Unit) /// same as above but more for players
  • Unit - Ignore pathing (Triggering Unit) to (Picked Unit)
  • Unit - Treat (Triggering Unit) as Ally to (Player 1) /// This includes units owned by Player in question for extra tom-foolery
  • Unit - Treat (Triggering Unit) as Alliance (Non-Aggressive) to (Player 1)
  • Unit - Treat (Triggering Unit) as Neutral to (Player 1)
  • Unit - Treat (Triggering Unit) as Enemy to (Player 1)
  • Unit - Leash to (Picked unit) by 0.00 to (triggering unit) /// Going to far away from the specific results in commands to return
  • Unit - Defend (triggering Unit) /// Attacks units Attacking the specific unit.
  • Unit - Defend (Center of Region(Playable Map Area) /// " " " " "
  • Unit - Lead (Triggering Unit) /// Basically, when you make a command to move, the unit will move slightly ahead.
 
Level 17
Joined
Nov 18, 2012
Messages
1,460
  • Unit - Ignore pathing (Triggering Unit) to (Picked Unit)
No, you can turn unit's collision off.

  • Unit - Treat (Triggering Unit) as Ally to (Player 1) /// This includes units owned by Player in question for extra tom-foolery
  • Unit - Treat (Triggering Unit) as Alliance (Non-Aggressive) to (Player 1)
  • Unit - Treat (Triggering Unit) as Neutral to (Player 1)
  • Unit - Treat (Triggering Unit) as Enemy to (Player 1)
No, we have 12 additional player slots. Use them to make units owned by players who are allied/neutral/enemy. Making a unit an enemy of Player X when he is owned by that player makes no sense if you can still control it.

  • Unit - Leash to (Picked unit) by 0.00 to (triggering unit) /// Going to far away from the specific results in commands to return
  • Unit - Defend (triggering Unit) /// Attacks units Attacking the specific unit.
  • Unit - Defend (Center of Region(Playable Map Area) /// " " " " "
  • Unit - Lead (Triggering Unit) /// Basically, when you make a command to move, the unit will move slightly ahead.
- Return where? What is this real doing here? What is it for?
- Who attacks the unit attacking the specific unit? Radius? Group? Unit Type? Hardcoded.
- Makes no sense.
- Pointless. When can you "unlead" the unit?
Honestly these ones are rather vague, hardcoded and are accomplished by triggering it yourself easily.
*leap ability: causes the hero to leap to a target or a location. Height can be adjusted, same as passing through obstacles, and the facing of the unit who jumps (if it jumps facing backwards, or upwards, or if it is a side jump.

*Stacking Poison ability: if you change the buff, any other instance of the ability will stack with it as a different poison buff.

*Stacking DPS on cast: same as above, but can either heal or damage, slow o haste, silence or stun, disarm, reduce or increase armor, damage, etc, and can be dispelled.
*That's very hardcoded, just trigger it.
*For some reason poison stopped stacking damage with itself even if the stack type Damage is ticked in this patch

*An hp shield/barrier ability that stacks, and a function to add a shield with triggers, and proper display of them in health bars.

*Skillshot ability: launches an skillshot projectile that dies when it enters in contact with it's targets. You can choose it's collision radius or if it deals AoE damage upon launch and impact.

*Single target projectile damage ability that doesn't stun or has any effect: name.
*What if people don't want that in hp bars and want to have a unique place? Just trigger it.
*Missiles natives.
*Doesn't make any sense.

*Cause Moon Glaive ability to actually cause attacks to baunce

*Cause Vorpal Blades to actually cause attacks to spill
Dude, they're just there for aesthetics, if you want attacks to bounce or spill then make it happen on the object editor. The Unit Editor Fields

*Add an attack range modifier ability

*Add a tome of armor

*Add an option to cause orb effects to stack

*Add a function in the GUI trigger to add timed buffs to a target and to select the type of buffs and modify their timers.
*New natives to do that.
*Already possible to do, but makes sense to have do since we do have for hp, dmg, str, agi, int, mana etc.
*Better to make option for Orbs to stack with a specific oneor another, or a combination of several or all.

*Cooldown reduction ability/stat/and function for an specific ability. Cause making different level of abilities just for cooldown kinda sucks.
*Cause Spider Attack to detect when the spiders come back to the attacker, and to add some damage effect posibility to it upon the target and upon the user.
*They'll solve this in the next patch, I'm sure.
*Why not just trigger it?
 
Last edited:
No, you can turn unit's collision off.


No, we have 12 additional player slots. Use them to make units owned by players who are allied/neutral/enemy. Making a unit an enemy of Player X when he is owned by that player makes no sense if you can still control it.


- Return where? What is this real doing here? What is it for?
- Who attacks the unit attacking the specific unit? Radius? Group? Unit Type? Hardcoded.
- Makes no sense.
- Pointless. When can you "unlead" the unit?
Honestly these ones are rather vague, hardcoded and are accomplished by triggering it yourself easily.

*That's very hardcoded, just trigger it.
*For some reason poison stopped stacking damage with itself even if the stack type Damage is ticked in this patch



*Skillshot ability: launches an skillshot projectile that dies when it enters in contact with it's targets. You can choose it's collision radius or if it deals AoE damage upon launch and impact.

*Single target projectile damage ability that doesn't stun or has any effect: name.
*What if people don't want that in hp bars and want to have a unique place? Just trigger it.
*Missiles natives.
*Doesn't make any sense.


Dude, they're just there for aesthetics, if you want attacks to bounce or spill then make it happen on the object editor. The Unit Editor Fields


*New natives to do that.
*Already possible to do, but makes sense to have do since we do have for hp, dmg, str, agi, int, mana etc.
*Better to make option for Orbs to stack with a specific oneor another, or a combination of several or all.


*They'll solve this right in the next patch
*Why not just trigger it?[/QUOTE]

The idea is to make map making easier instead of having to trigger a bunch of stuff one over and over and over again, this would open the oportunity to create more complex abilities and the time spent in creating them would be less, so one could focus on triggering other stuff to make the game more refined. Having to trigger everything is a bumper, besides the fact that some trigger interactions don't stack well with the system itself, adding buffers with hidden abilities causes spellbook to close and minor lag, they don't interact well with spell shields and may lead to bugs, besides the fact that seing a bug, and not knowing from where it damn comes from a handle of a thousand of triggers that I've made for my maps is frustrating, so don't come tell me it is better to trigger everything when it is not.
 
Level 20
Joined
Feb 9, 2009
Messages
1,606
@Wrda
>you can use turn off unit collision
Not for a target going being ordered to walk in the immediate direction of the unit you turned collision off for, the unit will still attempt to walk around it.
>No, we have 12 additional player slots
That works until I want +25 separate units, also creating X number of forces and player slots for each individual that wishes to change the settings.
>Making a unit an enemy of Player X when he is owned by that player makes no sense if you can still control it.
What is spell effects & map making.
>- Return where? What is this real doing here? What is it for?
Leash - Definition, Verb - "to bind together by or as if by a leash; connect; link; associate."
>- Who attacks the unit attacking the specific unit? Radius? Group? Unit Type? Hardcoded.
I'll grant you that I didn't delve to deeply in this one.
>- Makes no sense.
Non-sense, you are just sense-less.
>- Pointless. When can you "unlead" the unit?
There are two kinds of people, 1. Those who can extrapolate

>*What if people don't want that in hp bars and want to have a unique place? Just trigger it.
>*Why not just trigger it?

@Darkfang summed it up quite nicely

Killjoy.png
 
Last edited:
Top