• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Magical Daggers v1.1

Hello there, spell section. It's been a long time since my last spell uploaded here.
enjoy ~

Description:
The Warden throws her five magical daggers forward, damaging enemies in their path and slowing them down by 50% for 3 seconds. The daggers will stay on the ground temporarily, they will return to the Warden after 3 seconds and dealing damage on their way back.

Level 1 - Deals 50 damage per dagger.
Level 2 - Deals 75 damage per dagger.
Level 3 - Deals 100 damage per dagger.

====

Now I can finally sleep in peace.
Do tell me if I missed something or if I did something wrong.

Cheers ~

Credits:
- Blood Raven (Dagger Model)

v1.1
- Attachment point for SFX[1] is now configurable
- Attack type and Damage type is now configurable
- Preloading dummy unit and abilities now use their proper data from variables instead of object data
- Periodic Timer is now a variable and added from MDG Init trigger
v1.0
- Released
Contents

Magical Daggers v1.1 (Map)

Reviews
KILLCIDE
Awesome spell concept! Needs Fixed Nothing Suggestions You should always add attachment point configurables for every special effect configurable. Some special effects won't always work for the same attachment point. Attack type and damage type...

Rheiko

Spell Reviewer
Level 26
Joined
Aug 27, 2013
Messages
4,214
I actually created 1 dummy caster at first, I dunno why I changed it to that. I was half asleep while making this. :xxd:
I never thought the start offset matter, I will add it to the configuration later.

;p I like you seperated 1st and 2nd damage.
Because I think it is kinda OP if I leave it with my default settings. :p

Thanks for the feedback, appreciate it!

Edit: Updated!
I forgot to put the version next to the spell's name the moment I uploaded this and since it's just a minor update, I think it's fine as v1.0 for now.
DummyCast is only created on init now.
Added StartOffset configuration.

Cheers ~
 
Last edited:
Awesome spell concept!

Needs Fixed

  • Nothing

Suggestions

  • You should always add attachment point configurables for every special effect configurable. Some special effects won't always work for the same attachment point.
  • Attack type and damage type should be configurable
  • When you preload the dummy units, you're using their data from the Object Editor rather than the variables.
  • I'd make the periodic timer into a variable. Since you use the value 0.03 in main code, the spooky math will break if the user decides to change just the periodic timer.
  • That deallocation block looks DISGUSTING ! You should seriously consider Linked List :p

Status

Approved
 
Level 12
Joined
Nov 24, 2007
Messages
543
What I was trying to point out this.

Here.png

My map has over 500 custom units and even when you copy the dummy units into the map first they are not assigned to the trigger properly when its copied (random custom units are assigned, dunno why).
Its annoying to have go around and assign every reference again.
 
Level 4
Joined
Jul 17, 2019
Messages
25
I have a small problem. I used your spell, and when I cast it in-game, a huge dagger model appears at the place of the caster. What did I do wrong, why does it appear there?
WC3ScrnShot_081019_132843_01.png
 

Attachments

  • upload_2019-8-10_13-29-13.png
    upload_2019-8-10_13-29-13.png
    2 MB · Views: 30

Rheiko

Spell Reviewer
Level 26
Joined
Aug 27, 2013
Messages
4,214
I know it's been like 6 years but hey, why not.

Updated to v1.1:
  • Attachment point for SFX[1] is now configurable
  • Attack type and Damage type is now configurable
  • Preloading dummy unit and abilities now use their proper data from variables instead of object data
  • Periodic Timer is now a variable and added from MDG Init trigger

Basically almost everything @KILLCIDE suggested.
Also fixed the part where when I create dummy unit, I used the object data instead of variable as pointed out by @ArneXis. It's a complete oversight from me, I apologize. That's it, cheers!
 
Level 2
Joined
Jan 9, 2025
Messages
7
I know it's been like 6 years but hey, why not.

Updated to v1.1:
  • Attachment point for SFX[1] is now configurable
  • Attack type and Damage type is now configurable
  • Preloading dummy unit and abilities now use their proper data from variables instead of object data
  • Periodic Timer is now a variable and added from MDG Init trigger

Basically almost everything @KILLCIDE suggested.
Also fixed the part where when I create dummy unit, I used the object data instead of variable as pointed out by @ArneXis. It's a complete oversight from me, I apologize. That's it, cheers!
Not sure why but when i cast the spell it deals more damage than it should.
I changed the damage to 50/50 to test and units take between 100 and 200 damage per cast at random. I haven't changed anything outside of damage numbers and installed the spell as per instruction.
(I think the spell is supposed to deal damage only once per "direction" aka twice per cast)

