Spellpack Skeletal Spells

Pigger

New Member
Reaction score
13
Heya, my first Spellpack (Unlike my single "Grappling Hook" Spell that I gave up on) including three spells: Undying Fortitude, Corpse Heal, and Bone Stealing.

All are (I think) leakless, except for a part in the "Bone Stealing" trigger, which Ghan was trying to help me with and asked me to upload the map for him (So it is now uploaded). I realize this can't be approved until then but I will fix it.

Undying Fortitude - Gives the hero a % chance to ressurect at a corpse is one is nearby.
Import Difficulty: Easy
Implementation: Copy Spell - Copy Trigger & Variables
MUI: No
MPI: No
GUI/JASS: GUI w/ Custom Script

--------------------------------------------------------------------------------------------------------------------------------------------------

Bone Stealing - Sends the spirit outward in an attempt to steal a person's skeletal remains, if it fails the spirit will fly back to it's original host.
Import Difficulty: Easy/Medium
Implementation: Copy Spell - Copy Dummy Unit - Copy Trigger & Variable
MUI: No
MPI: No
GUI/JASS: GUI w/ Custom Script

--------------------------------------------------------------------------------------------------------------------------------------------------

Corpse Heal - Heal's the caster based on how many corpses are nearby.
Import Difficulty: Easy
Implementation: Copy Spell - Copy Dummy Unit - Copy Trigger & Variable
MUI: Yes! (Thanks Gals and NapaHero)
MPI: I believe so?
GUI/JASS: GUI w/ Custom Script

And here are the spells with screenshot! -
Bone Stealing:
Code:
Steal
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Bone Stealing
    Actions
        Set Skeleton = (Casting unit)
        Set UnitVar = (Target unit of ability being cast)
        Wait until ((UnitVar has buff Shocked (Pause)) Equal to True), checking every 0.10 seconds
        Set SkelePos = (Target point of ability being cast)
        Set SkelePos2 = (Position of Skeleton)
        Wait 0.30 seconds
        Animation - Play Skeleton's death animation
        Unit - Pause Skeleton
        Wait 1.00 seconds
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (UnitVar is dead) Equal to True
            Then - Actions
                Unit - Remove UnitVar from the game
                Unit - Move Skeleton instantly to SkelePos
                Animation - Play Skeleton's birth animation
                Wait 0.30 seconds
                Unit - Unpause Skeleton
            Else - Actions
                Unit - Create 1 Spirit for (Owner of Skeleton) at SkelePos facing Default building facing degrees
                Unit - Order (Last created unit) to Move To SkelePos2
                Unit - Set level of Spirit Immo (Neutral Hostile 1) for (Last created unit) to (Level of Bone Stealing for Skeleton)
                Wait until ((Distance between SkelePos2 and (Position of (Last created unit))) Less than or equal to 100.00), checking every 0.10 seconds
                Unit - Remove (Last created unit) from the game
                Unit - Unpause Skeleton
                Animation - Play Skeleton's birth animation
        Custom script:   call RemoveLocation(udg_SkelePos)
        Custom script:   call RemoveLocation(udg_SkelePos2)



Corpse Heal:
Code:
Heal
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to 1s
    Actions
        Set Skeleton = (Casting unit)
        Set SkelePos = (Position of Skeleton)
        Set CorpseCheck = (Units within 500.00 of SkelePos matching (((Matching unit) is dead) Equal to True))
        For each (Integer A) from 1 to (Number of units in CorpseCheck), do (Actions)
            Loop - Actions
                Set DeadPos[(Integer A)] = (Position of (Random unit from CorpseCheck))
                Unit - Create 1 Dummy for (Owner of Skeleton) at DeadPos[(Integer A)] facing Default building facing degrees
                Set CorpseCaster[(Integer A)] = (Last created unit)
                Unit - Set level of Spirit Heal  for CorpseCaster[(Integer A)] to (Level of 1s for Skeleton)
                Unit - Order CorpseCaster[(Integer A)] to Orc Shadow Hunter - Healing Wave Skeleton
        Unit - Remove CorpseCaster[(Integer A)] from the game
        Custom script:   call RemoveLocation(udg_SkelePos)
        Custom script:   call RemoveLocation(udg_DeadPos[GetForLoopIndexA()])
        Custom script:   call DestroyGroup(udg_CorpseCheck)




