Root and Unroot in relation with spells

Smygarn777

Member
Reaction score
6
To explain my problem, i'll first point out what I want, what I have and what I have problems with.

Im trying to create a unit that can use the root ability to swap from structure to unit and back. So what I started to do was to create a custom ability using Root - Ancient Protector as the base. At first everything well well, until I began running into some miniature problems such as immobility after having recently upgraded. Regardless, eventually I came upon this problem that I just cant solve.

When I made the unit vulnerable to spells, it also affects its rooted state. I dont know how I can fix that, since root is the only ability I know that plants the unit as a structure while letting it walk around as a unit as well.

Any help would be greatly appreciated.
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
you could try making the unit targeted as something that your spells cant target (immune) when in rooted form (rooted and moving forms are different units so they can have different targeted as values)
 

Smygarn777

Member
Reaction score
6
They arent different units the way I see them in the object editor. Its only when you go to place them in the unit palette that you see the unrooted one. Its not different units in the sense that they are two different units you can freely change, more how you can choose to place them as rooted or unrooted.
If they could be edited as seperate units, i'd love to know how.
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
i thought you could find them under special units in the object editor
 

Smygarn777

Member
Reaction score
6
As things stand, i'll either have to sit with letting them be magically immune, or allow the rooted structure to be targetable for spells as well.

Both ends are not what I would optimally want, but with little choice I might have to go along with it.
 

merlinds

Member
Reaction score
15
you could add a classification when the unit is rooted , for example "Mechaninc"
Every time the unit cast his "Root/Unroot" spell you will have to detect if is rooted or unrooted and add the clasification.
Then you go to the objects editor and add in every skill that the posible objetives be "Organic" in this case. So the skills will not be casteable in mechanic units.
 

Smygarn777

Member
Reaction score
6
Could you explain that again?
Do I use a detection in triggers and then add the classification as an action, or do I do something with the root ability?
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
merlinds i dont think you can change classifications in triggers
 

merlinds

Member
Reaction score
15
mm yes you can:
Trigger:
  • asd
    • Events
    • Conditions
    • Actions
      • Unit - Add classification of Mechanic to (Triggering unit)
      • Unit - Remove classification of Mechanic from (Triggering unit)


 

Smygarn777

Member
Reaction score
6
Which leaves with one last bit of curiosity - what conditions do you use to detect whether its root or unroot?
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
you could use a boolean saved in a hashtable as:
Trigger:
  • Hashtable - Save Boolean (true) as (key casting unit) of 0 in last created hashtable

and save it as false if its true or true if its already false, that way you can check if its one or the other, or even a if then else, where when the unit casts the ability it checks if the unit has the classification then removes it or adds it based on that
 

Smygarn777

Member
Reaction score
6
namnls-10.jpg


Somehow, it still wont work. I check for the ability in the conditions, but it doesnt work.
 

Dirac

22710180
Reaction score
147
@Smygarn777
1.
Trigger Problems[noparse]
Use WC3 Tags. Don't know how? When you have a trigger, look at the Events icon in the trigger editor. See the name of the trigger right above it? Right-click. Select Copy As Text, then paste into your thread. Put the
Trigger:
  • tag at the beginning of the trigger, and put the
tag at the end. If you are posting in the JASS Zone, there are similar tags for JASS. They work like this:
JASS:
[/noparse].
2.
You don't have to use Or statements for each condition
3.
Are you sure the unit stop beings an structure once is uprooted?
Isn't there already a boolean condition to detect if a unit is uprooted?
 

merlinds

Member
Reaction score
15
The trigger isnt working because the unit is not a structure, try using what gfreak says about a hash table using a boolean value.
Or you can use the unit custom value. you set it to 1 when the unit is uprooted and 0 when no.
then you just have to check if the Custom value is 1 or 0 to know what classification add or remove.
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
i wouldnt use custom value on that, it can only be used to store 1 form of data without being a complex code, use that for indexxing units and use that index to store it in a variable or hashtable, rather than wasting it on this : /
 

merlinds

Member
Reaction score
15
yes you are right, but since is the easyer way... i just a sugestion. He can use it to try if it works, and if it does use a more flexible system.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top