• 🏆 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!

[Feedback] Request Features for JASS and the World Editor

Status
Not open for further replies.
Level 9
Joined
Jul 20, 2018
Messages
176
Increase tooltip length for items.
Multiple instances of the World Editor.
I think, these two have been implemented in 1.31.


My suggestion is for WE and is very simple, but necessary. TL, DR: unhide all hidden abilities in Ability Editor.


WE has hidden abilities. One of them is [Atol] Tree of Life upgrade ability. This ability only attaches effects to unit and is very useful.
Atol is used by Tree of Life, Tree of Ages and Tree of Eternity. The usage displays in Unit Editor.
But Atol is hidden in Ability Editor! JNGP unhides Atol, and mapmaker can create custom abilities using Atol as a template. But even custom abilities are hidden in standard WE!

You can easily check this. I attached a map with 3 custom abilities based on Atol and 3 custom units. In WE and JNGP the usage of these abilities is shown in Unit Editor. But in Ability Editor these abilities are hidden (shown in JNGP).

Finally, my suggestion is to unhide all abilities in Ability Editor.
 

Attachments

  • TempMap.w3x
    8.3 KB · Views: 137
Level 12
Joined
Nov 3, 2013
Messages
989
I think, these two have been implemented in 1.31.


My suggestion is for WE and is very simple, but necessary. TL, DR: unhide all hidden abilities in Ability Editor.


WE has hidden abilities. One of them is [Atol] Tree of Life upgrade ability. This ability only attaches effects to unit and is very useful.
Atol is used by Tree of Life, Tree of Ages and Tree of Eternity. The usage displays in Unit Editor.
But Atol is hidden in Ability Editor! JNGP unhides Atol, and mapmaker can create custom abilities using Atol as a template. But even custom abilities are hidden in standard WE!

You can easily check this. I attached a map with 3 custom abilities based on Atol and 3 custom units. In WE and JNGP the usage of these abilities is shown in Unit Editor. But in Ability Editor these abilities are hidden (shown in JNGP).

Finally, my suggestion is to unhide all abilities in Ability Editor.
Some abilities are still "hidden" even if you have JNGP as well, for example the move ability. I think attack and stop abilities are also hidden. The different build abilities, etc.
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
Fix adding buffs! Remove the need to use spell books and slow aura copies

  • Unit - Spell Cast target unit - Order (Triggering unit) to cast Level [2] (Custom Spell or Base Game Spell) at (Picked Unit) with '0.000' Animation cast Point, 'IGNORING' Targets allowed requirements, & 'CHECKING' Channeling Requirements

  • Unit - Spell Cast no target
  • Unit - Spell Cast target point
  • Unit - Spell Cast target destructible
Ignoring/Checking Targets allowed - Target spell immune targets, ETC
Ignoring/Checking Channeling - basically ignore channeling requirements
Animation Cast point - a slight cast time that abilities like sphere use to create their projectile

What about starfall?
  • Unit - Spell Cast no target - Order (Selected Unit) to cast Level 3 Starfall, 0.000 Animation - cast point, CHECKING Targets allowed reqirements & IGNORING Channeling Requirements.
Now the peasant you've selected it casting starfall while he does peasant things!


  • Unit Group - Pick every unit in (Units within 300.00 of (Target point of ability being cast)) and do (Actions)
    • Loop - Actions
      • Unit - Spell Cast target unit - Order (Triggering unit) to cast Level 1 (Siphon mana) on (Picked Unit) using 0.000 Animation - cast point, CHECKING Targets allowed reqirements & IGNORING Channeling Requirements.
Drain the mana of all the targets in the selected area by casting siphon mana on all the units in that area!

  • For each (Integer KiBa_Akey) from 1 to 3, do (Actions)
    • Loop - Actions
      • Unit - Spell Cast target unit - Order (Triggering unit) to cast Level 1 (Firebolt) on (Picked Unit) using 0.000 Animation - cast point, CHECKING Targets allowed reqirements & IGNORING Channeling Requirements.
