• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[Solved] It is the first time i am requesting "request for the entire triggers"

Level 18
Joined
Jun 2, 2009
Messages
1,233
I have shared map file. Let me tell you how i messed up.

This is a duel map includes 10 rounds. 5 Of the rounds are choosing randomly. Both of the players are controlling both sides.

Example:

Round 1a - 4 Ghouls (RED) VS 4 Archers (BLUE)
Round 1b - 4 Ghouls (BLUE) VS 4 Archers (RED)

Then round ends.

--- Issue 1 ---

After round 1b ends, new round not appears (unless one of the players types -surrender)

--- Issue 2 ---

2 Different rounds trying to run at once.

I have shared the map file because there are several triggers.
 

Attachments

  • Kavga 2024 (v1.01).w3x
    39.4 KB · Views: 7
Last edited:
Level 6
Joined
Jul 7, 2006
Messages
25
Issue 1:

Your triggers checked for battleOver = false however you never reset it back to true in-between rounds causing the issue of the next round never starting as your triggers condition can never be met after the first time.

  • Player1Won
    • Events
      • Unit - A unit owned by Player 2 (Blue) Dies
      • Time - Every 2.00 seconds of game time
    • Conditions
      • battleOver Equal to False
      • (Number of units in (Units owned by Player 2 (Blue) matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) is being transported) Equal to False)).)) Equal to 0
    • Actions
      • Set VariableSet P1Win = (P1Win + 1)
      • Game - Display to (All players) for 1.00 seconds the text: ((|c00f00000 + (Name of Player 1 (Red))) + |rWins.)
      • Set VariableSet battleOver = True
      • Wait 1.00 seconds
      • Trigger - Run End <gen> (checking conditions)
Issue 2:

your trigger End runs 2 triggers when ever a round B ends and one of those triggers being run, also runs the other trigger being run causing the issues of rounds being run multiple times.

  • End
    • Events
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units in (Playable map area) matching ((Point-value of (Matching unit)) Not equal to 31)) and do (Actions)
        • Loop - Actions
          • Unit - Remove (Picked unit) from the game
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Degisim Equal to True
        • Then - Actions
          • Game - Display to (All players) the text: degisim
          • Trigger - Run trigger_mevcut_round (checking conditions)
          • Trigger - Run RoundB <gen> (checking conditions)
          • Set VariableSet Degisim = False
        • Else - Actions
          • Game - Display to (All players) the text: yeni tur
          • Trigger - Run round sistemi <gen> (checking conditions)
          • Trigger - Run Go <gen> (ignoring conditions)
Go trigger running round sistemi again:
  • Go
    • Events
    • Conditions
    • Actions
      • Leaderboard - Change the value for Player 1 (Red) in (Last created leaderboard) to P1Win
      • Leaderboard - Change the value for Player 2 (Blue) in (Last created leaderboard) to P2Win
      • Leaderboard - Sort (Last created leaderboard) by Value in Descending order
      • Wait 1.00 seconds
      • Set VariableSet battleOver = False
      • Trigger - Run round sistemi <gen> (checking conditions)
      • Countdown Timer - Start CompStartTimer as a One-shot timer that will expire in 5.00 seconds
      • If (roundLetter Equal to a) then do (Trigger - Run RoundA <gen> (ignoring conditions)) else do (Trigger - Run RoundB <gen> (ignoring conditions))
      • Wait 0.20 seconds
      • Trigger - Run Comp1RoundStart <gen> (checking conditions)
      • Trigger - Run Comp2RoundStart <gen> (checking conditions)
Can check out the attached map that made the fixes however I also rewrote the round system as I thought your method might have been causing the issues but that was not the case but the repeated calls for the round trigger
 

Attachments

  • Kavga 2024 (v1.01) EDIT.w3x
    40.7 KB · Views: 2
Level 18
Joined
Jun 2, 2009
Messages
1,233
Thank you very much. I will check this and inform you when i am available.
But let me tell you what i want to do. Maybe you will re-create system as you wish.

Currently it includes 10 rounds.
I am planning to pick "random 5 rounds from the round pool"
Every rounds have 2 sides. A and B for both players.
After round ends, system will pick another round from the pool.
Every round can be picked only 1 time.

Update: Oh, it is saved on reforged. No problem. I have both versions. I can look and create same for old versions.
 
Level 17
Joined
Mar 21, 2011
Messages
1,611
You could do something like this

// Initialize Rounds
set RoundIndex = RoundIndex + 1
RoundArray[RoundIndex] = 1
set RoundIndex = RoundIndex + 1
RoundArray[RoundIndex] = 2
set RoundIndex = RoundIndex + 1
RoundArray[RoundIndex] = 3
set RoundIndex = RoundIndex + 1
RoundArray[RoundIndex] = 4

// Get a random round from the pool and "remove" it from the array
set RandomRound = RandomInt(1, RoundIndex)
set CurrentRound = RoundArray[RandomRound]
set RoundArray[RandomRound] = RoundArray[RoundIndex]
set RoundArray[RoundIndex] = 0
set RoundIndex = RoundIndex - 1


// then, whenever you run the above code, you can access data by creating arrays
set SpawnedUnitTypePlayer1[1] = Ghoul
set SpawnedUnitTypePlayer2[1] = Archer
set SpawnedUnitAmountPlayer1[1] = 4
set SpawnedUnitAmountPlayer2[1] = 4

set SpawnedUnitTypePlayer1[2] = Archer
set SpawnedUnitTypePlayer2[2] = Ghoul
set SpawnedUnitAmountPlayer1[2] = 4
set SpawnedUnitAmountPlayer2[2] = 4
....

