WarCraft 3 World Editor 1.29 Update!

tom_mai78101

The Helper Connoisseur / Ex-MineCraft Host
Staff member
Reaction score
1,633
https://us.battle.net/forums/en/bnet/topic/20761976724#1

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

Greetings Creators,

Here's your much deserved deeper dive into the Editor improvements. Please try to keep discussion and requests in this thread so we can track more easily. Cheers.

General Limit Increases
  • Object limit increased to 30,000
  • Map size limit increased to 480 x 480
  • Tile set limit increased to 16
  • Max execution number increased to 1666666
  • Max food limit increased to 999
  • Max resource limit increased to 9999999
  • Array size increased from 8192 to 32768
  • Display mana bar


New Natives
  • DecPlayerTechResearched; takes player whichPlayer, integer techid, integer levels returns nothing // Opposite to IncPlayerTechResearched
  • DeleteHeroAbility; takes unit whichUnit, integer abilCode returns nothing // Remove Hero Ability
  • DeleteHeroAbility; takes unit whichUnit, integer abilCode returns nothing // Remove Hero Ability
  • GetAbilityCooldowntakes; integer abilId, integer level returns real
  • GetAbilityIcon; takes integer abilCode, integer level returns string
  • GetAbilityManaCosttakes; integer abilId, integer level returns integer
  • GetAbilityPosX; takes integer abilCode returns integer // Icon Position
  • GetAbilityPosY; takes integer abilCode returns integer
  • GetAbilityResearchTooltip; takes integer abilCode, integer level returns string
  • GetAbilityResearchExtendedTooltip; takes integer abilCode, integer level returns string
  • GetAbilityTooltip; takes integer abilCode, integer level returns string
  • GetAbilityExtendedTooltip; takes integer abilCode, integer level returns string
  • GetAbilityOnIcon; takes integer abilCode returns string // "OnIcon is the icon for these auto-castable ablities when they're turned on"
  • GetAbilityOnPosX; takes integer abilCode returns integer
  • GetAbilityOnPosY; takes integer abilCode returns integer
  • GetAbilityOnTooltip; takes integer abilCode, integer level returns string
  • GetAbilityOnUberTooltip; takes integer abilCode, integer level returns string
  • GetItemIconPath; takes item whichItem returns string
  • GetItemTooltip; takes item whichItem returns string
  • GetItemExtendedTooltip; takes item whichItem returns string
  • GetLocalSpecialEffectX; takes effect whichEffect returns real
  • GetLocalSpecialEffectY; takes effect whichEffect returns real
  • GetLocalSpecialEffectZ; takes effect whichEffect returns real
  • GetLocalUnitZ; takes unit whichUnit returns real
  • GetTriggerPlayerMouseButton; takes nothing returns mousebuttontype
  • GetTriggerPlayerMousePosition; takes nothing returns location
  • GetTriggerPlayerMouseX; takes nothing returns real
  • GetTriggerPlayerMouseY; takes nothing returns real
  • GetUnitAbilityCooldown; takes unit whichUnit, integer abilId, integer level returns real
  • GetUnitAbilityCooldownRemaining; takes unit whichUnit, integer abilId returns real
  • GetUnitAbilityManaCost; takes unit whichUnit, integer abilId, integer level returns integer
  • GetUnitArmor; takes unit returns real
  • GetUnitAttackCooldown; takes unit whichUnit, integer weaponIndex returns real
  • GetUnitBaseDamage; takes unit whichUnit, integer weaponIndex returns integer
  • GetUnitCollisionSize; takes unit whichUnit returns real
  • GetUnitDiceNumber; takes unit whichUnit, integer weaponIndex returns integer
  • GetUnitDiceSides; takes unit whichUnit, integer weaponIndex returns integer
  • IsUnitInvulnerable; takes unit whichUnit returns boolean
  • IsUnitSelectable; takes unit whichUnit returns boolean
  • PlaySpecialEffect; takes effect whichEffect, integer anim returns nothing
  • SetEventDamage; takes real damage returns nothing // Modify EVENT_UNIT_DAMAGED event damage
  • SetHeroProperName; takes unit whichUnit, string name returns nothing
  • SetSpecialEffectAlpha; takes effect whichEffect, integer alpha returns nothing
  • SetSpecialEffectColor; takes effect whichEffect, integer r, integer g, integer b returns nothing
  • SetSpecialEffectColorByPlayer; takes effect whichEffect, player whichPlayer returns nothing
  • SetSpecialEffectPosition; takes effect whichEffect, real x, real y, real z returns nothing
  • SetSpecialEffectPositionLoc; takes effect whichEffect, location loc returns nothing
  • SetSpecialEffectOrientation; takes effect whichEffect, real yaw, real pitch, real roll returns nothing
  • SetSpecialEffectPitch; takes effect whichEffect, real pitch returns nothing
  • SetSpecialEffectRoll; takes effect whichEffect, real roll returns nothing
  • SetSpecialEffectTime; takes effect whichEffect, real time returns nothing // Think this won't solve the leak problem
  • SetSpecialEffectTimeScale; takes effect whichEffect, real timeScale returns nothing
  • SetSpecialEffectX; takes effect whichEffect, real x returns nothing
  • SetSpecialEffectY; takes effect whichEffect, real y returns nothing
  • SetSpecialEffectYaw; takes effect whichEffect, real yaw returns nothing
  • SetSpecialEffectZ; takes effect whichEffect, real z returns nothing
  • SetUnitAbilityCooldown; takes unit whichUnit, integer abilId, integer level, real cooldown returns nothing // Set ability cooldown for this specific unit
  • SetUnitArmor; takes unit whichUnit, real armorAmount returns nothing
  • SetUnitAttackCooldown; takes unit whichUnit, real cooldown, integer weaponIndex returns nothing // Set all future attack cooldown for this specific unit
  • SetUnitBaseDamage; takes unit whichUnit, integer baseDamage, integer weaponIndex returns nothing
  • SetUnitDiceNumber; takes unit whichUnit, integer diceNumber, integer weaponIndex returns nothing
  • SetUnitDiceSides; takes unit whichUnit, integer diceSides, integer weaponIndex returns nothing
  • SetUnitName; takes unit whichUnit, string name returns nothing
  • UnitCancelTimedLife; takes unit whichUnit returns nothing
  • UnitDisableAbility; takes unit whichUnit, integer abilId, boolean flag, boolean hideUI returns nothing
  • EndUnitAbilityCooldown; takes unit whichUnit, integer abilCode returns nothing // Finish cooldown for this ability for this unit
  • UnitHideAbility; takes unit whichUnit, integer abilId, boolean flag returns nothing
  • UnitInterruptAttack; takes unit whichUnit returns nothing
 

