I was wondering

n1mr0d

Member
Reaction score
1
Ok so i was wondering if i can make a spell, which dummy moves like a homing missile,
My spell cast 1 dummy, the dummy goes to the target point , and casts 1 spell then returns to the caster's place where he casted the spell, but the caster is no longer there, i want to make that the dummy to go to the casters real point, after using the spell to come back the dummy.

And my second question, how can i make to slow the unit for each 5% missing hp, with 5% ?
 

envenger

Active Member
Reaction score
3
Ok so i was wondering if i can make a spell, which dummy moves like a homing missile,
My spell cast 1 dummy, the dummy goes to the target point , and casts 1 spell then returns to the caster's place where he casted the spell, but the caster is no longer there, i want to make that the dummy to go to the casters real point, after using the spell to come back the dummy.

And my second question, how can i make to slow the unit for each 5% missing hp, with 5% ?

Well first thing is easy. You can just make the dummy move to the position of the caster every 1 second. So it will move to the position of the caster. Then you can check the condition if the dummy is in the area of the caster you can do what you want.

Well 2 ways to do this. I have not used world editor since a very long time so i can't remember.
1st is make 20 levels of slow have 5%, 10%, 15%..
And make your dummy cast the level of the spell depending upon the health missing.

2nd not sure but there is a slow which can stack. You can cast it the number of times needed but i am not sure about this.
 

n1mr0d

Member
Reaction score
1
Well first thing is easy. You can just make the dummy move to the position of the caster every 1 second. So it will move to the position of the caster. Then you can check the condition if the dummy is in the area of the caster you can do what you want.

Well 2 ways to do this. I have not used world editor since a very long time so i can't remember.
1st is make 20 levels of slow have 5%, 10%, 15%..
And make your dummy cast the level of the spell depending upon the health missing.

2nd not sure but there is a slow which can stack. You can cast it the number of times needed but i am not sure about this.

Hmm you miss understood the 1st question, beetween the dummy and the caster there is a distance. And if i move the dummy to the caster's location there won't be anymore.
 

n1mr0d

Member
Reaction score
1
ok so here is the image. the Dummy is at the A point, and the caster is at B point at 1., in the 2. the dummy is going back to the C point what was originaly caster's point, but instead of going to C, i want the dummy to go to B point, making an circle arc.
 

Attachments

  • untitled1.JPG
    untitled1.JPG
    9.3 KB · Views: 277

thorhunter

You can change this now in User CP.
Reaction score
32
I happen to have spell that works very similar. There's much data that you need to filter through though, but it's better than nothing.

Trigger:
  • Lancet Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Tiamat's Lancet
    • Actions
      • Set ALancetNumber = (ALancetNumber + 1)
      • Set ALancetSpeed = 35.00
      • Set Temp_Point = (Position of (Triggering unit))
      • Set ALancetTarget[ALancetNumber] = (Target unit of ability being cast)
      • Set ALancetCaster[ALancetNumber] = (Triggering unit)
      • Set ALancetPath[ALancetNumber] = strike
      • Unit - Create 1 Lancet (skill) for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
      • Unit - Pause (Last created unit)
      • Set ALancetUnit[ALancetNumber] = (Last created unit)
      • Trigger - Turn on Lancet Loop <gen>
      • Custom script: call RemoveLocation (udg_Temp_Point)