Have your blood mage spam out 3 firebolts with that wacky animation of his


Or perhaps you want a dummy buff?


Buff - Add "____"(existing buff in object editor) to (Triggering Unit)
Buff - Set X.XX Duration to (Last Created Buff) on (Triggering unit)
Buff - Set able to dispel (Last Created Buff on (Triggering Unt) TRUE / FALSE
Buff - Set (Last Created Buff) Type to PHYSICAL/MAGICAL/BOTH on (Triggering Unit)
Buff - Set (Last Created Buff) Category to HOSTILE/FRIENDLY/NEUTRAL on (Triggering Unit)
Buff - Modify duration of (Last Created Buff) on (Triggering Unit) to X.XX
Buff - Modify tooltip of (Last Created Buff) on (Triggering Unit) to STRING
Buff - Set Counter of (Last Created Buff) on (Triggering Unit) to X (Puts on a desired number on the buff, nothing like 9999999999 but maybe 1 - 999 whatever is more sensible.

Hashtable storing of course

Event
Generic Unit Event - Unit receives a buff - (either by cast or trigger)
Generic Unit Event - Unit Loses a buff - (either by dispel, expiration, or death!)

Boolean:
Get Boolean Buff Type equal to PHYSICAL/MAGICAL/BOTH - Self explanatory
Get Boolean Buff Category equal to HOSTILE/FRIENDLY/NEUTRAL - Self explanatory

Buff:
Event Response - (Triggering Buff) - Responds to 'Unit receives a buff'
Get Last Created buff on unit - returns buff on specified unit, spell casts & trigger alike


Real:
Get Buff expiration remaining

Integer:
Custom value of Buff
Get Buff Cast order (returns Integer of which order the buff appeared, (Example: Inner fire was cast first it gets, using this returns "1", fariefire was cast second and returns "2", inner fire becomes dispelled and now fariefire returns "1"!
Get Buff Counter - Returns Current counter on buff
Example of This are as follows:
Buff Counter one digit.png Buff Counter two digits.png
Buff Counter.png

Shrinking to avoid taking up the image


Changes to base game
Stacking poisons or buffs receive a counter showing the current number of stacks currently on the unit as above mentioned counter on the green frost armor icon- This is purely visual and doesn't effect vanilla RTS

Mousing over a buff shows both the icon in larger view and time remaining on the buff!
Examples:
Numeric Duration
Buff tooltip with numeric duration.png

Bar Duration
Buff tooltip Bar Duration .png
You will also notice that the counter is displayed on the side allowing you to avoid counters on the tooltip icon if you wished.

With all the above mentioned added to the game many things would become a breeze!
No longer relying on makeshift slow aura & spell books

*Drops MS paint brush*
 
Level 9
Joined
Feb 24, 2018
Messages
342
Since we're talking about dummies, I've had another idea recently, although it most likely too big for what it brings to the table.
New object class - Dummy
Behaves like a unit in many aspects, but...
1) Has inbuilt expiration and non-expiration timers, that can be manipulated in object editor.
2) Is invisible, untargetable, ignores pathing, by default
3) Can't attack, hasn't got HP, etc, by default.
4) Lacks most of stats related to combat or production, in fact.
5) Most importantly, is not detected as Unit for trigger purposes (I mean Unit events, Unit group loops and counts, etc)

But that's overkill, I guess.
 
  • Custom script: call UnitAddAbility(udg_TempUnit, 'Aloc')
But yes, it should be made available in GUI as well.

I think more automation in the OE would come in handy. Clear combat stats, clear production stats, etc.

- Options to detect entering/leaving invisibility, and whether leaving was natural, or it was broken
- Option for auras to disappear instantly
- Option for invisibility aura for emulations of League's brushes
 