jonas

You can change this now in User CP.
Reaction score
64
Wow... So finally we can have maps with thousands of units, and we can access and modify object data.
 

Darthfett

Aerospace/Cybersecurity Software Engineer
Reaction score
615
This looks like a preparation patch for compatibility between WC3 RoC and WC3 Reforged. Excited! Wonder if I'll find time to make any maps. :)

Also: Hi! I've been gone a while. I'm an Aerospace Software Engineer now. :)
 

tom_mai78101

The Helper Connoisseur / Ex-MineCraft Host
Staff member
Reaction score
1,633
This looks like a preparation patch for compatibility between WC3 RoC and WC3 Reforged. Excited! Wonder if I'll find time to make any maps. :)

Also: Hi! I've been gone a while. I'm an Aerospace Software Engineer now. :)
Nice.
 

Blackveiled

Formerly, Ban-Lord
Reaction score
157
I'm looking forward to working on some maps. I never really got close to finishing any projects (mainly cause I was a kid I suppose). Can't wait, I will definitely be jumping into WC3 Reforged.
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
612
So I found myself on the post describing changes for 1.31 on the PTR. Here's the World Editor section:

WORLD EDITOR
DISCLAIMER: MAPS CREATED WITH PTR BUILD WILL NOT WORK ON LIVE

(Beta) Added Lua as a supported scripting language. To create a Lua map:

  1. Create a blank map
  2. Open “Scenario -> Map Options”
  3. Select “Lua” from the “Script Language” dropdown:
  • Maps save in the selected language
  • Maps that are written only in standard libraries can switch to Lua
  • Maps that use custom script will have to disable all custom triggers before conversion