Trigger:
  • Lancet Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Set Temp_Boolean = True
      • For each (Integer A) from 1 to ALancetNumber, do (Actions)
        • Loop - Actions
          • Set Temp_Boolean = False
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ALancetPath[(Integer A)] Equal to strike
            • Then - Actions
              • Set Temp_Point = (Position of ALancetUnit[(Integer A)])
              • Set Temp_Point2 = (Position of ALancetTarget[(Integer A)])
              • Set TempReal = (Angle from Temp_Point to Temp_Point2)
              • Unit - Make ALancetUnit[(Integer A)] face ALancetTarget[(Integer A)] over 0.00 seconds
              • Set Temp_Point3 = (Temp_Point offset by ALancetSpeed towards TempReal degrees)
              • Set TempReal = (X of Temp_Point3)
              • Set TempReal2 = (Y of Temp_Point3)
              • Set Temp_unit = ALancetUnit[(Integer A)]
              • Custom script: call SetUnitX(udg_Temp_unit, udg_TempReal)
              • Custom script: call SetUnitY(udg_Temp_unit, udg_TempReal2)
              • Custom script: call RemoveLocation(udg_Temp_Point)
              • Custom script: call RemoveLocation(udg_Temp_Point2)
              • Custom script: call RemoveLocation(udg_Temp_Point3)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ALancetPath[(Integer A)] Equal to back
            • Then - Actions
              • Set Temp_Point = (Position of ALancetUnit[(Integer A)])
              • Set Temp_Point2 = (Position of ALancetCaster[(Integer A)])
              • Set TempReal = (Angle from Temp_Point to Temp_Point2)
              • Unit - Make ALancetUnit[(Integer A)] face ALancetCaster[(Integer A)] over 0.00 seconds
              • Set Temp_Point3 = (Temp_Point offset by ALancetSpeed towards TempReal degrees)
              • Set TempReal = (X of Temp_Point3)
              • Set TempReal2 = (Y of Temp_Point3)
              • Set Temp_unit = ALancetUnit[(Integer A)]
              • Custom script: call SetUnitX(udg_Temp_unit, udg_TempReal)
              • Custom script: call SetUnitY(udg_Temp_unit, udg_TempReal2)
              • Custom script: call RemoveLocation(udg_Temp_Point)
              • Custom script: call RemoveLocation(udg_Temp_Point2)
              • Custom script: call RemoveLocation(udg_Temp_Point3)
            • Else - Actions
          • Set Temp_Point = (Position of ALancetUnit[(Integer A)])
          • Set Temp_Point2 = (Position of ALancetTarget[(Integer A)])
          • Set Temp_Point3 = (Position of ALancetCaster[(Integer A)])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between Temp_Point and Temp_Point2) Less than (ALancetSpeed + 10.00)
              • ALancetPath[(Integer A)] Equal to strike
            • Then - Actions
              • Set TempC = (5 + (10 x (Hero level of ALancetCaster[(Integer A)])))
              • Set TempReal = (Life of ALancetTarget[(Integer A)])
              • Unit - Cause ALancetCaster[(Integer A)] to damage ALancetTarget[(Integer A)], dealing (1.00 x (Real(TempC))) damage of attack type Chaos and damage type Divine
              • Special Effect - Create a special effect attached to the chest of ALancetTarget[(Integer A)] using Abilities\Spells\Human\Feedback\ArcaneTowerAttack.mdl
              • Special Effect - Destroy (Last created special effect)
              • Set ALancetLifeTransfer[(Integer A)] = (TempReal - (Life of ALancetTarget[(Integer A)]))
              • Set TempC = (Integer(((Max mana of ALancetCaster[(Integer A)]) - (Mana of ALancetCaster[(Integer A)]))))
              • Set TempC = ((5 + (TempC / 2)) / 1)
              • Set ALancetLifeTransfer[(Integer A)] = (TempReal - (Life of ALancetTarget[(Integer A)]))
              • Unit - Set mana of ALancetTarget[(Integer A)] to ((Mana of ALancetTarget[(Integer A)]) - ((Real(TempC)) + 0.00))
              • Set ALancetManaTransfer[(Integer A)] = (Real(TempC))
              • Set ALancetPath[(Integer A)] = back
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between Temp_Point and Temp_Point3) Less than (ALancetSpeed + 10.00)
              • ALancetPath[(Integer A)] Equal to back
            • Then - Actions
              • Special Effect - Create a special effect attached to the chest of ALancetCaster[(Integer A)] using Abilities\Spells\Undead\ReplenishMana\SpiritTouchTarget.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit - Set mana of ALancetCaster[(Integer A)] to ((Mana of ALancetCaster[(Integer A)]) + ALancetManaTransfer[(Integer A)])
              • Unit - Set life of ALancetCaster[(Integer A)] to ((Life of ALancetCaster[(Integer A)]) + ALancetLifeTransfer[(Integer A)])
              • Unit - Remove ALancetUnit[(Integer A)] from the game
              • For each (Integer B) from (Integer A) to (ALancetNumber - 1), do (Actions)
                • Loop - Actions
                  • Set ALancetCaster[(Integer B)] = ALancetCaster[((Integer B) + 1)]
                  • Set ALancetLifeTransfer[(Integer B)] = ALancetLifeTransfer[((Integer B) + 1)]
                  • Set ALancetManaTransfer[(Integer B)] = ALancetManaTransfer[((Integer B) + 1)]
                  • Set ALancetPath[(Integer B)] = ALancetPath[((Integer B) + 1)]
                  • Set ALancetTarget[(Integer B)] = ALancetTarget[((Integer B) + 1)]
                  • Set ALancetUnit[(Integer B)] = ALancetUnit[((Integer B) + 1)]
              • Set ALancetNumber = (ALancetNumber - 1)
            • Else - Actions
          • Custom script: call RemoveLocation(udg_Temp_Point)
          • Custom script: call RemoveLocation(udg_Temp_Point2)
          • Custom script: call RemoveLocation(udg_Temp_Point3)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Temp_Boolean Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
 

n1mr0d

