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

Arcane Recall

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.

bribe-jpg.245838



  • 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.
Previews
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...
Level 37
Joined
Jul 22, 2015
Messages
3,485
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.

but Bribe Modified it MUI leakless for me and gave me permission to upload long time ago
I think Bribe did more than just modify it to be MUI and leakless :p he practically recoded your entire spell into JASS.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
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
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
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
 
Top