• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

[General] Need a spell that uses MissileArt and targets a point

Status
Not open for further replies.
Level 3
Joined
Sep 30, 2012
Messages
31
Shockwave/Carrion Swarm?

If you want a missile that disappears on first impact, however; you'd have to trigger it with a dummy missile I think.
 
Level 12
Joined
May 20, 2009
Messages
822
Shockwave and Carrion Swarm are "Wave" spells, they don't necessarily do anything to the actual target-location, they just send something out that travels as long as it can in the direction of the target point.

I've tried doing dummy stuff, but it doesn't look "right" so I feel like I did it wrong.

How would I go about setting up this Dummy Missile?
 
Level 19
Joined
Aug 8, 2007
Messages
2,765
GUI or JASS?

JASS is easiest because its just setup variables and a handler struct.
 
Level 25
Joined
May 11, 2007
Messages
4,651
Use Carrion swarm, set everything to 0.
Then create a dummy unit based of the Mortar Team.
Set the animation times to 0, replace the model with the Tree of life upgrade aura model and add locust. Change the Missile Arc to how high you want the missile to fly in the air.

Create a trigger
A unit starts the effect of an ability
ability being cast == your trigger
set tempPoint1 = position of triggering unit
set tempPoint 2 = position of target ability being cast
Unit - Create 1 Mortar Team Dummy at tempPoint1
Unit - add Life generic 1 seconds water elemental to last created unit
Unit issue last created to attack tempPoint 2
clear the leaks.

Voilá you now have a missile-spell that only damages the targeted point.
 
Level 12
Joined
May 20, 2009
Messages
822
That was what I did before, but it looked very messy...There's also no way to wait for that attack to land at the spot before doing additional actions and since the attack doesn't leave behind a buff I can't do anything about waiting for a buff to be on units either before doing my effects.

What I want is kind of like a spell from Urgot from LoL.

"Active: Urgot launches a corrosive charge at a target 150-radius area, afflicting all enemies hit for 5 seconds. Enemies afflicted by the charge have their armor reduced by a percentage and take physical damage over the duration. "

Except I want the armor reduction to be a fixed amount, no damage over time and just one big damage amount once the missile lands.
 
Level 3
Joined
Sep 30, 2012
Messages
31
Create a dummy unit, with the model of the missile that you want.

When you cast the spell, create the dummy unit at the caster's location.
Store the target location as well as the distance between the caster and target.

Set up a loop that moves the dummy to the target location in 0.03 second (or however small) intervals, and decrease the distance variable by the same distance moved.

When the distance is <= 0, damage all units in the area, and create dummy units to cast the armor lowering debuff.
 
Level 12
Joined
May 20, 2009
Messages
822
Create a dummy unit, with the model of the missile that you want.

When you cast the spell, create the dummy unit at the caster's location.
Store the target location as well as the distance between the caster and target.

Set up a loop that moves the dummy to the target location in 0.03 second (or however small) intervals, and decrease the distance variable by the same distance moved.

When the distance is <= 0, damage all units in the area, and create dummy units to cast the armor lowering debuff.

Uuuhm...Can you make an example trigger? That sounds like it would have to have arrays to make it MUI compatible, too.
 
Level 3
Joined
Sep 30, 2012
Messages
31
  • Missile Init
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Ability Being Cast Equal to INSERT ABILITY HERE
    • Actions
      • Unit - Create 1 Dummy for (Owner of unit) at (Position of (Triggering unit)) facing (Angle from (Position of (Triggering unit)) to (Target point of ability being cast)) degrees
      • Set MissileDummy = (Last created unit)
      • Set MissileTarget = (Target point of ability being cast)
      • Set MissileDistance = (Distance between (Position of (Triggering unit)) and (Target point of ability being cast))
      • Set MissileCaster = (Triggering unit)
  • Missile Travel
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MissileDistance Greater than 0.00
        • Then - Actions
          • Unit - Move MissileDummy instantly to ((Position of MissileDummy) offset by 30.00 towards (Facing of MissileDummy) degrees)
          • Set MissileDistance = (MissileDistance - 30.00)
        • Else - Actions
          • Unit - Remove MissileDummy from game
          • Unit Group - Pick every unit in (Units within 200.00 of MissileTarget matching (Matching unit) is alive Equal to True and (Matching unit belongs to ally of (Owner of MissileCaster) Equal to False) and do (Actions)
            • Loop - Actions
              • Unit - Cause MissileCaster to damage (Picked unit), dealing 500.00 damage of attack type Spells and damage type Normal
              • //Create Dummy, order it to cast armor reduction on (Picked unit)
Notes:
1) This leaks a ton of locations (and 1 Unit Group). Make sure to fix those.
2) Store stuff like (Triggering Unit) in temporary variables.
3) The distance traveled per second should be 0.03*the Missile Speed (since the trigger fires every 0.03 seconds). So in this example the "real" missile speed is 1000, and we move the dummy by 30 units each loop.
4) This is not MUI. Use any MUI template you want to make it so (it is no different than any other MUI spell).
5) Turn on the second trigger when you cast the spell, and turn it off once there are no more instances of the spell in action (easy to do once you have it MUI).

I am studying for my finals, so I didn't have time to make the full spell. But hopefully you get the idea. Sorry!
 
Level 25
Joined
May 11, 2007
Messages
4,651
That was what I did before, but it looked very messy...There's also no way to wait for that attack to land at the spot before doing additional actions and since the attack doesn't leave behind a buff I can't do anything about waiting for a buff to be on units either before doing my effects.

What I want is kind of like a spell from Urgot from LoL.

"Active: Urgot launches a corrosive charge at a target 150-radius area, afflicting all enemies hit for 5 seconds. Enemies afflicted by the charge have their armor reduced by a percentage and take physical damage over the duration. "

Except I want the armor reduction to be a fixed amount, no damage over time and just one big damage amount once the missile lands.
Given the mortar team unit an armor reduction ability? Like or of corruption or anything such passive.
 
Level 3
Joined
Sep 30, 2012
Messages
31
I think I get the idea, but I'll wait a bit longer to see if anyone else wants to help me before I take a crack at it.

Well it's always good to try it yourself; once you've tried doing it a couple times you'll have learned how trigger in the future!
 

q.b

q.b

Level 3
Joined
Apr 21, 2014
Messages
21
The Pocket Factory ability of the Tinker uses missile art and targets a point. You can just use dummy units with their model paths set to none.mdl as the Data - Factory Unit ID and Spawn Unit ID, and set its Stats - Duration to 0.01 so it'll look like it didn't spawn anything.
 
Status
Not open for further replies.
Top