Channel Spell Resurrection

WildTurkey

Previously known as giv_me_rep
Reaction score
88
Hi,

Making a spell that will resurrect a hero when completed but will cancel if attacked during the channel. Cant figure out what triggers to run to get this to work, I think the problem is mostly with channel as I cant seem to detect when the channel actually finishes and am not sure how I should go about this (finishes casting doesn't work, begins effect of ability runs trigger instantly rather than at end of channel).

If I can get it to detect when channel ends successful then I could get it going but I cant seem to get it to work and dont know a more effective way.

If you could help again that'd be tops.

Love and kisses
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
First of all you need to base it off of the actual "Channel" ability. Its a special neutral ability that behaves differently then most other abilities in the game.
Then you have to figure out a way for the player to pick which hero he wants to resurrect since you can not click on dead units.

The events "begins casting an ability", "finishes casting an ability" and "stops casting an ability" (or whatever they are called) are what you need.
When the unit "finishes" casting it has actually channeled through the entire duration.
When the unit "stops" casting it stopped for any reason, be it finished, canceled or the unit died or anything.

You also have to somehow mark the unit while channeling, perhaps by putting it inside a unit group. You need this to detect whether the unit was attacked during the channeling in order to stop it.

Here is a pseudo-code example:

Trigger1:
Code:
Events
 Unit - A unit starts casting an ability
Conditions
 Comparison - triggering ability == Resurrection
Actions
 UnitGroup - Add triggering unit to ResurrectionCasterUnitGroup
Trigger2:
Code:
Events
 Unit - A unit stops casting an ability
Conditions
 Comparison - triggering ability == Resurrection
Actions
 UnitGroup - Remove triggering unit to ResurrectionCasterUnitGroup
Trigger3:
Code:
Events
 Unit - A unit is attacked
Conditions
 UnitGroup - triggering unit is in ResurrectionCasterUnitGroup
Actions
 Unit - issue triggering unit to "stop"
Trigger4:
Code:
Events
 Unit - A unit finishes casting an ability
Conditions
 Comparison - triggering ability == Resurrection
Actions
 Unit - revive [SOME UNIT] instantly at (location of triggering unit)

You just have to figure out how to save [SOME UNIT]. If the spell needs to be MPI you could use an array. If the spell needs to be MUI you could use a hashtable.
 

WildTurkey

Previously known as giv_me_rep
Reaction score
88
I had something similar to this using buffs instead. I can get everything working except the 'detect when channel finishes' which is based on the channel spell.

'Finishes casting an ability' doesnt work when I do it for channel, even showing a simple success message as an action doesnt show up. I googled it and it says this is a problem with the channel ability?
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
Works for me.
Check out the simple example map I attached.

When you use the ability and then wait for the ability to finish the messages:
Started Casting
Finished Casting
Stopped Casting

should appear in this order. Each one comes from a different trigger with the corresponding event.

Perhaps you have conditions in your trigger that interfere. It might be that the casting unit or triggering ability variables are not correctly set for this particular event.
 

Attachments

  • Channel.w3x
    16.1 KB · Views: 282

WildTurkey

Previously known as giv_me_rep
Reaction score
88
Sincere thanks AccName. Top Bloke.

Must have been some length of the trigger interrupting like you said. I will rewrite it your way.

Kind Regards
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top