• 🏆 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!

[Solved] Need help with custom spell

Status
Not open for further replies.
Level 4
Joined
Oct 2, 2015
Messages
76
Im trying to make a spell based off blizzard, that makes a beam fall from the sky sending homing fireballs at nearby enemies, i kind of did it with a dummy but im having trouble making the dummy cast the fireball spell more than once, i also set the dummy ability's cooldown to 0 and mana cost to 0
Things i tried:
-"For Each Integer" action
-Creating a periodic event trigger that detects if the Hero is still channeling and make the dummy cast the fireball

can someone help me pls?

thanks in advance
  • Main Trigger:
    • Events
      • Unit - A unit Begins channeling an ability
    • Conditions
    • Actions
      • Set manadischarge = (Current order of (Triggering unit))
      • Set Caster = (Triggering unit)
      • Set Positionofability = (Target point of ability being cast)
      • Set TempGroup = (Owner of (Triggering unit))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to Mana Discharge
        • Then - Actions
          • Unit - Create 1 Dummy for TempGroup at Positionofability facing Default building facing degrees
          • Set villager = (Last created unit)
          • Unit - Add a 6.00 second Generic expiration timer to (Last created unit)
          • Unit - Add Void Shower to (Last created unit)
          • Trigger - Turn on Loop <gen>
        • Else - Actions
  • Loop Trigger
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Current order of Caster) Not equal to manadischarge
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit - Order villager to Neutral Alchemist - Acid Bomb (Random unit from (Units within 800.00 of (Position of villager)))
{nvm solved it lol}
 
Last edited:
Level 4
Joined
Oct 2, 2015
Messages
76
This sounds incredibly amazing, Post solution!
Alright, this solution might suck since this was my first spell

ok so, instead of trying to make the dummy cast a fireball spell on all enemies nearby, i made a special dummy based on the serpent ward, just for this spell, configured his attack to be a fireball, made a custom barrage and set the max number of targets, range, etc, put the custom barrage in its abilities, and now it attacks enemies in range no need to order it to attack anything lol
 
Level 8
Joined
May 21, 2019
Messages
435
Alright, this solution might suck since this was my first spell

ok so, instead of trying to make the dummy cast a fireball spell on all enemies nearby, i made a special dummy based on the serpent ward, just for this spell, configured his attack to be a fireball, made a custom barrage and set the max number of targets, range, etc, put the custom barrage in its abilities, and now it attacks enemies in range no need to order it to attack anything lol

Fireball tends to be a stunning spell, but it kind of sounds like all you wanted was for the dummy to throw damaging fireball projectiles at all nearby enemies.
If that is the case, why not just make the ward cast a "Fan of Knives" with the projectiles changed to fireballs?
Making a ward with barrage works too, but the problem with Barrage is that it's a nightmare to adjust it, since the wards primary target will be hit by the wards base attack, while the barrage shots will hit other enemies. This means that if you wanna level this ability, you have to adjust both barrage and the ward for every single stat you may want to alter. This can be done with triggers, but it is infinitely easier to do so with a single spell. Also, I am fairly certain that the ward's main target is still subject to damage type modifiers, so I'd recommend setting the wards attack type to Chaos to have consistent damage.
 
Last edited:
Level 4
Joined
Oct 2, 2015
Messages
76
Fireball tends to be a stunning spell, but it kind of sounds like all you wanted was for the dummy to throw damaging fireball projectiles at all nearby enemies.
If that is the case, why not just make the ward cast a "Fan of Knives" with the projectiles changed to fireballs?
Making a ward with barrage works too, but the problem with Barrage is that it's a nightmare to adjust it, since the wards primary target will be hit by the wards base attack, while the barrage shots will hit other enemies. This means that if you wanna level this ability, you have to adjust both barrage and the ward for every single stat you may want to alter. This can be done with triggers, but it is infinitely easier to do so with a single spell. Also, I am fairly certain that the ward's main target is still subject to damage type modifiers, so I'd recommend setting the wards attack type to Chaos to have consistent damage.
Oh okay I'll try using fan of knives now, thanks for the suggestiom
 
