1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Find your way through the deepest dungeon in the 18th Mini Mapping Contest Poll.
    Dismiss Notice
  3. A brave new world lies beyond the seven seas. Join the 34th Modeling Contest today!
    Dismiss Notice
  4. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
Hive 3 Remoosed BETA - NOW LIVE. Go check it out at BETA Hive Workshop! Post your feedback in this new forum BETA Feedback.
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Arcane Recall

Submitted by stan0033
This bundle is marked as approved. It works and satisfies the submission rules.
This is Arcane Recall, a spell that saves the positions of nearby friendly units and on second cast sends them back. The idea is mine, but Bribe Modified it MUI leakless for me and gave me permission to upload long time ago, but I upload it now.
Permission

[​IMG]

triggers

  • AR Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Set ability variable and trigger to run when its effect starts and expires --------
      • -------- --------
      • Set AR_Ability = Arcane Recall
      • Set Spell__Trigger_OnEffect = AR Cast <gen>
      • Set Spell__Trigger_OnFinish = AR Endcast <gen>
      • Set Spell__Trigger_OnLoop = AR Cancel <gen>
      • -------- --------
      • -------- SET VARIABLES DEPENDING ON YOUR PREFERENCES --------
      • -------- --------
      • -------- If the spell isn't re-casted by this many seconds, the effect cancels --------
      • -------- --------
      • Set AR_CutoffTime = 5.00
      • -------- -------------------------------------------------------------------------- --------
      • -------- TRUE variables will include such units in the spell --------
      • -------- --------
      • Set Spell__Filter_AllowAlly = True
      • Set Spell__Filter_AllowHero = True
      • Set Spell__Filter_AllowEnemy = False
      • Set Spell__Filter_AllowStructure = False
      • -------- --------
      • -------- The range in which the spell pick units --------
      • -------- --------
      • Set AR_Range = 600.00
      • -------- --------
      • -------- The number of Units Picked for each level of the spell --------
      • -------- --------
      • Set AR_Units_Picked[1] = 3
      • Set AR_Units_Picked[2] = 4
      • Set AR_Units_Picked[3] = 5
      • -------- Set the model of the special effect --------
      • Set AR_EffectModel_Caster = Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
      • Set AR_EffectModel_Target = Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
      • Set AR_EffectModel_Teleport = Abilities\Spells\Human\MassTeleport\MassTeleportTo.mdl
      • -------- set th attachment points of the spell --------
      • Set AR_SFX_Target = overhead
      • Set AR_SFX_Caster = overhead
      • -------- -------------------------------------------------------------------------- --------
      • -------- END OF CONFIGURATION --------
      • Set Spell__UseTargetGroup = True
      • Set Spell__Ability = AR_Ability
      • Trigger - Run Spell System <gen> (ignoring conditions)
  • AR Cast
    • Events
    • Conditions
    • Actions
      • Set AR_CustomValue = (Custom value of Spell__Caster)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • AR_Casted[AR_CustomValue] Equal to False
        • Then - Actions
          • Special Effect - Create a special effect attached to the AR_SFX_Caster of Spell__Caster using AR_EffectModel_Caster
          • Set AR_Effect[Spell__Index] = (Last created special effect)
          • Set AR_Casted[AR_CustomValue] = True
          • Set AR_Index[AR_CustomValue] = Spell__Index
          • -------- --------
          • Set Spell__InRangePoint = Spell__CastPoint
          • Set Spell__InRange = AR_Range
          • Unit Group - Remove Spell__Caster from Spell__InRangeGroup
          • Custom script: loop
          • Custom script: exitwhen udg_Spell__InRangeCount <= udg_AR_Units_Picked[udg_Spell__Level]
          • Set Spell__InRangeCount = (Spell__InRangeCount - 1)
          • Unit Group - Remove (Random unit from Spell__InRangeGroup) from Spell__InRangeGroup
          • Custom script: endloop
          • Unit Group - Pick every unit in Spell__InRangeGroup and do (Actions)
            • Loop - Actions
              • Set AR_PickedUnit = (Picked unit)
              • Unit Group - Add AR_PickedUnit to Spell__TargetGroup
              • Set AR_TargetIndex[(Custom value of AR_PickedUnit)] = Spell__Index
              • Set AR_Position = (Position of (Picked unit))
              • Hashtable - Save Handle OfAR_Position as (Custom value of AR_PickedUnit) of Spell__Index in Spell__Hash
              • Special Effect - Create a special effect attached to the AR_SFX_Target of AR_PickedUnit using AR_EffectModel_Target
              • Hashtable - Save Handle Of(Last created special effect) as (0 - (Custom value of AR_PickedUnit)) of Spell__Index in Spell__Hash
              • Special Effect - Create a special effect at AR_Position using AR_EffectModel_Teleport
              • Special Effect - Destroy (Last created special effect)
        • Else - Actions
          • Set AR_LastIndex = AR_Index[AR_CustomValue]
          • Special Effect - Destroy AR_Effect[Spell__Index]
          • Set AR_Casted[AR_CustomValue] = False
          • Unit Group - Pick every unit in Spell_i_TargetGroup[AR_LastIndex] and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • AR_TargetIndex[(Custom value of (Picked unit))] Equal to AR_LastIndex
                • Then - Actions
                  • Set AR_PickedUnit = (Picked unit)
                  • Set AR_Position = (Position of AR_PickedUnit)
                  • Special Effect - Create a special effect at AR_Position using AR_EffectModel_Teleport
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: call RemoveLocation(udg_AR_Position)
                  • Set AR_Position = (Load (Custom value of AR_PickedUnit) of AR_LastIndex in Spell__Hash)
                  • Special Effect - Create a special effect at AR_Position using AR_EffectModel_Teleport
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Destroy (Load (0 - (Custom value of AR_PickedUnit)) of AR_LastIndex in Spell__Hash)
                  • Unit - Move AR_PickedUnit instantly to AR_Position
                • Else - Actions
                  • -------- If the unit was hit by a second buff before its first buff finished, the first buff is overriden --------
  • AR Endcast
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • AR_Casted[(Custom value of Spell__Caster)] Equal to True
        • Then - Actions
          • Set Spell__Time = AR_CutoffTime
          • Unit - Remove AR_Ability from Spell__Caster
          • Unit - Add AR_Ability to Spell__Caster
          • Unit - Set level of AR_Ability for Spell__Caster to Spell__Level
        • Else - Actions
          • -------- Don't reset the cooldown if the ability has been cast for the second time. --------
  • AR Cancel
    • Events
    • Conditions
    • Actions
      • Set AR_CustomValue = (Custom value of Spell__Caster)
      • Unit Group - Pick every unit in Spell__TargetGroup and do (Actions)
        • Loop - Actions
          • Set AR_PickedUnit = (Picked unit)
          • -------- Clear memory leaks --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • AR_TargetIndex[(Custom value of AR_PickedUnit)] Equal to Spell__Index
            • Then - Actions
              • Set AR_TargetIndex[(Custom value of AR_PickedUnit)] = 0
            • Else - Actions
          • Set AR_Position = (Load (Custom value of AR_PickedUnit) of AR_Index[AR_CustomValue] in Spell__Hash)
          • Custom script: call RemoveLocation(udg_AR_Position)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • AR_Index[AR_CustomValue] Equal to Spell__Index
              • AR_Casted[AR_CustomValue] Equal to True
            • Then - Actions
              • -------- The special effect hasn't yet been destroyed --------
              • Special Effect - Destroy (Load (0 - (Custom value of AR_PickedUnit)) of Spell__Index in Spell__Hash)
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • AR_Casted[AR_CustomValue] Equal to True
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • AR_Index[AR_CustomValue] Equal to Spell__Index
            • Then - Actions
              • -------- In the event where the cooldown is less than the expire time of the ability and it was re-cast, don't reset the flag --------
              • Set AR_Casted[AR_CustomValue] = False
            • Else - Actions
          • Special Effect - Destroy AR_Effect[Spell__Index]
        • Else - Actions