(Beta) Object modification system API allows new changes to many items, abilities, units and more at run-time.

  • Maps can be saved and loaded as folders (as well as MPQs)
    • You can now manipulate the map structure very easily outside of the editor (such as adding files). In the editor go to File > Save As and then select to save the map as a directory or a MPQ. This feature coupled with auto-import allows maps to be manipulated and developed by multi-person teams more easily.
  • Loose files in a map are now auto-imported in World Editor
    • Historically, an imported file would be noted in the .imp file. Loading the map only load/save files that were stored in the import file. Auto-import loads and save files that are stored in the map folder automatically. This also makes manipulation of map files outside the editor possible.
  • Added support for many popular community created functions
  • Added Custom User Interface functions to allow map makers to add, remove, and adjust UI frames
  • When saving a map as an MPQ, the editor no longer saves file times to make maps deterministic
  • The editor now creates a backup map file on save
  • The data layout in CASC has changed, each directory with the “.w3mod” suffix acts as an overlay for the engine
  • Maps are .w3mods with a different extension (.w3m or .w3x) which allows us to support maps that contain all locales in one map
  • Folders can now be nested in the Trigger Editor
  • Globals are now part of the trigger tree, and can be put in relevant categories
  • Doodad height is now an adjustable property (Requires “Reset Fixed Object Heights” disabled)
  • When creating new objects in the object editor you are now given the option to customize it
  • Scripts can now detect when any unit is damaged
  • Scripts can now detect and modify the damage done before armor
  • Scripts can now detect and modify the attack type, damage type, and weapon type (Note, modifying these only works in the pre-armor event)
  • GroupAddUnit/GroupRemoveUnit now returns true/false if a unit was added/removed
  • More group manipulation natives (BlzGroupAddGroupFast, BlzGroupRemoveGroupFast, BlzGroupGetSize, BlzGroupUnitAt)
  • Bitwise functions (BlzBitOr, BlzBitAnd, BlzBitXor)
  • When JassHelper is enabled, it now only shows the JassHelper error dialog
  • Removed deadzone when using the editor on widescreen displays
  • Tooltip Previewer displays how text will appear in game
  • BlzSetAbilityResearchExtendedTooltip now displays the correct string
  • BlzGetLocalUnitZ now returns the correct height
  • Setting Use Custom Color to True for the waterfall doodad no longer causes a crash
  • Units given custom spellcaster icons do not crash the game client when selected
  • Certain custom models are no longer lost due to textures being relocated in the game

Some things caught my eye:
  • Scripts can now detect when any unit is damaged
  • Scripts can now detect and modify the damage done before armor
  • Scripts can now detect and modify the attack type, damage type, and weapon type (Note, modifying these only works in the pre-armor event)
Didn't really want to make a new thread just for this, but I figured a bump was reasonable.
 

tom_mai78101

The Helper Connoisseur / Ex-MineCraft Host
Staff member
Reaction score
1,633
It makes sense the PTR maps will not be playable when the official version comes out. I do see some quality of life changes being added.

  • When JassHelper is enabled, it now only shows the JassHelper error dialog
I wondered what that is.
 

Chaltier

Cool Member
Reaction score
0
Hm, been a while since I fired up WC3, but it seems that every instance of Set Ability Mana Cost and Set Ability Cooldown (GUI) in my maps has been broken with 1.31. Does this function now require Jass, or am I missing something?
 

tom_mai78101

The Helper Connoisseur / Ex-MineCraft Host
Staff member
Reaction score
1,633
SetUnitAbilityCooldown; takes unit whichUnit, integer abilId, integer level, real cooldown returns nothing // Set ability cooldown for this specific unit

Update your JASS functions. There were some changes made in the changelog.
 

Chaltier

Cool Member
Reaction score
0
SetUnitAbilityCooldown; takes unit whichUnit, integer abilId, integer level, real cooldown returns nothing // Set ability cooldown for this specific unit

Update your JASS functions. There were some changes made in the changelog.
Thanks for the reply, guess they broke a few things with the new function. I seem to have narrowed down the problem: abilities at lv1 now require a value of 0, and subsequently all ability levels are 1 less in the trigger than in the ability editor. This means I have to go back and change every trigger which uses ability level.

Don't suppose you know a fix for the problem which doesn't involve doing it all manually? Thanks!
 
Last edited:

tom_mai78101

The Helper Connoisseur / Ex-MineCraft Host
Staff member
Reaction score
1,633
Thanks for the reply, guess they broke a few things with the new function. I seem to have narrowed down the problem: abilities at lv1 now require a value of 0, and subsequently all ability levels are 1 less in the trigger than in the ability editor. This means I have to go back and change every trigger which uses ability level.

Don't suppose you know a fix for the problem which doesn't involve doing it all manually? Thanks!
I would definitely never know.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top