System Unlimited Hero Selection

Discussion in 'Systems and Snippets' started by ReVolver, Dec 23, 2007.

  1. ReVolver

    ReVolver Moderator Staff Member

    Ratings:
    +608 / 0 / -0
    [​IMG]
    Unlimited Hero Selection System
    by Orc_Tamer​

    Features:
    In GUI (Jass version may be released)

    Requires:
    Next - Hero Unit
    Hero - Unit Type Variable
    Start - Integer Variable
    TimerStart - Timer Variable (If you want to use it)

    Here is a nice little system that will make any of your maps unique by making a tavern, altar, or any building be able to train/summon unlimited heroes. Array limit is 8191 so it's "almost" unlimited =P

    Instructions:
    Replace "Tavern 0002 <gen>" with any pre-placed building in the game and has "Sell Units" unit ability.
    Add the hero to your "Set Heroes"
    Use this as your template to add 4 new heroes
    Code:
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    Next Equal to [COLOR="Blue"][U]Your Next Variable Number[/U][/COLOR]
                Then - Actions
                    For each (Integer A) from Your [COLOR="Blue"][U]Last Heroes Made[/U][/COLOR], do (Actions)
                        Loop - Actions
                            Neutral Building - Remove Hero[(Integer A)] from Tavern 0002 <gen>
                    Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                    For each (Integer A) from [COLOR="Blue"][U]Your New 4 Heroes[/U][/COLOR], do (Actions)
                        Loop - Actions
                            Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                Else - Actions
    Make sure your last loop removes the your last 4 heroes and set your "Next" variable back to 1 and add back your first 4 heroes.

    Code:
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    Next Equal to [COLOR="Blue"][U]Your Last Next Variable Number[/U][/COLOR]
                Then - Actions
                    Set Next = 1
                    For each (Integer A) from [COLOR="Blue"][U]Your Last Heroes[/U][/COLOR], do (Actions)
                        Loop - Actions
                            Neutral Building - Remove Hero[(Integer A)] from Tavern 0002 <gen>
                    Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                    For each (Integer A) from [COLOR="Blue"][U]Your First 4 Heroes[/U][/COLOR], do (Actions)
                        Loop - Actions
                            Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                Else - Actions
    Game Triggers:
    Code:
    Set Heroes
        Events
            Map initialization
        Conditions
        Actions
            -------- Set Up Our Heroes --------
            Set Hero[1] = Paladin
            Set Hero[2] = Archmage
            Set Hero[3] = Mountain King
            Set Hero[4] = Blood Mage
            Set Hero[5] = Blademaster
            Set Hero[6] = Far Seer
            Set Hero[7] = Tauren Chieftain
            Set Hero[8] = Shadow Hunter
            Set Hero[9] = Death Knight
            Set Hero[10] = Lich
            Set Hero[11] = Dreadlord
            Set Hero[12] = Crypt Lord
            Set Hero[13] = Keeper of the Grove
            Set Hero[14] = Priestess of the Moon
            Set Hero[15] = Demon Hunter
            Set Hero[16] = Warden
    
    Code:
    Start Hero
        Events
            Time - StartTimer expires
        Conditions
        Actions
            -------- Change event to "Time Elapsed" if you don't want to use the timer --------
            Set Next = 1
            Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
            For each (Integer A) from 1 to 4, do (Actions)
                Loop - Actions
                    Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
    
    Code:
    Next
        Events
            Unit - A unit Sells a unit
        Conditions
            (Unit-type of (Sold unit)) Equal to Next
        Actions
            Unit - Remove (Sold unit) from the game
            Set Next = (Next + 1)
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    Next Equal to 2
                Then - Actions
                    For each (Integer A) from 1 to 4, do (Actions)
                        Loop - Actions
                            Neutral Building - Remove Hero[(Integer A)] from Tavern 0002 <gen>
                    Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                    For each (Integer A) from 5 to 8, do (Actions)
                        Loop - Actions
                            Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    Next Equal to 3
                Then - Actions
                    For each (Integer A) from 5 to 8, do (Actions)
                        Loop - Actions
                            Neutral Building - Remove Hero[(Integer A)] from Tavern 0002 <gen>
                    Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                    For each (Integer A) from 9 to 12, do (Actions)
                        Loop - Actions
                            Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    Next Equal to 4
                Then - Actions
                    For each (Integer A) from 9 to 12, do (Actions)
                        Loop - Actions
                            Neutral Building - Remove Hero[(Integer A)] from Tavern 0002 <gen>
                    Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                    For each (Integer A) from 13 to 16, do (Actions)
                        Loop - Actions
                            Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                Else - Actions
            If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                If - Conditions
                    Next Equal to 5
                Then - Actions
                    Set Next = 1
                    For each (Integer A) from 13 to 16, do (Actions)
                        Loop - Actions
                            Neutral Building - Remove Hero[(Integer A)] from Tavern 0002 <gen>
                    Neutral Building - Add Next to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                    For each (Integer A) from 1 to 4, do (Actions)
                        Loop - Actions
                            Neutral Building - Add Hero[(Integer A)] to Tavern 0002 <gen> with 1 in stock and a max stock of 1
                Else - Actions
    
    Why is this Unlimited?
    Because normal taverns or any buildings uses 12 slots max and this can be used more than that.
    Why use this?
    1. Uses less buildings (Taverns, Altars, ect)
    2. It's unique
    3. Faster to add heroes to your Tavern
     

    Attached Files:

    • Like Like x 6
  2. 0zaru

    0zaru Learning vJASS ;)

    Ratings:
    +60 / 0 / -0
    It would be nice a jass one ;). Anyway seems fine for me, i would suggest to add some comment or a README that says how to add more "Next" Buttons so you may add more heroes or a way to add more heroes in the "Unlimited Tavern" (Not just 4 I mean) (This is why i suggest that jass would be a better option)

    +rep
     
    • Like Like x 1
  3. ReVolver

    ReVolver Moderator Staff Member

    Ratings:
    +608 / 0 / -0
    I'll just add to the instructions, and I might make it using NewGen later. :)
     
  4. ertaboy356b

    ertaboy356b Old School Gamer

    Ratings:
    +87 / 1 / -0
    I remembered making that kind of tavern once, although it's not really a tavern but a menu that pops-up at the start of the game..

    I just thought of it while I was playing the Blizzard Race Game (forgot the title). I suggest you add more features into it like for example, the back button...
     
    • Like Like x 2
  5. waaaks!

    waaaks! Zinctified

    Ratings:
    +256 / 0 / -0
    can we use all random commands for this?
    how about all pick?
     
    • Like Like x 1
  6. ReVolver

    ReVolver Moderator Staff Member

    Ratings:
    +608 / 0 / -0
    If we stored all the heroes on a unit-type variable array, waaaks! do you think it will be possible? :p

    Ex.

    Player types -ar

    Create Hero Hero[Random#] for Player 1
     
    • Like Like x 1
  7. emjlr3

    emjlr3 Change can be a good thing Staff Member

    Ratings:
    +396 / 0 / -0
    meh if u have more then 12 heroes in your map you deserve to be shot anyway, IMO, show me a map with 12 great heroes and Ill show you a shocked look :eek:
     
  8. ReVolver

    ReVolver Moderator Staff Member

    Ratings:
    +608 / 0 / -0
    DotA
    EotA
    Tides of Blood :eek:
     
  9. Flare

    Flare Stops copies me! Staff Member

    Ratings:
    +662 / 0 / -0
    pretty cool system, and since its released in GUI, itll be accessible to majority of mappers. great job though :)
     
  10. Rheias

    Rheias New Helper (I got over 2000 posts)

    Ratings:
    +232 / 0 / -0
    Good system! Looks nice and works perfectly. The only thing I would suggest is perhaps trying to find an equation instead of using lots of if / then / elses.
     
  11. emjlr3

    emjlr3 Change can be a good thing Staff Member

    Ratings:
    +396 / 0 / -0
    I said 12 GREAT heroes, I can't name 6 great DotA heroes, and I have/do play it a lot
     
  12. Uberplayer

    Uberplayer -

    Ratings:
    +454 / 0 / -0
    Traxes
    Spectre
    Faceless Void
    Lion
    ..
    You want still more?

    Write this system in JASS, then I shall look through it :).
     
  13. Demi666

    Demi666 New Member

    Ratings:
    +127 / 0 / -0
    Very nice system and works easy with -ar to :)

    OFFTOPIC

    i didnt know you played eota!

    HAIL EOTA FTW!
     
  14. emjlr3

    emjlr3 Change can be a good thing Staff Member

    Ratings:
    +396 / 0 / -0
    is that a joke?

    im talking design, not just ones who can pwn in game
     
  15. Hatebreeder

    Hatebreeder So many apples

    Ratings:
    +383 / 0 / -0
    >_> Hail?
    Man, don't say this, it's kinda Perverted.
    Anyways, this system is cool. Is there a limit of "Pages"?
     
    • Like Like x 1
  16. Rheias

    Rheias New Helper (I got over 2000 posts)

    Ratings:
    +232 / 0 / -0
    The limit is 8191 heroes. Unless you are an idiot that shouldn't be a problem.
     
  17. Hatebreeder

    Hatebreeder So many apples

    Ratings:
    +383 / 0 / -0
    Whats this supposed to do with "if I'm an Idiot"?
    Just asked whats the Maximum number of Pages (I was thinking about making this System into a "unlimited Spells", or "Spells Index" System). But thanks for your elaboration.
     
  18. R@i_no_Wyrm

    R@i_no_Wyrm New Member

    Ratings:
    +43 / 0 / -0
    I think Azeroth Grand Prix has develop this system but now all of us can use it.
     
  19. esb

    esb Because none of us are as cruel as all of us.

    Ratings:
    +326 / 0 / -0
    Looks awesome! :D
    A back button would indeed be really nice.

    Would it be too hard if you used the last two rows?
     
  20. Rheias

    Rheias New Helper (I got over 2000 posts)

    Ratings:
    +232 / 0 / -0
    > Whats this supposed to do with "if I'm an Idiot"?

    Nothing, I'm stating that the limit is unrealistic and one could not reach it unless he is doing something wrong.
     

Share This Page