Level 9
Joined
Feb 24, 2018
Messages
342
In Invisibility's case, I'd say a good feature would be to add "types". Simple integer value. And same value array for True Sight and Far Sight abilities.
... Sight abilities only detect invisible units whose invisibility type matches one in their arrays. So we can differentiate between, say, stealth, invisibility and camouflage.
 
Level 12
Joined
Nov 3, 2013
Messages
989
%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-156-png.324487

Stop, Hold, Patrol and Move orders are Move ability.
Build abilities are not hidden in JNGP.

But some other things are still hidden, I suppose.
Well they're missing for me at least...
c52edae0d6.png

4fb6fee498.png

073f3761d1.png
So there's 7 more missing abilities for me, and you're still missing other abilities if I'm understanding you correctly?...
In Invisibility's case, I'd say a good feature would be to add "types". Simple integer value. And same value array for True Sight and Far Sight abilities.
... Sight abilities only detect invisible units whose invisibility type matches one in their arrays. So we can differentiate between, say, stealth, invisibility and camouflage.
So basically expand the current one which differentiates between "burrowed" and "invisible", though I haven't actually tried it so I'm not sure if it actually works.
0f1d0165ca.png
 
Last edited:
Level 20
Joined
Apr 12, 2018
Messages
494
If not abilities, some other stuff. E. x. Wisp has upgrade with rawcode Rewd, and it is not present in Upgrade Editor.
That upgrade was flat-out removed from the data files when the game went live. It's anyone's guess as to what that used to be (similarly so the unit transform associated with the disabled Load Pilot ability refers to a unit that doesn't exist anymore and that's what makes it crash the game; Load Pilot used to work with the Steam Tank to change it into attack form depending on you loading Riflemen into it like how the Hippogryph Rider works).
 
I wish that blizzard add cJass parser to the new world editor



Iits visual parser that clears readability of code and saves up time, also making code style more as c++

As example, functions will be

JASS:
    void AAA(){

    }

instead of long
JASS:
    function AAA takes nothing return nothing

loops
JASS:
    while(true) {

     }

And so on.

Full list of features you can find at cJass 1.4.0.2

Its a pure visual thing, parsed before vJass and converted to normal Jass, and if optimization turned on, after vJass it converts HEX integers to BINARY making performance slightly faster on this

I used it a lot, and its will be a PAIN to rewrite all of that on Lua or simply vJass from the scratch, also its moderatly popular on Russia and so regions, so there are things that written on it.


Simply using it can save you a lot of time, with maintaining clear code without "call" or "set" or "local" (everyone knows context but you have to do it on vJass, how irritating)


Can we have it as an OPTION? vJass + cJass works fine without any questions, you even have //!nocjass blocks if you want to disable it somewhere in the code

attached it as archive from JNGP
 

Attachments

  • AdicHelper.7z
    153.6 KB · Views: 25

Wrda

Spell Reviewer
Level 26
Joined
Nov 18, 2012
Messages
1,893
I've posted this below on the other thread, forgot it was outdated.
JASS:
native MakeUnitMissAttack takes unit whichUnit, integer weaponIndex returns nothing //Makes unit miss next attack
native MakeUnitMissAttackN takes unit whichUnit, integer weaponIndex, integer attackAmount returns nothing //Makes unit miss an amount of its next attacks
EVENT_PLAYER_UNIT_MISSED //WE NEED THIS EVENT!
EVENT_UNIT_MISSED //Does same
 
Last edited:
Level 24
Joined
Feb 9, 2009
Messages
1,787
Change to existing Armor modifier in Unit - set unit Armor x.xx - to new "Unit - Set unit Armor 0.00, "____" [Set/Add/Subtract] (I.e. Subtract -5 will cause "Debuff" red text.)

" " - Unit Set Damage "____" [Set/Add/Subtract] same as armor one.

" " - unit Set Attack cooldown "____" [Set/Add/Subtract] same as armor one.

