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

Spell : Healing Autocast Attack

Status
Not open for further replies.
Level 8
Joined
Oct 25, 2018
Messages
68
Hey y'all :)

So I'm having a little bit of trouble of being unable to successfully create this spell - and defeated I'm looking for someone competent to create this for me :)

Tooltip is as follows:
Imbues attacks with life force, gaining an increase in damage, and healing all allies near hit enemies for a percentage of damage dealt. Toogle autocast with right click.

Spell is an auto-attack ability, like Searing Arrows. It adds a magical damage bonus to attacks, and when it hits the enemy and deals damage, it heals all your allies near that target for 100% of damage dealt, both magical and psychical. Total healing is evenly split in between allies found in present zone, so it's not 100% each, but 33% for 3, in an example.

For any more info, do please ask.
Of course, full credits are to be given.
 
Level 39
Joined
Feb 27, 2007
Messages
5,011
Should the spell be able to be manually cast once like searing arrows can be? Or is it just an on/off toggle with the autocast?

Short answer: you will need a damage detection system, then it's a pretty simple trigger to get allied units in range and heal them by Damage/GroupCount. The only slightly complicated part would be storing when autocast is turned on/off so you know if an attack should apply the effect.
 
Level 8
Joined
Oct 25, 2018
Messages
68
That's the problem I've encoutered, yes. It being an autocast ability which can also be quick cast once with manual casting. Just like Searing Arrows, but with the effect of healing.

That's beyond my grasp of spellmaking, sadly. Still learning! In 2019 but fuck it!
 
Level 1
Joined
Aug 14, 2007
Messages
7
@ColourWolfe
You could use a buffplacing orbeffect for the basespell.
Then use the damage detection combined with a check if the damaged unit has the specific buff of your spell.
If yes, remove the buff and get the healing done as mentioned above.
 
Last edited:
Level 8
Joined
Oct 25, 2018
Messages
68
I've indulged into an afternoon of learning how the system works, and I think I'm able to utilize it now.
Spell works as intended, and was made in 10 minutes after a lot of reading.

For those looking for something similar, base spell is Frost Arrows, trigger is as follows:
  • Vivacity Arrows
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (DamageEventTarget has buff Vivacity Arrows (Non-stacking)) Equal to True
          • (DamageEventTarget has buff Vivacity Arrows (Stacking)) Equal to True
    • Actions
      • Unit - Remove Vivacity Arrows (Non-stacking) buff from DamageEventTarget
      • Unit - Remove Vivacity Arrows (Stacking) buff from DamageEventTarget
      • Set tempPoint = (Position of DamageEventTarget)
      • Set tempGroup = (Units within 250.00 of tempPoint matching ((((Matching unit) belongs to an ally of (Owner of DamageEventSource)) Equal to True) and (((Matching unit) is alive) Equal to True)))
      • Set tempInteger = ((((Integer(DamageEventAmount)) / 100) x (((Level of GonD : Vivacity Arrows for DamageEventSource) x 15) + 10)) / (Number of units in tempGroup))
      • Unit Group - Pick every unit in tempGroup and do (Actions)
        • Loop - Actions
          • Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + (Real(tempInteger)))
          • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Other\Drain\ManaDrainTarget.mdl
          • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation( udg_tempPoint )
      • Custom script: call DestroyGroup( udg_tempGroup )
      • Set tempInteger = 0
 
Status
Not open for further replies.
Top