Member
Reaction score
1
I happen to have spell that works very similar. There's much data that you need to filter through though, but it's better than nothing.

Trigger:
  • Lancet Cast
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Tiamat's Lancet
    • Actions
    • Set ALancetNumber = (ALancetNumber + 1)
    • Set ALancetSpeed = 35.00
    • Set Temp_Point = (Position of (Triggering unit))
    • Set ALancetTarget[ALancetNumber] = (Target unit of ability being cast)
    • Set ALancetCaster[ALancetNumber] = (Triggering unit)
    • Set ALancetPath[ALancetNumber] = strike
    • Unit - Create 1 Lancet (skill) for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
    • Unit - Pause (Last created unit)
    • Set ALancetUnit[ALancetNumber] = (Last created unit)
    • Trigger - Turn on Lancet Loop <gen>
    • Custom script: call RemoveLocation (udg_Temp_Point)

Trigger:
  • Lancet Loop
    • Events
    • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
    • Set Temp_Boolean = True
    • For each (Integer A) from 1 to ALancetNumber, do (Actions)
    • Loop - Actions
    • Set Temp_Boolean = False
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • ALancetPath[(Integer A)] Equal to strike
    • Then - Actions
    • Set Temp_Point = (Position of ALancetUnit[(Integer A)])
    • Set Temp_Point2 = (Position of ALancetTarget[(Integer A)])
    • Set TempReal = (Angle from Temp_Point to Temp_Point2)
    • Unit - Make ALancetUnit[(Integer A)] face ALancetTarget[(Integer A)] over 0.00 seconds
    • Set Temp_Point3 = (Temp_Point offset by ALancetSpeed towards TempReal degrees)
    • Set TempReal = (X of Temp_Point3)
    • Set TempReal2 = (Y of Temp_Point3)
    • Set Temp_unit = ALancetUnit[(Integer A)]
    • Custom script: call SetUnitX(udg_Temp_unit, udg_TempReal)
    • Custom script: call SetUnitY(udg_Temp_unit, udg_TempReal2)
    • Custom script: call RemoveLocation(udg_Temp_Point)
    • Custom script: call RemoveLocation(udg_Temp_Point2)
    • Custom script: call RemoveLocation(udg_Temp_Point3)
    • Else - Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • ALancetPath[(Integer A)] Equal to back
    • Then - Actions
    • Set Temp_Point = (Position of ALancetUnit[(Integer A)])
    • Set Temp_Point2 = (Position of ALancetCaster[(Integer A)])
    • Set TempReal = (Angle from Temp_Point to Temp_Point2)
    • Unit - Make ALancetUnit[(Integer A)] face ALancetCaster[(Integer A)] over 0.00 seconds
    • Set Temp_Point3 = (Temp_Point offset by ALancetSpeed towards TempReal degrees)
    • Set TempReal = (X of Temp_Point3)
    • Set TempReal2 = (Y of Temp_Point3)
    • Set Temp_unit = ALancetUnit[(Integer A)]
    • Custom script: call SetUnitX(udg_Temp_unit, udg_TempReal)
    • Custom script: call SetUnitY(udg_Temp_unit, udg_TempReal2)
    • Custom script: call RemoveLocation(udg_Temp_Point)
    • Custom script: call RemoveLocation(udg_Temp_Point2)
    • Custom script: call RemoveLocation(udg_Temp_Point3)
    • Else - Actions
    • Set Temp_Point = (Position of ALancetUnit[(Integer A)])
    • Set Temp_Point2 = (Position of ALancetTarget[(Integer A)])
    • Set Temp_Point3 = (Position of ALancetCaster[(Integer A)])
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • (Distance between Temp_Point and Temp_Point2) Less than (ALancetSpeed + 10.00)
    • ALancetPath[(Integer A)] Equal to strike
    • Then - Actions
    • Set TempC = (5 + (10 x (Hero level of ALancetCaster[(Integer A)])))
    • Set TempReal = (Life of ALancetTarget[(Integer A)])
    • Unit - Cause ALancetCaster[(Integer A)] to damage ALancetTarget[(Integer A)], dealing (1.00 x (Real(TempC))) damage of attack type Chaos and damage type Divine
    • Special Effect - Create a special effect attached to the chest of ALancetTarget[(Integer A)] using Abilities\Spells\Human\Feedback\ArcaneTowerAttack.mdl
    • Special Effect - Destroy (Last created special effect)
    • Set ALancetLifeTransfer[(Integer A)] = (TempReal - (Life of ALancetTarget[(Integer A)]))
    • Set TempC = (Integer(((Max mana of ALancetCaster[(Integer A)]) - (Mana of ALancetCaster[(Integer A)]))))
    • Set TempC = ((5 + (TempC / 2)) / 1)
    • Set ALancetLifeTransfer[(Integer A)] = (TempReal - (Life of ALancetTarget[(Integer A)]))
    • Unit - Set mana of ALancetTarget[(Integer A)] to ((Mana of ALancetTarget[(Integer A)]) - ((Real(TempC)) + 0.00))
    • Set ALancetManaTransfer[(Integer A)] = (Real(TempC))
    • Set ALancetPath[(Integer A)] = back
    • Else - Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • (Distance between Temp_Point and Temp_Point3) Less than (ALancetSpeed + 10.00)
    • ALancetPath[(Integer A)] Equal to back
    • Then - Actions
    • Special Effect - Create a special effect attached to the chest of ALancetCaster[(Integer A)] using Abilities\Spells\Undead\ReplenishMana\SpiritTouchTarget.mdl
    • Special Effect - Destroy (Last created special effect)
    • Unit - Set mana of ALancetCaster[(Integer A)] to ((Mana of ALancetCaster[(Integer A)]) + ALancetManaTransfer[(Integer A)])
    • Unit - Set life of ALancetCaster[(Integer A)] to ((Life of ALancetCaster[(Integer A)]) + ALancetLifeTransfer[(Integer A)])
    • Unit - Remove ALancetUnit[(Integer A)] from the game
    • For each (Integer B) from (Integer A) to (ALancetNumber - 1), do (Actions)
    • Loop - Actions
    • Set ALancetCaster[(Integer B)] = ALancetCaster[((Integer B) + 1)]
    • Set ALancetLifeTransfer[(Integer B)] = ALancetLifeTransfer[((Integer B) + 1)]
    • Set ALancetManaTransfer[(Integer B)] = ALancetManaTransfer[((Integer B) + 1)]
    • Set ALancetPath[(Integer B)] = ALancetPath[((Integer B) + 1)]
    • Set ALancetTarget[(Integer B)] = ALancetTarget[((Integer B) + 1)]
    • Set ALancetUnit[(Integer B)] = ALancetUnit[((Integer B) + 1)]
    • Set ALancetNumber = (ALancetNumber - 1)
    • Else - Actions
    • Custom script: call RemoveLocation(udg_Temp_Point)
    • Custom script: call RemoveLocation(udg_Temp_Point2)
    • Custom script: call RemoveLocation(udg_Temp_Point3)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • Temp_Boolean Equal to True
    • Then - Actions
    • Trigger - Turn off (This trigger)
    • Else - Actions

