WarCraft 3 World Editor 1.29 Update!

Discussion in 'World Editor Help' started by tom_mai78101, Feb 21, 2018.

  1. tom_mai78101

    tom_mai78101 The Helper Connoisseur / Ex-MineCraft Host Staff Member

    Ratings:
    +964 / 4 / -1
    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
     
  2. jonas

    jonas Member

    Ratings:
    +42 / 4 / -0
    Wow... So finally we can have maps with thousands of units, and we can access and modify object data.
     
  3. DJBobbieHiLL

    DJBobbieHiLL New Member

    Ratings:
    +0 / 0 / -0
    Thank you!
     
  4. Darthfett

    Darthfett Super Mod

    Ratings:
    +613 / 0 / -0
    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. :)
     
    • Like Like x 2
  5. tom_mai78101

    tom_mai78101 The Helper Connoisseur / Ex-MineCraft Host Staff Member

    Ratings:
    +964 / 4 / -1
    Nice.
     
  6. Blackveiled

    Blackveiled Formerly, Ban-Lord

    Ratings:
    +147 / 0 / -0
    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.
     
  7. KaerfNomekop

    KaerfNomekop Swim, fishies. Swim through the veil of steel.

    Ratings:
    +608 / 0 / -0
    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.
     
    • Like Like x 1
  8. tom_mai78101

    tom_mai78101 The Helper Connoisseur / Ex-MineCraft Host Staff Member

    Ratings:
    +964 / 4 / -1
    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.
     

Share This Page