1. Find your way through the deepest dungeon in the 18th Mini Mapping Contest Poll.
    Dismiss Notice
  2. A brave new world lies beyond the seven seas. Join the 34th Modeling Contest today!
    Dismiss Notice
  3. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
Hive 3 Remoosed BETA - NOW LIVE. Go check it out at BETA Hive Workshop! Post your feedback in this new forum BETA Feedback.
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

[Feedback] Request Features for JASS and the World Editor

Discussion in 'Patch & Reforged Discussion' started by TriggerHappy, Aug 23, 2018.

  1. Wrda

    Wrda

    Joined:
    Nov 18, 2012
    Messages:
    1,318
    Resources:
    3
    Maps:
    1
    Spells:
    2
    Resources:
    3
    Special Effects attached to special effects. with an offset parameter too.
    Also all unit and doodad enumerations (pick every unit/doodad) don't include the collision size and pathing map of units/buildings/doodads. So we need those functions to work with that, or make additional ones with the same purpose.
     
  2. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Possibility to (all related):
    • create (via triggers) and place items on/over water
    • set item (flying) height
    • choose if an item is to be targeted as being on water, in air or on ground for each movement type respectively: foot+amphibious+horse+hover, float, flying units
     
  3. Wrda

    Wrda

    Joined:
    Nov 18, 2012
    Messages:
    1,318
    Resources:
    3
    Maps:
    1
    Spells:
    2
    Resources:
    3
    A special effect enumeration (Pick every special effect just like units/doodads) would also be great, specially "in range" ones, so we could use them for peculiar missile systems.
     
  4. AGD

    AGD

    Joined:
    Mar 29, 2016
    Messages:
    596
    Resources:
    14
    Spells:
    8
    Tutorials:
    1
    JASS:
    5
    Resources:
    14
    General

    - Dynamic map terrain (Allows changing terrain in-game, explained later)
    - In the Gameplay Constants, allow changing what kind of bonuses are given by attributes (they must also be allowed to overlap on the kinds of bonuses they give)


    JASS

    1. Dynamic terrain manipulation

    Consider the map's terrain as being formed by two-dimensional array of rectangular objects called tile, this individual tile is the minimum size at which the user can edit and manipulate the game's terrain looks. The array itself is static, initialized at map init, but the attributes of its elements (the tiles) can be changed.

    Basic Type Structure:
    Code (vJASS):

    enum tiletype
        TILE_TYPE_LAND
        TILE_TYPE_WATER_SHALLOW
        TILE_TYPE_WATER_DEEP
        TILE_TYPE_RAMP

    enum tilepathing
        PATHING_UNPATHABLE
        PATHING_WALKABLE = 0x1
        PATHING_HOVERABLE = 0x2
        PATHING_FLOATABLE = 0x4

    class tile

        public static constant real TILE_WIDTH = <>
        public static constant real TILE_HEIGHT =  <>

        readonly real x // center x
        readonly real y // center y
        public integer elevation
        public tiletype type
        public tilepathing pathing

        public void swap(tile other)
    //end class

    private terrain array gameTerrain[MAP_TERRAIN_SIZE_X][MAP_TERRAIN_SIZE_Y]

    private void BlzInitTerrain()
        // Runs at map initialization and initializes 'gameTerrain' to the premade terrain made using WE's terrain editor
     


    Suggested APIs
    Code (vJASS):

    function GameTerrainGetTile takes real x, real y returns tile
        return gameTerrain[GetXCoordIndex(x)][GetYCoordIndex(y)]

    function TileGetCenterX takes tile t returns real
    function TileGetCenterY takes tile t returns real
    function TileGetMinX takes tile t returns real
    function TileGetMinY takes tile t returns real
    function TileGetMaxX takes tile t returns real
    function TileGetMaxY takes tile t returns real

    function TileGetElevation takes tile t returns real
    function TileSetElevation takes tile t, integer elevation returns nothing
    function TileGetType takes tile t returns tiletype
    function TileSetType takes tile t, tiletype type returns boolean
    function TileGetPathing takes tile t returns tilepathing
    function TileSetPathing takes tile t, tilepathing pathing returns boolean
    function TileSwap takes tile a, tile b returns boolean
     



    2. Attack Handling

    Due to lack of proper attack handling, I actually made my own Attack System from scratch some time ago here. It brings A LOT of features. It only works on patch 1.30a though and was not completely polished specially on the attack animation part. For some reason it's messed up on the new patch.
    So a native support for total control over attack handling would be really good.
    Code (vJASS):

    type attackevent extends event

    constant attackevent EVENT_ATTACK_START
    /*
    *   Fires when attack animation starts
    */

    constant attackevent EVENT_ATTACK_RELEASED
    /*
    *   Fires before the damage is dealt (for melee)
    *   Fires before the projectile is launched and before <EVENT_ATTACK_PROJECTILE_LAUNCH> fires (for ranged)
    */

    constant attackevent EVENT_ATTACK_PROJECTILE_LAUNCH
    /*
    *   Fires right after <EVENT_ATTACK_RELEASED> fires and before the projectile is launched (for ranged only)
    */

    constant attackevent EVENT_ATTACK_PROJECTILE_IMPACT
    /*
    *   Fires when a projectile hits the target and before any damage event fires (for ranged only)
    */

    constant attackevent EVENT_ATTACK_PROJECTILE_BOUNCE
    /*
    *   Fires when 'maxBounces' > 0
    *   Fires after <EVENT_ATTACK_PROJECTILE_IMPACT> and after all damage event fires, and before bouncing to the next target
    */


    constant event EVENT_PROJECTILE_DESTROYED
    /*
    *   Fires for both explicitly and implicitly destroyed projectiles (for ranged only)
    *   For projectiles destroyed implicitly, this fires after <EVENT_ATTACK_PROJECTILE_IMPACT> and after all damage event fires
    */


    type projectile extends handle
    type attack

    class projectile

        // For function API, all readonly fields should have its corresponding getter while public members should have its corresponding getter as well as setter functions
        public unit source
        public widget target
        public boolean showShadow
        public attacktype attackType
        public damagetype damageType
        public weapontype weaponType
        public real x
        public real y
        public real z
        public real targetX
        public real targetY
        public real targetZ
        public real speed
        public real minSpeed
        public real maxSpeed
        public real acceleration
        public real distanceTravelled
        public real maxDuration
        public real bounceRange
        public real pitch
        public real scale
        public real timeScale
        public real damage
        public integer maxBounces
        readonly integer currentBounces
        readonly boolean main // Checks if the projectile is the primary one in case of Split Shot abilities

        private integer sfxCount
        private string array sfx[sfxCount]

        public static projectile create(unit source, widget target)
        /*
        *   Does not play the unit's attack animation and does not interrupt orders (u can use this to launch a ranged attack from a moving unit, much like the phoenix)
        *   Fires the attack events except for <EVENT_ATTACK_START> and <EVENT_ATTACK_RELEASED>
        */

        public void destroy() // Explicit projectile destruction

        public void addSfx(string model)
        public void removeSfx(string model)
        /*
        *   Very useful for Orb Stacking systems where you need to superimpose many special effects on one projectile
        *   removeSfx() should also allow for removing the default model of the projectile
        */


    class attack

        readonly projectile bullet // null if attack is melee

        // if the attack is ranged, the fields below should be null and the attack data should be set to the projectile's fields instead
        public unit source
        public widget target
        public real damage
        public attacktype attackType
        public damagetype damageType
        public weapontype weaponType
     


    Suggested APIs (Aside from the ones mentioned above)
    Code (vJASS):

    /*
    *   There are a lot to suggest, most of them are listed in this link
    *   [URL]https://www.hiveworkshop.com/resources/attack-system-v1-1.79661/preview?trigger=1[/URL]
    */

     



    3. Illusions

    Code (vJASS):

    function CreateIllusion takes unit source, real x, real y, real z, real facing, real duration returns unit
    function CreateIllusionById takes integer unitId, real x, real y, real z, real facing, real duration returns unit

    function IllusionGetBaseUnit takes unit u returns unit
    function IllusionGetRemainingDuration takes unit u returns real
    function IllusionGetElapsedDuration takes unit u returns real
    function IllusionGetTotalDuration takes unit u returns real
    function IllusionGetDeathEffect takes unit u returns string
    function IllusionGetDamageDealtFactor takes unit u returns real
    function IllusionGetDamageTakenFactor takes unit u returns real

    function IllusionSetRemainingDuration takes unit u, real duration returns nothing
    function IllusionSetTotalDuration takes unit u, real duration returns nothing
    function IllusionSetDeathEffect takes unit u, string sfxpath returns nothing
    function IllusionSetDamageDealtFactor takes unit u, real factor returns nothing
    function IllusionSetDamageTakenFactor takes unit u, real factor returns nothing
    function IllusionShowTimedLifeIndicator takes unit u, boolean enabled returns nothing
     


    type illusion extends unit

    would also be nice instead of the above functions having unit as parameter


    4. Spell Cast Order

    Seriously, the ability to order a unit to cast spells based SOLELY on oderids and not on ability rawcodes is very limiting
    Code (vJASS):

    function IssueSpellImmediateOrder takes unit u, integer spellId returns boolean
    function IssueSpellPointOrder takes unit u, integer spellId, real targetX, real targetY returns boolean
    function IssueSpellTargetOrder takes unit u, integer spellId, widget target returns boolean
     



    5. Other

    Code (vJASS):

    function SetWidgetFacingInstant takes widget w, real rad returns nothing // VERY USEFUL

    function SetEventSpellSource takes unit newSource returns nothing
    function SetEventSpellTarget takes unit newTarget returns nothing
     
     
    Last edited: Dec 25, 2019
  5. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Possibility to pause the game during cinematic mode (when user control is disabled).
     
  6. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    1,493
    Resources:
    3
    Spells:
    2
    Tutorials:
    1
    Resources:
    3
    Though I now entirely doubt that blizzard has even touched this thread or will ever...

    Object fields equal to 0.00 mean the effect does not proc at all, i.e. no mini-stuns
    If someone is so desperate to have a permanent effect they can make one last 27 hours and let me have the spell effect holding the unwanted.
     
  7. DracoL1ch

    DracoL1ch

    Joined:
    Dec 12, 2010
    Messages:
    2,043
    Resources:
    2
    Tutorials:
    2
    Resources:
    2
    the thing is some maps may want to use infinite duration, so they cannot change it. having flags to disable each part of an ability in particular would be cool, but hey, dont you guys have phones?
     
  8. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    A generic chat event. Basically, detecting when a player just writes something in chat.
    Also conditions for this.
     
  9. DracoL1ch

    DracoL1ch

    Joined:
    Dec 12, 2010
    Messages:
    2,043
    Resources:
    2
    Tutorials:
    2
    Resources:
    2
    call TriggerRegisterPlayerChatEvent(t,"",false)
     
  10. ThomasEddington

    ThomasEddington

    Joined:
    Aug 28, 2019
    Messages:
    57
    Resources:
    2
    Icons:
    2
    Resources:
    2
    Please forgive n00bish questions - this is a line of custom script... how would one put this together in a GUI trigger? Or would it have to be all custom JASS?
     
  11. loktar

    loktar

    Model Reviewer

    Joined:
    Nov 2, 2004
    Messages:
    1,685
    Resources:
    52
    Models:
    25
    Icons:
    20
    Packs:
    1
    Tools:
    3
    Spells:
    2
    Tutorials:
    1
    Resources:
    52
    It's the same as
    • Player - t types a chat message containing <Empty String> as A substring
     
  12. ThomasEddington

    ThomasEddington

    Joined:
    Aug 28, 2019
    Messages:
    57
    Resources:
    2
    Icons:
    2
    Resources:
    2
    Ahh-ha - so using substring instead of exact match will create a detector with a wider range, and then if you leave it as <empty string>, it detects everything...!? I think I got it!? Thank you!!
     
  13. loktar

    loktar

    Model Reviewer

    Joined:
    Nov 2, 2004
    Messages:
    1,685
    Resources:
    52
    Models:
    25
    Icons:
    20
    Packs:
    1
    Tools:
    3
    Spells:
    2
    Tutorials:
    1
    Resources:
    52
    Yep, exactly :)
     
  14. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Would really want a hide buff GUI trigger. Basically it should work by hiding the buff icon in the Status field not cancel/disable its effects. This would help with custom spells that require more buffs to work as intended but spells are supposed to have one buff shown. More would be superfluous when other spell buffs like those from auras would be present.
     
  15. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Replacing, editing or deleting a file in the import manager brings you to the first file in the list or somewhere far from where the replaced/deleted/edited file position was. This is very annoying when having loads of imported files that you have to search again for since there is no way to quick search for them but to scroll down using the alphabetic order sorting.
    A possibility is to press an arrow key to bring the screen back where it was.
     
  16. BizzaroFukuro

    BizzaroFukuro

    Joined:
    Dec 11, 2009
    Messages:
    201
    Resources:
    2
    Maps:
    2
    Resources:
    2
  17. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
  18. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Can we please have building pathing textures adapt after the tiles they're over instead of the whole tileset?
    (2)Waste Factory
    [​IMG]
     
  19. deepstrasz

    deepstrasz

    Map Reviewer

    Joined:
    Jun 4, 2009
    Messages:
    15,084
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Would be neat to have more than two attack indices/weapons per unit.
    Say you want a unit that attacks ground units using melee normal attack type, attacks air units from a distance/range with piercing and attacks buildings from a distance or melee with siege attack type.
    That means, orb items should be able to enable more attack indices.
     
  20. yxq1122

    yxq1122

    Joined:
    Jun 5, 2018
    Messages:
    162
    Resources:
    1
    Tools:
    1
    Resources:
    1
    UI editing is awesome update of wc3. It would be great if a visual UI editor for designing fdf could be integrated into world editor.