• 🏆 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!

[General] Making Campaigns from 1.24 compatible with 1.28/1.29

Status
Not open for further replies.
Level 23
Joined
Jul 26, 2008
Messages
1,317
Hi guys, I am (hopefully) going to be translating some campaigns from another Warcraft 3 community to the hive workshop. The maps say that are compatible for 1.24-1.27, and when I open them up on 1.28, they do not show on the custom campaign screen.

This is not an issue, as i can go back to 1.26 or below to test them. My question is, if I were to be given the maps to translate, what kind of issue would I have to be fixing in order for them to be compatible with 1.28/1.29. I mean, does the fact that they do not show mean there would require someone with high level knowledge of jass to fix "return bugs' and such, or would it be possible for someone without jass knowledge to bring them up to compatibility with hive workshop users.


Thanks for your time!

Edit1: I have been looking more and more at thread describing the return bug of version 1.24. My issue is, the map description describes these maps as being able to work all the way up to 1.27. From my research of the 1.24 patch issues, this does not match my situation, as if it were return bugs causing this then 1.27 users should not be able to play the map either (of course, this could be an error of the map description, but all 5 of the maps I have tried testing say they work from 1.24 up till 1.27/1.27a, so I am inclined to think it might be something else.
 
Last edited:
Level 23
Joined
Jul 26, 2008
Messages
1,317
I presume they use some hacky methods to do certain stuffs. As of which, I'm unsure what 1.28 broke... oh, maybe Preload?
Hello Daffa, are there any guides on how i can fix this myself? The whole basis of this campaign translation project i want to begin is that the maps will be playable in 1.28. I have contacted the original creators, and they do not seem to know what the problem is. It would be so awkward for me to finish this and then have no-one be able to play the campaign in question :/
 
Hello Daffa, are there any guides on how i can fix this myself? The whole basis of this campaign translation project i want to begin is that the maps will be playable in 1.28. I have contacted the original creators, and they do not seem to know what the problem is. It would be so awkward for me to finish this and then have no-one be able to play the campaign in question :/
I'm pretty sure there's nothing big broken actually. The only thing I'm aware is that Preload is limited to certain extension. Does your map use file creation?
 
Level 23
Joined
Jul 26, 2008
Messages
1,317
I'm pretty sure there's nothing big broken actually. The only thing I'm aware is that Preload is limited to certain extension. Does your map use file creation?
Hi Daffa!
I searched up file creation on hive and it only came back with "creating text files for purposes" type answers (like for rpg save codes).
I am not exactly sure what file creation is :p
Essentially, it is a campaign made in the same format as blizzard maps, with heavy RTS features.
Thanks for the reply though! :)
 
Last edited:
Hi Daffa!
I searched up file creation on hive and it only came back with "creating text files for purposes" type answers (like for rpg save codes).
I am not exactly sure what file creation is :p
Essentially, it is a campaign made in the same format as blizzard maps, with heavy RTS features. Nothing more.
Thanks for the reply though! :)
Then, there shouldn't be an issue. I'm pretty sure it should be possible in 1.28 if it works in 1.24
 