-Some Event
-> Create (SpawnedUnitAmountPlayer1[CurrentRound]) Units of type (SpawnedUnitTypePlayer1[CurrentRound]) for (Player 1) at Position xy
 
Level 14
Joined
Jan 10, 2023
Messages
251
So this is a bit awkward, I started to look into your issues and I found a few things that I thought were problematic and maybe causing some of the confusion that led to your issues.

I found and solved the issues, but I redesigned the triggers enough that I think it is pointless to speak to the issues, especially since it would appear others have already begun to do so.

Anyway, I have a working version of your map which I think you would like, I built it with expansion in mind and kept it as familiar to the old triggers as I was willing to.

I understand if you are not interested, and either way I won't be able to share it until later today, and I hoped to polish up a last thing, so if you were willing to wait until tomorrow afternoon, I would polish it a bit more.

Again, I understand if you are not interested, but to list some improvements:
  • all of your issues are fixed.
  • rounds can go beyond 10, they will be randomly selected until all have been used and then the list will reset and a new random order will begin, and so on until the max number of rounds is reached.
  • The game will restart 10 seconds after it ends, after informing the players of the winner and loser.
  • Wins are counted with the lumber resource.
  • Score is counted with the gold resource, and is based on which player has the highest food. Each player starts at 10,000 points and every 0.5 seconds, their score increases by their own food used, and decreases by the enemy's food used. This winners tend to be above 10,000 score, and losers below.
  • Wins are tracked beyond each game, but each game counts player wins independently of overall wins, so if you play 3 sessions, it still counts your wins for that session, but not for sessions past.
  • Added support to be able to add and remove round types, which I renamed to scenarios.

But I'm at work, I'll update later.
 
Level 18
Joined
Jun 2, 2009
Messages
1,233
Wow. Seriously? By the way i haven't configurated win and round losses yet. It will not ends when any player have specific round wins.
By the way i wasn't knew there was many issues. @Tristronic
You can do anything you want. It is a simple duel map. Some improvements can't hurt. Not necessary but you can do if you want.
 
Level 14
Joined
Jan 10, 2023
Messages
251
@JFAMAP I was kind of bored the other night when I saw your post and it looked simple enough of an idea. It may be that some of the things that I thought were issues were simply things I didn't understand, but I didn't really mean active issues that you would notice while playing. I meant there were times where I felt I understood what you wanted to do, but the way your did it was either overcomplicated or inefficient. Inefficiencies I think are less important and noticeable in this game because it's just a simple duel map, but overcomplicated things I think are always good to get rid of because I think they add up and then it's easy to have a bunch of issues that are hard to trace.
Athough, you can always debug msg your way back home lol.