Can you upload your map :)?
 

darkRae

Ueki Fan (Ueki is watching you)
Reaction score
173
Is it possible to issue a Move command to the Caster, causing the dummy unit to follow the Caster? (That has the effect of moving to the Caster's real position, wherever the Caster moves.)
 

n1mr0d

Member
Reaction score
1
yes it is possible, but still it will have some distance beetween the caster and the dummy.
 

thorhunter

You can change this now in User CP.
Reaction score
32
Can you upload your map :)?
If you just want to copy/paste the code, I'll extract it to other map and upload it. If you just want to see how the spell works, I'll upload the protected version of the map. This is part of my rather extended personal project and is kinda copyrighted :).
 

n1mr0d

Member
Reaction score
1
upload with protected, i just wanna see your spell. and if it works how i typed XD, cuz my english is not so good :p. And you might miss understood me.
 

thorhunter

You can change this now in User CP.
Reaction score
32
Aight, here's some guidelanes how to access the ability:

1. Pick character by entering a circle.
2. Pick a book of experience north of where you will spawn.
3. Access Equipment skill -> Skill Learning Menu -> Dragoon -> use this until you learn Tiamat's Lancet
4. Acess Equipment skill -> Skill Picking Menu -> click Switch Skill Type once
5. Access Equipment skill -> Skill Picking Menu -> Battle (on the left) -> click Dragon Magic once
6. The spell will appear in the spellbook o your character menu, there are units walking around that wander around, you can also test it on neutral hostile units on the west.
 

Attachments

  • SpellTest.w3x
    3.6 MB · Views: 300

n1mr0d

Member
Reaction score
1
Aight, here's some guidelanes how to access the ability:

1. Pick character by entering a circle.
2. Pick a book of experience north of where you will spawn.
3. Access Equipment skill -> Skill Learning Menu -> Dragoon -> use this until you learn Tiamat's Lancet
4. Acess Equipment skill -> Skill Picking Menu -> click Switch Skill Type once
5. Access Equipment skill -> Skill Picking Menu -> Battle (on the left) -> click Dragon Magic once
6. The spell will appear in the spellbook o your character menu, there are units walking around that wander around, you can also test it on neutral hostile units on the west.
Nice map and thanks for help :D.
 
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