" " - unit Set Hero Attribute "____" [Set/Add/Subtract] same as armor one.

Helpful for displaying either "HEY YOU GOT A BUFF BRO" or "SHIT BRO YOU GOT HIT BY THAT NASTY DUDES BOOGER AND NOW YOU'RE NOT SO GOOD AT ATTACKING FOR SOME STRANGE REASON.)

=============================

Heal Event ( a unit is healed)
Regen Event ( a regenerates (one tick) )
Heal / Regen amount (Event response )
Heal / Regen source
Heal / Regen target
Get Unit Regen delay
- Set unit Regen Delay to x.xx
Get Unit Regen Type (Day/Night/Always/Never)
- Set Unit Regen Type to "_____"
Get Unit Regen
- set unit Regen to x.xx

Reduce healing, display healing via floating text, conduct illegal tampering of ones life force that violates treaties with UNA (United Necromancers Association.)

=============================

Trigger additions for spell effects and damage (NOT SPELL CASTING)
I.e. Unit is slowed, what spell was used? who's the caster? was it aoe, if so where was the spell cast point?

Spell Effect Event (Damage / Buff/Debuff application (yes this includes auras)
Spell Effect Modifier (think Bribe's damagemodiferevent. just before the spell effect starts!)
Get - (Spell Used) equal to "CustomFlamestrike"
Get - Spell Source
Get - Spell Target
Get - Target point of Spell
Spell Effect - Set Max Damage of (Last Spell effect)
*Ignore Spell Effect (Use with Spell Effect Modifier to create a spellshield effect!)

You are hit with a fireball, what son of a dog toaster threw it?

=============================

Move - Unit/Effect/Doodad/etc to X using speed X.XX and "_____" [Ignoring/Checking] pathing and "____" [Enable/Disable] commands.
Move - Queue Moment Unit/Effect/Doodad/Ect to X using speed X.XX and "_____" [Ignoring/Checking] pathing and "____" [Enable/Disable] commands.

Useful for knockback & Projectiles, currently you would need unitgroups/indexes or some fancy pants system to do this, but a one liner would be nice.

I want to easily make three enchanted hovering chickens shooting peasant projectiles!
ezgif-1-757e7c050c8d.gif

=============================

Get Closest Unit

=============================

Add an ability similar to wander (on animals) that doesn't shy away from combat.

Add Data option for Anti-magic shell (resistance) - Data - Damage Type Spell [x] Physical [ ], Pierce [ ], Chaos, ETC

Targeted raise dead with highlight able corpses (DIABLO 2 STYLE DAMMIT)

Channel:
Buff / Projectile / Lightning that actually works on channel or equivalent!
Add option on Channel to NOT WAKE UP / AGGRO targeted units!
Add copy paste for the rest of the damage fields (especially the tick boxes jesus.)

Uncontrollable both ability & trigger function
- Summon an uncontrollable rock golem/ skeleton it wanders (YES DIABLO 2 AGAIN!)
- Data - Leash range 0.00
- Data - AI type "_____" [Guard*/Hostile/Passive/Assist*]
- Guard* - Attacks anything that damages the summoner (i.e. unit summoned by item/ability)
- Assist* - Attacks summoners targets (i.e. unit summoned by item/ability)
- Data - Guard Area : True/False (True means it will stay in the area it was spawned. false being it simply follows the summoner.)
Uncontrollable Triggers
- Unit - set unit category Undead/Summoned/[NEW]]USUMMON/ETC
- Unit - USummon : set leash/setAI type/ set Guard Area

Orbs effects that stack
Orb effects that actually work and don't need physical attack orders to work!

===================================

A better Player mouse position for points and junk.

Let me set it to a variable, not a bloody event yah igit.

===================================


Okay I'm done!
for now
 
Level 3
Joined
Dec 17, 2017
Messages
39
I would love a function to get the mouse position on the screen (not in the map/world).
something like:
real1 = I2R( GetMouseScreenX(Player_1) / GetScreenWidth(Player_1) )
real2 = I2R( GetMouseScreenY(Player_1) / GetScreenHeight(Player_1) )

screenwidth/height in pixels (integer)

EDIT: and maybe the ability to position the mouse-cursor on the screen something like
call SetMouseX(player, pixel)
call SetMouseY(player, pixel)

and a defend animation for all Models with a shield (those arent that many):
humans: Lord Garithos
undead: skeleton warrior
orc: chaos warlord (mathog)
neutral: revenant

EDIT: and mulocs and murgul ofcourse also have their shelly shields, they would be so grateful for a defend-animation so that they can protect themselfes:)
 
