• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Ultimate Micro Melee v0.34

  • Like
Reactions: Flux

Ultimate Micro Melee v0.34


Video Review

About

Screens

Clips

Features

Spells

Models





Video by: YetAnotherYoutuber




Version 0.33 see changlog for v0.34 updates.


About.jpg

Blood Elf Base

Firemaster Panda

Jaina

Blademaster

Dwarf

screenie.jpg
Screenie2.jpg
Screenie3.jpg
Screenie4.jpg
Screenie5.jpg

Races

Witch Doctor

Body Double

Lina

Grom

Wave Slam

Selection.jpg
Shadow.jpg
Body%20Double.jpg
Lina.jpg
Grom.jpg
King.jpg
Features.jpg
Spells.jpg
Models.jpg
[TD]

Additional features, info, changlelog, etc
Other features include:
2.37 MBs file size
Aggressive AI (set to easy, difficult or insane)
Custom Dota-style Hero minimap indicator
Custom Selection Circles
Custom Cursor Set
Custom Cursor Models (saves space eliminating the need for multiple imports)
30 Heroes all with at least one GUI ability
Naga Sound System (only partly functional due to Blizzard conditions)
Dynamic Environmental Effects (4 daily weather changes with sound and regional sounds)
Items Drop on Death (because you really can't take it with you)
Dialogue Menu Race Selection
Pandaren Build Animation System
-Summon like undead
-Harvest like humans
-NightElf build animations
-Summon Build Effect added to Pick Ax

50+ Brilliant OE Spells that look GUI
Fitting Unit Upgrades and Races Research
Blood effects from Melee attacks
MultiBoard for Kill Count
Tooltip Borders, Buttons and XpBar from Blizzard textures
Gradient and Multi-color Texts for Attributes and Tooltips
Ogre Peon Skin by Legal_Ease
Summoned Unit tether system
Hi-Res MiniMap


Possible Future Additions:
!(Feel free to suggest)!
Additional Players (at a cost of losing Mana/Hp Bar System)
More Heroes (Did someone say Invoker?)
More Races (Yes, that is actually possible)
Different Maps


Map Terrain = Echo Islands (reworked Tile Set and doodads)
!Fixed! Dialog System - Second Player working fine! - v0.30
*************v0.31*****************
!New Spells Added!

*************v0.32*****************
!More Spells + New Font Added!

*************v0.33*****************
!Swapped Wall/Canopy Trees!
!Fixed Tooltips for all Barracks & Halls!
!Added new Preview Art!
!Fixed ManaBars System!
!Added nicer thin font! v0.33

*************v0.34*****************
!Fixed PandaCaster Hp + spells!
!Orge Magi bloodlust fixed!
!Added Hp Bar Size change commands!
!added cost to Goblin Factory!
!Fixed Mt. King stock!
!other Hero limit issues fixed!
**********************************
(8) Micro Melee v2.00 8 Player edition released!!!


[/TD]

Keywords:
Troll, Goblin, Fel, Orc, Undead, Human, Naga, Ogre, Dwarf, Pandaren, Panda, Dark, Mini, Knockback, Mana, Bar, Item, Blood, Elf, Micro
Contents

Ultimate Micro Melee v0.34 (Map)

Reviews
18:07, 4th Apr 2016 Rufus: Rufus ReviewMap ScoreGameplay:25 / 30Aesthetics:18 / 20Total:43 / 50 Rating Chart 45-505/5 Highly Recommended35-444/5 Recommended25-343/5 Useful15-242/5 Lacking0-141/5 Unacceptable Gameplay I had lots of fun...

Moderator

M

Moderator

18:07, 4th Apr 2016
Rufus:
profilepic210991_9.gif
Rufus Review
Map Score
Gameplay:25 / 30
Aesthetics:18 / 20
Total:43 / 50

Rating Chart
45-505/5 Highly Recommended
35-444/5 Recommended
25-343/5 Useful
15-242/5 Lacking
0-141/5 Unacceptable

mapdev.gif
Gameplay
I had lots of fun playing this map!
First of all, it is great that you have so many race options to choose from. I played most of them and found all of them pretty interesting and fun. The general idea of the game is good, and the creators execution of the concept is well done. However, I felt like the techtrees was a tad too small at some occasions. This is a personal opinion, and does not need to change in the future for a higher rating.

I can see that a lot of details has been tended to, and the UI is perfect in this way. However, a few tooltips might need a second look. For example, in the fel orc race, you "Revive heroes" instead of summoning them.

I haven't played this with anyone else yet, but I defenitely would! However, in single player, the AI is always picking the night elf race. A little more diversity here would be great.

terrianforum.gif
Aesthetics
Terrain is not taken into consideration.
The custom UI is great and works for all different available races.
The look of each race sticks to a "Skin-code" that fits their concept.
The ability and unit descriptions is short, clear and efficent. All with fitting icons.

triggersandscriptsforum.gif
Bugs
None I could find.

updatesandnewsforum.gif
Summary
A fun mini-game kind of melee. With a huge pool of well-polished races available for the player to choose from and with a general fun gameplay, you are guaranteed to have a good time while replaying it at least a few times.

I think that with an AI that does not only pick Night Elf, plus a functioning AI for other races, this map could deserve a 5/5 rating.

Approved with a rating of 4/5.
 

Mostly Functional ! - All GUI !

Simplest import ever!
-just C&P and you're done-


226052-albums8526-picture103197.gif


226052-albums8526-picture103194.jpg


226052-albums8526-picture103196.jpg

  • System Set up
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Game - Display to (All players) the text: |c00FF0000P|c00FA05...
      • -------- Disables standard health bars --------
      • Game - Enable pre-selection functionality (Disable pre-selection circles, life bars, and object info)
      • -------- ------------------------------------------------------- --------
      • -------- Turns on custom Hp and Mana bars --------
      • Set ManaBars_On[(Player number of (Triggering player))] = True
      • -------- ------------------------------------------------------- --------
      • -------- In game instructions for on/off --------
      • Quest - Create a Required quest titled Hp and Mana Bars with the description To turn bars off an..., using icon path ReplaceableTextures\CommandButtons\BTNAmbush.blp
      • -------- ------------------------------------------------------- --------
      • -------- I think this just looks nicer--------------------------------- --------
      • Camera - Change camera smoothing factor to 100.00
      • -------- ------------------------------------------------------- --------
      • -------- Set Bar Color Fading------------------------------------------ --------
      • -------- ------------------------------------------------------- --------
      • -------- The (Integer A) here will = (% Life for HP_Unit) In the Bars Loop trigger --------
      • -------- ------------------------------------------------------- --------
      • -------- ---------------To make bars custom color simply change the RGB using the variables HP_Red, HPGreen, and HP_Blue to whatever you like---------------- --------
      • -------- ---------------------------------Remember wc3 uses hexidecimal/HTML color codes - |CFF (red = ff0000), (green = 00ff00), and (blue = 0000ff)----------|r---------------------------------- --------
      • -------- ------------------------------------------------------- --------
      • For each (Integer A) from 1 to 100, do (Actions)
        • Loop - Actions
          • -------- Set Red Color for HP Bar --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Integer A) Less than 10
            • Then - Actions
              • Set HP_Red[(Integer A)] = ff
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Integer A) Less than 20
                • Then - Actions
                  • Set HP_Red[(Integer A)] = fc
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Integer A) Less than 30
                    • Then - Actions
                      • Set HP_Red[(Integer A)] = dc
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Integer A) Less than 40
                        • Then - Actions
                          • Set HP_Red[(Integer A)] = cc
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Integer A) Less than 50
                            • Then - Actions
                              • Set HP_Red[(Integer A)] = bb
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Integer A) Less than 60
                                • Then - Actions
                                  • Set HP_Red[(Integer A)] = aa
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Integer A) Less than 70
                                    • Then - Actions
                                      • Set HP_Red[(Integer A)] = 99
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Integer A) Less than 80
                                        • Then - Actions
                                          • Set HP_Red[(Integer A)] = 66
                                        • Else - Actions
                                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Integer A) Less than 90
                                            • Then - Actions
                                              • Set HP_Red[(Integer A)] = 33
                                            • Else - Actions
                                              • Set HP_Red[(Integer A)] = 00
          • -------- ------------------------------------------------------- --------
          • -------- Set Green Color for HP Bar --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Integer A) Greater than 95
            • Then - Actions
              • Set HP_Green[(Integer A)] = ff
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Integer A) Greater than 85
                • Then - Actions
                  • Set HP_Green[(Integer A)] = fc
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Integer A) Greater than 75
                    • Then - Actions
                      • Set HP_Green[(Integer A)] = df
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Integer A) Greater than 65
                        • Then - Actions
                          • Set HP_Green[(Integer A)] = dc
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Integer A) Greater than 55
                            • Then - Actions
                              • Set HP_Green[(Integer A)] = cd
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Integer A) Greater than 45
                                • Then - Actions
                                  • Set HP_Green[(Integer A)] = ca
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Integer A) Greater than 45
                                    • Then - Actions
                                      • Set HP_Green[(Integer A)] = bb
                                    • Else - Actions
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Integer A) Greater than 35
                                        • Then - Actions
                                          • Set HP_Green[(Integer A)] = ab
                                        • Else - Actions
                                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Integer A) Greater than 25
                                            • Then - Actions
                                              • Set HP_Green[(Integer A)] = 99
                                            • Else - Actions
                                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                • If - Conditions
                                                  • (Integer A) Greater than 15
                                                • Then - Actions
                                                  • Set HP_Green[(Integer A)] = 55
                                                • Else - Actions
                                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    • If - Conditions
                                                      • (Integer A) Greater than 5
                                                    • Then - Actions
                                                      • Set HP_Green[(Integer A)] = 11
                                                    • Else - Actions
                                                      • Set HP_Green[(Integer A)] = 00
          • -------- ------------------------------------------------------- --------
          • -------- SeBlue Color for HP Bar --------
          • Set HP_Blue[(Integer A)] = 00
          • -------- ------------------------------------------------------- --------
          • -------- Set R,G,B Color for HP Bar --------
          • Set HP_Bar_Color[(Integer A)] = (|c00000000l|r|c00 + (HP_Red[(Integer A)] + (HP_Green[(Integer A)] + HP_Blue[(Integer A)])))
          • -------- ------------------------------------------------------- --------
          • -------- -----------------------End HP Bar Color-------------------------------- --------
          • -------- ------------------------------------------------------- --------
          • -------- ------------------------------------------------------------------------------- --------
          • -------- ------------------------------------------------------- --------
          • -------- ---------------------Set Mana Bar Color fading---------------------------------- --------
          • -------- ------------------------------------------------------- --------
          • -------- Set Red Color for Mana Bar --------
          • Set Mana_Red[(Integer A)] = 00
          • -------- ------------------------------------------------------- --------
          • -------- Set Green Color for Mana Bar --------
          • Set Mana_Green[(Integer A)] = 00
          • -------- ------------------------------------------------------- --------
          • -------- SeBlue Color for HP Bar --------
          • Set Mana_Blue[(Integer A)] = CC
          • -------- ------------------------------------------------------- --------
          • -------- Set R,G,B Color for HP Bar --------
          • Set Mana_Bar_Color[(Integer A)] = (|c00000000l|r|c00 + (Mana_Red[(Integer A)] + (Mana_Green[(Integer A)] + Mana_Blue[(Integer A)])))
          • -------- ------------------------------------------------------- --------
          • -------- -----------------------End Mana Bar Color-------------------------------- --------
  • HP Units init
    • Events
      • Time - Elapsed game time is 0.01 seconds
    • Conditions
    • Actions
      • -------- Selects all units already in the map to get HP bars --------
      • Set Mana_Group = (Units in (Playable map area))
      • Unit Group - Pick every unit in Mana_Group and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Life of (Picked unit)) Greater than or equal to 100.00
              • (Owner of (Picked unit)) Not equal to Neutral Passive
              • (Unit-type of (Picked unit)) Not equal to Gold Mine
              • (Unit-type of (Picked unit)) Not equal to Entangled Gold Mine
              • (Unit-type of (Picked unit)) Not equal to Haunted Gold Mine
            • Then - Actions
              • -------- Sets the length of the Bar --------
              • Set StateString = llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
              • Set HP_int = (HP_int + 1)
              • -------- sets an index number for each of the units --------
              • Set HP_Unit[HP_int] = (Picked unit)
              • Set HPstatus = (((Life of (Picked unit)) / (Max life of (Picked unit))) x (Real((Length of StateString))))
              • Set tempp1 = (Position of HP_Unit[HP_int])
              • Set tempp2 = (tempp1 offset by 40.00 towards 180.00 degrees)
              • Floating Text - Create floating text that reads StateString at tempp2 with Z offset 0.00, using font size 4.00, color (0.00%, 100.00%, 0.00%), and 0.00% transparency
              • Set HP_Text[HP_int] = (Last created floating text)
              • Floating Text - Show (Last created floating text) for (All players)
              • Custom script: call RemoveLocation(udg_tempp1)
              • Custom script: call RemoveLocation(udg_tempp2)
              • -------- ---------------- --------
              • -------- sets the size and position of the bar for different types of units --------
              • -------- ---------------- --------
              • -------- ---You may alter the size of the bar by adding lower-case Ls to StateString, and----- --------
              • -------- you can adjust the height with the values of HP_RealZ and the offset with HP_Real --------
              • -------- ---------------- --------
              • -------- Normal Unit - Default --------
              • Set HP_Bar_String[HP_int] = llllllllllllllllllllllllllllllllllllllllllllllllllll
              • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
              • Set HP_Real_Offset[HP_int] = 45.00
              • Set HP_Real_Z[HP_int] = 150.00
              • -------- ---------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HP_Unit[HP_int] is A flying unit) Equal to True
                • Then - Actions
                  • -------- Flying unit --------
                  • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                  • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                  • Set HP_Real_Offset[HP_int] = 45.00
                  • Set tempp1 = (Position of HP_Unit[(Integer A)])
                  • Custom script: set udg_Real_Z = GetLocationZ(udg_tempp1)
                  • Set HP_Real_Z[HP_int] = ((Current flying height of HP_Unit[(Integer A)]) + (300.00 + (Real_Z / 2.00)))
                  • Custom script: call RemoveLocation(udg_tempp1)
                  • -------- ---------------- --------
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (HP_Unit[HP_int] is A town-hall-type unit) Equal to True
                    • Then - Actions
                      • -------- Main Base / Hall --------
                      • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                      • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                      • Set HP_Real_Offset[HP_int] = 150.00
                      • Set HP_Real_Z[HP_int] = 350.00
                      • -------- ---------------- --------
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (HP_Unit[HP_int] is A structure) Equal to True
                        • Then - Actions
                          • -------- Buildings --------
                          • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                          • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                          • Set HP_Real_Offset[HP_int] = 130.00
                          • Set HP_Real_Z[HP_int] = 300.00
                          • -------- ---------------- --------
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Or - Any (Conditions) are true
                                • Conditions
                                  • (HP_Unit[HP_int] is A Hero) Equal to True
                                  • (HP_Unit[HP_int] is an illusion) Equal to True
                            • Then - Actions
                              • -------- Hero --------
                              • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                              • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                              • Set HP_Real_Offset[HP_int] = 52.00
                              • Set HP_Real_Z[HP_int] = 250.00
                              • -------- ---------------- --------
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (HP_Unit[HP_int] is Mechanical) Equal to True
                                • Then - Actions
                                  • -------- Mechanical --------
                                  • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                                  • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                                  • Set HP_Real_Offset[HP_int] = 70.00
                                  • Set HP_Real_Z[HP_int] = 150.00
                                  • -------- ---------------- --------
                                • Else - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (HP_Unit[HP_int] is A peon-type unit) Equal to True
                                    • Then - Actions
                                      • -------- Workers --------
                                      • Set HP_Bar_String[HP_int] = llllllllllllllllllllllllllllllllllllllll
                                      • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                                      • Set HP_Real_Offset[HP_int] = 47.00
                                      • Set HP_Real_Z[HP_int] = 100.00
                                      • -------- ---------------- --------
                                    • Else - Actions
              • Trigger - Turn on Visibility Loop <gen>
              • Trigger - Turn on Bars Loop <gen>
            • Else - Actions
      • Custom script: call DestroyGroup(udg_Mana_Group)
  • Add HP Units
    • Events
      • Unit - A unit enters (Entire map)
      • Unit - A unit Finishes reviving
    • Conditions
    • Actions
      • -------- Sets the default length of the Bar - Note: will be changed below --------
      • Set StateString = llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
      • Set HP_int = (HP_int + 1)
      • -------- sets an index number for each of the units --------
      • Set HPstatus = (((Life of (Triggering unit)) / (Max life of (Triggering unit))) x (Real((Length of StateString))))
      • Set HP_Unit[HP_int] = (Triggering unit)
      • Set tempp1 = (Position of HP_Unit[HP_int])
      • Set tempp2 = (tempp1 offset by 40.00 towards 180.00 degrees)
      • Floating Text - Create floating text that reads StateString at tempp2 with Z offset 0.00, using font size 4.00, color (0.00%, 100.00%, 0.00%), and 0.00% transparency
      • Set HP_Text[HP_int] = (Last created floating text)
      • Floating Text - Show (Last created floating text) for (All players)
      • Custom script: call RemoveLocation(udg_tempp1)
      • Custom script: call RemoveLocation(udg_tempp2)
      • -------- ---------------- --------
      • -------- sets the size and position of the bar for different types of units --------
      • -------- ---------------- --------
      • -------- ---You may alter the size of the bar by adding lower-case Ls to StateString, and----- --------
      • -------- you can adjust the height with the values of HP_RealZ and the offset with HP_Real --------
      • -------- ---------------- --------
      • -------- Normal Unit - Default --------
      • Set HP_Bar_String[HP_int] = llllllllllllllllllllllllllllllllllllllllllllllllllll
      • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
      • Set HP_Real_Offset[HP_int] = 45.00
      • Set HP_Real_Z[HP_int] = 150.00
      • -------- ---------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (HP_Unit[HP_int] is A flying unit) Equal to True
        • Then - Actions
          • -------- Flying unit --------
          • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
          • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
          • Set HP_Real_Offset[HP_int] = 45.00
          • Set tempp1 = (Position of HP_Unit[(Integer A)])
          • Custom script: set udg_Real_Z = GetLocationZ(udg_tempp1)
          • Set HP_Real_Z[HP_int] = ((Current flying height of HP_Unit[(Integer A)]) + (300.00 + (Real_Z / 2.00)))
          • Custom script: call RemoveLocation(udg_tempp1)
          • -------- ---------------- --------
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (HP_Unit[HP_int] is A town-hall-type unit) Equal to True
            • Then - Actions
              • -------- Main Base / Hall --------
              • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
              • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
              • Set HP_Real_Offset[HP_int] = 150.00
              • Set HP_Real_Z[HP_int] = 350.00
              • -------- ---------------- --------
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HP_Unit[HP_int] is A structure) Equal to True
                • Then - Actions
                  • -------- Buildings --------
                  • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                  • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                  • Set HP_Real_Offset[HP_int] = 130.00
                  • Set HP_Real_Z[HP_int] = 300.00
                  • -------- ---------------- --------
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (HP_Unit[HP_int] is A Hero) Equal to True
                          • (HP_Unit[HP_int] is an illusion) Equal to True
                    • Then - Actions
                      • -------- Hero --------
                      • Set HP_Bar_String[HP_int] = llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                      • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                      • Set HP_Real_Offset[HP_int] = 52.00
                      • Set HP_Real_Z[HP_int] = 250.00
                      • -------- ---------------- --------
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (HP_Unit[HP_int] is Mechanical) Equal to True
                        • Then - Actions
                          • -------- Mechanical --------
                          • Set HP_Bar_String[HP_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                          • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                          • Set HP_Real_Offset[HP_int] = 70.00
                          • Set HP_Real_Z[HP_int] = 150.00
                          • -------- ---------------- --------
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (HP_Unit[HP_int] is A peon-type unit) Equal to True
                            • Then - Actions
                              • -------- Workers --------
                              • Set HP_Bar_String[HP_int] = llllllllllllllllllllllllllllllllllllllll
                              • Set HP_Real_BarLength[HP_int] = (Length of HP_Bar_String[HP_int])
                              • Set HP_Real_Offset[HP_int] = 47.00
                              • Set HP_Real_Z[HP_int] = 100.00
                              • -------- ---------------- --------
                            • Else - Actions
  • Mana Units init
    • Events
      • Time - Elapsed game time is 0.02 seconds
    • Conditions
    • Actions
      • Set Mana_Group = (Units in (Playable map area))
      • Unit Group - Pick every unit in Mana_Group and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Max mana of (Picked unit)) Greater than or equal to 1.00
              • ((Picked unit) is A structure) Equal to False
            • Then - Actions
              • Set Mana_int = (Mana_int + 1)
              • Set Mana_Unit[Mana_int] = (Picked unit)
              • Set StateString = llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
              • Set tempp1 = (Position of (Picked unit))
              • Set tempp2 = (tempp1 offset by 40.00 towards 180.00 degrees)
              • Set ManaStatus = (((Mana of (Picked unit)) / (Max mana of (Picked unit))) x (Real((Length of StateString))))
              • Floating Text - Create floating text that reads StateString at tempp2 with Z offset 0.00, using font size 4.00, color (0.00%, 0.00%, 100.00%), and 0.00% transparency
              • Set Mana_Txt[Mana_int] = (Last created floating text)
              • Floating Text - Show (Last created floating text) for (All players)
              • Custom script: call RemoveLocation(udg_tempp1)
              • Custom script: call RemoveLocation(udg_tempp2)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Mana_Unit[Mana_int] is Mechanical) Equal to True
                • Then - Actions
                  • -------- Mechanical --------
                  • Set Mana_Bar_String[Mana_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                  • Set Mana_Real_BarLength[Mana_int] = (Length of Mana_Bar_String[Mana_int])
                  • Set Mana_Real_Offset[Mana_int] = 70.00
                  • Set Mana_Real_Z[Mana_int] = 142.00
                  • -------- ---------------- --------
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Mana_Unit[Mana_int] is A Hero) Equal to True
                          • (Mana_Unit[Mana_int] is an illusion) Equal to True
                    • Then - Actions
                      • -------- Heroes --------
                      • Set Mana_Bar_String[Mana_int] = llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                      • Set Mana_Real_BarLength[Mana_int] = (Length of Mana_Bar_String[Mana_int])
                      • Set Mana_Real_Offset[Mana_int] = 52.00
                      • Set Mana_Real_Z[Mana_int] = 237.00
                      • -------- ---------------- --------
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Mana_Unit[Mana_int] is A flying unit) Equal to True
                        • Then - Actions
                          • -------- Flying unit --------
                          • Set Mana_Bar_String[Mana_int] = lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
                          • Set Mana_Real_BarLength[Mana_int] = (Length of Mana_Bar_String[Mana_int])
                          • Set Mana_Real_Offset[Mana_int] = 45.00
                          • Set tempp1 = (Position of Mana_Unit[(Integer A)])
                          • Custom script: set udg_Real_Z = GetLocationZ(udg_tempp1)
                          • Set Mana_Real_Z[Mana_int] = ((Current flying height of Mana_Unit[(Integer A)]) + (290.00 + (Real_Z / 2.00)))
                          • Custom script: call RemoveLocation(udg_tempp1)
                          • -------- ---------------- --------
                        • Else - Actions
                          • -------- Default Units --------
                          • Set Mana_Bar_String[Mana_int] = llllllllllllllllllllllllllllllllllllllllllllllllllll
                          • Set Mana_Real_BarLength[Mana_int] = (Length of Mana_Bar_String[Mana_int])
                          • Set Mana_Real_Offset[Mana_int] = 45.00
                          • Set Mana_Real_Z[Mana_int] = 137.00
                          • -------- ---------------- --------
            • Else - Actions
      • Custom script: call DestroyGroup(udg_Mana_Group)
  • Bars Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to HP_int, do (Actions)
        • Loop - Actions
          • -------- Checks for signs of Life --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (HP_Unit[(Integer A)] is alive) Equal to True
              • HP_Unit[(Integer A)] Not equal to No unit
            • Then - Actions
              • -------- Implements the position of the bar for different types of units selected in the set-up triggers --------
              • Set tempp1 = (Position of HP_Unit[(Integer A)])
              • Set tempp2 = (tempp1 offset by HP_Real_Offset[(Integer A)] towards 180.00 degrees)
              • Floating Text - Change the position of HP_Text[(Integer A)] to tempp2 with Z offset HP_Real_Z[(Integer A)]
              • Custom script: call RemoveLocation(udg_tempp1)
              • Custom script: call RemoveLocation(udg_tempp2)
              • -------- Sets portion of health --------
              • Set HPstatus = (((Percentage life of HP_Unit[(Integer A)]) / 100.00) x (Real(HP_Real_BarLength[(Integer A)])))
              • -------- Re-Sets color for fading effect and amount/length of Hp. --------
              • Floating Text - Change text of HP_Text[(Integer A)] to (((HP_Bar_Color[(Integer((Percentage life of HP_Unit[(Integer A)])))] + (Substring(HP_Bar_String[(Integer A)], 1, (Integer(HPstatus))))) + |r) + ((|cff000000 + (Substring(HP_Bar_String[(Integer A)], (Integer((HPstatus + 1.00))), HP_Real_BarLength[(Integer A)] using font size 4.00
              • -------- Hides bars for units that are not visible to a player --------
              • -------- -------------------------------------------------------------------------- --------
            • Else - Actions
              • -------- Destroys bar on death --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HP_Unit[(Integer A)] Not equal to No unit
                • Then - Actions
                  • Floating Text - Destroy HP_Text[(Integer A)]
                  • Set HP_Unit[(Integer A)] = No unit
                • Else - Actions
      • -------- ----------------------------Mana Bar Loop----------------------------------- --------
      • -------- This section works the same as above but just for the mana bars --------
      • For each (Integer A) from 1 to Mana_int, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Mana_Unit[(Integer A)] is alive) Equal to True
              • Mana_Unit[(Integer A)] Not equal to No unit
            • Then - Actions
              • Set tempp1 = (Position of Mana_Unit[(Integer A)])
              • Set tempp2 = (tempp1 offset by Mana_Real_Offset[(Integer A)] towards 180.00 degrees)
              • Floating Text - Change the position of Mana_Txt[(Integer A)] to tempp2 with Z offset Mana_Real_Z[(Integer A)]
              • Custom script: call RemoveLocation(udg_tempp1)
              • Custom script: call RemoveLocation(udg_tempp2)
              • Set ManaStatus = (((Percentage mana of Mana_Unit[(Integer A)]) / 100.00) x (Real(Mana_Real_BarLength[(Integer A)])))
              • -------- Sets color for fading effect --------
              • Floating Text - Change text of Mana_Txt[(Integer A)] to (((Mana_Bar_Color[(Integer((Percentage mana of Mana_Unit[(Integer A)])))] + (Substring(Mana_Bar_String[(Integer A)], 1, (Integer(ManaStatus))))) + |r) + ((|cff000000 + (Substring(Mana_Bar_String[(Integer A)], (Integer((ManaStatus + 1.00))), Mana_Real_BarLengt using font size 4.00
              • -------- -------------------------------------------------------------------------- --------
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Mana_Unit[(Integer A)] Not equal to No unit
                • Then - Actions
                  • Floating Text - Destroy Mana_Txt[(Integer A)]
                  • Set Mana_Unit[(Integer A)] = No unit
                • Else - Actions
  • Visibility Loop
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to HP_int, do (Actions)
        • Loop - Actions
          • -------- Checks for signs of Life --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (HP_Unit[(Integer A)] is alive) Equal to True
              • HP_Unit[(Integer A)] Not equal to No unit
            • Then - Actions
              • -------- --------------------------------------------------------------- --------
              • -------- ! These next loops are set for 2 players ---- change the varible if you add more players ! ! ! --------
              • -------- --------------------------------------------------------------- --------
              • Set NumberofPlayers = 2
              • -------- --------------------------------------------------------------- --------
              • For each (Integer B) from 1 to NumberofPlayers, do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (HP_Unit[(Integer A)] is visible to (Player((Integer B)))) Equal to True
                      • (HP_Unit[(Integer A)] is hidden) Equal to False
                      • ManaBars_On[(Player number of (Player((Integer B))))] Equal to True
                    • Then - Actions
                      • -------- Shows bars for units that are visible to a player --------
                      • Set Mana_PlayerB = (Player((Integer B)))
                      • Set Mana_PlayerGroup = (Player group(Mana_PlayerB))
                      • Floating Text - Show HP_Text[(Integer A)] for Mana_PlayerGroup
                      • Custom script: call DestroyForce(udg_Mana_PlayerGroup)
                    • Else - Actions
                      • -------- Hides bars for units that are not visible to a player --------
                      • Set Mana_PlayerB = (Player((Integer B)))
                      • Set Mana_PlayerGroup = (Player group(Mana_PlayerB))
                      • Floating Text - Hide HP_Text[(Integer A)] for Mana_PlayerGroup
                      • Custom script: call DestroyForce(udg_Mana_PlayerGroup)
            • Else - Actions
      • -------- ----------------------------Mana Bar Loop----------------------------------- --------
      • For each (Integer A) from 1 to Mana_int, do (Actions)
        • Loop - Actions
          • -------- Checks for signs of Life --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Mana_Unit[(Integer A)] is alive) Equal to True
              • Mana_Unit[(Integer A)] Not equal to No unit
            • Then - Actions
              • For each (Integer B) from 1 to NumberofPlayers, do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Mana_Unit[(Integer A)] is visible to (Player((Integer B)))) Equal to True
                      • (Mana_Unit[(Integer A)] is hidden) Equal to False
                      • ManaBars_On[(Player number of (Player((Integer B))))] Equal to True
                    • Then - Actions
                      • Set Mana_PlayerB = (Player((Integer B)))
                      • Set Mana_PlayerGroup = (Player group(Mana_PlayerB))
                      • Floating Text - Show Mana_Txt[(Integer A)] for Mana_PlayerGroup
                      • Custom script: call DestroyForce(udg_Mana_PlayerGroup)
                    • Else - Actions
                      • Set Mana_PlayerB = (Player((Integer B)))
                      • Set Mana_PlayerGroup = (Player group(Mana_PlayerB))
                      • Floating Text - Hide Mana_Txt[(Integer A)] for Mana_PlayerGroup
                      • Custom script: call DestroyForce(udg_Mana_PlayerGroup)
            • Else - Actions
  • Bars On Off
    • Events
      • Player - Player 1 (Red) types a chat message containing -Bars as An exact match
      • Player - Player 2 (Blue) types a chat message containing -Bars as An exact match
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ManaBars_On[(Player number of (Triggering player))] Equal to True
        • Then - Actions
          • Set ManaBars_On[(Player number of (Triggering player))] = False
        • Else - Actions
          • Set ManaBars_On[(Player number of (Triggering player))] = True
As with all floating text there is a limit of 100 at any time during a game.
So if your map will require more than 100 bars this system will stop at 100.
Also, if you use dummy units in triggered spells they must be neutral
passive or they will get a HpBar. You can add exceptions to the system in
the "Add Bars" trigger. Also, some units are very tall and the system does
not adjust for this. KotG and Morphed Illidan are two units I know about.
All other unit classes are accounted for. Besides the limitations I just
mentioned this system provides classic HpBars and ManaBars with a simple
cut and paste, it is leakless and clean. Enjoy!
Additional Credit List:
Blood Elf Warden Skin by Denu
Forest Troll Hut model (with build animation) by Ujimasa Hojo
 
Last edited:
Level 18
Joined
Aug 22, 2013
Messages
1,290
My Review
Gameplay: The gameplay is different for normal melee maps. 2 Heroes and really very unique spell's not seen in many melee maps.
[4/5]
Units: Units are well balanced and casters needs ugrades to unlock which is very unique.
[3/5]
Suggestion: Casters are quite lame in this map, they have the same spell which made me bored. Maybe change them to some cool new spells. Fix tooltips errors.

Bugs: Lots of tooltip errors, Heroes, building and units most of them have errors. Fix it. There is also some buildings with missing name. I think it is a blood elf building

Rating:3/5
Vote for approval
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
I like the presentation for the map; it adds a more professional feel to it :) I am more inclined to actually look at maps when the uploader takes the time to make the map descriptions nice.

The gameplay was actually pretty fun, despite each race having low unit diversity. The new UI, game cursors, and selector textures definitely gave it a fresh feeling; I almost forgot I was playing WC3. The terrain wasn't too boring, pretty polished, and the dynamic sound environment made it feel more alive. My only gripe about the terrain was that you used canopy trees; they look really awkward when you have a ton of them. I recommend maybe changing the trees to the regular ones or mixing them up a little :) This map has a lot of potential, but will need some work.
  • As Sunreaver stated, there are a few description errors. I played both the Trolls and Fel Orcs, and I can confirm there are a handful of description errors for both races
  • Along with description errors, they aren't really consistent. Some show the hotkey highlighted and some do not
  • The HP Bar system doesn't show for certain races (ex: Fel Orcs), so it was off putting to have to constantly have a unit selected so I can see their HP
  • Ability, upgrade, and unit X/Y positions seem a bit unorganized
  • I like the new font you used. However, they are sort of a hassle to read when you have them against walls of text. I suggest maybe highlighting key features of a description such as the damage of a spell or what type of units a structure trains
  • Some of the hero abilities were great, but a handful were also quite boring :( (ex: Grom's jump seemed exciting, but I was extremely displeased to see the effects)

The gameplay was rather short. Is there a reason why you only made it a 1v1? This map would be pretty awesome if you had a bigger FFA. For now, I would probably rate this map a 3/5, but only because the current errors you have really bother me D: I can see this map at a 4 or 4.5 if you make the correct changes in the future.
 
The gameplay was rather short. Is there a reason why you only made it a 1v1? This map would be pretty awesome if you had a bigger FFA. For now, I would probably rate this map a 3/5, but only because the current errors you have really bother me D: I can see this map at a 4 or 4.5 if you make the correct changes in the future.
Thank you for the great review. It is quite helpful.

I will make all the changes you mentioned soon. Except the font issue and highlighting ability features. Changing all the tooltips would take forever. I think it would be easier just to use a different font that looks better (less bold).

I can make a larger map but the reason I did this 1v1 is to keep the mana bar system which cannot exceed 100 bars. If I scrap that system I can make everything else in any other map 6v6 or ffa. Maybe people would like that better than mana bars. I can have one out shortly, but I will fix the tooltip errors and trees first.

UPDATED - See Changelog.

From below:
Can add more slot and AI ?

Hey, thanks for the screenshot!

Re: Slots
As I stated above, I can make more slots/players on a bigger map but it would come at the cost of losing the Mana Bars. This is because the mana bars are made from floating text and blizzard hardcoded a 100 floating text limit. So I need to keep numbers down for it to work. That said, the bars are only one small feature, so yes I can make a bigger one with more slots. I probably will, since there is such demand. Edit: Here is it http://www.hiveworkshop.com/forums/maps-564/8-ultimate-micro-melee-v2-00-a-274131/?prev=status%3Dp

Re: AI
By AI, I think you mean that you want all races to be able to be used by comp players. Currently I am using default AI with the Night Elf race. It's strong and builds quickly. It only uses a few basic warriors. I could make it so races would be chosen at random when a computer player is picked. However, this would require a triggered AI system. I have not found a good triggered AI system for altered melee. I think I might need to write one myself. This could take some time, but I will see what I can do.
 
Last edited:
If you have a look into the sklil tooltips, and other things ( balance of races for example ) then I can imagine that this will be one of the better 1v1 map projects.
Thank you! I do intend to get around to that. Did you know I have a 4v4 version out? http://www.hiveworkshop.com/forums/maps-564/8-ultimate-micro-melee-v2-00-a-274131/?prev=status=p
It will have all of the same tooltip typos but I will fix both at somepoint. Importing object editor data will be easy enough.
 
Level 26
Joined
Oct 2, 2011
Messages
2,482
profilepic210991_9.gif
Rufus Review
Map Score
Gameplay:25 / 30
Aesthetics:18 / 20
Total:43 / 50

Rating Chart
45-505/5 Highly Recommended
35-444/5 Recommended
25-343/5 Useful
15-242/5 Lacking
0-141/5 Unacceptable

mapdev.gif
Gameplay
I had lots of fun playing this map!
First of all, it is great that you have so many race options to choose from. I played most of them and found all of them pretty interesting and fun. The general idea of the game is good, and the creators execution of the concept is well done. However, I felt like the techtrees was a tad too small at some occasions. This is a personal opinion, and does not need to change in the future for a higher rating.

I can see that a lot of details has been tended to, and the UI is perfect in this way. However, a few tooltips might need a second look. For example, in the fel orc race, you "Revive heroes" instead of summoning them.

I haven't played this with anyone else yet, but I defenitely would! However, in single player, the AI is always picking the night elf race. A little more diversity here would be great.

terrianforum.gif
Aesthetics
Terrain is not taken into consideration.
The custom UI is great and works for all different available races.
The look of each race sticks to a "Skin-code" that fits their concept.
The ability and unit descriptions is short, clear and efficent. All with fitting icons.

triggersandscriptsforum.gif
Bugs
None I could find.

updatesandnewsforum.gif
Summary
A fun mini-game kind of melee. With a huge pool of well-polished races available for the player to choose from and with a general fun gameplay, you are guaranteed to have a good time while replaying it at least a few times.

I think that with an AI that does not only pick Night Elf, plus a functioning AI for other races, this map could deserve a 5/5 rating.

Rating set to 4/5 and vote for approval.
 
Top