Peon Classification not working

Yuu

New Member
Reaction score
0
Hi everyone,

Currently I'm working on a small trigger to set my unit classification into Peon-like whenever a non-target order is given so my unit won't start attacking automatically.

However, it turned out that the Add Classification trigger didn't work at all and my unit kept automatically attacking any enemy it sees. Here's the trigger contents, please give me your opinion on this

Untitled.png


The Stealth_Check[0] here is only a boolean variable for me to check whether the unit is inside a region or not, and the Quest Display is for testing whether the If Conditions were correct. I got the message abc displayed in-game, however my unit didn't seem to become a peon.

Thanks a lot !
 

SouLEDGE

Damn you advanced calculus
Reaction score
75
How many classifications can one unit have? I have no idea how the peon classification
works but maybe you have to remove a previous classification? Just throwing out
guesses here
 

Yuu

New Member
Reaction score
0
Thank you very much for your help but it seems my problem lies elsewhere. If possible, can anyone help me with another problem ?

I would like to have my custom hero act like a peon at first (no auto attack), but when I manually attack or being attacked by someone, I want my hero to stay and fight so I remove his Peon-like classification. After the fight ends, I'd like my hero to turn back into peon-like, so what kind of trigger should I create to perform this ? (End of fight -> turn hero classification back to peon-like).

Thank you very much !
 

darkRae

Ueki Fan (Ueki is watching you)
Reaction score
173
That would be quite tricky. You need to define when "the fight ends." Does the fight end when the Hero is issued a Stop order? Does it end when the Hero isn't damaged for 3 seconds?

Once you have the condition defined, you can work on detecting the condition. If it is satisfied, then re-give the Peon classification to the Hero :)
 

Yuu

New Member
Reaction score
0
Yup, let's say the condition for a fight to be considered ended is when the player's unit is not damaged in 3 seconds, what kind of trigger should I create to make it work ? I'm new to the editor so I'm quite noob, sorry :). Please show me the rope ^^.
 

Imp Midna

Active Member
Reaction score
52
There we go with the annoying part of warcraft: the damage event. That is so annyoing because there is no generic unit event version of it, forcing you to make a trigger system to effectivly use the event for random units, or use the rather subotimal one ppl tend to link in this forum for some reason. Unit is attacked might be an easier alternative, but also kinda bad as it doesnt include spells.

random thought how to do it:
- to make your hero not auto attack, if the peon classification thing fails, there is a function to set the acquisition range (which basically is the auto attack range). you may set it to 0 to avoid autoattack and set it back to default if he is ment to attack
- if you use the 3 second damage thing, you will first have to solve the problem i wrote about. Then you might want to store a real value counting from 0 to 3 in a periodic trigger. whenever the unit gets damaged, set it back to 0. in the periodic trigger, increase it, and if it reaches 3, end the stuff and make him not autoattack again.
- now i dont know what you need this unit for so i can only guess about alternative ways to end a fight. It might include
-> looking if the unit leaves a region and send it back
-> looking if none of the attacking enemy units are near you (safe them in a unitgroup)
- note that, if you want to make this work for multible units simulatneously, you will need to use arrays with an increasing index (aka surrogatekey) or a hashtable (which is about 10 times slower to access compared to an array, which means it rents if you have more then 10 units per atribute access)
 

vypur85

Hibernate
Reaction score
803
Just another suggestion.
Damage detection method.
Whenever your desired unit is damaged, order a dummy cast a buffing spell which lasts 3 seconds to the damaged unit.

Then another trigger with the unit is attacked event:
If a unit does not have XXX buff and Stealth Check Equal to true,
then order unit to Stop.

In essence, the unit can only attack when it has buff. And it only obtain the buff whenever it's damaged.
 

dracolich

TH.net Regular
Reaction score
15
try to reduce acquisition range to something like 1 or 2
wouldnt it works better ?
 

Yuu

New Member
Reaction score
0
Thank you all for suggestions !

Since the solution to this matter is gradually becoming something much more complicated than I thought, I decided to leave it aside at the moment since if implemented, I fear it's going to make my game a lot slower/laggy due to the constant needs of check. Thank you all again for the supports !

@dracolich: I don't know why but setting unit's acquisition range to minimum doesn't make that unit unable to auto-attack in my case. Thank you for the advice though !

@vypur85: I once tried something similar to your method, but since I'm so noob or whatever, ordering a certain unit to Stop doesn't stop it from auto-attacking the next times. I don't know why, but that's what I got from testing ! Thank you for the suggestion !
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top