For a project of mine, I've been trying to recreate the Nydus Canal from SC One. Here's what I've found out progress so far:
The way the Nydus Network/Worm works is it uses a Transport ability, with storage cargo shared between all Networks and Worms. However the way the Nydus Canal worked is different. The unit automatically transported from a parent Canal to a child Canal without ever being stored in cargo. My question is, what's the best way to recreate the Nydus Canal?
The campaign remake mod, Starcraft Reawakening: The Great War used a method which calls a Teleport effect to teleport the units to the other end of the Nydus Canal. The trouble with this is, for example, if a unit enters at the right side of the Nydus Canal parent, it teleports to the right side of the Nydus Canal Child, ans so on for all orientations. The trouble with this is that it does not give the impression that the unit is entering into the Nydus Canal. Futhermore, one cannot set a rally point using this method. True, the original Nydus Canal did not have a rally point, but I would like this one to be able to set one.
I don't have access to the Starcraft II:Brood War mod editor file, but I've been examining how the mod works on Battle.net because it seems to provide a promising alternative. When the Nydus Canal is used in SCII:BW, you can briefly see the units held in cargo at the bottom of the screen. This suggests that this mod still uses a Transport ability to get the units to the other end of the Nydus Canal. As a result, it gives a better impression that the units are entering into the Nydus Canal and leaving on the other end, and one can set a really point. It seems that they have somehow set the ability to autocast unloading at the other end of the Nydus Canal, or something similar to autocasting. However, one potential dramatic drawback to this Nydus Canal is that sometimes the canal does not finish unloading all the units, resulting in some units being stuck inside the Nydus Canal cargo and requiring to be unloaded manually. This is both untrue to Brood War and potentially unreliable to the players.
So, my question to you all is: what can you suggest in terms of a way to make the Nydus Canal work reliably well while also giving the feeling that the units are going through the Canal and keeping a rally point?
There's a trigger function called OrderSetTargetPassenger. It's used to redirect an order to the units inside a transport.
Download my mod called "exodus" from battle.net, and check out the "academy's autounload" trigger.
In that mod, if you garrison biological units in a academy, they heal; and the academy can unload automatically a unit after its life is full.
Bassically, it's a trigger that each while picks every academy in the map and redirects the order "academy-unload all" to the units inside of it (if certain conditions are true).
I believe that if you use the transport method, you could complement it with this trigger and achieve your goal.
PS: Set the ability into a local variable, or the trigger won't work
I would just use a teleport effect that if a unit is ordered to move to the unit it is validated by a periodic search area effect on the unit that teleports it to the destination unit. As the destination unit is spawned by the first one you will be able to link the two using the effect tree for the return. For an example of how you can validate if a unit is being moved towards check out my harvest ability simulation demo map.
As for rally points just use an Issue Order effect on exiting to move towards a preset persistent effect that was created using an Effect - Target ability.
I found out about the Battery ability type. This seems very handy for the sort of thing I want to do; units that are ordered to the Nydus Canal will have a Teleport effect cast on them. So right now my vision is simple. Each Nydus has a Battery ability that activates on units that are ordered to it. For the Parent Nydus, this Battery ability will have a Requirement that it has used its ability that builds the Child Nydus. Once activated, this Battery ability casts a teleport effect on units ordered to it.
The trouble arises in getting the Teleport effect for the Parent Nydus Canal to acknowledge the Child Nydus as its target, and vice-versa. I'm not sure how to do this with the method that I have in mind.
My question is: how do I get the Teleport effect to 'know' what its target is supposed to be i.e. the counterpart Nydus Canal. Is it even possible to achieve my goal with this sort of method of using a Battery ability to directly cast the Teleport effect?
I would get the battery to apply a hidden buff that makes them known as valid teleport targets and you create your child nydus using a Build ability and the Ability: Effects field that applies a buff to the child that in turn applies one to the parent. You can then link them using the Effect: Unit Effect fields. The search by the buff on the parent can link to the child as the source and the one on the child can link to the caster.
Rollback Post to RevisionRollBack
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
I understand. That is the way that the TGW campaign mod does its teleport. I was kind of hoping there might be a more direct, cleaner method, but marking the unit with a buff will get the job done. I'll just do that for now.
The next issue I'm facing is how the units exit from the nydus. In the original SC1, units came out of the nydus starting at the bottom, and sort of spiraled around. This is more or less the same from how units exit from a transport, such as the SCII Nydus, or from production facilities i.e. barracks, factories, etc. In the mod, units arrive at the Nydus exit with the same orientation as they had with respect to the Nydus entrance. So if a unit comes at the nydus from the right, they come out the other and from the right. If they approach a nydus from the top, they come out the top. With groups of units, this effect looks rather messy, with the units exiting in a jumbled pile, and furthermore is just not faithful to how it worked in SC1.
The best I've been able to figure is that the Source field is in play here. If I change the source field from Caster Unit (the default) to Target Unit, the units come out INSIDE the structure of the Nydus exit. This is, in a way, closer to what I wanted, but they still come out in a jumbled pile, and obviously the behavior of them being inside the structure is unwanted. Does anyone know of a way to make the teleport feature teleport the unit to a structure such that they file out neatly, like out of a production facility?
Main issue is getting the parent and child nydus to link and then get separate abilities to reference each other.
Add a Launch Missile on arrival effect and use a buff to suppress collision/hide?
If you want to store the entry orientation use a data/trigger hybrid.
Maybe use an Issue Order effect to tell them to move relative to the exit or add a longer period to the teleport/limit the cap on the search area effect?
Rollback Post to RevisionRollBack
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
Hmm, it looks like getting what I want with this method is going to be more complicated than I'd like. I'm starting to think that maybe it would be better if I went back to having the load ability be a transport ability. I found out recently that one can take units out of cargo using Use Calldown. So now I'm thinking maybe I could make the load ability be a simple transport again, and then have each Nydus use a Use Calldown effect to take the units out of the other's storage promptly once they are loaded.
That's what I've been experimenting with for now, and I have some vague ideas for other plans. Push come to shove, I could use Triggers like SC2BW does to force the Nyduses (Nydi?) to unload when the other end is loaded, but I'd rather avoid that. Alternatively, maybe there's a way I could use an Issue Order that activates whenever a Nydus is loaded, but I haven't thought of a way to set it up.
For the time being, I'm tinkering with Use Calldown effects. I've got each Nydus on a persistent that is set to calldown the untis from the other. For some reason, the calldown just isn't doing anything. I'll keep fiddling with it, but any guidance is appreciated.
At this point, I'm starting to think that a transport with triggers to autounload at the proper Nydus (as SC2BW does) is the best way to go. I'd really like to find a way to recreate the same effect using only the data editor, but I haven't been able to devise one. I'll keep thinking about it.
If anyone can show me a data only method to create a Nydus Canal that preserves the unload pattern of the Nydus Worm/production facility/etc, let me know!
I assume this is in response to the calldown effect. I've mostly given up on that, as I decided that even if I could get it to work, it wouldn't achieve the nice distribution of the unloaded units I was looking for.
For now, I've mimicked Maverk's method and gotten it working. It works well enough, and it achieves the nice distribution I'm looking for. Unfortunately, it uses triggers, which I'd really like to avoid. Here's how it works (roughly):
-Whenever a unit is created by the Nydus Canal - Create Child Nydus Ability, it saves the parent and the child units as variables.
-Then, whenever the parent loads a unit into cargo, the child unloads it immediately. (All Nyduses on the map share a cargo, just like the Nydus Network).
Another problem (aside from just using triggers) is the fact that if one loads too many units in, the other end (the exit) gets backed up, and by the team the player clears up the exit Nydus, the Nydus itself is no longer being ordered to unload. This only happens for a lot of units, and doesn't occur when a rally is set, but it's a problem nonetheless.
At the moment, I think this method has the most promise. It seems to me that using a Teleport or Calldown to move the units would just entail a whole bunch of nasty work to get the units to distribute out the end nicely like out of a Barracks or Transport, however I'm open to suggestions. You suggested a few ways that might make it work with the Teleport method, but being as new as I am, I wasn't able to follow.
For now, I'm looking for a way to recreate Maverck's method in the data editor, but if anyone has what they think is a better idea, I'm all ears.
Thanks a ton for your help!
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Hey all!
For a project of mine, I've been trying to recreate the Nydus Canal from SC One. Here's what I've found out progress so far:
The way the Nydus Network/Worm works is it uses a Transport ability, with storage cargo shared between all Networks and Worms. However the way the Nydus Canal worked is different. The unit automatically transported from a parent Canal to a child Canal without ever being stored in cargo. My question is, what's the best way to recreate the Nydus Canal?
The campaign remake mod, Starcraft Reawakening: The Great War used a method which calls a Teleport effect to teleport the units to the other end of the Nydus Canal. The trouble with this is, for example, if a unit enters at the right side of the Nydus Canal parent, it teleports to the right side of the Nydus Canal Child, ans so on for all orientations. The trouble with this is that it does not give the impression that the unit is entering into the Nydus Canal. Futhermore, one cannot set a rally point using this method. True, the original Nydus Canal did not have a rally point, but I would like this one to be able to set one.
I don't have access to the Starcraft II:Brood War mod editor file, but I've been examining how the mod works on Battle.net because it seems to provide a promising alternative. When the Nydus Canal is used in SCII:BW, you can briefly see the units held in cargo at the bottom of the screen. This suggests that this mod still uses a Transport ability to get the units to the other end of the Nydus Canal. As a result, it gives a better impression that the units are entering into the Nydus Canal and leaving on the other end, and one can set a really point. It seems that they have somehow set the ability to autocast unloading at the other end of the Nydus Canal, or something similar to autocasting. However, one potential dramatic drawback to this Nydus Canal is that sometimes the canal does not finish unloading all the units, resulting in some units being stuck inside the Nydus Canal cargo and requiring to be unloaded manually. This is both untrue to Brood War and potentially unreliable to the players.
So, my question to you all is: what can you suggest in terms of a way to make the Nydus Canal work reliably well while also giving the feeling that the units are going through the Canal and keeping a rally point?
Thanks in advance!
There's a trigger function called OrderSetTargetPassenger. It's used to redirect an order to the units inside a transport.
Download my mod called "exodus" from battle.net, and check out the "academy's autounload" trigger.
In that mod, if you garrison biological units in a academy, they heal; and the academy can unload automatically a unit after its life is full.
Bassically, it's a trigger that each while picks every academy in the map and redirects the order "academy-unload all" to the units inside of it (if certain conditions are true).
I believe that if you use the transport method, you could complement it with this trigger and achieve your goal.
PS: Set the ability into a local variable, or the trigger won't work
Check out my kitbashes! Custom Campaign Initiative: Lots of great Custom Campaigns!! Check out and Support!!
@Cacho56: Go
Thanks a bunch! I'll give that a try!
@AmicusSC: Go
I would just use a teleport effect that if a unit is ordered to move to the unit it is validated by a periodic search area effect on the unit that teleports it to the destination unit. As the destination unit is spawned by the first one you will be able to link the two using the effect tree for the return. For an example of how you can validate if a unit is being moved towards check out my harvest ability simulation demo map.
As for rally points just use an Issue Order effect on exiting to move towards a preset persistent effect that was created using an Effect - Target ability.
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg
Thanks to both of you! I've got some thinking ahead of me.
OK, so here's where we are now.
I found out about the Battery ability type. This seems very handy for the sort of thing I want to do; units that are ordered to the Nydus Canal will have a Teleport effect cast on them. So right now my vision is simple. Each Nydus has a Battery ability that activates on units that are ordered to it. For the Parent Nydus, this Battery ability will have a Requirement that it has used its ability that builds the Child Nydus. Once activated, this Battery ability casts a teleport effect on units ordered to it.
The trouble arises in getting the Teleport effect for the Parent Nydus Canal to acknowledge the Child Nydus as its target, and vice-versa. I'm not sure how to do this with the method that I have in mind.
My question is: how do I get the Teleport effect to 'know' what its target is supposed to be i.e. the counterpart Nydus Canal. Is it even possible to achieve my goal with this sort of method of using a Battery ability to directly cast the Teleport effect?
Thanks!!
I would get the battery to apply a hidden buff that makes them known as valid teleport targets and you create your child nydus using a Build ability and the Ability: Effects field that applies a buff to the child that in turn applies one to the parent. You can then link them using the Effect: Unit Effect fields. The search by the buff on the parent can link to the child as the source and the one on the child can link to the caster.
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg
@DrSuperEvil: Go
I understand. That is the way that the TGW campaign mod does its teleport. I was kind of hoping there might be a more direct, cleaner method, but marking the unit with a buff will get the job done. I'll just do that for now.
The next issue I'm facing is how the units exit from the nydus. In the original SC1, units came out of the nydus starting at the bottom, and sort of spiraled around. This is more or less the same from how units exit from a transport, such as the SCII Nydus, or from production facilities i.e. barracks, factories, etc. In the mod, units arrive at the Nydus exit with the same orientation as they had with respect to the Nydus entrance. So if a unit comes at the nydus from the right, they come out the other and from the right. If they approach a nydus from the top, they come out the top. With groups of units, this effect looks rather messy, with the units exiting in a jumbled pile, and furthermore is just not faithful to how it worked in SC1.
The best I've been able to figure is that the Source field is in play here. If I change the source field from Caster Unit (the default) to Target Unit, the units come out INSIDE the structure of the Nydus exit. This is, in a way, closer to what I wanted, but they still come out in a jumbled pile, and obviously the behavior of them being inside the structure is unwanted. Does anyone know of a way to make the teleport feature teleport the unit to a structure such that they file out neatly, like out of a production facility?
Thanks a ton for your help!
Main issue is getting the parent and child nydus to link and then get separate abilities to reference each other.
Add a Launch Missile on arrival effect and use a buff to suppress collision/hide?
If you want to store the entry orientation use a data/trigger hybrid.
Maybe use an Issue Order effect to tell them to move relative to the exit or add a longer period to the teleport/limit the cap on the search area effect?
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg
Hmm, it looks like getting what I want with this method is going to be more complicated than I'd like. I'm starting to think that maybe it would be better if I went back to having the load ability be a transport ability. I found out recently that one can take units out of cargo using Use Calldown. So now I'm thinking maybe I could make the load ability be a simple transport again, and then have each Nydus use a Use Calldown effect to take the units out of the other's storage promptly once they are loaded.
That's what I've been experimenting with for now, and I have some vague ideas for other plans. Push come to shove, I could use Triggers like SC2BW does to force the Nyduses (Nydi?) to unload when the other end is loaded, but I'd rather avoid that. Alternatively, maybe there's a way I could use an Issue Order that activates whenever a Nydus is loaded, but I haven't thought of a way to set it up.
For the time being, I'm tinkering with Use Calldown effects. I've got each Nydus on a persistent that is set to calldown the untis from the other. For some reason, the calldown just isn't doing anything. I'll keep fiddling with it, but any guidance is appreciated.
Thanks again!
OK, so I've figured out that the calldown works fine when I call down to a target point, but I want to calldown on a unit (an end of the Nydus Canal).
Once I figure that out, I'll be able to say whether or not I'm satisfied with how this method works. If not, back to the drawing board.
At this point, I'm starting to think that a transport with triggers to autounload at the proper Nydus (as SC2BW does) is the best way to go. I'd really like to find a way to recreate the same effect using only the data editor, but I haven't been able to devise one. I'll keep thinking about it.
If anyone can show me a data only method to create a Nydus Canal that preserves the unload pattern of the Nydus Worm/production facility/etc, let me know!
Use a persistent effect to target a point just outside the unit.
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg
@DrSuperEvil: Go
I assume this is in response to the calldown effect. I've mostly given up on that, as I decided that even if I could get it to work, it wouldn't achieve the nice distribution of the unloaded units I was looking for.
For now, I've mimicked Maverk's method and gotten it working. It works well enough, and it achieves the nice distribution I'm looking for. Unfortunately, it uses triggers, which I'd really like to avoid. Here's how it works (roughly): -Whenever a unit is created by the Nydus Canal - Create Child Nydus Ability, it saves the parent and the child units as variables. -Then, whenever the parent loads a unit into cargo, the child unloads it immediately. (All Nyduses on the map share a cargo, just like the Nydus Network).
Another problem (aside from just using triggers) is the fact that if one loads too many units in, the other end (the exit) gets backed up, and by the team the player clears up the exit Nydus, the Nydus itself is no longer being ordered to unload. This only happens for a lot of units, and doesn't occur when a rally is set, but it's a problem nonetheless.
At the moment, I think this method has the most promise. It seems to me that using a Teleport or Calldown to move the units would just entail a whole bunch of nasty work to get the units to distribute out the end nicely like out of a Barracks or Transport, however I'm open to suggestions. You suggested a few ways that might make it work with the Teleport method, but being as new as I am, I wasn't able to follow.
For now, I'm looking for a way to recreate Maverck's method in the data editor, but if anyone has what they think is a better idea, I'm all ears.
Thanks a ton for your help!