• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Wave spells with an effect

Status
Not open for further replies.
Level 2
Joined
Feb 23, 2011
Messages
7
Im trying to figure out a way (If its even possible) to add an effect to a wave type ability. For example, I want Carrion Swarm to leave a debuff on the units it hits in additional to its damage, so that they lets say miss on attack for some time. Basicly its combination of a wave spell and a single target spell (Carrion Swarm and Curse). Any suggestion how to make it possible?
 
Level 9
Joined
Dec 3, 2010
Messages
162
Im trying to figure out a way (If its even possible) to add an effect to a wave type ability. For example, I want Carrion Swarm to leave a debuff on the units it hits in additional to its damage, so that they lets say miss on attack for some time. Basicly its combination of a wave spell and a single target spell (Carrion Swarm and Curse). Any suggestion how to make it possible?

You'd need to make a custom shockwave, made by triggers of course.
 
Level 2
Joined
Feb 23, 2011
Messages
7
Can you be more specific please, as in example and stuff, Im not really good with trigger editor :S
 
Level 15
Joined
Jul 9, 2008
Messages
1,552
well this spell needs a fair bit of expeirance in the trigger editor

you need a trigger for the cast and u need a looping trigger.
use a dummy shockwave spell (no damage no missle)

you will then need a dummy unit to cast the curse ability on the units it passes.

ill show u an example of my wave spell that decreases the units armour and atk damage

  • Shadow wave
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Shadow Wave
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in SW_group) Equal to 0
        • Then - Actions
          • Trigger - Turn on shadow wave Loop <gen>
        • Else - Actions
      • Set SW_index = (SW_index + 1)
      • Set SW_Hero[SW_index] = (Casting unit)
      • Set SW_Point[1] = (Position of SW_Hero[SW_index])
      • Set SW_Point[2] = (Target point of ability being cast)
      • Set SW_Distance[SW_index] = 0.00
      • Set SW_Reached[SW_index] = 600.00
      • Set SW_Speed[SW_index] = 30.00
      • Set SW_angel[SW_index] = (Angle from SW_Point[1] to SW_Point[2])
      • Custom script: call RemoveLocation(udg_SW_Point[1])
      • Custom script: call RemoveLocation(udg_SW_Point[2])
      • Set SW_caster_p[SW_index] = (Position of SW_Hero[SW_index])
      • Unit - Create 1 dummy shadow for (Owner of (Triggering unit)) at SW_caster_p[SW_index] facing SW_angel[SW_index] degrees
      • Set SW_missle[SW_index] = (Last created unit)
      • Unit Group - Add SW_Hero[SW_index] to SW_group
  • shadow wave Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer SW_Loop) from 1 to SW_index, do (Actions)
        • Loop - Actions
          • Set SW_Distance[SW_Loop] = (SW_Distance[SW_Loop] + SW_Speed[SW_Loop])
          • Set SW_X[1] = (SW_caster_p[SW_Loop] offset by SW_Distance[SW_Loop] towards SW_angel[SW_Loop] degrees)
          • Unit - Move SW_missle[SW_Loop] instantly to SW_X[1], facing SW_angel[SW_Loop] degrees
          • Set SW_Dam_Group[SW_Loop] = (Units within 175.00 of SW_X[1] matching (((Owner of (Matching unit)) Not equal to (Owner of SW_Hero[SW_Loop])) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is in SW_buffers[SW_Loop]) Equal to False))))
          • Unit Group - Pick every unit in SW_Dam_Group[SW_Loop] and do (Actions)
            • Loop - Actions
              • Unit - Create 1 dummy for (Owner of SW_Hero[SW_Loop]) at SW_X[1] facing Default building facing degrees
              • Unit - Add shadow wave dummy to (Last created unit)
              • Unit - Set level of shadow wave dummy for (Last created unit) to (Level of Shadow Wave for SW_Hero[SW_Loop])
              • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
              • Unit - Order (Last created unit) to Human Priest - Inner Fire (Picked unit)
              • Unit Group - Add (Picked unit) to SW_buffers[SW_Loop]
          • Custom script: call DestroyGroup(udg_SW_Dam_Group[udg_SW_Loop])
          • Custom script: call RemoveLocation(udg_SW_X[1])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SW_Distance[SW_Loop] Greater than or equal to SW_Reached[SW_Loop]
            • Then - Actions
              • Unit - Kill SW_missle[SW_Loop]
              • Custom script: call RemoveLocation(udg_SW_caster_p[udg_SW_Loop])
              • Unit Group - Pick every unit in SW_buffers[SW_Loop] and do (Actions)
                • Loop - Actions
                  • Unit Group - Remove (Picked unit) from SW_buffers[SW_Loop]
              • Unit Group - Remove SW_Hero[SW_Loop] from SW_group
              • Set SW_Hero[SW_Loop] = No unit
              • Set SW_missle[SW_Loop] = No unit
              • Set SW_Distance[SW_Loop] = 0.00
              • Set SW_angel[SW_Loop] = 0.00
              • Set SW_Speed[SW_Loop] = 0.00
              • Set SW_Reached[SW_Loop] = 0.00
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in SW_group) Equal to 0
                • Then - Actions
                  • Set SW_index = 0
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions
 
Level 23
Joined
Oct 18, 2008
Messages
938
you can simply place the effect when a unit is damaged by the shockwave. base the actual casted spell on a dummy spell and have a dummy unit cast the damaging shockwave.

  • Casting
  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Carrion Swarm
  • Actions
    • Create CarrionSwarmDummy at position of (Casting Unit) facing (angle from (position of (casting unit)) to (target point of ability being cast))
    • set level of (Swarm) for (Last created unit)to (level of (Carrion Swarm) for (Casting unit))
    • order (Last created unit) to Undead Dread Lord - Carrion swarm (target point of ability being cast)
    • expiration timer - add a 2 second expiration timer to (last created unit)
  • Melee Initialization
  • Events
    • Melee initialization
  • Conditions
  • Actions
    • unit group - pick every unit in (all units in playable map area) and do multiple actions
      • add to (Swarm Damage.gen) the event: ((picked unit) takes damage)
  • Some Trigger
  • Events
    • a unit enters (playable map area)
  • Conditions
  • Actions
    • add to (Swarm Damage.gen) the event: ((entering unit) takes damage)
  • Swarm Damage
  • Events
  • Conditions
    • unit type of (damage source) equal to CarrionSwarmDummy
  • Actions
    • gief debuff or whatever. the hit unit is called (Triggering Unit)
 
Status
Not open for further replies.
Top