Here is a list of some of the things I did:
Terrain:
- Spruced up the terrain (I know you would probably do this eventually, but I was testing so much that I figured I'd make it pretty.
- I made the map flyer proof, well it should be, 1 layer of flight path blockers wasn't enough so I made it 4 blockers thick.

Crowd Units:
- I made it so that any unit that is pre-placed on the map in the editor will be treated like a crowd member and will say stuff.
- I made it so that adding strings for the units to say was a little bit more stream-lined, now just add a phrase to the string array and set the total number of strings, periodically there is a chance someone yells something.
  • SetTezahurat
    • Events
    • Conditions
    • Actions
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet TezahuratCount = 14
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet Tezahurat[14] = Hey yavrum benim be
      • Set VariableSet Tezahurat[13] = Ben bundan daha iyi yönetirim orduyu...
      • Set VariableSet Tezahurat[12] = LAN EVI ARABAYI SATTIM SANA BASTIM YAKMA BENI
      • Set VariableSet Tezahurat[11] = Eger kaybedersen evi arabayi kaybediyorum.
      • Set VariableSet Tezahurat[10] = ANANI AVRADINI SIKEYIM SENIN EMI
      • Set VariableSet Tezahurat[9] = ABI NE DURUYORSUN HAYDI SEN BUNDAN DAHA IYISIN
      • Set VariableSet Tezahurat[8] = HADI BE YAPARSIN ASARSIN KESERSIN
      • Set VariableSet Tezahurat[7] = Ya bunlar savasmayi bilmiyorlar birak yaa..
      • Set VariableSet Tezahurat[6] = ANAMIN RUHUNU ORTAYA KOYUYORUM
      • Set VariableSet Tezahurat[5] = SIK ANASINI
      • Set VariableSet Tezahurat[4] = ELON NE DEMIR MI AMK
      • Set VariableSet Tezahurat[3] = Kanka yine kaybedecegim galiba :(
      • Set VariableSet Tezahurat[2] = YAPACAGIN SAVASA SOKAYIM DUZGUN SAVAS
      • Set VariableSet Tezahurat[1] = VUR ASLANIM KIR KEMIKLERINI
      • -------- --------------------------------------------------------------------------------- --------
  • SetTezahurat
    • Events
    • Conditions
    • Actions
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet TezahuratCount = 14
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet Tezahurat[14] = Hey yavrum benim be
      • Set VariableSet Tezahurat[13] = Ben bundan daha iyi yönetirim orduyu...
      • Set VariableSet Tezahurat[12] = LAN EVI ARABAYI SATTIM SANA BASTIM YAKMA BENI
      • Set VariableSet Tezahurat[11] = Eger kaybedersen evi arabayi kaybediyorum.
      • Set VariableSet Tezahurat[10] = ANANI AVRADINI SIKEYIM SENIN EMI
      • Set VariableSet Tezahurat[9] = ABI NE DURUYORSUN HAYDI SEN BUNDAN DAHA IYISIN
      • Set VariableSet Tezahurat[8] = HADI BE YAPARSIN ASARSIN KESERSIN
      • Set VariableSet Tezahurat[7] = Ya bunlar savasmayi bilmiyorlar birak yaa..
      • Set VariableSet Tezahurat[6] = ANAMIN RUHUNU ORTAYA KOYUYORUM
      • Set VariableSet Tezahurat[5] = SIK ANASINI
      • Set VariableSet Tezahurat[4] = ELON NE DEMIR MI AMK
      • Set VariableSet Tezahurat[3] = Kanka yine kaybedecegim galiba :(
      • Set VariableSet Tezahurat[2] = YAPACAGIN SAVASA SOKAYIM DUZGUN SAVAS
      • Set VariableSet Tezahurat[1] = VUR ASLANIM KIR KEMIKLERINI
      • -------- --------------------------------------------------------------------------------- --------

Research:
- I pulled these out of the scenario/round triggers to make the scenarios cleaner, and because researches can't be undone, and given that scenarios are chosen randomly, there is no guarantee that a player doesn't have them when you want them not to have one, so I figured just make them always have them.

Scenarios:
- Were called rounds, terminology got to be too overlapping.
- Now work in a format such as: where Player A and B will be switched from Players 1 & 2 between rounds, points A and B being there starting points.
  • s10
    • Events
    • Conditions
    • Actions
      • -------- --------------------------------------------------------------------------------- --------
      • Unit - Create 5 Headhunter for PlayerA at PointA facing PointB
      • -------- --------------------------------------------------------------------------------- --------
      • Unit - Create 5 Headhunter for PlayerB at PointB facing PointA
      • -------- --------------------------------------------------------------------------------- --------
- The idea here is that you want to be able to start a round without this trigger knowing or caring it is round A or round B, by making these scenario triggers simple, we can simply call the round twice, once while player 1 is player A and once while player 2 is player A.
- Adding new scenarios will mean making a new trigger like the one above, and adding the name and number of the scenario to this trigger, and increasing the variable "scenarioCount" to match:
  • SetScenarios
    • Events
    • Conditions
    • Actions
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenarioCount = 10
      • Set VariableSet finalRound = 3
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[10] = s10 <gen>
      • Set VariableSet scenarioDescription[10] = Mizrak Savasi
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[9] = s9 <gen>
      • Set VariableSet scenarioDescription[9] = Neutral Savasi II
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[8] = s8 <gen>
      • Set VariableSet scenarioDescription[8] = Neutral Savasi
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[7] = s7 <gen>
      • Set VariableSet scenarioDescription[7] = Human VS Undead ama biraz kalabalik
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[6] = s6 <gen>
      • Set VariableSet scenarioDescription[6] = Night Elf VS Orc
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[5] = s5 <gen>
      • Set VariableSet scenarioDescription[5] = Hava Savaslari
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[4] = s4 <gen>
      • Set VariableSet scenarioDescription[4] = Human VS Human
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[3] = s3 <gen>
      • Set VariableSet scenarioDescription[3] = Human VS Night Elf
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[2] = s2 <gen>
      • Set VariableSet scenarioDescription[2] = Human VS Undead
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet scenario[1] = s1 <gen>
      • Set VariableSet scenarioDescription[1] = Human VS Orc
      • -------- --------------------------------------------------------------------------------- --------
- I reduced the number of rounds per game to 3 for testing, maybe it would be good to allow the player to set this in game.

Here's a basic description of how it works, and I'll post the triggers to try to save myself some explanation:
This one is pretty straighforward.
  • Start
    • Events
      • Time - Elapsed game time is 0.10 seconds
    • Conditions
    • Actions
      • Set VariableSet PointA = (Player 1 (Red) start location)
      • Set VariableSet PointB = (Player 2 (Blue) start location)
      • Set VariableSet PointC = (Position of Ruins Naga Circle 0997 <gen>)
      • Melee Game - Use melee time of day (for all players)
      • Game - Set the time of day to 9.00
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • Trigger - Run SetResearch <gen> (checking conditions)
      • Trigger - Run SetScenarios <gen> (checking conditions)
      • Trigger - Run SetTezahurat <gen> (checking conditions)
      • Player - Make Player 1 (Red) treat Player 2 (Blue) as an Enemy
      • Player - Make Player 2 (Blue) treat Player 1 (Red) as an Enemy
      • Player - Set Player 1 (Red).Current gold to 10000
      • Player - Set Player 2 (Blue).Current gold to 10000
      • Camera - Set Player 1 (Red)'s camera Height Offset to 360.00 over 0.00 seconds
      • Camera - Set Player 2 (Blue)'s camera Height Offset to 360.00 over 0.00 seconds
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • Unit Group - Add (Picked unit) to TezahuratUnitGroup
Starts the game at 3 seconds and then is called at the end of each round or game after a wait.
  • StartRound
    • Events
      • Time - Elapsed game time is 3.00 seconds
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • subRound Equal to 1
        • Then - Actions
          • Set VariableSet subRound = 2
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • currentRound Equal to finalRound
            • Then - Actions
              • Trigger - Run GameEnd <gen> (checking conditions)
              • Skip remaining actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • currentRound Equal to scenarioCount
            • Then - Actions
              • Set VariableSet scenerioShuffleCount = (scenerioShuffleCount + 1)
            • Else - Actions
          • Set VariableSet subRound = 1
          • Set VariableSet TempIntA = (Random integer number between ((currentRound - (scenerioShuffleCount x scenarioCount)) + 1) and scenarioCount)
          • Set VariableSet scenario[(currentRound - (scenerioShuffleCount x scenarioCount))] = scenario[0]
          • Set VariableSet scenarioDescription[(currentRound - (scenerioShuffleCount x scenarioCount))] = scenarioDescription[0]
          • Set VariableSet currentRound = (currentRound + 1)
          • Set VariableSet scenario[0] = scenario[TempIntA]
          • Set VariableSet scenarioDescription[0] = scenarioDescription[TempIntA]
          • Set VariableSet scenario[TempIntA] = scenario[(currentRound - (scenerioShuffleCount x scenarioCount))]
          • Set VariableSet scenarioDescription[TempIntA] = scenarioDescription[(currentRound - (scenerioShuffleCount x scenarioCount))]
      • Set VariableSet PlayerA = (Player(subRound))
      • Set VariableSet PlayerB = (Player((3 - subRound)))
      • Game - Display to (All players) for 4.00 seconds the text: ((Beginning Scenario + ((String(currentRound)) + , )) + scenarioDescription[0])
      • Game - Display to (All players) for 4.00 seconds the text: ( Round + (String(subRound)))
      • Cinematic - Disable user control for (All players).
      • Camera - Pan camera for (Player(subRound)) to PointA over 1.00 seconds
      • Camera - Pan camera for (Player((3 - subRound))) to PointB over 1.00 seconds
      • Trigger - Run scenario[0] (checking conditions)
      • Wait 2.00 seconds
      • Set VariableSet battleOver = False
      • Cinematic - Enable user control for (All players).
      • Trigger - Run StartComp <gen> (checking conditions)
      • Sound - Play UpkeepRing <gen>
- First round of each game, subRound will be 0, then is set to 1 the first time this trigger runs.
- When subRound is 1, this will find a new scenario from scenario[1-10] and set scenario[0] equal to the chosen scenario.
- subRound = 1: Player 1 = A; Player 2 = B
- When subRound is 2, this will use the last scenario, scenario[0]
- subRound = 2: Player 1 = B; Player 2 = A
- When the final round is complete, or when all scenarios have been done, they are all added back into the usable list to be potentially randomly selected again.
- Last thing this does is initiates the AI, which I spent way too much time on for a game that would probably be best enjoyed by two real people.. XD
I kept the same basic idea you had going, I don't know much about WC3 AI, I am using it here only to support Hero ability use and made another trigger for a simple attacking AI
  • StartComp
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (PlayerA controller) Equal to Computer
              • (PlayerA slot status) Equal to Has left the game
              • (PlayerA slot status) Equal to Is unused
        • Then - Actions
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units owned by PlayerA.) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is A Hero) Equal to True
                • Then - Actions
                  • Set VariableSet TempUnit = (Picked unit)
                  • Trigger - Run SetSkills <gen> (checking conditions)
                • Else - Actions
              • Unit - Order (Picked unit) to Attack-Move To PointC
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (PlayerB controller) Equal to Computer
              • (PlayerB slot status) Equal to Has left the game
              • (PlayerB slot status) Equal to Is unused
        • Then - Actions
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units owned by PlayerB.) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is A Hero) Equal to True
                • Then - Actions
                  • Set VariableSet TempUnit = (Picked unit)
                  • Trigger - Run SetSkills <gen> (checking conditions)
                • Else - Actions
              • Unit - Order (Picked unit) to Attack-Move To PointC
        • Else - Actions
      • Melee Game - Run melee AI scripts (for computer players)
      • Trigger - Turn on FindTargets <gen>
