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

Issue with multiple morph abilities

Level 2
Joined
Dec 15, 2023
Messages
3
I want to preface this by saying that I am relatively new to the map editor and that it's my first time attempting something this big:

I am currently trying to create a custom Shapeshifter hero. The idea is that it will have no offensive abilities of its own, and will instead just have abilities to morph into various forms that each have their own unique abilities.

I've so far made 2 morph abilities, a golem form and a dragonspawn form, both based off of the robo-goblin ability. Each of these individually work perfectly as intended. I am able to morph back and forth and abilities work as they should.

The problem comes in as soon as the shapeshifter has both of these abilities unlocked.
When it morphs into a golem, and then tries to morph back, it instead morphs into the dragonspawn for some reason. And vice versa. And repeatedly transforming between the two starts to break it even further with it creating multiple "shift back" abilties that all just transform into the other form, and never the base shapeshifter form.

Is there some sort of bug I'm unaware of that makes multiple morph abilities on one unit unable to work? Or is there something I must do additionally in order for them to work?
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,552
I want to preface this by saying that I am relatively new to the map editor and that it's my first time attempting something this big:

I am currently trying to create a custom Shapeshifter hero. The idea is that it will have no offensive abilities of its own, and will instead just have abilities to morph into various forms that each have their own unique abilities.

I've so far made 2 morph abilities, a golem form and a dragonspawn form, both based off of the robo-goblin ability. Each of these individually work perfectly as intended. I am able to morph back and forth and abilities work as they should.

The problem comes in as soon as the shapeshifter has both of these abilities unlocked.
When it morphs into a golem, and then tries to morph back, it instead morphs into the dragonspawn for some reason. And vice versa. And repeatedly transforming between the two starts to break it even further with it creating multiple "shift back" abilties that all just transform into the other form, and never the base shapeshifter form.

Is there some sort of bug I'm unaware of that makes multiple morph abilities on one unit unable to work? Or is there something I must do additionally in order for them to work?
A unit can only support one of each ability. This restriction is tied to the Base Order Id of the ability, which is a string that each ability has.
1702655997934.png

Despite appearances, you can't actually change this field. There are a few abilities which give you this option but they're meant to be used with custom triggered spells.

Luckily, there's multiple Morphing abilities that you can rely on. Bear Form, Crow Form, Chemical Rage, Metamorphosis, Tinker's ulti, etc...

So if you give your unit four different Morph abilities then you shouldn't have this problem. That being said, expect other problems since morphing between so many different units is bound to break something.

Also, there's probably 100 threads on Hive of people trying to do exactly this. I would seek those out for more information.
 
Last edited:
Level 39
Joined
Feb 27, 2007
Messages
5,016
Is there some sort of bug I'm unaware of that makes multiple morph abilities on one unit unable to work?
Abilities that use the same base order will conflict when multiple are present on a unit, causing the unit to attempt to use them simultaneously (but it can't). Base order is only editable on a select few abilities (Channel is the only one that really matters), despite the order string being a field in the object editor data for all abilities.

While the other morph abilities may work, they may have other side effects you do not want. If you want to continue using multiple instances of a single morph ability directly, the only way around this is to:
  1. Create dummy abilities that each have different base orders which the unit will cast when it wants to transform
  2. Add the actual morphing abilities to all the unit's forms in the OE (so that they persist throughout the various morphs), and then disable all of these abilities for the unit upon map start (there is a disable ability action).
  3. When the unit uses those abilities: temporarily disable the ability being cast, enable the correct real morph ability, order the unit to cast that morph ability (and hope it doesn't get interrupted/stop-ordered during the cast).
  4. After the cast finishes, disable the real morph ability and re-enable the dummy version of that ability.
That's a good amount of work and it can go awry. I would recommend you keep the 4 dummy abilities and just don't attempt to use the morph abilities. Instead, transform the unit directly using the method outlined in this tutorial. Presuming N different forms + 1 base form: if you want the unit to go back to its 'neutral' state in between morphs you'll need 2N different reverse-bear abilities; if you want any form to change into any other form as well as the base form you'll need (N+1)^2 different reverse-bear abilities.
 
Last edited:
Level 2
Joined
Dec 15, 2023
Messages
3
A unit can only support one of each ability. This restriction is tied to the Base Order Id of the ability, which is a string that each ability has.
View attachment 456751
Despite appearances, you can't actually change this field. There are a few abilities which give you this option but they're meant to be used with custom triggered spells.

Luckily, there's multiple Morphing abilities that you can rely on. Bear Form, Crow Form, Chemical Rage, Metamorphosis, Tinker's ulti, etc...

So if you give your unit four different Morph abilities then you shouldn't have this problem. That being said, expect other problems since morphing between so many different units is bound to break something.

Also, there's probably 100 threads on Hive of people trying to do exactly this. I would seek those out for more information.
I tried to find other posts but nothing that quite explained the reason behind my issue. I probably just searched up the wrong terms.

I had no idea this was a thing. It's a bummer but it makes sense.
I never thought to try using a different morph ability as a base for each one. However the prospect of something else breaking is a bit discouraging. I'll still try my luck and see how it goes. Thanks a ton.
 
Level 2
Joined
Dec 15, 2023
Messages
3
While the other morph abilities may work, they may have other side effects you do not want. If you want to continue using multiple instances of a single morph ability directly, the only way around this is to:
  1. Create dummy abilities that each have different base orders which the unit will cast when it wants to transform
  2. Add the actual morphing abilities to all the unit's forms in the OE (so that they persist throughout the various morphs), and then disable all of these abilities for the unit upon map start (there is a disable ability action).
  3. When the unit uses those abilities: temporarily disable the ability being cast, enable the correct real morph ability, order the unit to cast that morph ability (and hope it doesn't get interrupted/stop-ordered during the cast).
  4. After the cast finishes, disable the real morph ability and re-enable the dummy version of that ability.
That's a good amount of work and it can go awry. I would recommend you keep the 4 dummy abilities and just don't attempt to use the morph abilities. Instead, transform the unit directly using the method outlined in this tutorial. Presuming N different forms + 1 base form: if you want the unit to go back to its 'neutral' state in between morphs you'll need 2N different reverse-bear abilities; if you want any form to change into any other form as well as the base form you'll need (N+1)^2 different reverse-bear abilities.
That is a very convoluted but interesting work around. Considering that I'm planning on having each ability have 5 levels, that makes 5 forms per ability which is a lot to do for just one unit. But I'll still keep this in mind in case nothing else works. Thanks
 
Level 39
Joined
Feb 27, 2007
Messages
5,016
It’s a great use case for a 2-D array or a hashtable to translate a pair of unit types (source + destination) into a single ability id. You can also match the level of it to the base dummy ability before removing it to morph, which could reduce complexity. What do you expect will change between the different levels of the morphing abilities?
 
Top