How to Check if a Unit move away from another unit

DarkBELL

New Member
Reaction score
1
Here is one of my spells for my hero

It's called "Destiny Bond" , just like Pokemon! : )

But in here, it bound the caster and the target together, and if one were to leave the 600 radius of the other it would be pull back and if 1 unit were to die it would deal damage to the unit that survive

The Damage part is okay

But I don't know how to detect who is the one who move out of the other range, I was planning on using If <Distance between (Caster) and (Target) is greater than 600> but I realize that by using this method If one unit move out of the Bond it would pull back both unit since it cannot detect who is the actual unit that move out of range

I switch to a more complex way of doing things, with a lot of Real and Point Variable :( This is my Trigger

Code:
Destiny Bond
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Destiny Bond 
    Actions
        Set DB_Caster = (Triggering unit)
        Set DB_Target = (Target unit of ability being cast)
        Set DB_Distance = (Distance between (Position of DB_Caster) and (Position of DB_Target))
        Trigger - Turn on Destiny Bond Lightning Effect <gen>
        Trigger - Turn on Destiny Bond Move Check <gen>
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Level of Destiny Bond  for DB_Caster) Equal to 1
            Then - Actions
                Wait 4.00 seconds
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Level of Destiny Bond  for DB_Caster) Equal to 2
            Then - Actions
                Wait 5.00 seconds
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Level of Destiny Bond  for DB_Caster) Equal to 3
            Then - Actions
                Wait 6.00 seconds
            Else - Actions
        Trigger - Turn off Destiny Bond Lightning Effect <gen>
        Trigger - Turn off Destiny Bond Move Check <gen>
        Lightning - Destroy DB_Lightning

Code:
Destiny Bond Lightning Effect
    Events
        Time - Every 0.03 seconds of game time
    Conditions
    Actions
        Lightning - Destroy DB_Lightning
        Lightning - Create a Spirit Link lightning effect from source DB_Caster_Point1 to target DB_Target_Point1
        Set DB_Lightning = (Last created lightning effect)