Not Much to see here, the next trigger is more interesting
These triggers are supplimented by the melee AI, which is an area that can be improved, and I know little about AI, so maybe you would want to use another one than the melee AI, the units do try to flee were it not for these triggers preventing them from doing so.
  • FindTargets
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Set VariableSet TempIntA = 0
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units in (Playable map area) matching ((((Owner of (Matching unit)) controller) Not equal to User) and ((Owner of (Matching unit)) Not equal to Neutral Passive))) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is alive) Equal to True
              • ((Picked unit) is in OrderedUnitGroup.) Equal to False
              • ((Picked unit) is in CastingUnitGroup.) Equal to False
            • Then - Actions
              • Set VariableSet TempIntA = (TempIntA + 1)
              • Set VariableSet AITarget[0] = (Picked unit)
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TempIntA Equal to 0
        • Then - Actions
          • Unit Group - Remove all units from OrderedUnitGroup.
          • Trigger - Turn off (This trigger)
          • Wait 0.20 seconds
          • If (battleOver Equal to False) then do (Trigger - Turn on (This trigger)) else do (Do nothing)
          • Skip remaining actions
        • Else - Actions
          • Set VariableSet TempIntA = 0
      • Set VariableSet TargetPlayer = (Player((3 - (Player number of (Owner of AITarget[0])))))
      • Set VariableSet TempDistance[0] = ConcentrationRange
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units owned by TargetPlayer matching (((Matching unit) is alive) Equal to True).) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • ((Picked unit) is A flying unit) Equal to True
                      • Or - Any (Conditions) are true
                        • Conditions
                          • (Unit-type of AITarget[0]) Equal to Batrider
                          • (AITarget[0] is Able to attack flying units) Equal to True
                  • And - All (Conditions) are true
                    • Conditions
                      • ((Picked unit) is A flying unit) Equal to False
                      • (AITarget[0] is Able to attack ground units) Equal to True
            • Then - Actions
              • Set VariableSet TempIntA = (TempIntA + 1)
              • Set VariableSet AITarget[TempIntA] = (Picked unit)
            • Else - Actions
      • Trigger - Run SelectTarget <gen> (checking conditions)
