It's probably worth publishing a test map and seeing if it happens when live. I've had completely different issues before that act in the exact same manner (no issue in first test, issue every other time when testing until sc2 is restarted, no issue on live whatsoever). Decent chance it is related to the test document.
Surprised this thread went on as long as it did. You can min max all day, but here's the jist of things. Arrays are good for storing many values of the same data type relating to one subject. Records are good for storing many values of different data types relating to one subject.
If the only thing you want to do is compare unit types, then use arrays.
In such a scenario you can set up some sort of code to compare the index. Index[2] relates to a hydralisk on both arrays. You really only need a record when things get more complex and you are comparing many data types.
By default a unit's height is relative to the ground and it cannot be negative. You can change it to be relative to the lowest point on the map by using Set Unit State (Ignore Terrain Height) in triggers, or by editing the same value in the data editor.
Note that when you turn this on, your unit's height will still be zero and you'll need to set its height equal to the ground's height to get it to reappear.
By default when you convert any nonstring value to a number, it will result in the number being 0 and throw an error. I'm not positive but I don't think throwing an error causes performance issues, and if your range of numbers does not include zero this shouldn't be an issue. If you need to include zero in your range, then you'll need to do some more advanced exception handling, which I personally don't know how to do with the trigger editor.
One other potential idea on how to accomplish this.
If you select a marine and right click on a medivac, the two units will move towards each other and the marine is loaded when they collide. While the units are moving, you can freely issue orders to the medivac (ie tell it to stop), but issuing any order to the marine will cause the medivac to stop. This only works with right click; using move + left click just causes the marine to follow the medivac indefinitely. I'm not sure what ability/order is being issued with right click.
So in theory you could have an ability that says "Tell the targeted unit to right click on the casting unit, then have the casting unit stop". I have no idea if that is actually possible as I'm not well versed in making abilities.
Proof of concept done via triggers. This only handles when orders are issued to the medivac and not when a unit right clicks on the meidvac as again, I don't actually know what ability/order that is.
I don't have a full solution, but perhaps some useful information to help you find one.
-If you delete the medivac's load ability and replace it with the bunker's load ability (you apparently can't have two tarnsport abilities on one unit), the medivac will still move to load units. Thus, the ability itself isn't actually relevant.
-If you open flags for medivac and uncheck "moveable", then the medivac's load ability will behave just like a bunker. The ever so slight downside to this is that your medivac can no longer move. No big deal though, right?
-Testing this made me realize I don't actually know what causes buildings to be rooted, as the bunker has the moveable flag checked and all my attempts to make the medivac act like a building failed apart from unchecking this flag.
So theoretically you need to disable the medivac's ability to move when it is issued a load command, and re enable it's ability to move after loading or when issued a move command. I'm not sure of how do to that via the data editor. Almost had a working solution via triggers, but not quite.
You don't need any behaviors to create a revive system.
To make a unit revive-able, open then unit in the data editor and set Death Time to -1. This makes it so a unit remains in the game even while it is dead, and allows you to use the inbuilt Revive Unit action on it. You'll want to save the unit your going to revive to a variable for simplicity I imagine.
If you're using a unit you made yourself, you'll also want to check Revive Type in the data editor and make sure it is set to your custom unit.
Your first two errors are saying the text you are writing is two pixels taller than the box you are writing it to. To fix that you either need to increase the height of your dialog items or reduce the size of your text. It sounds like you are using the inbuilt leader board, so the quickest was I see to change that is Set Leaderboard Item Font Size. I don't see a quick way to increase row height in my brief search.
Your third error comes from using something like Picked Player outside of a Pick Each Player loop. Picked player will only be recognized inside of a loop, so if you need to reuse a value from the loop you need to save it to a variable then use that variable outside the loop.
To find a decent death animation, open up the models tab in the data editor, make sure you are in "Detail View", then search "death". This should give you a preview of a bunch of different death animations models.
Next select the actor of your unit in the data editor and search for the field Death Effects - Model. You can add different models for different damage sources, but to add a generic death animation just add something under normal.
If you want to add sound, do the same thing under the sound tab and with the Death Effects - Sound field.
Pick each unit in unit group (Units in Region with alliance to player matching condition) Player - picked, Type - larva, Count - 1, Region - entire map
That should pick out exactly 1 larva unit for each player.
Use the Issue Order action with the ability command Bridge Extend or Bridge Retract. Each bridge has a unique extend and retract move, so its just a matter of finding the one that links to the unit you are using.
If you add a mineral cost to a blizzard made ability like spawn infested terran and then put an infestor in the same scenario, the same bug will occur with mineral cost but not with energy costs, which suggests this is an actual bug.
The best theoretical work around I can think of is having your target effect use charges, then make a 2nd ability which supplies charges in exchange for minerals.
0
It's probably worth publishing a test map and seeing if it happens when live. I've had completely different issues before that act in the exact same manner (no issue in first test, issue every other time when testing until sc2 is restarted, no issue on live whatsoever). Decent chance it is related to the test document.
0
@coffeeclubbr: Go
A simple solution is giving one ability point per level but making all abilities cost 2 ability points to learn.
0
View > Show Layer > Doodads
0
@BigDonRob: Go
Surprised this thread went on as long as it did. You can min max all day, but here's the jist of things. Arrays are good for storing many values of the same data type relating to one subject. Records are good for storing many values of different data types relating to one subject.
If the only thing you want to do is compare unit types, then use arrays.
arr unitTypeDefault = {zergling, hydralisk, ultralisk};
arr unitTypeBurrowed = {burrowedZergling, burrowedHydralisk, burrowedUltralisk};
In such a scenario you can set up some sort of code to compare the index. Index[2] relates to a hydralisk on both arrays. You really only need a record when things get more complex and you are comparing many data types.
0
By default a unit's height is relative to the ground and it cannot be negative. You can change it to be relative to the lowest point on the map by using Set Unit State (Ignore Terrain Height) in triggers, or by editing the same value in the data editor.
Note that when you turn this on, your unit's height will still be zero and you'll need to set its height equal to the ground's height to get it to reappear.
0
By default when you convert any nonstring value to a number, it will result in the number being 0 and throw an error. I'm not positive but I don't think throwing an error causes performance issues, and if your range of numbers does not include zero this shouldn't be an issue. If you need to include zero in your range, then you'll need to do some more advanced exception handling, which I personally don't know how to do with the trigger editor.
0
One other potential idea on how to accomplish this.
If you select a marine and right click on a medivac, the two units will move towards each other and the marine is loaded when they collide. While the units are moving, you can freely issue orders to the medivac (ie tell it to stop), but issuing any order to the marine will cause the medivac to stop. This only works with right click; using move + left click just causes the marine to follow the medivac indefinitely. I'm not sure what ability/order is being issued with right click.
So in theory you could have an ability that says "Tell the targeted unit to right click on the casting unit, then have the casting unit stop". I have no idea if that is actually possible as I'm not well versed in making abilities.
Proof of concept done via triggers. This only handles when orders are issued to the medivac and not when a unit right clicks on the meidvac as again, I don't actually know what ability/order that is.
0
I don't have a full solution, but perhaps some useful information to help you find one.
-If you delete the medivac's load ability and replace it with the bunker's load ability (you apparently can't have two tarnsport abilities on one unit), the medivac will still move to load units. Thus, the ability itself isn't actually relevant.
-If you open flags for medivac and uncheck "moveable", then the medivac's load ability will behave just like a bunker. The ever so slight downside to this is that your medivac can no longer move. No big deal though, right?
-Testing this made me realize I don't actually know what causes buildings to be rooted, as the bunker has the moveable flag checked and all my attempts to make the medivac act like a building failed apart from unchecking this flag.
So theoretically you need to disable the medivac's ability to move when it is issued a load command, and re enable it's ability to move after loading or when issued a move command. I'm not sure of how do to that via the data editor. Almost had a working solution via triggers, but not quite.
0
It preserves hero levels, learned abilities, and lets you run actions while the unit is dead like moving it around the map.
0
You don't need any behaviors to create a revive system.
To make a unit revive-able, open then unit in the data editor and set Death Time to -1. This makes it so a unit remains in the game even while it is dead, and allows you to use the inbuilt Revive Unit action on it. You'll want to save the unit your going to revive to a variable for simplicity I imagine.
If you're using a unit you made yourself, you'll also want to check Revive Type in the data editor and make sure it is set to your custom unit.
0
Your first two errors are saying the text you are writing is two pixels taller than the box you are writing it to. To fix that you either need to increase the height of your dialog items or reduce the size of your text. It sounds like you are using the inbuilt leader board, so the quickest was I see to change that is Set Leaderboard Item Font Size. I don't see a quick way to increase row height in my brief search.
Your third error comes from using something like Picked Player outside of a Pick Each Player loop. Picked player will only be recognized inside of a loop, so if you need to reuse a value from the loop you need to save it to a variable then use that variable outside the loop.
0
@BozoOvermind: Go
To find a decent death animation, open up the models tab in the data editor, make sure you are in "Detail View", then search "death". This should give you a preview of a bunch of different death animations models.
Next select the actor of your unit in the data editor and search for the field Death Effects - Model. You can add different models for different damage sources, but to add a generic death animation just add something under normal.
If you want to add sound, do the same thing under the sound tab and with the Death Effects - Sound field.
0
Pick each player in player group (Active Players)
Pick each unit in unit group (Units in Region with alliance to player matching condition) Player - picked, Type - larva, Count - 1, Region - entire map
That should pick out exactly 1 larva unit for each player.
0
@Inertial_Mage: Go
Use the Issue Order action with the ability command Bridge Extend or Bridge Retract. Each bridge has a unique extend and retract move, so its just a matter of finding the one that links to the unit you are using.
0
If you add a mineral cost to a blizzard made ability like spawn infested terran and then put an infestor in the same scenario, the same bug will occur with mineral cost but not with energy costs, which suggests this is an actual bug.
The best theoretical work around I can think of is having your target effect use charges, then make a 2nd ability which supplies charges in exchange for minerals.