Code:
Destiny Bond Move Check
    Events
        Time - Every 0.01 seconds of game time
    Conditions
    Actions
        Set DB_Caster_Point1 = (Position of DB_Caster)
        Set DB_Target_Point1 = (Position of DB_Target)
        Wait 0.01 seconds
        Set DB_Caster_Point2 = (Position of DB_Caster)
        Set DB_Target_Point2 = (Position of DB_Target)
        Set DB_Caster_Point_Distance = (Distance between DB_Caster_Point1 and DB_Caster_Point2)
        Set DB_Target_Point_Distance = (Distance between DB_Target_Point1 and DB_Target_Point2)
        -------- Check if Destiny Bond Caster has Move --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                DB_Caster_Point_Distance Greater than 10.00
            Then - Actions
                Set DB_Caster_DistanceCheck = (Distance between (Position of DB_Caster) and (Position of DB_Target))
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DB_Caster_DistanceCheck Greater than DB_Distance
                    Then - Actions
                        Set DB_Caster_HasMove = True
                    Else - Actions
                        Set DB_Caster_HasMove = False
            Else - Actions
                Set DB_Caster_HasMove = False
        -------- Check if Destiny Bond Target has Move --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                DB_Target_Point_Distance Greater than 10.00
            Then - Actions
                Set DB_Target_DistanceCheck = (Distance between (Position of DB_Caster) and (Position of DB_Target))
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DB_Target_DistanceCheck Greater than DB_Distance
                    Then - Actions
                        Set DB_Target_HasMove = True
                    Else - Actions
                        Set DB_Target_HasMove = False
            Else - Actions
                Set DB_Target_HasMove = False
        -------- Check Distance between both Units --------
        Set DB_Distance = (Distance between (Position of DB_Caster) and (Position of DB_Target))
        -------- Distance More Than 600 --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                DB_Distance Greater than 600.00
            Then - Actions
                Set DB_Angle = (Angle from (Position of DB_Caster) to (Position of DB_Target))
                -------- Caster Has Move --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DB_Caster_HasMove Equal to True
                    Then - Actions
                        Unit - Move DB_Caster instantly to ((Position of DB_Target) offset by 600.00 towards DB_Angle degrees)
                        Set DB_Caster_HasMove = False
                    Else - Actions
                -------- Target Has Move --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        DB_Target_HasMove Equal to True
                    Then - Actions
                        Unit - Move DB_Target instantly to ((Position of DB_Caster) offset by 600.00 towards DB_Angle degrees)
                        Set DB_Target_HasMove = False
                    Else - Actions
                -------- Both Has Move --------
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (DB_Caster_HasMove Equal to True) and (DB_Target_HasMove Equal to True)
                    Then - Actions
                        Unit - Move DB_Target instantly to ((Position of DB_Caster) offset by 600.00 towards DB_Angle degrees)
                        Unit - Move DB_Caster instantly to ((Position of DB_Target) offset by 600.00 towards DB_Angle degrees)
                        Set DB_Caster_HasMove = False
                        Set DB_Target_HasMove = False
                    Else - Actions
            Else - Actions
        -------- A Unit Die --------
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (DB_Target is dead) Equal to True
            Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Destiny Bond  for DB_Caster) Equal to 1
                    Then - Actions
                        Unit - Cause DB_Target to damage DB_Caster, dealing 500.00 damage of attack type Spells and damage type Magic
                    Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Destiny Bond  for DB_Caster) Equal to 2
                    Then - Actions
                        Unit - Cause DB_Target to damage DB_Caster, dealing 600.00 damage of attack type Spells and damage type Magic
                    Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Destiny Bond  for DB_Caster) Equal to 3
                    Then - Actions
                        Unit - Cause DB_Target to damage DB_Caster, dealing 700.00 damage of attack type Spells and damage type Magic
                    Else - Actions
                Special Effect - Create a special effect at (Position of DB_Caster) using Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
                Special Effect - Destroy (Last created special effect)
                Trigger - Turn off Destiny Bond Lightning Effect <gen>
                Trigger - Turn off (This trigger)
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (DB_Caster is dead) Equal to True
            Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Destiny Bond  for DB_Caster) Equal to 1
                    Then - Actions
                        Unit - Cause DB_Caster to damage DB_Target, dealing 500.00 damage of attack type Spells and damage type Magic
                    Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Destiny Bond  for DB_Caster) Equal to 2
                    Then - Actions
                        Unit - Cause DB_Caster to damage DB_Target, dealing 600.00 damage of attack type Spells and damage type Magic
                    Else - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Destiny Bond  for DB_Caster) Equal to 3
                    Then - Actions
                        Unit - Cause DB_Caster to damage DB_Target, dealing 700.00 damage of attack type Spells and damage type Magic
                    Else - Actions
                Special Effect - Create a special effect at (Position of DB_Target) using Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
                Special Effect - Destroy (Last created special effect)
                Trigger - Turn off Destiny Bond Lightning Effect <gen>
                Trigger - Turn off (This trigger)
            Else - Actions

To put it in a Simple Way, The Trigger Store The Distance Variable before storing another one 0.01 second later

Then it would check if the Distance stored later is greater than the one stored before, if it is greater(The unit has move) it would Turn the Boolean True

Then finally it check that if the distance between the Caster and Target is greater than 600 then check that if the Boolean is true if both condition are met, the unit that trigger the Boolean will be pulled back

...This...is what I planned, but the unit is not pull back when It exits the range. Can anybody help me with this? :(
 

Ayanami

칼리
Reaction score
288
Wait 0.01 seconds doesn't work. I think the wait limit is 0.27 seconds or somewhere near there. Well, there isn't really a method to detect which unit moved out of range, because really, the two units can move away from each other and it would be pretty hard to tell which unit moved out of the 600 radius first.

A modification of your method would be viable. However, you'll need a periodic trigger that checks the X and Y of the unit every 0.03 seconds or so. Then, you can save the unit with a different X and Y value as the moved unit.
 

DarkBELL

New Member
Reaction score
1
How does X and Y Integer works? Because I need to only detect units that are moving away to turn the Boolean On

If it only detect and turn On the boolean when a unit move then I fear if one bond unit run towards the other while it was running away the unit chasing the other would be repel back to Point of the Escaping unit offset by 600 range

Or if its too hard do you have any suggestion for this spell? anything similar is fine because I'm desperate D:

Thank you in Advance
 

Ayanami

칼리
Reaction score
288
Well, X and Y are basically coordinates. They're real. When you set a real variable, there should be an option "X of Point" and "Y of Point". Basically, you can easily check if there was a movement made by the unit using the X and Y values. Using distance between points every 0.01 seconds wouldn't be too efficient. Thus, just check if the X and Y values of the position of the units are different. If they are the same as the previous value, it means that they didn't move.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top