- First loop is finding any unit that has no human owner
- First If/Then/Else is checking if we found any units that aren't busy or that haven't already been given orders, check again in 0.2 seconds
- Once everyone gets an order, it starts the cycle again, ordering maybe 1 unit every 0.03 seconds.
- If we do have a valid unit to boss around, the next unit group function is checking if we have any valid targets for the unit.
- Air units are only valid if you have air attack, et c. I added a case or Batriders so that they can blow up the DragonHawk riders since they have no land targets in that round (the ends will have to justify the means here.... so so many Batriders died in the making of this.
- If there are valid targets, we are going to the next trigger to pick one!
I can't wait to write this in JASS.... seriously. This on is ugly, but mathematically beautiful (on the inside).
  • SelectTarget
    • Events
    • Conditions
      • TempIntA Greater than 0
    • Actions
      • Set VariableSet TempIntB = 0
      • Set VariableSet Xpos[0] = 0.00
      • Set VariableSet Ypos[0] = 0.00
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Unit-type of AITarget[0]) Equal to Batrider
        • Then - Actions
          • -------- Any unit with an AoE attack may want to find most concentrated cluster, put them in the "Or" statement above. --------
          • For each (Integer A) from 1 to TempIntA, do (Actions)
            • Loop - Actions
              • Set VariableSet TempPoint = (Position of AITarget[(Integer A)])
              • Set VariableSet Xpos[(Integer A)] = (X of TempPoint)
              • Set VariableSet Ypos[(Integer A)] = (Y of TempPoint)
              • Custom script: call RemoveLocation( udg_TempPoint )
              • Set VariableSet Xpos[0] = (Xpos[0] + Xpos[(Integer A)])
              • Set VariableSet Ypos[0] = (Ypos[0] + Ypos[(Integer A)])
          • Set VariableSet Xpos[0] = (Xpos[0] / (Real(TempIntA)))
          • Set VariableSet Ypos[0] = (Ypos[0] / (Real(TempIntA)))
          • For each (Integer A) from 1 to TempIntA, do (Actions)
            • Loop - Actions
              • Set VariableSet TempDistance[(Integer A)] = (Square root(((Power((Xpos[0] - Xpos[(Integer A)]), 2.00)) + (Power((Ypos[0] - Ypos[(Integer A)]), 2.00)))))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TempDistance[(Integer A)] Greater than ConcentrationRange
                  • TempDistance[(Integer A)] Greater than TempDistance[0]
                • Then - Actions
                  • Set VariableSet TempIntB = (Integer A)
                  • Set VariableSet TempDistance[0] = TempDistance[(Integer A)]
                • Else - Actions
        • Else - Actions
          • -------- For any unit that would just attack the nearest enemy --------
          • For each (Integer A) from 1 to TempIntA, do (Actions)
            • Loop - Actions
              • Set VariableSet TempPoint = (Position of AITarget[0])
              • Set VariableSet Xpos[0] = (X of TempPoint)
              • Set VariableSet Ypos[0] = (Y of TempPoint)
              • Custom script: call RemoveLocation( udg_TempPoint )
              • Set VariableSet TempDistance[(Integer A)] = (Square root(((Power((Xpos[0] - Xpos[(Integer A)]), 2.00)) + (Power((Ypos[0] - Ypos[(Integer A)]), 2.00)))))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (AITarget[TempIntB] is A ground unit) Equal to True
                          • (AITarget[0] is Able to attack ground units) Equal to False
                      • And - All (Conditions) are true
                        • Conditions
                          • (AITarget[TempIntB] is A flying unit) Equal to True
                          • (AITarget[0] is Able to attack flying units) Equal to False
                • Then - Actions
                  • Set VariableSet TempIntB = (Integer A)
                  • Set VariableSet TempDistance[0] = TempDistance[(Integer A)]
                • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TempIntB Greater than 0
        • Then - Actions
          • Set VariableSet AITarget[TempIntB] = AITarget[TempIntA]
          • Set VariableSet AITarget[TempIntA] = No unit
          • Set VariableSet TempIntA = (TempIntA - 1)
          • Trigger - Run (This trigger) (checking conditions)
        • Else - Actions
          • Set VariableSet TempDistance[0] = TempDistance[1]
          • Set VariableSet TempIntB = 1
          • For each (Integer A) from 1 to TempIntA, do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TempDistance[(Integer A)] Less than or equal to TempDistance[0]
                • Then - Actions
                  • Set VariableSet TempDistance[0] = TempDistance[(Integer A)]
                  • Set VariableSet TempIntB = (Integer A)
                • Else - Actions
                  • Set VariableSet AITarget[(Integer A)] = No unit
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of AITarget[0]) Equal to Batrider
              • (AITarget[TempIntB] is A flying unit) Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Random integer number between 1 and 100) Less than 90
                • Then - Actions
                  • Unit - Order AITarget[0] to Orc Batrider - Unstable Concoction AITarget[TempIntB]
                • Else - Actions
                  • Unit - Order AITarget[0] to Attack-Move To PointC
            • Else - Actions
              • Unit - Order AITarget[0] to Attack AITarget[TempIntB]
          • Unit Group - Add AITarget[0] to OrderedUnitGroup
          • Set VariableSet AITarget[TempIntB] = No unit
          • Set VariableSet AITarget[0] = No unit
          • Skip remaining actions