Undying Fortitude: (Due to it's passive and non flashy nature, there are no screen shots of it, you'll have to try it out yourself!)
Code:
Ressurection
    Events
        Unit - A unit Dies
    Conditions
        (Level of Bash for (Dying unit)) Not equal to 0
    Actions
        Set Skeleton = (Dying unit)
        Set SkelePos = (Position of Skeleton)
        Set CorpseCheck = (Units within 300.00 of SkelePos matching (((Matching unit) is dead) Equal to True))
        Set CorpsePos = (Position of (Random unit from CorpseCheck))
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Unit-type of Skeleton) Equal to Skeleton
                (Number of units in CorpseCheck) Greater than or equal to 1
            Then - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Random integer number between 1 and 100) Less than or equal to (((Level of Bash for Skeleton) x 7) + (Level of Bash for Skeleton))
                    Then - Actions
                        Wait 0.90 seconds
                        Hero - Instantly revive Skeleton at CorpsePos, Hide revival graphics
                        Selection - Select Skeleton for (Owner of Skeleton)
                        Animation - Play Skeleton's birth animation
                    Else - Actions
            Else - Actions
        Custom script:   call RemoveLocation(udg_CorpsePos)
        Custom script:   call RemoveLocation(udg_SkelePos)
        Custom script:   call DestroyGroup(udg_CorpseCheck)

View attachment SkeleSpellPack.w3x
 

Siretu

Starcraft 2 Editor Moderator
Reaction score
293
Everything looks nice, but in the triggers for undying fortitude it says
"condition - (Level of Bash for (Dying unit)) Not equal to 0
Shouldn't it be Undying fortitude?
 

Pigger

New Member
Reaction score
13
That's because I just used bash for the base passive ability, and never bothered to change it's editor name.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
Well..i wonder where's the leak in Bone Stealing trigger?
I cant seems to find out...

And...i wonder if (last created unit) can made past (wait)...
 

Pigger

New Member
Reaction score
13
....I have no clue what happened...but not Bone Stealing is malfunctioning to hell. Could anyone else test it out please?
 

SerraAvenger

Cuz I can
Reaction score
234
And...i wonder if (last created unit) can made past (wait)...
Depends
Get Last Created Unit returns a global variable
That is allways set to the creature you created with any Blizzard JASS creature creating code. So if you have any other creature creating code running during the wait ( from other Triggers ) , it will fuck every thing up.

It is risky, but it is possible that it works. I would not recommend it.

Hth, Davey

EDIT:
Please put an
JASS:
Custom script: exitwhen bj_forLoopAIndex >= 12
into your "corpse heal" right at the top of the for each integer from 1 to...: )

Btw: your code is not completely MUI... It only works for a single Hero like that. So if you use two of them in a single map, it could stop working if both Heroes cast it at the same time.
 

NapaHero

Back from the dead...
Reaction score
43
Isn't Corpse Heal MUI?

Change Skeleton = Casting Unit to Skeleton = Triggering Unit
 

Pigger

New Member
Reaction score
13
Updated the map a little bit (Fixed a bug with Bone Stealing). Added in Serra's custom script (I think it's right?).

Why would I want to change casting to triggering unit?
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
>>Why would I want to change casting to triggering unit?
Makes it MUI

Learn about it Here
 

NapaHero

Back from the dead...
Reaction score
43
>>Makes it MUI

Yeah, that's why I told him to change Casting Unit to Triggering Unit :D

PS: Hmmm...Maybe Corpse Heal can be MPI too?

Code:
Heal
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to 1s
    Actions
        Set Skeleton[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
        Set SkelePos[(Player number of (Owner of (Triggering unit)))] = (Position of Skeleton[(Player number of (Owner of (Triggering unit)))])
        Set CorpseCheck = (Units within 500.00 of SkelePos[(Player number of (Owner of (Triggering unit)))] matching (((Matching unit) is dead) Equal to True))
        For each (Integer A) from 1 to (Number of units in CorpseCheck), do (Actions)
            Loop - Actions
                Custom script:   exitwhen bj_forLoopAIndex >= 12
                Set DeadPos[(Integer A)] = (Position of (Random unit from CorpseCheck))
                Unit - Create 1 Dummy for (Owner of Skeleton[(Player number of (Owner of (Triggering unit)))]) at DeadPos[(Integer A)] facing Default building facing degrees
                Unit - Set level of Spirit Heal  for (Last created unit) to (Level of 1s for Skeleton[(Player number of (Owner of (Triggering unit)))])
                Unit - Order (Last created unit) to Orc Shadow Hunter - Healing Wave Skeleton[(Player number of (Owner of (Triggering unit)))]
                Unit - Add a 0.10 second Generic expiration timer to (Last created unit)
        Custom script:   call RemoveLocation(udg_SkelePos[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))])
        Custom script:   call RemoveLocation(udg_DeadPos[GetForLoopIndexA()])
        Custom script:   call DestroyGroup(udg_CorpseCheck)

Something like this.
 

Doomhammer

Bob Kotick - Gamers' corporate spoilsport No. 1
Reaction score
67
I'd like to test that spell map, but:

>> Invalid Attachment specified. If you followed a valid link, please notify the administrator
 

Pigger

New Member
Reaction score
13
Sorry about that Doomhammer, I must have accidentally deleted this one from my attachment files when I was cleaning house :S.
 
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