Requirments:
Bribe's Indexer

Credits:
Bribe's indexer
Bribe

// How to import:
// Enable 'create unknown variable while pasting trigger data' if it's not active
// 1. Copy the Arcane REcall Fodler to your map
// 2. Copy Required systems folder to your map
// 3. Copy the spell to your map and reference it to the variable.
Contents

Arcane Recall (Map)

Reviews
KILLCIDE
Spell looks good to me excluding some minor issues: CutoffTime & Range should support multi-level In the Spell_InRangeGroup loop, you should store the Custom value of AR_PickedUnit into a variable and reference that Change (Picked unit) to...
  1. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,505
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Hm I don't see why you uploaded another submission. Your old Arcane Recall is still in the system, why didn't you just update that bundle ...? Anyway, given that Tank-Commander reviewed your other Arcane Recall, I'll see if he wants to review this one again.

    I think Bribe did more than just modify it to be MUI and leakless :p he practically recoded your entire spell into JASS.
     
  2. stan0033

    stan0033

    Joined:
    Jun 27, 2010
    Messages:
    1,993
    Resources:
    17
    Models:
    4
    Icons:
    2
    Packs:
    1
    Skins:
    2
    Maps:
    7
    Spells:
    1
    Resources:
    17
    exactly :D
     
  3. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,505
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Oh I forgot to mention, please use [jass][/jass] tags.
     
  4. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,505
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Oh... I just realized the JASS code you posted is the actual Spell System. You don't need to post that :p other than that, here are just two issues:
    • The special effects and their attachment points should be added to AR Config
    • In all of your unit group loops, store (Picked unit) into a variable instead of having to call
      GetEnumUnit()
    Set to Awaiting Update
     
  5. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,505
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Spell looks good to me excluding some minor issues:
    • CutoffTime & Range should support multi-level
    • In the Spell_InRangeGroup loop, you should store the Custom value of AR_PickedUnit into a variable and reference that
    • Change (Picked unit) to AR_PickedUnit here:
      • Set AR_Position = (Position of (Picked unit))

    • In the Spell__TargetGroup group loop, you should store the Custom value of AR_PickedUnit into a variable and reference that
    Other than that, it's in an approvable state. Please just update your description to have How to Install instructions, spell requirements, and credits. The same goes for the ingame map!


    Approved
     
  6. stan0033

    stan0033

    Joined:
    Jun 27, 2010
    Messages:
    1,993
    Resources:
    17
    Models:
    4
    Icons:
    2
    Packs:
    1
    Skins:
    2
    Maps:
    7
    Spells:
    1
    Resources:
    17
    Ok mate, changes made!
     
  7. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,505
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Do this as well! Your spell is breaking some rules because of it:
     
  8. Virus-X

    Virus-X

    Joined:
    Aug 14, 2016
    Messages:
    174
    Resources:
    0
    Resources:
    0
    You can make a recall like league of legend :D.
    HARD CHALLENGER!!
     
  9. stan0033

    stan0033

    Joined:
    Jun 27, 2010
    Messages:
    1,993
    Resources:
    17
    Models:
    4
    Icons:
    2
    Packs:
    1
    Skins:
    2
    Maps:
    7
    Spells:
    1
    Resources:
    17
    Leak of ledge ends? :D just jokin
     
  10. KILLCIDE

    KILLCIDE

    Administrator

    Joined:
    Jul 22, 2015
    Messages:
    3,505
    Resources:
    20
    Models:
    2
    Icons:
    10
    Spells:
    7
    Tutorials:
    1
    Resources:
    20
    Sorry for the update. Just updating the tags.