- I'd rather not explain this one in detail, I'll take questions though.
- The basic idea is to take a positional variance of potential tagets, remove the unit that is furthest from the rest of the group, and repeat until the remaining units are all within a given concentrationRange, the purpose of this being for AoE attacks such as Unstable Concoction.
- If the unit is anything other than a Batrider, they will instead find the closest target of units that they can attack with their basic attack.
- This trigger is kind of half-done in the sense that more units with AoE abilities/attacks could be added, and more basic attack restrictions could be considered (such as only magic attack types can attack ethereal units).
- To prevent all Batriders from blowing up at the same time in a fiery end which could never justify the means, I added a 10% chance that the Batriders chicken out and go back to PointC (center of arena)
This trigger takes units that are casting an ability out of the order queue, so that a channeling unit isn't interrupted, those DragonHawk Riders and their Aerial Shackle really came in handy in testing...
  • BeginCasting
    • Events
      • Unit - A unit Begins channeling an ability
    • Conditions
    • Actions
      • Custom script: set udg_TempIntA = GetUnitCurrentOrder( GetTriggerUnit() )
      • Unit Group - Add (Casting unit) to CastingUnitGroup
      • Unit - Set the custom value of (Casting unit) to TempIntA
  • FinishCasting
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in CastingUnitGroup and do (Actions)
        • Loop - Actions
          • Custom script: set udg_TempIntA = GetUnitCurrentOrder( GetEnumUnit() )
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Custom value of (Picked unit)) Not equal to TempIntA
            • Then - Actions
              • Unit - Set the custom value of (Picked unit) to 0
              • Unit Group - Remove (Picked unit) from CastingUnitGroup.
            • Else - Actions
I forgot to mention, I reduced the number of triggers, this one makes a decent example, there were one of these for each player, as with many other triggers, you've probably notice, but I forgot to mention it.
  • PlayerWin
    • Events
      • Player - Player 1 (Red)'s Food used becomes Equal to 0.00
      • Player - Player 1 (Red) types a chat message containing -pes as An exact match
      • Player - Player 2 (Blue)'s Food used becomes Equal to 0.00
      • Player - Player 2 (Blue) types a chat message containing -pes as An exact match
    • Conditions
      • battleOver Equal to False
    • Actions
      • Set VariableSet battleOver = True
      • Set VariableSet winsPlayer[0] = (winsPlayer[0] + 1)
      • Trigger - Turn off FindTargets <gen>
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Player 2 (Blue) Food used) Equal to 0
          • (Player 1 (Red) Food used) Not equal to 0
        • Then - Actions
          • Set VariableSet winsPlayer[1] = (winsPlayer[1] + 1)
          • Player - Set Player 1 (Red).Current lumber to ((Player 1 (Red) Current lumber) + 1)
          • Game - Display to (All players) for 1.00 seconds the text: ((|c00ffff00 + (Name of Player 1 (Red))) + |r Wins..)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Player 1 (Red) Food used) Equal to 0
          • (Player 2 (Blue) Food used) Not equal to 0
        • Then - Actions
          • Set VariableSet winsPlayer[2] = (winsPlayer[2] + 1)
          • Player - Set Player 2 (Blue).Current lumber to ((Player 2 (Blue) Current lumber) + 1)
          • Game - Display to (All players) for 1.00 seconds the text: ((|c00ffff00 + (Name of Player 2 (Blue))) + |r Wins..)
        • Else - Actions
      • Wait 0.50 seconds
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Remove all units from CastingUnitGroup.
      • Unit Group - Pick every unit in (Units in (Playable map area) matching ((Owner of (Picked unit)) Not equal to Neutral Passive)) and do (Actions)
        • Loop - Actions
          • Unit - Remove (Picked unit) from the game
      • Wait 1.50 seconds
      • Trigger - Run StartRound <gen> (checking conditions)
- I didn't like the idea of constantly counting the number of units each player had, so this was switched to use food as the indicator.
- One flaw to this that I haven't corrected yet is that summoned units don't cost food. Probably most easily handled in the Object editor. I wasn't focused on that so I didn't test how summoned units work with food cost...
This could be improved with some UI, maybe just a dialogue box asking if the players want to play again. Nothing really fancy here, the variable resets at the bottom are what resets the scenario randomization, which gets shuffled as it does, potentially leading to a very good randomization process, although, from empirical point of view, random is random I suppose.
  • GameEnd
    • Events
    • Conditions
    • Actions
      • Set VariableSet battleOver = True
      • Wait 0.50 seconds
      • Game - Display to (All players) the text: |cffff4fff - The Ga...
      • Wait 0.50 seconds
      • Game - Display to (All players) the text: |cffffff00 the scor...
      • Wait 0.50 seconds
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • winsPlayer[2] Greater than winsPlayer[1]
        • Then - Actions
          • Game - Display to (All players) the text: (-|cff4f4fff + ((Name of Player 2 (Blue)) + ( - |cffffff00 + ((String(winsPlayer[2])) + |r -))))
          • Game - Display to (All players) the text: (-|cffff4f4f + ((Name of Player 1 (Red)) + ( - |cffffff00 + ((String(winsPlayer[1])) + |r -))))
          • Wait 0.50 seconds
          • Game - Display to (All players) the text: (-|cff4f4fff + ((Name of Player 2 (Blue)) + ( - |cffffff00 + (Wins! + |r -))))
        • Else - Actions
          • Game - Display to (All players) the text: (-|cffff4f4f + ((Name of Player 1 (Red)) + ( - |cffffff00 + ((String(winsPlayer[1])) + |r -))))
          • Game - Display to (All players) the text: (-|cff4f4fff + ((Name of Player 2 (Blue)) + ( - |cffffff00 + ((String(winsPlayer[2])) + |r -))))
          • Wait 0.50 seconds
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • winsPlayer[1] Greater than winsPlayer[2]
            • Then - Actions
              • Game - Display to (All players) the text: (-|cffff4f4f + ((Name of Player 1 (Red)) + ( - |cffffff00 + (Wins! + |r -))))
            • Else - Actions
              • Game - Display to (All players) the text: |cffff4fff - Draw -
      • Wait 1.50 seconds
      • Game - Display to (All players) the text: |cffffff00 the game...
      • Set VariableSet winsPlayer[1] = 0
      • Set VariableSet winsPlayer[2] = 0
      • Set VariableSet currentRound = 0
      • Set VariableSet subRound = 0
      • Set VariableSet scenerioShuffleCount = 0
      • Set VariableSet scenerioShuffleCount = 0
      • Wait 10.00 seconds
      • Trigger - Run StartRound <gen> (checking conditions)