Last edited:
I would love a function to get the mouse position on the screen (not in the map/world).
something like:
real1 = I2R( GetMouseScreenX(Player_1) / GetScreenWidth(Player_1) )
real2 = I2R( GetMouseScreenY(Player_1) / GetScreenHeight(Player_1) )
neutral: revenant
It's far from perfect, but you may be interested in [vJASS] - ScreenMouse
(I'm working on an update that syncs the data, right now it can desync multiplayer games)
 

Rui

Rui

Level 41
Joined
Jan 7, 2005
Messages
7,550
I'd prefer if non-essential classifications were customizable. Inside the Object Editor, I am imagining a tab called Classifications (on par with Units, Items, Destructibles, etc.) which are just objects. In the units tab, you can link units to classifications. Likewise, the Abilities tab would link classifications through targets allowed, with a small twist: it can also specify a few hard-coded classifications such as friend, enemy, and destructible.

This would be somewhat closer to how StarCraft II's Data Editor does it, and it's simple enough for every rookie.
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,914
I'd like to be able to sort things within the Camera Editor and Region panels by moving a selected camera/region up or down wherever I want to place it before, after or in between other cameras/regions. Now you can only sort by name which is really not good if you want chronological order involved. For instance if I create a new region/camera and want to place it near earlier cameras/regions because its related to those, I can't.
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,914
Add cheats to the chat events. Or add a new event for them. Would be useful to extend greedisgood for custom resource systems for example, can't do this atm.
Well, I think you could just create your own. I mean, how would greedisgood know your triggers about what you designate as resources?
More details please, so we can get a full picture of what else could be implemented through the usual cheats.
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,914
Basically I want to be able to create a trigger that adds oil (in this case) for the player when they type "greedisgood".
Normally I would just add a chat event for when the player types "greedisgood", but it doesn't work for cheats.
Aah. My bad. You're right, cheat text is special. It doesn't get logged.
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
Selection - unit selected prime firebolt lvl X


A trigger that allows you to prime a spell for targeting, maybe your hero grabs a rune of flamestrike, instead of casting flamestrike at the location of the rune, your hero is granted the ability for one time use.

Fields like:
- cost mana can be simply adjusted via unit mana manipulations
- stats like aoe and damage would depend on the spell being used.

What makes this different from ordering a unit:
- allows choice of where the effect occurs
- which unit (target unit.)
- Ability roulette!
- point setting (make a pentagram with five ability casts.)

------------------------------------------------------

Unit between points equal to T/F
Unit is within area of point x, y, & z equal to T/F

------------------------------------------------------

Not trigger but special effect lights, attach to unit attachment points or manipulate them like special effects!

Specialeffect - remove special effect
\\ Instantly removes the special effect, no death animation!

Special effects. - particle set r g b.
\\ i wanted to change the colours of some missiles but the particles/ribbons stay their native colours!!! Arrrg!
Special effect. - add ribbon/particle emitter
\\ i want chickens with fancy tassles and enchanted effects okay?

Specialeffect - mute sound attached
\\ silent projectile, or using your own sounds
 
Last edited:

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,914
A trigger that allows you to prime a spell for targeting, maybe your hero grabs a rune of flamestrike, instead of casting flamestrike at the location of the rune, your hero is granted the ability for one time use.
Use a charged item? Or trigger a bolean or integer to add flamestrike to your unit and remove it once it's being cast and the integer is 0?
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
oh I thought I responded to this, whoops, sorry Deep!
Use a charged item? Or trigger a bolean or integer to add flamestrike to your unit and remove it once it's being cast and the integer is 0?

The goal here is not to give the spell but "prime" it for targeting, and to avoid clogging up the hero's command card with one time cast spells.

-------------------------------------------------------------------------------------------------------------------------------
 
EVENT_PLAYER_UNIT_ATTACK_RELEASED

Timing: the moment a ranged attack would be launched, or a melee attack would hit its target.

Variables: GetEventDamage() is the damage prior to application of Critical Strike/Demolish/Flaming Arrows. So just the calculated base damage of the unit.

Allow things like "chance to miss/bash/critical strike/deflect" from this event to be modified for that event instance (so you can prevent a crit, force a miss or otherwise - even if the unit doesn't have any abilities which would cause these fluctuations). To avoid a million natives, you could make it look like this:

BlzGet/SetDamageRealField

With the following constants:

damagerealfield DAMAGE_RF_CHANCE_TO_MISS
damagerealfield DAMAGE_RF_CHANCE_TO_DEFLECT
damagerealfield DAMAGE_RF_CHANCE_TO_CRIT

Effects: The engine will still do whatever it wants with said damage (adding bonus damage, emulating a Mirror Image critical Strike text from this value but ultimately setting the outbound damage to 0 prior to the EVENT_PLAYER_UNIT_DAMAGING event regardless).
 
Level 11
Joined
Aug 6, 2009
Messages
697
A way to save the state/store (played time) of music or a sound as a variable to be able to resume from where it was stopped/paused.
Technically it would be possible now by firing a countdown timer each time the sound or music plays but that would mean one for each sound/music you need instead of just using the music/sound variables.
I second this.
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
After playing ludicrous amounts of hours in Divinity original sin 2 I must say I would love for "Surface" option, of course Ubersplat would work wonders but a terrain connective variant that clumps together that won't shy away from cliffs or other terrain, of course that would be ideal!

If you're not aware of what "surfaces" are think a puddle of water/blood/oil/vomit from drinking too much raspberry schnaps despite all comments like "you've had enough."

Now think of any interactions that can be play with that, be it simple a gameplay mechanic or making a wet spot just the right amount of damp, or making a dungeon a little more grim with a generous dousing of blood.

Failing that direct & blatant rip from another game, easier flexibility for managing custom ubersplats would be phenomenal if they could be accessed to laymans looking to throw a simple rune on the ground or custom explosion aftermath.
 
Last edited:
Level 24
Joined
Nov 9, 2006
Messages
2,558
Voice Communication
Allow players to communicate verbally and allow functions that let players talk on a local level too.
It would make maps like Parasite 2, Mafia and others really good.
I think this could be a huge gamechanger for Warcraft Reforged.

Special Effects
If special effects are initially made white, it would be much easier to adjust the use of the effect through tinting.
Special effects with multiple colors could have separate data fields, if thats possible.
This would make recoloring a shockwave SFX much easier.
 
Hey guys, I just noticed a bug working in the 1.31 editor. The action to set a unit's base damage uses weapon index 0 or 1. The action to adjust a unit's attack speed uses weapon index 1 or 2. They should be referencing the same pair of numbers, not different ones.
Probably one of them is referencing a BJ which handles the offset for the user.
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,914
We need a possibility to run and stop AI scripts for computer players. If you run one .ai you cannot stop the AI without triggers and/or AI commands but most importantly, you cannot run another AI script on the same computer player if you want to change the way it plays. I had to use triggers to make buildings train units and send them to attack for the first part of my map and then when the time came, stop that and run the AI script I needed for the computer player to act more like a melee AI.
 
Status
Not open for further replies.
Top