Level 4
Joined
Oct 2, 2015
Messages
76
Also do you have a visualization of what you originally intended? (I.e. from a movie or tv show?)

Does the "Beam" mean a projectile or solid laser?
do the fire balls come from the sky or from the "Beam itself?
No not really I was just playing around in world edit when I had this idea


Its a custom laser effect I found on The Hive, also I changed it so the beam makes a rift when it falls and the fireballs come out of it
 
Level 24
Joined
Feb 9, 2009
Messages
1,783
Do note it is a Frankenstein of a previous request I did called blinding light ( i was too lazy to rename a few things~)

Config
  • BlLi Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- --------
      • -------- Abilities to be used by this spell --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
        • Then - Actions
          • -------- Hero's Spell --------
          • Set BlLi_SPELL[1] = Gate of Fire
          • -------- --------
          • -------- Debuff Spell --------
          • Set BlLi_SPELL[2] = Phoenix fire
          • -------- --------
          • -------- Projectile Spell (Sphere) --------
          • Set BlLi_SPELL[3] = Blinding Light Projectile
          • -------- --------
          • -------- Projectile Spell --------
          • Set BlLi_SPELL[4] = Blinding Light Dummy Cast Projectile
          • -------- --------
        • Else - Actions
      • -------- --------
      • -------- What unit's are you using for the projectile Dummy & Caster? --------
      • Set BlLi_DUMMY_UNITTYPE[1] = Blinding Light Dummy
      • Set BlLi_DUMMY_UNITTYPE[2] = Blinding Light Caster Dummy
      • -------- --------
      • -------- how long the rift lasts --------
      • Set BlLi_RIFT_DURATION = 10.00
      • -------- --------
      • -------- Effect --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
        • Then - Actions
          • -------- Projectile Size --------
          • Set BlLi_PROJECTILE_SIZE = 200.00
          • -------- --------
          • -------- Impact effect --------
          • Set BlLi_EFFECTPATH_Copy[0] = Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
          • -------- --------
          • -------- Impact Animation Speed --------
          • Set BlLi_SPEF_VALUE[0] = 0.25
          • -------- --------
          • -------- Impact Size --------
          • Set BlLi_SPEF_VALUE[1] = 1.00
          • -------- --------
          • -------- Rift Effect --------
          • Set BlLi_EFFECTPATH_Copy[1] = Abilities\Spells\Orc\StasisTrap\StasisTotemTarget.mdl
          • -------- --------
          • -------- Rift Size --------
          • Set BlLi_SPEF_VALUE[2] = 2.50
          • -------- --------
          • -------- Rift Animation Speed --------
          • Set BlLi_SPEF_VALUE[3] = 3.00
          • -------- --------
          • -------- Rift Close Effect --------
          • Set BlLi_EFFECTPATH_Copy[2] = Abilities\Spells\Orc\FeralSpirit\feralspirittarget.mdl
          • -------- --------
          • -------- Rift Size --------
          • Set BlLi_SPEF_VALUE[4] = 1.00
          • -------- --------
          • -------- Rift Animation Speed --------
          • Set BlLi_SPEF_VALUE[5] = 1.00
          • -------- --------
        • Else - Actions
      • -------- Preload --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
        • Then - Actions
          • Set BlLi_Point[0] = (Center of (Playable map area))
          • Unit - Create 1 BlLi_DUMMY_UNITTYPE[2] for Neutral Passive at BlLi_Point[1] facing Default building facing degrees
          • Set BlLi_Unit_Variable[0] = (Last created unit)
          • Unit - Add BlLi_SPELL[1] to BlLi_Unit_Variable[0]
          • Unit - Add BlLi_SPELL[2] to BlLi_Unit_Variable[0]
          • Unit - Add BlLi_SPELL[3] to BlLi_Unit_Variable[0]
          • Unit - Add BlLi_SPELL[4] to BlLi_Unit_Variable[0]
          • Unit - Add a 0.03 second Generic expiration timer to BlLi_Unit_Variable[0]
          • Custom script: call RemoveLocation(udg_BlLi_Point[0])
        • Else - Actions
      • -------- Preload --------