I just felt like adding in an alternate form of score would be good. I meant to make this the tiebreaker, but I forgot to make that actually happen..
  • GoldScore
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • Player - Set Player 1 (Red).Current gold to ((Player 1 (Red) Current gold) + ((Player 1 (Red) Food used) - (Player 2 (Blue) Food used)))
      • Player - Set Player 2 (Blue).Current gold to ((Player 2 (Blue) Current gold) + ((Player 2 (Blue) Food used) - (Player 1 (Red) Food used)))
      • Trigger - Run Tezahurat <gen> (checking conditions)
So the icons don't add up.
  • RemoveHero
    • Events
      • Unit - A unit Becomes revivable
    • Conditions
      • ((Triggering unit) is A Hero) Equal to True
    • Actions
      • Unit - Remove (Triggering unit) from the game
What language is your native Language? I'm jealous, I only know English..
  • Kamera
    • Events
      • Player - Player 1 (Red) types a chat message containing -cam as An exact match
      • Player - Player 2 (Blue) types a chat message containing -cam as An exact match
      • Player - Player 3 (Teal) types a chat message containing -cam as An exact match
      • Player - Player 4 (Purple) types a chat message containing -cam as An exact match
      • Player - Player 5 (Yellow) types a chat message containing -cam as An exact match
      • Player - Player 6 (Orange) types a chat message containing -cam as An exact match
      • Player - Player 8 (Pink) types a chat message containing -cam as An exact match
      • Player - Player 9 (Gray) types a chat message containing -cam as An exact match
      • Player - Player 10 (Light Blue) types a chat message containing -cam as An exact match
      • Player - Player 11 (Dark Green) types a chat message containing -cam as An exact match
      • Player - Player 12 (Brown) types a chat message containing -cam as An exact match
      • Player - Player 2 (Blue) types a chat message containing -far as An exact match
      • Player - Player 3 (Teal) types a chat message containing -far as An exact match
      • Player - Player 4 (Purple) types a chat message containing -far as An exact match
      • Player - Player 5 (Yellow) types a chat message containing -far as An exact match
      • Player - Player 6 (Orange) types a chat message containing -far as An exact match
      • Player - Player 8 (Pink) types a chat message containing -far as An exact match
      • Player - Player 9 (Gray) types a chat message containing -far as An exact match
      • Player - Player 10 (Light Blue) types a chat message containing -far as An exact match
      • Player - Player 11 (Dark Green) types a chat message containing -far as An exact match
      • Player - Player 12 (Brown) types a chat message containing -far as An exact match
    • Conditions
    • Actions
      • Camera - Set (Triggering player)'s camera Height Offset to 360.00 over 0.00 seconds
  • SetSkills
    • Events
    • Conditions
    • Actions
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Human Archmage - Summon Water Elemental
      • Hero - Learn skill for TempUnit: Human Archmage - Brilliance Aura
      • Hero - Learn skill for TempUnit: Human Archmage - Summon Water Elemental
      • Hero - Learn skill for TempUnit: Human Archmage - Brilliance Aura
      • Hero - Learn skill for TempUnit: Human Archmage - Summon Water Elemental
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Human Mountain King - Storm Bolt
      • Hero - Learn skill for TempUnit: Human Mountain King - Bash
      • Hero - Learn skill for TempUnit: Human Mountain King - Storm Bolt
      • Hero - Learn skill for TempUnit: Human Mountain King - Bash
      • Hero - Learn skill for TempUnit: Human Mountain King - Storm Bolt
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Blademaster - Mirror Image
      • Hero - Learn skill for TempUnit: Orc Blademaster - Critical Strike
      • Hero - Learn skill for TempUnit: Orc Blademaster - Mirror Image
      • Hero - Learn skill for TempUnit: Orc Blademaster - Critical Strike
      • Hero - Learn skill for TempUnit: Orc Blademaster - Mirror Image
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Far Seer - Feral Spirit
      • Hero - Learn skill for TempUnit: Orc Far Seer - Chain Lightning
      • Hero - Learn skill for TempUnit: Orc Far Seer - Feral Spirit
      • Hero - Learn skill for TempUnit: Orc Far Seer - Chain Lightning
      • Hero - Learn skill for TempUnit: Orc Far Seer - Feral Spirit
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Shockwave
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Endurance Aura
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Shockwave
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Endurance Aura
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Shockwave
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Serpent Ward
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Healing Wave
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Serpent Ward
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Healing Wave
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Serpent Ward
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Undead Death Knight - Death Coil
      • Hero - Learn skill for TempUnit: Undead Death Knight - Unholy Aura
      • Hero - Learn skill for TempUnit: Undead Death Knight - Death Coil
      • Hero - Learn skill for TempUnit: Undead Death Knight - Unholy Aura
      • Hero - Learn skill for TempUnit: Undead Death Knight - Death Coil
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Nova
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Armor
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Nova
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Armor
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Nova
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Mana Burn
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Immolation
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Mana Burn
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Immolation
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Mana Burn
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Trueshot Aura
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Searing Arrows
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Trueshot Aura
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Searing Arrows
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Trueshot Aura
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Quilbeast
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Bear
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Quilbeast
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Bear
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Quilbeast
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Frost Arrows
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Forked Lightning
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Frost Arrows
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Forked Lightning
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Frost Arrows
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Breath Of Fire
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Drunken Haze
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Breath Of Fire
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Drunken Haze
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Breath Of Fire
      • -------- --------------------------------------------------------------------------------- --------
