There's some configurations that are off in your variants. It's easy to fix.
Do a search for this problem in the forum and you will find some solutions. In fact I recommend doing a search before you post any questions. There's so much info sitting in here now that I rarely need to post a new question.
Good luck!
You are a wannabe - comedian, right? I have stumbled upon the same problem. But here in this forum, there was no (none - zero) solution available ... so far ...
I think it only failes when you set Races in BOTH variants and player properties, but I am not sure of that.
(It's a pretty annoying bug, because if you set races in variants only, they won't be applied when you test the map)
I don't know, if this is working, you have to try it out:
There is function that calculated the pathing costs ("Pathing cost between p<sub>1</sub> and p<sub>2</sub>")
If this function is considering blocking buildings and
you make the trigger especially designing for this special map
you can do the following
If the function returns a value that exceeds a threshold (or returns 0 or -1 or soemthing like that)
you know that the way is blocked
than you could change the order to a different one to gather at a different position / attack at a different position / ... something like that.
If the function does not work for your problem ... I remember to have read about a TD map making problem with the creator try to prevent players to wall in. I can't find the thread now. But the "solution" was to creat a dummy unit that checks the path by trying to run from p<sub>1</sub> and p<sub>2</sub> with speed of light. If the dummy can't find a way, then there was no way: And the last created tower was removed to cancel the wall in.
I am using an Arm Magazin Ability because the upgrading needs some time. In fact, it takes more time to upgrade the Twilight Mothership than to warp it in at the Nexus. The intention is that you can already use this kind of Mothership on its maiden trip while there are this Protoss worker installing components. If you move the Mothership with your army (or without the army as a belated support unit) your Twilight Mothership is getting stronger. Especially funny / nice is the effect if you upgrade the engines for speed ... while it is moving: It's really like the lame / lazy Protoss found the button to turn on the boosters.
The refund of Device Points is only needed if you reset the Mothership's abilities or (if I get it to work) if ypu want to uninstall a particular device. If the Mothership is hit by the disarming weapon from what ever unit it will get, there is no refund needed and not intended: Some things are beyond repair. Refunding minerals or gas is also not planned: A device should not be able to be salvaged: You can only "jettison" it to make room for a different device.
Outsourcing units' abilities to triggers is something I did not want to do. The units and their behaviors should stayed bundled within the mod. I am make triggers only for player-player interaction depending on the map.
I will experiment a bit. Don't know, how long it takes to find a working solution o.O
Many thanks for the brainstorming. You folks are great :)
@DrSuperEvil: Go
stepping a large step back (sorry for the now following long reply)
I have made a modify version of the Protoss Mothership:
Twilight Mothership
The most stats are the same as the normal Mothership.
Quote:
Sister of the Mothership. Comes with almost no special abilities but can be upgraded and customized to use
- Cloaking Field
- Vortex
- Mass Recall
- Detection
- Power Charging
- Temporal Rift Shield
- Teleport & Fleet Teleport
- Quantum Disrupter
Creates power for nearby structures.
Enables:
- Probes
- The other Gateway units can be warped in, too
Can attack ground and air units.
You can build up to two Motherships of any kind in total - 2 normal OR 2 twilight OR 1+1
The "almost no special abilities" means, that it only has the "Power Source" abilty after it is created at the Nexus. For all other abilities and for improving the slightly weaker stats to an almost overpower vehicle, you have to spend additional time and resources to upgrade it. All upgrades are individual. If you create a second Twilight Mothership instead of a regular one, this second one is also delivered with alomst no special abilities. If an upgraded Twilight Mothership is destroyed ... all its upgrades are gone.
This I have made with the arm magazine ability and and 11 dummy units. These dummies represent the installed devices and the number every of these installed device stands for how much a special ability or stat is improved. E.g.
You can install the Quantum Disrupter Beam (A much weaker version of the Planet Cracker) twice. This switches from not installed to a very weak version to a weak version of the Cracker.
You can install the (not above listed) "Micro Black Hole Reactor" three times to improve the energy capacity of the ship in three steps.
Every device as its own cost of time, resources and "Device Points" (see below) additionaly depending on the grade of the improvement. E.g.
Micro Black Hole Reactor Level 1 - 10 sec, 10 min, 10 gas, 1 device point
Micro Black Hole Reactor Level 2 - 20 sec, 20 min, 20 gas, 2 device point
Micro Black Hole Reactor Level 3 - 30 sec, 30 min, 30 gas, 4 device point
After warp-in of a Twilight Mothership at the Nexus, it has a prebuild fixed amount of these "Device Points" of 40. If you would upgrade a Twilight Mothership completely, you would need 99 Device Points. Device Points are a charge used by all upgrades of this Arm Magazin ability.
So far no problems here ...
Now while testing it and playing around to balance it (adjusting effects and/or costs), a friend of mine has mis-clicked (?) and order a wrong upgrade wasting not only time and resources but also a number of these device points. He could not install the wanted configuration of device in this particular Twilight Mothership anymore.
I would like to have an ability to reset the installed devices to "factory" status (and/or to install a single device) for the owner of the mothership.
To top this, I would like to have an ability for another unit (e.g. a specialized Battlecruiser or only as an additional effect for the Yamato) to destroy one randomly chosen device of the Twilight Mothership. If you know "Master Of Orion 2", there was a ship component called "Achilles Targeting Unit". This unit helped to destroy enemy ships' internal component - effectively disarming them piece by piece.
There can be two of these specialized units per player.
I was thinking of firing the dummy units that represents the installed devices like the carrier is firing its interceptors ... plus adding a timed life behavior then to the free / invisible dummy units with a period of almost 0.
If this is working, I could add a weapon for the specialized unit that only fires at a very special missile of the counter unit. This would consume slowly but surely the specialization, if the counter unit fires its designed missiles.
I have not taken a closer look to your code. Quote: "[...] its pretty messy [...] I am afraid to agree to you at this point. But from the error message(s), I guess ...
the point is not initialized or
the point is set to "no point"
the region checks breaks because of 1. or 2.
To track down the bug
insert a few debug routines to print the coords of the points before you are using them.
include a fail back in the debug routine for the cause of "no point"
SC2 does not support more than 15 players (+1 neutral) in a game. So far I am using Tempest (8ppl) with additional start locations. But this leads to one empty start point and the start locations on the low ground (fomerly extension) are in a weaker position.
I would like to make a 3-3-3-3-3 map from this 15 FFA map, but ...
I am not skilled ...
... and not talented to make a new map from the scratch.
And I would like to spend my time more in editing data and triggers. There I am of more use.
That could work. I will try it. Do you know a way to destroy internal ammo triggered from another unit. I am think of a enemy counter unit that can disarm teh specialized unit.
The game can not handle too many mods that contains custom data.
If you only need a small fraction of a mod (especially of a mod with custom assets) it is better to copy&paste the needed parts. Or you will risk long needless loading times.
LOL .. I have just answered THIS in our team forum.
Quote from JanChris:
Hi DarcZaFire,
if you copy all linked data elements between two uses of the save button (autosave disabled!), there is no certain order for copying the elements from one map/mod to another. You can do this best(?) in xml view ... but do not copy a too large amount of data at once: The clipboard can only handle up to 65K characters at once.
I have learned this the hard way o.O
I forgot to add: Do not use the undo function during this process either or you will stumble upon another glitch of the editor: the undo function uses the clipboard limit too. More than 65K undo characters will corrupt you work.
As suggested here, I am using an "Arm Magazine" ability to specialize a unit. That means every new learned ability / upgraded stat is represented by a special kind of ammo.
Now I would like to add an ability to reset the unit to its "brand new" status. In case the player wants a different specialization later or he accidently ordered a wrong type of specialization, an ability to reset this unit back to its factory status would be helpful.
How can an ability set the amount of stored ammunition units back to zero ?
Set Variable
Variable: iResearchIndex
Value: Arithmetic (Integer)
Value 1: Index Of Ability Command
Ability Command: abilcmdResearchOrder
Operator: +
Value 2: 1
This returns the correct Index.
Preset definition
ENUM Research Status
Value Type: Integer
Values
ERROR - Upgrade mismatch research index
No reserach structure
Not enough resources
No idle research structure
Queued or in progress
Research delayed (Queue full or requirements are not fulfilled)
Completed
Trigger
Advanced Zerg Tech
Events
Timer - Every 10.0 seconds of Game Time
Local Variables
iZergPlayer = 15 <Integer>
eResearchResult <ENUM Research Status>
Conditions
Actions
Variable - Set eResearchResult = (Check Zerg - EnhanceCreepTumor1 and if needed order Spawning Pool - Zerg - Creep Tumor Enhancements 1 for player iZergPlayer at any Spawning Pool keep at least 0 and 0 and Don't Wait for an idle unit )
General - If (Conditions) then do (Actions) else do (Actions)
If
Or
Conditions
eResearchResult == No Reserach Structure
eResearchResult == Not enough resources
Then
General - Skip remaining actions
Else
------- Next "build order" can follow
Function
Check and Order Research
Options: Function
Return Type: ENUM Research Status
Parameters
Upgrade = No Game Link <Game Link - Upgrade>
Research Order = No Ability Command <Ability Command - No Target>
Research Unit = No Game Link <Game Link - Unit>
Player = 1 <Integer>
Minerals = 0 <Integer>
Vespene = 0 <Integer>
Wait / Don't Wait = Wait <Wait Option>
Grammar Text: Check Upgrade and if needed order Research Order for player Player at any Research Unit keep at least Minerals and Vespene and Wait / Don't Wait for an idle unit
Hint Text: (None)
Custom Script Code
Local Variables
glUpgrade = Upgrade <Game Link - Upgrade>
abilcmdResearchOrder = Research Order <Ability Command>
utResearchStructrureType = Research Unit <Game Link - Unit>
uResearchStructrure = No Unit <Unit>
iPlayer = Player <Integer>
iResourceReserveMinerals = Minerals <Integer>
iResourceReserveVespene = Vespene <Integer>
eWaitOption = Wait / Don't Wait <Wait Option>
-------
iResearchIndex = 0 <Integer>
glResearchAbility <Game Link - Ability>
ugAllResearchStructures = (Empty unit group) <Unit Group>
iResourceAmount = 0 <Integer>
Actions
Variable - Set glResearchAbility = (Ability of abilcmdResearchOrder)
Variable - Set iResearchIndex = ((Index of abilcmdResearchOrder) + 1)
General - If (Conditions) then do (Actions) else do (Actions)
If
(glUpgrade count for player iPlayer, counting Complete) > 0
Then
Debug - Debug - Print String("Status", "completed")
General - Return Completed
Else
General - If (Conditions) then do (Actions) else do (Actions)
If
Or
Conditions
(glUpgrade count for player iPlayer, counting In Progress) > 0
(glUpgrade count for player iPlayer, counting Queued) > 0
Then
Debug - Debug - Print String("Status", "queued or better")
General - Return Queued or in progress
Else
Variable - Set uResearchStructrure = (Random Living unit from (utResearchStructrureType units in (Entire map) owned by player iPlayer matching Excluded: Missile, Under Construction, Dead, Hidden, with at most Any Amount))
General - If (Conditions) then do (Actions) else do (Actions)
If
uResearchStructrure == No Unit
Then
Debug - Debug - Print String("Status", "no reserach structure")
General - Return No reserach structure
Else
General - If (Conditions) then do (Actions) else do (Actions)
If
Or
Conditions
(Player iPlayer Minerals) < (iResourceReserveMinerals + (Value of Abilities (String(glResearchAbility)) ("InfoArray[Research%1].Resource[Minerals]" with up to All "%1" replaced by (String(iResearchIndex)) (Sensitive to case)) for player Any Player as an integer))
(Player iPlayer Vespene) < (iResourceReserveVespene + (Value of Abilities (String(glResearchAbility)) ("InfoArray[Research%1].Resource[Vespene]" with up to All "%1" replaced by (String(iResearchIndex)) (Sensitive to case)) for player Any Player as an integer))
Then
Debug - Debug - Print String("Status", "not enough resources")
General - Return Not enough resources
Else
Unit Group - Add all units in (utResearchStructrureType units in (Entire map) owned by player iPlayer matching Excluded: Missile, Under Construction, Dead, Hidden, with at most Any Amount) to ugAllResearchStructures
Unit Group - Remove all units in (Idle Units for player iPlayer) from ugAllResearchStructures
General - If (Conditions) then do (Actions) else do (Actions)
If
(Number of Any units in ugAllResearchStructures) == 0
eWaitOption == Wait
Then
Debug - Debug - Print String("Status", "no idle research structure")
General - Return No idle research structure
Else
Variable - Set uResearchStructrure = (Random Any unit from ugAllResearchStructures)
General - If (Conditions) then do (Actions) else do (Actions)
If
uResearchStructrure == No Unit
Then
Variable - Set uResearchStructrure = (Random Living unit from (utResearchStructrureType units in (Entire map) owned by player iPlayer matching Excluded: Missile, Under Construction, Dead, Hidden, with at most Any Amount))
Else
Variable - Set iResourceAmount = ((Player iPlayer Minerals) + (Player iPlayer Vespene))
Unit - Order uResearchStructrure to (abilcmdResearchOrder) (After Existing Orders)
General - If (Conditions) then do (Actions) else do (Actions)
If
iResourceAmount == ((Player iPlayer Minerals) + (Player iPlayer Vespene))
Then
Debug - Debug - Print String("Research delayed", (String(glUpgrade)))
General - Return Research delayed (Queue full or requirements are not fulfilled)
Else
Debug - Debug - Print String("New research started", (String(glUpgrade)))
General - Return Queued or in progress
@JanChris: Go
( Talking to myself, but maybe some else can get a bit of useful information out of it later ... in case he/she stumbles upon the same problem )
What I have found out so far:
String( <Game Link - Ability> )
ID of ability ... e.g. "SpawningPoolResearch"
Value: Convert Game Link To String
Value: <Game Link - Ability> ... "Spawning Pool - Research (Spawning Pool)"
String( <Game Link - Upgrade> )
ID of upgrade ... e.g. "zerglingmovementspeed" for "Metabolic Boost"
Value: Convert Game Link To String
Value: <Game Link - Upgrade> ... "Zergling - Metabolic Boost"
Value of <Catalog Type> (String((Ability of <Ability Command>))) <string> for player <integer>)
ID of upgrade "zerglingmovementspeed", too
Value: Catalog Field Value Get
Catalog: Abilities
Entry: Convert Game Link To String
Value: <Game Link - Ability> ... "Spawning Pool - Research (Spawning Pool)"
Field Path: <string> ... "InfoArray[Research2].Upgrade" ... but I could ask here for other research topics, depends on this index
Player: <integer> ... 1
There seems to be no way to get from an upgrade to its costs. There is only a one way direction link and not a bi-directional link.
Judging it from a more distant, detached vantage point: This is logical !
upgrade costs are stored in the abilities. These bundle upgrades.
An upgrade could be used multiple times by abilities offering a research at different costs
This could be used to offer a normal speed research with normal costs
and a fast speed research with higher resource costs.
Or an upgrade is "lost" if the research building is destroyed.
but you can recover it by researching the same topic again with reduced time / resource costs
To get the costs of a research order, I can use this:
Value: Catalog Field Value Get
Catalog: Abilities
Entry: Convert Game Link To String
Value: <Game Link - Ability> ... "Spawning Pool - Research (Spawning Pool)"
Field Path: <string> ... "InfoArray[Research2].Resource[Vespene]"
Player: <integer> ... 1
or Resource[Minerals] respectively
For my function means that, I need to know the <Ability Command> of the research ability and the index of the research topic within this research ability.
0
You are a wannabe - comedian, right? I have stumbled upon the same problem. But here in this forum, there was no (none - zero) solution available ... so far ...
I have found with the help of a friend who knows almost everything a solution at the hiveworkshop in this post :
@slejeivw: Go I hope, this helps you.
0
@illidans911: Go
I don't know, if this is working, you have to try it out:
you can do the following
If the function does not work for your problem ... I remember to have read about a TD map making problem with the creator try to prevent players to wall in. I can't find the thread now. But the "solution" was to creat a dummy unit that checks the path by trying to run from p<sub>1</sub> and p<sub>2</sub> with speed of light. If the dummy can't find a way, then there was no way: And the last created tower was removed to cancel the wall in.
0
@DrSuperEvil: Go @Photoloss: Go @Eiviyn: Go
I am using an Arm Magazin Ability because the upgrading needs some time. In fact, it takes more time to upgrade the Twilight Mothership than to warp it in at the Nexus. The intention is that you can already use this kind of Mothership on its maiden trip while there are this Protoss worker installing components. If you move the Mothership with your army (or without the army as a belated support unit) your Twilight Mothership is getting stronger. Especially funny / nice is the effect if you upgrade the engines for speed ... while it is moving: It's really like the lame / lazy Protoss found the button to turn on the boosters.
The refund of Device Points is only needed if you reset the Mothership's abilities or (if I get it to work) if ypu want to uninstall a particular device. If the Mothership is hit by the disarming weapon from what ever unit it will get, there is no refund needed and not intended: Some things are beyond repair. Refunding minerals or gas is also not planned: A device should not be able to be salvaged: You can only "jettison" it to make room for a different device.
Outsourcing units' abilities to triggers is something I did not want to do. The units and their behaviors should stayed bundled within the mod. I am make triggers only for player-player interaction depending on the map.
I will experiment a bit. Don't know, how long it takes to find a working solution o.O
Many thanks for the brainstorming. You folks are great :)
0
@DrSuperEvil: Go stepping a large step back (sorry for the now following long reply)
I have made a modify version of the Protoss Mothership:
Twilight Mothership
The most stats are the same as the normal Mothership.
You can build up to two Motherships of any kind in total - 2 normal OR 2 twilight OR 1+1
The "almost no special abilities" means, that it only has the "Power Source" abilty after it is created at the Nexus. For all other abilities and for improving the slightly weaker stats to an almost overpower vehicle, you have to spend additional time and resources to upgrade it. All upgrades are individual. If you create a second Twilight Mothership instead of a regular one, this second one is also delivered with alomst no special abilities. If an upgraded Twilight Mothership is destroyed ... all its upgrades are gone.
This I have made with the arm magazine ability and and 11 dummy units. These dummies represent the installed devices and the number every of these installed device stands for how much a special ability or stat is improved. E.g.
Every device as its own cost of time, resources and "Device Points" (see below) additionaly depending on the grade of the improvement. E.g.
After warp-in of a Twilight Mothership at the Nexus, it has a prebuild fixed amount of these "Device Points" of 40. If you would upgrade a Twilight Mothership completely, you would need 99 Device Points. Device Points are a charge used by all upgrades of this Arm Magazin ability.
So far no problems here ...
Now while testing it and playing around to balance it (adjusting effects and/or costs), a friend of mine has mis-clicked (?) and order a wrong upgrade wasting not only time and resources but also a number of these device points. He could not install the wanted configuration of device in this particular Twilight Mothership anymore.
I would like to have an ability to reset the installed devices to "factory" status (and/or to install a single device) for the owner of the mothership. To top this, I would like to have an ability for another unit (e.g. a specialized Battlecruiser or only as an additional effect for the Yamato) to destroy one randomly chosen device of the Twilight Mothership. If you know "Master Of Orion 2", there was a ship component called "Achilles Targeting Unit". This unit helped to destroy enemy ships' internal component - effectively disarming them piece by piece.
0
@DrSuperEvil: Go
There can be two of these specialized units per player.
I was thinking of firing the dummy units that represents the installed devices like the carrier is firing its interceptors ... plus adding a timed life behavior then to the free / invisible dummy units with a period of almost 0.
If this is working, I could add a weapon for the specialized unit that only fires at a very special missile of the counter unit. This would consume slowly but surely the specialization, if the counter unit fires its designed missiles.
0
I have not taken a closer look to your code. Quote: "[...] its pretty messy [...] I am afraid to agree to you at this point. But from the error message(s), I guess ...
To track down the bug
0
SC2 does not support more than 15 players (+1 neutral) in a game. So far I am using Tempest (8ppl) with additional start locations. But this leads to one empty start point and the start locations on the low ground (fomerly extension) are in a weaker position.
I would like to make a 3-3-3-3-3 map from this 15 FFA map, but ...
0
@TheDyingTitan: Go
There is already an Arbiter made/transfered from BW ... take a look here: TL: SC1BW
0
@DrSuperEvil: Go
That could work. I will try it. Do you know a way to destroy internal ammo triggered from another unit. I am think of a enemy counter unit that can disarm teh specialized unit.
0
@illidans911: Go
0
@DarcZaFire: Go
LOL .. I have just answered THIS in our team forum.
I forgot to add: Do not use the undo function during this process either or you will stumble upon another glitch of the editor: the undo function uses the clipboard limit too. More than 65K undo characters will corrupt you work.
0
As suggested here, I am using an "Arm Magazine" ability to specialize a unit. That means every new learned ability / upgraded stat is represented by a special kind of ammo.
Now I would like to add an ability to reset the unit to its "brand new" status. In case the player wants a different specialization later or he accidently ordered a wrong type of specialization, an ability to reset this unit back to its factory status would be helpful.
How can an ability set the amount of stored ammunition units back to zero ?
0
@illidans911: Go
I don't know, what you might have done wrong ... Here is a step by step how to find a funtion with the return value type "Ability Command"
voila!
0
EDIT: I found another usefull built-in function:
This returns the correct Index.
Preset definition
Trigger
Function
0
@JanChris: Go
( Talking to myself, but maybe some else can get a bit of useful information out of it later ... in case he/she stumbles upon the same problem )
What I have found out so far:
String( <Game Link - Ability> )
ID of ability ... e.g. "SpawningPoolResearch"
String( <Game Link - Upgrade> )
ID of upgrade ... e.g. "zerglingmovementspeed" for "Metabolic Boost"
Value of <Catalog Type> (String((Ability of <Ability Command>))) <string> for player <integer>)
ID of upgrade "zerglingmovementspeed", too
but I could ask here for other research topics, depends on this index
There seems to be no way to get from an upgrade to its costs. There is only a one way direction link and not a bi-directional link.
Judging it from a more distant, detached vantage point: This is logical !
To get the costs of a research order, I can use this:
or Resource[Minerals] respectively
For my function means that, I need to know the <Ability Command> of the research ability and the index of the research topic within this research ability.