1. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  2. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  3. Weave light to take you to your highest hopes - the 6th Special Effect Contest is here!
    Dismiss Notice
  4. Lead your forces to battle in the 15th Techtree Contest. The call is yours, commander!
    Dismiss Notice
  5. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.
  1. Archian
    Created by Archian
    Dec 7, 2017


    Today we got some real eye-candy for you! Some time ago, Mr.Goblin joined the Hive moderation team by taking on the mantle of Art & Graphic Design moderator.
    Mr.Goblin, known in real life as Vincent Turcot, is an accomplished Concept artist, Illustrator & Art Director. One of his artworks was featured on Blizzard's World of Warcraft community site.

    Mr.Goblin has made our art section a real attraction! He started doing livestreaming events which Hive members are invited to tune into and participate in.
    He also participated in Hive's Concept Art Contest #9 and I encourage you to check out the entries!

    Some time ago I, Archian, had a chance to sit down and talk/chat to Mr.Goblin about his experience with concept artwork, and he was kind enough to give me an insight on the process of making the Starcraft Fan Art, For Auir!

    To see more of Mr.Goblins awesome work, be sure to check out the following links after reading through this article:

    108930-1464152656-3ab5803d6d7c9dea77b051702c0fe2e9.png 108931-1464152656-0fe792ca4bb8ac18749171ccf54bd7c5.png 108934-1464152819-c1b77257b10d9f70aae704f3974ec9ff.png workshopgoblin.png


  2. Frotty
    Created by Frotty
    Dec 3, 2017

    This is the second issue in a regular series of news posts about wurst and the wurstscript community. Unlike the previous issue, this one is short, and focused on this month's progress. We intend to use this format for all future posts.

    What is wurst? Wurstscript is a programming language that compiles to JASS (the language used for scripting warcraft 3 custom games), and is developed alongside a suite of tools, which provide a coherent and modern modding development experience. It can even work alongside maps written in vJass. Wurstscript is designed to make hard problems easier and more elegant, and easy problems dead simple.

    The theme of this issue is "wurstscript in practice", where we want to show how regular ordinary maps use wurstscript, instead of focusing on higher level language features.

    Toolchain updates
    • The setup tool has been moved to a separate repository. It now checks for new versions of itself as well as silently checking for compiler and project dependency updates. To get these __critical__ new features, please do update your tool by downloading at the link above.
    • Unit Tests now have map-wide read access to compiletime resources. This allows the author to unit-test some behaviors that were previously not possible.
    • Added "hashtable mocks" for string data operations, which allows them to work at compiletime and in unit tests.
    • Bug fixes:
      • Fixed some edge cases where vscode autocomplete would misbehave.
      • Fixed a bug which caused the `buildmap` command to emit an invalid mapfile in certain cases.
      • Changing between files in vscode no longer causes an invalid buffer ("ambigious reference error").
      • Standard library fixes, and new features.
      • Fixed some rare cases of ascii-int parsing problems, which improves JASS compliance.
    Special thanks to @DD_legionTN and @HappyTauren for their testing and contribution efforts.

    Hiveworkshop integration

    This month a number of us have been thinking about, and acting on, ways of improving unification between wurst's development and hive workshop.

    One achievement on this front is the addition of the Wurst tag, now enabled for all code-related submissions. This includes:
    • Spell submissions.
    • Triggers & Scripts posts.
    • JASS (code) submissions.

    We were also excited to see multiple submissions before this was even announced!

    You should expect further wurst-related activity in the near future as a number of community members are getting involved.

    We're excited to see what you've done that might be fun or interesting but doesn't quite fit in the standard library - and even moreso interested to see what kind of magic you can work up in spell submissions. For code review feedback always feel free to tag @Frotty or @Cokemonkey11 .


    As requested by our readers, we're going to include a code snippet example in our posts from now on. In line with this month's theme, here's a practical and simple example that shows how wurst can make an easy problem trivial:
    Code (WurstScript):
    package SimpleSpell
    // Augments the Warden blink ability to deal damage to units in the target
    // area.  Units with low enough health are instead slain.
    import Assets
    import ClosureForGroups
    import EventHelper
    import RegisterEvents

    constant ID_BLINK = 'A000'

    constant BASE_DAMAGE    =  100.
    constant DAMAGE_RADIUS  =  150.
    constant SLAY_THRESHOLD =  200.
    constant BLINK_RANGE    = 1000.

    constant EFFECT_POISON = Abilities.poisonStingTarget
    constant EFFECT_SLAY   = Objects.nightElfBloodArcher

    function onEffect()
        let caster = GetTriggerUnit()

        forUnitsInRange(getSpellTargetPos(), DAMAGE_RADIUS, (unit u) -> begin
            if caster.getOwner().isEnemyOf(u.getOwner()) and u.isAlive()
                if u.getHP() <= SLAY_THRESHOLD
                    u.addEffect(EFFECT_SLAY, "origin").destr()
                    caster.damageTarget(u, SLAY_THRESHOLD * 2.)
                    u.addEffect(EFFECT_POISON, "origin").destr()
                    caster.damageTarget(u, BASE_DAMAGE)

        registerSpellEffectEvent(ID_BLINK, function onEffect)
    Then when the wurst compiler is run, the above emits nicely readable Jass (see below). This is just one example of wurst providing zero-cost abstraction, since the inliner would ultimately inline e.g. getSpellTargetPos into 2 local definitions - a topic we will discuss more in future posts.

    Code (vJASS):
    function getSpellTargetPos takes nothing returns real
        set getSpellTargetPos_return_x = GetSpellTargetX()
        set getSpellTargetPos_return_y = GetSpellTargetY()
        return getSpellTargetPos_return_x

    function forUnitsInRange takes real pos_x, real pos_y, real radius, integer c returns nothing
        call pushCallback(c)
        call GroupEnumUnitsInRange(Group_ENUM_GROUP, pos_x, pos_y, radius, ClosureForGroups_filter)
        call popCallback()

    function onEffect takes nothing returns nothing
        local unit caster_2 = GetTriggerUnit()
        local real temp_x = getSpellTargetPos()
        local real temp_y = getSpellTargetPos_return_y
        local integer clVar = alloc_Closure_2()
        set caster[clVar] = caster_2
        call forUnitsInRange(temp_x, temp_y, 150., clVar)
        set caster_2 = null

    Next month we'll return to a more hardcore example, demonstrating `@compiletime function`s + expressions, and their uses.

    We look forward to your comments! As usual, we chat all things wurst at the #inwc.de-maps IRC channel.
  3. Ralle
    Created by Ralle
    Dec 2, 2017
    I am very happy and proud to announce that our good old member @Kam now works for Blizzard. This is so ducking awesome. I have reflected his job title on the site:
    Screenshot 2017-12-02 10.21.37.png
    Give him a round of applause everyone!
  4. QuantumT
    Created by QuantumT
    Nov 28, 2017
    IslandTrollTribes Banner 2.png
    IslandTrollTribes image 3a.jpg

    Island Troll Tribes is a Survival PvP Arena game in which you and your tribe build up a base, hunt for meat and gather items to make gear. The ultimate goal is to fight with and defeat the opposing tribe(s).

    Hey Guys,
    We would like to invite everyone to our Island Troll Tribes Tournament.

    Clan TwGB@USEast is hosting a 3v3 Round Robin Seeding Into Double Elimination Playoff. Total prize pool is 225$ + 25% of donations. You can choose your own team or be assigned a team at the start of the group stage.

    2 Matches are assigned weekly and are scheduled for Saturdays and Sundays at 4 pm EST. However, this does not mean that you have to play your match on this day. If you are able to agree on another time with your opponent, you can change the match date. Each team will be assigned 10 matches total over the course of the group stage.

    The group stage will consist of best of 3 matches. You will be awarded 1 point for each game win and 2 points for each match win (i.e. a 2-1 results in 4 points for the winning team, 1 for the losing team). The teams with the most points at the end of the group stage will be seeded highest into the playoff bracket. Format for playoffs will be announced towards the end of the group stage.

    Modes will be as follows:
    Code (Text):
    -fd 3600
    Group Stage Begins this Saturday 2nd December 2017! It will run for approximately 6 weeks, you may join in any time during the group stage, so still plenty of time to get organized and participate. If you are still looking for a team follow the link below:

    Sign Up Page: Clan TwGB

    If you have a team and you'd like to register: Team Registration

    Keep an eye out there for all Island Troll Tribes News and join our Discord, we play daily and have multiple Hostbots.

    Hope to see you guys there.
    Island Troll Tribes Dev team.

    Thanks to Quantum@USEast for this tutorial video.

    Assigned moderator: @Naze
  5. Rufus
    Created by Rufus
    Nov 27, 2017