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!
100% made by me, wolfman.
Got the idea from TaMeD, who wanted this spell for his map
Stores the soul of enemies that you kill, allowing you to summon them. Can store up to 6 souls, after you have 6 souls, each enemy you kill after that replaces the other souls of units you have already killed
Duration of summoned units can be changed (look at "Init" trigger)
Currently does not have any mana cost/cooldown, but that is obviously very easy to change depending on how you want to use this.
There are script functions in the trigger that tell you when the summon is cast, when a unit is set to one of the summons, when there is no unit set to the summon, and when you start to replace your summons. These can be deleted, you probably wont need them (except for probably the one that tells you when there is no unit stored for that summon).
Also, when there is no soul in a slot, and you try to summon from that slot, it will give the catser back the mana that it used to summon nothing. Just be sure to set ManaCost in the Init trig.
The Triggers:
Init
Events
Time - Elapsed game time is 0.10 seconds
Conditions
Actions
Set Duration = 30.00
Set ManaCost = 0.00
SetCreep
Events
Unit - A unit Dies
Conditions
(Unit-type of (Killing unit)) Equal to (==) Footman
((Dying unit) belongs to an enemy of (Owner of (Killing unit))) Equal to (==) True
Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellABool[(Player number of (Owner of (Killing unit)))] Equal to (==) True
SpellBBool[(Player number of (Owner of (Killing unit)))] Equal to (==) True
SpellCBool[(Player number of (Owner of (Killing unit)))] Equal to (==) True
SpellDBool[(Player number of (Owner of (Killing unit)))] Equal to (==) True
SpellEBool[(Player number of (Owner of (Killing unit)))] Equal to (==) True
Then - Actions
Set SpellABool[(Player number of (Owner of (Killing unit)))] = False
Set SpellBBool[(Player number of (Owner of (Killing unit)))] = False
Set SpellCBool[(Player number of (Owner of (Killing unit)))] = False
Set SpellDBool[(Player number of (Owner of (Killing unit)))] = False
Set SpellEBool[(Player number of (Owner of (Killing unit)))] = False
Game - Display to (All players) the text: reset
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellABool[(Player number of (Owner of (Killing unit)))] Equal to (==) False
Then - Actions
Set SpellASummon[(Player number of (Owner of (Killing unit)))] = (Unit-type of (Dying unit))
Set SpellABool[(Player number of (Owner of (Killing unit)))] = True
Game - Display to (All players) the text: spell a set
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellBBool[(Player number of (Owner of (Killing unit)))] Equal to (==) False
Then - Actions
Set SpellBSummon[(Player number of (Owner of (Killing unit)))] = (Unit-type of (Dying unit))
Set SpellBBool[(Player number of (Owner of (Killing unit)))] = True
Game - Display to (All players) the text: spell b set
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellCBool[(Player number of (Owner of (Killing unit)))] Equal to (==) False
Then - Actions
Set SpellCSummon[(Player number of (Owner of (Killing unit)))] = (Unit-type of (Dying unit))
Set SpellCBool[(Player number of (Owner of (Killing unit)))] = True
Game - Display to (All players) the text: spell c set
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellDBool[(Player number of (Owner of (Killing unit)))] Equal to (==) False
Then - Actions
Set SpellDSummon[(Player number of (Owner of (Killing unit)))] = (Unit-type of (Dying unit))
Set SpellDBool[(Player number of (Owner of (Killing unit)))] = True
Game - Display to (All players) the text: spell d set
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellEBool[(Player number of (Owner of (Killing unit)))] Equal to (==) False
Then - Actions
Set SpellESummon[(Player number of (Owner of (Killing unit)))] = (Unit-type of (Dying unit))
Set SpellEBool[(Player number of (Owner of (Killing unit)))] = True
Game - Display to (All players) the text: spell e set
Else - Actions
SummonCreep
Events
Unit - A unit Starts the effect of an ability
Conditions
Actions
Set TempLoc[0] = (Position of (Triggering unit))
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to (==) SpellA
Then - Actions
Unit - Create 1 SpellASummon[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit)) at TempLoc[0] facing Default building facing (270.0) degrees
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellASummon[(Player number of (Owner of (Triggering unit)))] Equal to (==) No unit-type
Then - Actions
Game - Display to (Player group((Owner of (Triggering unit)))) the text: No soul in slot A
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ManaCost)
Else - Actions
Game - Display to (All players) the text: spell a cast
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to (==) SpellB
Then - Actions
Unit - Create 1 SpellBSummon[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit)) at TempLoc[0] facing Default building facing (270.0) degrees
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellBSummon[(Player number of (Owner of (Triggering unit)))] Equal to (==) No unit-type
Then - Actions
Game - Display to (Player group((Owner of (Triggering unit)))) the text: No soul in slot B
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ManaCost)
Else - Actions
Game - Display to (All players) the text: spell b cast
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to (==) SpellC
Then - Actions
Unit - Create 1 SpellCSummon[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit)) at TempLoc[0] facing Default building facing (270.0) degrees
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellCSummon[(Player number of (Owner of (Triggering unit)))] Equal to (==) No unit-type
Then - Actions
Game - Display to (Player group((Owner of (Triggering unit)))) the text: No soul in slot C
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ManaCost)
Else - Actions
Game - Display to (All players) the text: spell c cast
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to (==) SpellD
Then - Actions
Unit - Create 1 SpellDSummon[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit)) at TempLoc[0] facing Default building facing (270.0) degrees
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellDSummon[(Player number of (Owner of (Triggering unit)))] Equal to (==) No unit-type
Then - Actions
Game - Display to (Player group((Owner of (Triggering unit)))) the text: No soul in slot D
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ManaCost)
Else - Actions
Game - Display to (All players) the text: spell d cast
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to (==) SpellE
Then - Actions
Unit - Create 1 SpellESummon[(Player number of (Owner of (Triggering unit)))] for (Owner of (Triggering unit)) at TempLoc[0] facing Default building facing (270.0) degrees
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SpellESummon[(Player number of (Owner of (Triggering unit)))] Equal to (==) No unit-type
Then - Actions
Game - Display to (Player group((Owner of (Triggering unit)))) the text: No soul in slot E
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + ManaCost)
Else - Actions
Game - Display to (All players) the text: spell e cast
Else - Actions
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Duration Not equal to (!=) 0.00
Then - Actions
Unit - Add a Duration second Generic expiration timer to (Last created unit)
Else - Actions
Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Orc\FeralSpirit\feralspirittarget.mdl
Special Effect - Destroy (Last created special effect)
12th Dec 2015
IcemanBo: Too long time as NeedsFix. Rejected.
15:50, 30th May 2011
Maker:
Make the unit types with which this works somehow configurable.
Use triggering unit instead of dying unit.
Store the player number into a variable and use...
12th Dec 2015
IcemanBo: Too long time as NeedsFix. Rejected.
15:50, 30th May 2011
Maker:
Make the unit types with which this works somehow configurable.
Use triggering unit instead of dying unit.
Store the player number into a variable and use the variable instead of repeatedly calling the function.
Not a good idea to display the (debug) messges to all players.
Change the if/then/else structure in the cast trigger.
Add some summon limit.
I recommend adding some follow through time in the object editor for the ability.
Don't use an array for the point.
This spell can bug with heroes (i think)
and spell A's hotkey clashes with the attack hotkey
one suggestion: maybe a trigger to clear those souls if the player(s) wants to
And it really isn't a learnable hero ability, but i might decide to make it have levels and be compatible with heroes, maybe with the spellbook ability?
Also that way the hotkeys wont get in the way of attack or anything.
And i will consider the locking, but there wouldnt really be any point in clearing the slots.. cause that would just not allow you to use that summoning. New units that you kill automatically replace the other summons that you already have if all your slots are full
Well if i want to do the lock thing, then i would probably have to make a lock spell for each summoning, so there would just be too many spell icons, especially if this were to be used by a hero with other abilities
i guess i could do that.
But i might still use the spellbook, just so there isnt a bunch of spells taking up space.
Also that would be easier to level them up
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.