Cast
  • BlLi Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BlLi_SPELL[1]
    • Actions
      • Set BlLi_Unit_Variable[1] = (Triggering unit)
      • Set BlLi_Point[1] = (Position of BlLi_Unit_Variable[1])
      • Set BlLi_Point[2] = (Target point of ability being cast)
      • Unit - Create 1 BlLi_DUMMY_UNITTYPE[1] for (Owner of BlLi_Unit_Variable[1]) at BlLi_Point[1] facing BlLi_Point[2]
      • Animation - Change (Last created unit) flying height to 840.00 at 0.00
      • Set BlLi_Unit_Variable[2] = (Last created unit)
      • Animation - Change BlLi_Unit_Variable[2]'s size to (BlLi_PROJECTILE_SIZE%, 0.00%, 0.00%) of its original size
      • Unit - Add BlLi_SPELL[3] to BlLi_Unit_Variable[2]
      • Unit - Add BlLi_SPELL[4] to BlLi_Unit_Variable[2]
      • Unit - Order BlLi_Unit_Variable[2] to Undead Destroyer - Devour Magic BlLi_Point[2]
      • Unit - Add a 1.50 second Generic expiration timer to BlLi_Unit_Variable[2]
      • Custom script: call RemoveLocation(udg_BlLi_Point[1])
      • Custom script: call RemoveLocation(udg_BlLi_Point[2])
Cast (Dummy projectile)
  • BlLi Dummy Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BlLi_SPELL[4]
    • Actions
      • Set BlLi_Unit_Variable[3] = (Triggering unit)
      • Set BlLi_Point[3] = (Target point of ability being cast)
      • Unit - Create 1 BlLi_DUMMY_UNITTYPE[2] for (Owner of BlLi_Unit_Variable[3]) at BlLi_Point[3] facing BlLi_Point[3]
      • Set BlLi_Unit_Variable[6] = (Last created unit)
      • Set BlLi_Akey = (Custom value of BlLi_Unit_Variable[6])
      • Set BlLi_Duration[BlLi_Akey] = BlLi_RIFT_DURATION
      • Unit - Add BlLi_SPELL[2] to BlLi_Unit_Variable[6]
      • Unit - Add a BlLi_RIFT_DURATION second Generic expiration timer to BlLi_Unit_Variable[6]
      • -------- Special Effect --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
        • Then - Actions
          • Special Effect - Create a special effect at BlLi_Point[3] using BlLi_EFFECTPATH_Copy[0]
          • Special Effect - Set Time Scale of (Last created special effect) to BlLi_SPEF_VALUE[0]
          • Special Effect - Set Scale of (Last created special effect) to BlLi_SPEF_VALUE[1]
          • Special Effect - Destroy (Last created special effect)
          • Special Effect - Create a special effect at BlLi_Point[3] using BlLi_EFFECTPATH_Copy[1]
          • Set BlLi_Effect[BlLi_Akey] = (Last created special effect)
          • Special Effect - Set Scale of (Last created special effect) to BlLi_SPEF_VALUE[2]
          • Special Effect - Set Time Scale of (Last created special effect) to BlLi_SPEF_VALUE[3]
        • Else - Actions
      • Custom script: call RemoveLocation(udg_BlLi_Point[3])
      • -------- --------
Dummy death
  • BlLi Dummy Died clean up
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to BlLi_DUMMY_UNITTYPE[2]
    • Actions
      • Set BlLi_Akey = (Custom value of (Dying unit))
      • Special Effect - Destroy BlLi_Effect[BlLi_Akey]
      • Set BlLi_Point[4] = (Position of (Dying unit))
      • Special Effect - Create a special effect at BlLi_Point[4] using BlLi_EFFECTPATH_Copy[2]
      • Special Effect - Set Time Scale of (Last created special effect) to BlLi_SPEF_VALUE[4]
      • Special Effect - Set Scale of (Last created special effect) to BlLi_SPEF_VALUE[5]
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation(udg_BlLi_Point[4])
 
Level 8
Joined
May 21, 2019
Messages
435
Thanks!
Also, holy crap that's a lot of animation inputs you're giving. Props for making this so universally applicable.
 
Status
Not open for further replies.
Top