Level 23
Joined
Jul 26, 2008
Messages
1,317
Then, there shouldn't be an issue. I'm pretty sure it should be possible in 1.28 if it works in 1.24
Hello Daffa!
Thanks for your reply. It is unfortunate that the solution is not easy to discover. Do you know anyone I can ask about this problem then who might be able to help? I mean, I have encountered issues before with bugs from old campaigns that cause warcraft 3 to crash or something when opening it, but this is specifically an issue where I cannot even see the map in the custom campaign viewer on 1.28. :(
 
Level 25
Joined
May 11, 2007
Messages
4,651
If you can't see it in the campaign viewer, is it placed in the correct folder? Warcraft 3 campaigns are placed in the my documents/Warcraft 3/campaigns
folder nowadays.

C:\Users\USER_NAME\Documents\Warcraft III\Campaigns
 
Edit1: I have been looking more and more at thread describing the return bug of version 1.24. My issue is, the map description describes these maps as being able to work all the way up to 1.27. From my research of the 1.24 patch issues, this does not match my situation, as if it were return bugs causing this then 1.27 users should not be able to play the map either (of course, this could be an error of the map description, but all 5 of the maps I have tried testing say they work from 1.24 up till 1.27/1.27a, so I am inclined to think it might be something else.

You're correct! If it works on 1.27, then the issue most likely isn't the return bug.

Not too much compatibility-wise changed in 1.28+. It was mostly disabling memhack (I doubt your maps are using that if they were made before this past year or so), and the changes to player slots (to 24 players). But none of those, to my knowledge, should prevent the campaign from showing up in your custom campaigns section.

I'd take a look at what @LordDz mentioned. They moved the location of the campaigns folder. If that doesn't work, try making a campaigns folder in your C:\Program Files\Warcraft III folder, and placing the campaign there. And if that doesn't work, try making the file's name smaller. I remember there was a bug where files w/ long names wouldn't appear in wc3's menus.

Let us know what happens! If it isn't working, it might actually be a bug, and we'll happily ping Kam about it. :)
 
Level 23
Joined
Jul 26, 2008
Messages
1,317
Hihi guys, I found the solution... It turns out there is something with 1.28 that rejects the language of the map, as when i changed the title of the campaign to english it shows up... I know that sounds simple, but because it worked fine on 1.26, there was no reason for me to suspect this was the case. Anyway, I will return to this thread if i actually encounter "real" issues. Sorry for wasting your guys time :(


Edit: Lol, and i thought that would be the end of my troubles :(
A modified trigger editor issue. My troubles have just begun.

upload_2018-6-4_19-53-31.png



Since you have posted here purgefire, can i ask, i saw your thread here:
Trigger Does Not Exist in Database

Does this mean I need to use a modified world editor to even open up the map itself o_O
I have tried the map and it is playable (atleast from the first 2 minutes I played of it), but I cannot open it up in the editor to translate. I asked the author if they used a modified editor and they said no. Since the community the author comes from still plays on 1.21 - 1.24, I suspect they might be using a modified version of warcraft 3 without even knowing it, so that the original author might not even be able to assist me with any issue i find since to them their war3 has no modifications :*(
 
Last edited:
Level 23
Joined
Jul 26, 2008
Messages
1,317
Ok, i tried installing the UMSWE. There might be compatibility issues with it, and 1.29 as whenever i try to open it has that message thing saying some strings cannot load.



upload_2018-6-4_20-22-18.png



But it still can be opened. The issue is, that it cannot even see the campaign file ( at least with the normal editor it can see it, but just errors when it opens). This program file cannot even see it.

Out of theoretical interest, if hypothetically, the warcraft 3 versions of all the users in the community in question are altered, and require some addon like the one daffa just suggested, if the addon in question is not compatible with 1.29, does this mean that my wish to translate campaigns from their community over to hive is actually not possible in the first place, since hive will only accept 1.29 maps?

This is quite sad :(
 
Last edited:
Level 23
Joined
Jul 26, 2008
Messages
1,317
When i say it works on 1.28, i was referring to the map being playable. I have not been able to open it in editor on any version. It keeps giving me that camera message. I have the map in paste if anyone is curious at having a look at it (a bit big, 120mb).
 
Level 23
Joined
Jul 26, 2008
Messages
1,317
Sure I will send the the link to the paste. I am curious about this whole thing though, seeing as how the Chinese community seems to be a big priority for blizzard. There custom map scene is insanely huge, and any attempt to pull them off of their versions (i dont think an official version of the game was ever sold there when war3 came out) would probably need their maps to be able to transfer over to the new version.

Clicking on the link Ghostwolf posted leads to a blank page if this is what you are referring to:
Tool: make WEU maps openable WE

Edit: Your post made it seem like the language thing was an issue. It is no longer an issue as I changed the original name into an english name. It is only opening it that is the issue, not being able to see it on the campaign screen.
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
I can make some of the maps in the campaign openable, however others use trigger data that does not belong to WE or WEU. UMSWE claims it also has custom trigger data, but I couldn't find any.
What was this campaign made with?

/edit
I checked war3map.j, and it was made with YDWE. I'll look into supporting it, if it's possible.
 
Last edited:
Level 23
Joined
Jul 26, 2008
Messages
1,317
Hello Deepstrasz,
I contacted ghost wolf, but on a thread for the wrong issue:
Tool: make WEU maps openable WE
So I will see how that works out.

I am curious, since the creator specifically mentioned that the campaign was not made with any modified world editor, if this means their warcraft 3 version (since many of them did not have access to the legitimate warcraft 3 in the past) just have these modifications built into their warcraft 3. (Of course, this is on the basis that the creator is actually correct in telling me that he/he did not use any modifications, which is what he/she said, but I have no way to guarantee that this person is correct).

But thanks so much for helping everyone. :)
 
Level 23
Joined
Jul 26, 2008
Messages
1,317
@tulee make sure those persons aren't using any custom .dlls or .mpqs and who knows it might be a different language game files issue.

Well, it seems the author has now conveniently mentioned that he/she and many other creators use exactly this "YDWE" that ghost wolf mentioned.

I can make some of the maps in the campaign openable, however others use trigger data that does not belong to WE or WEU. UMSWE claims it also has custom trigger data, but I couldn't find any.
What was this campaign made with?

/edit
I checked war3map.j, and it was made with YDWE. I'll look into supporting it, if it's possible.
@GhostWolf I went onto the YDWE site, and the author there said not only does it not support 1.28, but he has no plans on making it accessible to 1.29. I guess this means if i want to open this and other campaigns up on 1.29, the only way this can be done is if your conversion project supports YDWE? The person I am in contact with specifically said that this is the editor that "most people in that community use". If you need help ghost wolf with this (I know nothing of code, but in terms of language support for YDWE, please let me know. I do not know what else I can offer :/
 
Level 29
Joined
Jul 29, 2007
Messages
5,174
He gave me old versions of the TriggerData.txt files that YDWE uses. These are the files that ultimately define GUI to the editor.
I'll add them to the tester and see what happens, however it's not obvious to me yet if I can support everything, because YDWE has real custom GUI with new types, functions, etc., rather than just giving access to jass natives or some simple preset values like WEU.
I didn't check it yet because I am busy with updating other code, I'll do it soon-ish.

/edit
Checked, and only 11.w3x has an issue that would require a whole trigger to be converted, which I didn't implement yet (I'll look if I can add a GUI manipulation for it though), all others seemingly work.

That being said, I still didn't add any option to directly use a campaign, I'll do it soon-ish, although I don't know how well it will with wit a 150MB file :p

/edit 2
So the problem is that there is a trigger with a top-level condition that uses the native IsUnitInRange.
I can change it to DistanceBetweenPoints so it becomes normal GUI, but it does mean it will inherently leak 2 points every time the trigger runs.

The other option is to convert the whole trigger.

/edit 3
Added DistanceBetweenPoints and the ability to work with campaigns.
As far as I could tell everything was working, the campaign opened and the first map of it opened from within WE with no errors.
Test for yourself :)
 
Last edited:
Level 23
Joined
Jul 26, 2008
Messages
1,317
Hi Ghostwolf! I mentioned this on the other thread, but I just wanted to say how great of a contribution you have made to warcraft 3 as a whole with this conversion project!
I can get to the world editor this friday, I will test everything and let you know how it goes :)
 

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,837
What even controls transitions?
Game Cache through the trigger editor and the Campaign Editor which puts the maps together in relation.

In the campaign I'm referring to the transition levels are not a subcategory as in the second picture maybe because they are not supposed to follow one after the other but be accessed on demand:
CampaignStuff01.png CampaignStuff02.png
As far as triggers go, here's an excerpt:
  • Warp Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set GenMapFolder = DSC
      • Set Chp1MapPrefix = Tw_
      • Set SubMapLabels[0] = MN
      • Set SubMapLabels[1] = DH
      • Set SubMapLabels[2] = EB
      • Set SubMapLabels[3] = WT
      • Set SubMapLabels[4] = PM
      • Set SubMapProperNames[0] = Twilight in Nojh Hajahnah.w3x
      • Set SubMapProperNames[1] = Drakehorn Summit.w3x
      • Set SubMapProperNames[2] = Ehl_Brun_Mountain.w3x
      • Set SubMapProperNames[3] = WharTen.w3x
      • Set SubMapProperNames[4] = Pejl_Mor.w3x
      • Set GenGameSuffix = .w3z
      • Set GameCacheSuffix = .w3v
  • Map Transition
    • Events
    • Conditions
    • Actions
      • Set WarpInProgress = True
      • Set CacheLoadDone = False
      • Trigger - Run Save Red Data <gen> (checking conditions)
      • Wait until (CacheLoadDone Equal to True), checking every 1.00 seconds
      • Set WarpInProgress = False
      • Set GenGamePath = (GenMapFolder + ((\ + (SubMapLabels[CurrentMap] + \)) + (Chp1MapPrefix + (SubMapLabels[CurrentMap] + GenGameSuffix))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (The GenGamePath saved-game exists) Equal to True
        • Then - Actions
          • Game - Delete the (GenMapFolder + (\ + (SubMapLabels[CurrentMap] + \))) saved-game folder
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (The (GenMapFolder + ((\ + (SubMapLabels[TargetMap] + \)) + (Chp1MapPrefix + (SubMapLabels[TargetMap] + GenGameSuffix)))) saved-game exists) Equal to True
        • Then - Actions
          • Game - Save game as GenGamePath and load (GenMapFolder + ((\ + (SubMapLabels[TargetMap] + \)) + (Chp1MapPrefix + (SubMapLabels[TargetMap] + GenGameSuffix)))) (Skip scores)
        • Else - Actions
          • Game - Save game as GenGamePath and change level to SubMapProperNames[TargetMap] (Skip scores)
  • Save Red Data
    • Events
    • Conditions
    • Actions
      • -------- --------
      • -------- Fade Out --------
      • -------- --------
      • Trigger - Run Begin Red Units Invulnerable <gen> (ignoring conditions)
      • Cinematic - Disable user control for Player Group - Player 1 (Red)
      • Cinematic - Fade out over 3.00 seconds using texture Black Mask and color (0.00%, 0.00%, 0.00%) with 0.00% transparency
      • Wait 3.50 seconds
      • Game Cache - Create a game cache from (Chp1MapPrefix + (Cache + GameCacheSuffix))
      • Set WorkingCache = (Last created game cache)
      • Game Cache - Clear all labels of Entry in WorkingCache
      • Game Cache - Clear all labels of RedHeroes in WorkingCache
      • Game Cache - Clear all labels of RedPlayer in WorkingCache
      • Game Cache - Clear all labels of RedUnits in WorkingCache
      • -------- --------
      • -------- Red Heroes --------
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of Aria) Equal to Aria N'Halan
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (VestibuleRegion contains Aria) Equal to True
            • Then - Actions
              • Game Cache - Store ((Agility of Aria (Exclude bonuses)) - 17) as AriaAgility of RedPlayer in WorkingCache
              • Hero - Modify Agility of Aria: Subtract ((Agility of Aria (Exclude bonuses)) - 17)
              • Game Cache - Store Aria as Aria of RedHeroes in WorkingCache
              • Unit - Remove Aria from the game
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FlightToKalimdorQPr Less than 3
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FlightToKalimdorQPr Less than 2
                    • Then - Actions
                      • Set RandomPoint = (Center of Aria NonWarp <gen>)
                      • Unit - Move Aria instantly to RandomPoint, facing 315.00 degrees
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                    • Else - Actions
                      • Set RandomLocA = (Center of Aria NonWarp <gen>)
                      • Set RandomLocB = (Center of Aria AhnMael Speak <gen>)
                      • Set RandomPoint = (Position of Aria)
                      • If ((Distance between RandomLocA and RandomPoint) Less than (Distance between RandomLocB and RandomPoint)) then do (Unit - Move Aria instantly to RandomLocA, facing 315.00 degrees) else do (Unit - Move Aria instantly to RandomLocB, facing 270.00 degrees)
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                      • Custom script: call RemoveLocation( udg_RandomLocA)
                      • Custom script: call RemoveLocation( udg_RandomLocB)
                • Else - Actions
                  • Do nothing
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of LanI) Equal to Lan'Inthas Par
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (VestibuleRegion contains LanI) Equal to True
            • Then - Actions
              • Game Cache - Store ((Agility of LanI (Exclude bonuses)) - 17) as LanIAgility of RedPlayer in WorkingCache
              • Hero - Modify Agility of LanI: Subtract ((Agility of LanI (Exclude bonuses)) - 17)
              • Game Cache - Store LanI as LanI of RedHeroes in WorkingCache
              • Unit - Remove LanI from the game
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FlightToKalimdorQPr Less than 3
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FlightToKalimdorQPr Less than 2
                    • Then - Actions
                      • Set RandomPoint = (Center of LanI NonWarp <gen>)
                      • Unit - Move LanI instantly to RandomPoint, facing 315.00 degrees
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                    • Else - Actions
                      • Set RandomLocA = (Center of LanI NonWarp <gen>)
                      • Set RandomLocB = (Center of LanI AhnMael Speak <gen>)
                      • Set RandomPoint = (Position of LanI)
                      • If ((Distance between RandomLocA and RandomPoint) Less than (Distance between RandomLocB and RandomPoint)) then do (Unit - Move LanI instantly to RandomLocA, facing 315.00 degrees) else do (Unit - Move LanI instantly to RandomLocB, facing 270.00 degrees)
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                      • Custom script: call RemoveLocation( udg_RandomLocA)
                      • Custom script: call RemoveLocation( udg_RandomLocB)
                • Else - Actions
                  • Do nothing
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of NavHan) Equal to Nav'Handras Johl
          • (Owner of NavHan) Equal to Player 1 (Red)
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (VestibuleRegion contains NavHan) Equal to True
            • Then - Actions
              • Game Cache - Store ((Agility of NavHan (Exclude bonuses)) - 13) as NavHanAgility of RedPlayer in WorkingCache
              • Hero - Modify Agility of NavHan: Subtract ((Agility of NavHan (Exclude bonuses)) - 13)
              • Game Cache - Store NavHan as NavHandras of RedHeroes in WorkingCache
              • Unit - Remove NavHan from the game
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FlightToKalimdorQPr Less than 3
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FlightToKalimdorQPr Less than 2
                    • Then - Actions
                      • Set RandomPoint = (Center of NavHan NonWarp <gen>)
                      • Unit - Move NavHan instantly to RandomPoint, facing 315.00 degrees
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                    • Else - Actions
                      • Set RandomLocA = (Center of NavHan NonWarp <gen>)
                      • Set RandomLocB = (Center of NavHan AhnMael Speak <gen>)
                      • Set RandomPoint = (Position of NavHan)
                      • If ((Distance between RandomLocA and RandomPoint) Less than (Distance between RandomLocB and RandomPoint)) then do (Unit - Move NavHan instantly to RandomLocA, facing 315.00 degrees) else do (Unit - Move NavHan instantly to RandomLocB, facing 270.00 degrees)
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                      • Custom script: call RemoveLocation( udg_RandomLocA)
                      • Custom script: call RemoveLocation( udg_RandomLocB)
                • Else - Actions
                  • Do nothing
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of ValMaris) Equal to Val'Maris Zahl
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (VestibuleRegion contains ValMaris) Equal to True
            • Then - Actions
              • Game Cache - Store ((Agility of ValMaris (Exclude bonuses)) - 19) as ValMarisAgility of RedPlayer in WorkingCache
              • Hero - Modify Agility of ValMaris: Subtract ((Agility of ValMaris (Exclude bonuses)) - 19)
              • Game Cache - Store ValMaris as ValMaris of RedHeroes in WorkingCache
              • Unit - Remove ValMaris from the game
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FlightToKalimdorQPr Less than 3
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • FlightToKalimdorQPr Less than 2
                    • Then - Actions
                      • Set RandomPoint = (Center of ValMaris NonWarp <gen>)
                      • Unit - Move ValMaris instantly to RandomPoint, facing 315.00 degrees
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                    • Else - Actions
                      • Set RandomLocA = (Center of ValMaris NonWarp <gen>)
                      • Set RandomLocB = (Center of ValMaris AhnMael Speak <gen>)
                      • Set RandomPoint = (Position of ValMaris)
                      • If ((Distance between RandomLocA and RandomPoint) Less than (Distance between RandomLocB and RandomPoint)) then do (Unit - Move ValMaris instantly to RandomLocA, facing 315.00 degrees) else do (Unit - Move ValMaris instantly to RandomLocB, facing 270.00 degrees)
                      • Custom script: call RemoveLocation( udg_RandomPoint)
                      • Custom script: call RemoveLocation( udg_RandomLocA)
                      • Custom script: call RemoveLocation( udg_RandomLocB)
                • Else - Actions
                  • Do nothing
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of Archon1) Equal to Protoss Archon
        • Then - Actions
          • Trigger - Run Archon 1 Removal <gen> (ignoring conditions)
        • Else - Actions
          • Do nothing
      • -------- --------
      • -------- Red Units --------
      • -------- --------
      • Set IntegerCounter = 0
      • Set SupplyUnitsElsewhere[CurrentMap] = 0
      • Set UnitGroupPtr = (Units in VestibuleRegion matching (((Owner of (Matching unit)) Equal to Player 1 (Red)) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is A Hero) Equal to False))))
      • Unit Group - Pick every unit in UnitGroupPtr and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is Summoned) Equal to False
              • ((Picked unit) is an illusion) Equal to False
              • (Unit-type of (Picked unit)) Not equal to Ward of Revival
              • (Unit-type of (Picked unit)) Not equal to Fire Trap (Level 1)
              • (Unit-type of (Picked unit)) Not equal to Fire Trap (Level 2)
              • (Unit-type of (Picked unit)) Not equal to Frozen Mist (Level 1)
              • (Unit-type of (Picked unit)) Not equal to Frozen Mist (Level 2)
              • (Unit-type of (Picked unit)) Not equal to Spirit Owl
              • ((Picked unit) has buff Doppleganger ) Equal to False
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • Set SupplyUnitsElsewhere[CurrentMap] = (SupplyUnitsElsewhere[CurrentMap] - (Supply used by (Picked unit)))
              • Game Cache - Store (Picked unit) as (Unit + (String(IntegerCounter))) of RedUnits in WorkingCache
              • Set IntegerCounter = (IntegerCounter + 1)
            • Else - Actions
              • Do nothing
          • Unit - Remove (Picked unit) from the game
      • Custom script: call DestroyGroup( udg_UnitGroupPtr)
      • Game Cache - Store IntegerCounter as UnitCount of RedPlayer in WorkingCache
      • Set RandomReal_X = (((Width of Band NonWarp <gen>) / -2.00) + 48.00)
      • Set RandomReal_Y = (((Height of Band NonWarp <gen>) / -2.00) + 48.00)
      • Set RandomReal_W = ((-1.00 x RandomReal_X) - 48.00)
      • Set UnitGroupPtr = (Units owned by Player 1 (Red) matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is A Hero) Equal to False)))
      • Trigger - Run Unit Base Return Loop <gen> (ignoring conditions)
      • Custom script: call DestroyGroup( udg_UnitGroupPtr)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FlightToKalimdorQPr Greater than 0
        • Then - Actions
          • Set UnitGroupPtr = (Units owned by Player 10 (Light Blue) matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is A Hero) Equal to False)))
          • Trigger - Run Unit Base Return Loop <gen> (ignoring conditions)
          • Custom script: call DestroyGroup( udg_UnitGroupPtr)
        • Else - Actions
          • Do nothing
      • -------- --------
      • -------- Red Player Information --------
      • -------- --------
      • Game Cache - Store (Player 1 (Red) Current gold) as Gold of RedPlayer in WorkingCache
      • Game Cache - Store (Player 1 (Red) Current lumber) as Lumber of RedPlayer in WorkingCache
      • Game Cache - Store GenMapFolder as Repository of RedPlayer in WorkingCache
      • For each (Integer A) from 0 to 4, do (Game Cache - Store SupplyUnitsElsewhere[(Integer A)] as (SubMapLabels[(Integer A)] + Supply) of RedPlayer in WorkingCache)
      • Trigger - Run Load Optional Quests <gen> (ignoring conditions)
      • Trigger - Run Load Required Missions <gen> (ignoring conditions)
      • Game Cache - Store SkipCinematic as SkipCinematic of RedPlayer in WorkingCache
      • Game Cache - Store CreepSpawnRate as CreepSpawnRate of RedPlayer in WorkingCache
      • -------- --------
      • -------- The Current Map --------
      • -------- --------
      • Game Cache - Store True as (ReturnFrom + SubMapLabels[CurrentMap]) of Entry in WorkingCache
      • -------- --------
      • -------- Quest Information --------
      • -------- --------
      • Game Cache - Save WorkingCache
      • Set CacheLoadDone = True
  • Unit Base Return Loop
    • Events
    • Conditions
    • Actions
      • Unit Group - Pick every unit in UnitGroupPtr and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is Summoned) Equal to False
              • ((Picked unit) is an illusion) Equal to False
              • (Unit-type of (Picked unit)) Not equal to Ward of Revival
              • (Unit-type of (Picked unit)) Not equal to Fire Trap (Level 1)
              • (Unit-type of (Picked unit)) Not equal to Fire Trap (Level 2)
              • (Unit-type of (Picked unit)) Not equal to Frozen Mist (Level 1)
              • (Unit-type of (Picked unit)) Not equal to Frozen Mist (Level 2)
              • (Unit-type of (Picked unit)) Not equal to Spirit Owl
              • ((Picked unit) has buff Doppleganger ) Equal to False
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FlightToKalimdorQPr Greater than 1
                • Then - Actions
                  • Set RandomLocA = (Position of (Picked unit))
                  • Set RandomLocB = (Center of Band NonWarp <gen>)
                  • Set RandomReal_Z = (Distance between RandomLocA and RandomLocB)
                  • Custom script: call RemoveLocation( udg_RandomLocB)
                  • Set RandomLocB = (Center of AhnMael NonWarp <gen>)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between RandomLocA and RandomLocB) Less than RandomReal_Z
                    • Then - Actions
                      • Set RandomLocC = (Center of AhnMael NonWarp <gen>)
                    • Else - Actions
                      • Set RandomLocC = (Center of Band NonWarp <gen>)
                  • Set RandomPoint = (RandomLocC offset by (RandomReal_X, RandomReal_Y))
                  • Custom script: call RemoveLocation( udg_RandomLocC)
                  • Custom script: call RemoveLocation( udg_RandomLocB)
                  • Custom script: call RemoveLocation( udg_RandomLocA)
                • Else - Actions
                  • Set RandomLocC = (Center of Band NonWarp <gen>)
                  • Set RandomPoint = (RandomLocC offset by (RandomReal_X, RandomReal_Y))
                  • Custom script: call RemoveLocation( udg_RandomLocC)
              • Unit - Move (Picked unit) instantly to RandomPoint, facing 270.00 degrees
              • Custom script: call RemoveLocation( udg_RandomPoint)
              • Set SupplyUnitsElsewhere[CurrentMap] = (SupplyUnitsElsewhere[CurrentMap] + (Supply used by (Picked unit)))
              • Set RandomReal_X = (RandomReal_X + 96.00)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • RandomReal_X Greater than or equal to RandomReal_W
                • Then - Actions
                  • Set RandomReal_X = (-1.00 x RandomReal_W)
                  • Set RandomReal_Y = (RandomReal_Y + 96.00)
                • Else - Actions
                  • Do nothing
            • Else - Actions
              • Unit - Remove (Picked unit) from the game
  • Drakehorn Summit
    • Events
      • Unit - A unit enters Warp to Drakehorn Summit <gen>
    • Conditions
      • WarpInProgress Equal to False
      • Or - Any (Conditions) are true
        • Conditions
          • (Triggering unit) Equal to Aria
          • (Triggering unit) Equal to LanI
          • (Triggering unit) Equal to NavHan
          • (Triggering unit) Equal to ValMaris
    • Actions
      • -------- --------
      • -------- Be careful about declaring variables here; "Save Red Data" starts with a wait! --------
      • -------- --------
      • Set VestibuleRegion = DrakeHorn Vestibule <gen>
      • Set CurrentMap = 0
      • Set TargetMap = 1
      • Trigger - Run Map Transition <gen> (ignoring conditions)

Game cache is saved in the Save folder as one or more .w3p files.
 
Status
Not open for further replies.
Top