Edit: Even in the test map damage dealt looks to be random.
 
Last edited:
Level 2
Joined
Jan 9, 2025
Messages
7
Please re-read the description. It deals damage per dagger not per direction. When multiple daggers hit the enemy unit, the damage will add up. That's most likely the reason the spell deals more damage than you think it should.

Alright, i must have misunderstood this.
1736619133538.png


Is there a quick way to make it deal damage once per direction?
 
Level 45
Joined
Feb 27, 2007
Messages
5,578
The issue is mostly with the way Rheiko structured this. Instead of tracking instances of the dagger fan as a whole, it tracks each dagger individually. That means that there isn't one group that applies to all daggers in a cast, and you can't look at the full list of dagger instances to determine which ones should group together.

You can, however, just alter the groups it creates for the daggers so that each cast all collectively share one group under-the-hood. To do that, you'll need to identify which singular group should exist, assign it to a variable, and then make all the relevant indices of MDG_UndamagedGroup[] point to that variable instead of to their own empty groups. Then repeat this process for MDG_UndamagedGroup2[]. This will introduce one possible error: since all of the groups will be shared, when the first instance in the list ends it will destroy the groups, but the rest of the instances will still check things with that (now destroyed) group once before they too 'end'. Probably won't cause any issues, but it's possible some conflux of fate causes a problem on that exact iteration of the loop trigger. Anyway:
  • Create 2 group variables: MDG_UG and MDG_UG2
  • Look in the cast trigger for this comment above some custom script lines: Create a group to filter enemy units that have been damaged
  • Leave the CS lines there, but put them inside the "then" block of an If/Then/Else, and add a couple more variable assignments. Should look like this:
  • -------- Create a group to filter enemy units that have been damaged --------
  • If (All conditions are true) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • MDG_TempInteger equal to 1
    • Then - Actions
      • // put all 6 of those CS lines here, followed by:
      • Set MDG_UG = MDG_UndamagedGroup[MDG_MaxIndex]
      • Set MDG_UG2 = MDG_UndamagedGroup2[MDG_MaxIndex]
    • Else - Actions
      • Set MDG_UndamagedGroup[MDG_MaxIndex] = MDG_UG
      • Set MDG_UndamagedGroup2[MDG_MaxIndex] = MDG_UG2
 
Level 2
Joined
Jan 9, 2025
Messages
7
The issue is mostly with the way Rheiko structured this. Instead of tracking instances of the dagger fan as a whole, it tracks each dagger individually. That means that there isn't one group that applies to all daggers in a cast, and you can't look at the full list of dagger instances to determine which ones should group together.

You can, however, just alter the groups it creates for the daggers so that each cast all collectively share one group under-the-hood. To do that, you'll need to identify which singular group should exist, assign it to a variable, and then make all the relevant indices of MDG_UndamagedGroup[] point to that variable instead of to their own empty groups. Then repeat this process for MDG_UndamagedGroup2[]. This will introduce one possible error: since all of the groups will be shared, when the first instance in the list ends it will destroy the groups, but the rest of the instances will still check things with that (now destroyed) group once before they too 'end'. Probably won't cause any issues, but it's possible some conflux of fate causes a problem on that exact iteration of the loop trigger. Anyway:
  • Create 2 group variables: MDG_UG and MDG_UG2
  • Look in the cast trigger for this comment above some custom script lines: Create a group to filter enemy units that have been damaged
  • Leave the CS lines there, but put them inside the "then" block of an If/Then/Else, and add a couple more variable assignments. Should look like this:
  • -------- Create a group to filter enemy units that have been damaged --------
  • If (All conditions are true) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • MDG_TempInteger equal to 1
    • Then - Actions
      • // put all 6 of those CS lines here, followed by:
      • Set MDG_UG = MDG_UndamagedGroup[MDG_MaxIndex]
      • Set MDG_UG2 = MDG_UndamagedGroup2[MDG_MaxIndex]
    • Else - Actions
      • Set MDG_UndamagedGroup[MDG_MaxIndex] = MDG_UG
      • Set MDG_UndamagedGroup2[MDG_MaxIndex] = MDG_UG2
Thanks, i'm going to try this:grin:
 
Top