I think you made this trigger, maybe I did... or maybe I just separated it from another trigger like StartComp..
  • SetSkills
    • Events
    • Conditions
    • Actions
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Human Archmage - Summon Water Elemental
      • Hero - Learn skill for TempUnit: Human Archmage - Brilliance Aura
      • Hero - Learn skill for TempUnit: Human Archmage - Summon Water Elemental
      • Hero - Learn skill for TempUnit: Human Archmage - Brilliance Aura
      • Hero - Learn skill for TempUnit: Human Archmage - Summon Water Elemental
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Human Mountain King - Storm Bolt
      • Hero - Learn skill for TempUnit: Human Mountain King - Bash
      • Hero - Learn skill for TempUnit: Human Mountain King - Storm Bolt
      • Hero - Learn skill for TempUnit: Human Mountain King - Bash
      • Hero - Learn skill for TempUnit: Human Mountain King - Storm Bolt
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Blademaster - Mirror Image
      • Hero - Learn skill for TempUnit: Orc Blademaster - Critical Strike
      • Hero - Learn skill for TempUnit: Orc Blademaster - Mirror Image
      • Hero - Learn skill for TempUnit: Orc Blademaster - Critical Strike
      • Hero - Learn skill for TempUnit: Orc Blademaster - Mirror Image
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Far Seer - Feral Spirit
      • Hero - Learn skill for TempUnit: Orc Far Seer - Chain Lightning
      • Hero - Learn skill for TempUnit: Orc Far Seer - Feral Spirit
      • Hero - Learn skill for TempUnit: Orc Far Seer - Chain Lightning
      • Hero - Learn skill for TempUnit: Orc Far Seer - Feral Spirit
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Shockwave
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Endurance Aura
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Shockwave
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Endurance Aura
      • Hero - Learn skill for TempUnit: Orc Tauren Chieftain - Shockwave
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Serpent Ward
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Healing Wave
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Serpent Ward
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Healing Wave
      • Hero - Learn skill for TempUnit: Orc Shadow Hunter - Serpent Ward
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Undead Death Knight - Death Coil
      • Hero - Learn skill for TempUnit: Undead Death Knight - Unholy Aura
      • Hero - Learn skill for TempUnit: Undead Death Knight - Death Coil
      • Hero - Learn skill for TempUnit: Undead Death Knight - Unholy Aura
      • Hero - Learn skill for TempUnit: Undead Death Knight - Death Coil
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Nova
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Armor
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Nova
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Armor
      • Hero - Learn skill for TempUnit: Undead Lich - Frost Nova
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Mana Burn
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Immolation
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Mana Burn
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Immolation
      • Hero - Learn skill for TempUnit: Night Elf Demon Hunter - Mana Burn
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Trueshot Aura
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Searing Arrows
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Trueshot Aura
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Searing Arrows
      • Hero - Learn skill for TempUnit: Night Elf Priestess Of The Moon - Trueshot Aura
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Quilbeast
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Bear
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Quilbeast
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Bear
      • Hero - Learn skill for TempUnit: Neutral Beastmaster - Summon Quilbeast
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Frost Arrows
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Forked Lightning
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Frost Arrows
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Forked Lightning
      • Hero - Learn skill for TempUnit: Neutral Sea Witch - Frost Arrows
      • -------- --------------------------------------------------------------------------------- --------
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Breath Of Fire
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Drunken Haze
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Breath Of Fire
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Drunken Haze
      • Hero - Learn skill for TempUnit: Neutral Brewmaster - Breath Of Fire
      • -------- --------------------------------------------------------------------------------- --------

Damn that was a lot of typing. Usually I say I love the sound of my own voice, it's equally true that I love the feeling of keys on my fingertips.
Don't worry, I enjoyed it.

PS: If anyone has any questions (OR CRITIQUE) I am interested to hear, even if that's a DM, I'm curious for people's thoughts and opinions especially if there are things I could have done better.
The FindTargets system was hugely overkill, but assuming it doesn't prove to be ridiculous, I thought it may be useful for me elsewhere and I might as well, but if/when I do implement it elsewhere, I wont use GUI and will make it much more efficient, so maybe save the GUI related critiques, if any has one and keep in mind I would rewrite it.
It's ironically the first time my work got used in my code, normally it's the other way around, but essentially the Batrider AoE check is a variance report like I might do on my inventory at work XD (and yes, that was the biggest piece of motivation for me).
 

Attachments

  • Kavga 2024 (v1.01).w3x
    48.4 KB · Views: 6
Level 18
Joined
Jun 2, 2009
Messages
1,233
WoW. This is better than i expected. Now the problem is, i am not familiar with Reforged system. I have opened both versions and now i have started create same triggers into 1.26. I need only one information. All of these triggers works with outdated version?
By the way you did good job. Terrain looks amazing.
 

Remixer

Map Reviewer
Level 33
Joined
Feb 19, 2011
Messages
2,112
WoW. This is better than i expected. Now the problem is, i am not familiar with Reforged system. I have opened both versions and now i have started create same triggers into 1.26. I need only one information. All of these triggers works with outdated version?
By the way you did good job. Terrain looks amazing.
I checked the map briefly and it doesn't look like it uses any new natives from Reforged versions.
 
Level 14
Joined
Jan 10, 2023
Messages
251
WoW. This is better than i expected. Now the problem is, i am not familiar with Reforged system. I have opened both versions and now i have started create same triggers into 1.26. I need only one information. All of these triggers works with outdated version?
By the way you did good job. Terrain looks amazing.
Ah, I wish asked the version, I would have avoided that for you.
Let me know if you have any trouble copying, or probably just post the issue here and someone can help if I'm busy.
 
Top