1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The poll for Hive's 12th Concept Art Contest is up! Go cast your vote for your favourite genie!
    Dismiss Notice
  5. Travel to distant realms and encounter scenes unknown to the common folk. The Greatest of Adventures is upon us with the 8th Cinematic Contest. Join in on a fun ride.
    Dismiss Notice
  6. The 18th Icon Contest is ON! Choose any ingame unit and give him/her Hero abilities. Good luck to all.
    Dismiss Notice
  7. Contestants are to create a scene set in the Stone Age. Come and see what you can come up with. We wish you the best of luck!
    Dismiss Notice
  8. Colour outside the lines! Techtree Contest #13 is a go. The contest is optionally paired.
    Dismiss Notice
  9. Greetings cerebrates, our Swarm needs new spawners that will have numerous children. Join the HIVE's 31st Modeling Contest - Spawners and Spawned! The contest is optionally paired.
    Dismiss Notice
  10. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Comradeship v1.03 [Deuterium]

Submitted by Deuterium
This bundle is marked as approved. It works and satisfies the submission rules.
Spell Description
The Hero creates a bond between him and an ally unit. This bond grows
stronger as the two units get closer to each other, thus amplifying their
damage. If the units get very distant from one another, the bond breaks.

Spell Attributes
- GUI
- MUI
- Documentation on how to adjust and import provided
- As user friendly as possible

Changelog
v1.00
- Released

v1.01
- Removed the minor lag.
- Changed special effects.
- Decreased the refresh rate of the periodic timer from 0.20s to 0.03s.
- Fixed a problem concerning leaks removal (credits to Rmx for pointing that out).
- Fixed a minor mistake concerning MUI Indexing (credits to Rmx for pointing that out).
- Slightly adjusted tooltips.
- Slightly adjusted documentation.
- Added a preload trigger.

v1.02
- Removed all leaks (credits to Dark_Dragon for pointing the leaks out).
- Fixed a bug concerning MUI (credits to Rmx for fixing that).
- Changed special effects (credits to -BerZeKeR- for advising the special effect models).

v1.03
- Increased efficiency.
- Adjusted a little Custom Script mistake.

Triggers
Comradeship Preload
  • Comradeship Preload
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Custom script: call DestroyGroup(udg_CO_Debug)
      • Custom script: set udg_CO_Debug = null
      • Game - Preload Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
      • Game - Preload Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
      • Game - Preload Abilities\Spells\Undead\AbsorbMana\AbsorbManaBirthMissile.mdl
      • Set CO_CenterLoc[0] = (Center of (Playable map area))
      • -------- SFXDummy1_CO --------
      • Unit - Create 1 SFXDummy1_CO for Player 1 (Red) at CO_CenterLoc[0] facing Default building facing degrees
      • Unit - Remove (Last created unit) from the game
      • -------- SFXDummy2_CO --------
      • Unit - Create 1 SFXDummy2_CO for Player 1 (Red) at CO_CenterLoc[0] facing Default building facing degrees
      • Unit - Remove (Last created unit) from the game
      • -------- SFXDummy3_CO --------
      • Unit - Create 1 SFXDummy3_CO for Player 1 (Red) at CO_CenterLoc[0] facing Default building facing degrees
      • Unit - Remove (Last created unit) from the game
      • Special Effect - Create a special effect at CO_CenterLoc[0] using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at CO_CenterLoc[0] using Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at CO_CenterLoc[0] using Abilities\Spells\Undead\AbsorbMana\AbsorbManaBirthMissile.mdl
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation(udg_CO_CenterLoc[0])

Comradeship Main
  • Comradeship Main
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Comradeship
    • Actions
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Basic Index Check --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CO_Index[1] Equal to 0
        • Then - Actions
          • Trigger - Turn on Comradeship Loop <gen>
        • Else - Actions
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Indexing --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Set CO_Index[1] = (CO_Index[1] + 1)
      • Set CO_Index[2] = (CO_Index[2] + 1)
      • Set CO_Off[CO_Index[2]] = True
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- These are some variables for the user to adjust --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Defines the maximum range at which the spell has an effect --------
      • Set CO_MaxDistance[CO_Index[2]] = 1000.00
      • -------- Defines the time that the spell lasts --------
      • Set CO_SpellLastingTime[CO_Index[2]] = 30.00
      • -------- Defines the motion speed of the special effects --------
      • Set CO_SFXSpeed[CO_Index[2]] = 7.00
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Sets Triggering and Targetting unit into variables --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Set CO_TrigUnit[CO_Index[2]] = (Triggering unit)
      • Set CO_TargUnit[CO_Index[2]] = (Target unit of ability being cast)
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Creating Debug group --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Custom script: if udg_CO_Debug == null then
      • Custom script: set udg_CO_Debug = CreateGroup()
      • Custom script: endif
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Adding the damage to both units --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (CO_TargUnit[CO_Index[2]] is in CO_Debug) Equal to False
          • (CO_TrigUnit[CO_Index[2]] is in CO_Debug) Equal to False
        • Then - Actions
          • Unit Group - Add CO_TrigUnit[CO_Index[2]] to CO_Debug
          • Unit Group - Add CO_TargUnit[CO_Index[2]] to CO_Debug
          • Unit - Add Comradeship Damage to CO_TrigUnit[CO_Index[2]]
          • Unit - Add Comradeship Damage to CO_TargUnit[CO_Index[2]]
        • Else - Actions
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Adding Special Effects to the weapons of the units --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Special Effect - Create a special effect attached to the weapon of (Triggering unit) using Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
      • Set CO_SFXTrig1[CO_Index[2]] = (Last created special effect)
      • Special Effect - Create a special effect attached to the weapon of (Triggering unit) using Abilities\Spells\Undead\AbsorbMana\AbsorbManaBirthMissile.mdl
      • Set CO_SFXTrig2[CO_Index[2]] = (Last created special effect)
      • Special Effect - Create a special effect attached to the weapon of (Target unit of ability being cast) using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
      • Set CO_SFXTarg1[CO_Index[2]] = (Last created special effect)
      • Special Effect - Create a special effect attached to the weapon of (Target unit of ability being cast) using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
      • Set CO_SFXTarg2[CO_Index[2]] = (Last created special effect)
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- These variables set the positions of both, the Triggering Unit and the Target Unit --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Set CO_TrigUnitLoc[CO_Index[2]] = (Position of CO_TrigUnit[CO_Index[2]])
      • Set CO_TargUnitLoc[CO_Index[2]] = (Position of CO_TargUnit[CO_Index[2]])
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Sets the X's and Y's of the positions of both units --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Set CO_TrigUnitX[CO_Index[2]] = (X of CO_TrigUnitLoc[CO_Index[2]])
      • Set CO_TrigUnitY[CO_Index[2]] = (Y of CO_TrigUnitLoc[CO_Index[2]])
      • Set CO_TargUnitX[CO_Index[2]] = (X of CO_TargUnitLoc[CO_Index[2]])
      • Set CO_TargUnitY[CO_Index[2]] = (Y of CO_TargUnitLoc[CO_Index[2]])
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Simple "vector-midpoint" formula --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Set CO_CenterLoc[CO_Index[2]] = (Point(((CO_TrigUnitX[CO_Index[2]] + CO_TargUnitX[CO_Index[2]]) / 2.00), ((CO_TrigUnitY[CO_Index[2]] + CO_TargUnitY[CO_Index[2]]) / 2.00)))
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Creates special effect units (loop is not used in order to set each to a differet, yet indexed, variable) --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- SFXDummy1_CO --------
      • Unit - Create 1 SFXDummy1_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 150.00 degrees
      • Set CO_SFXDummy1[CO_Index[2]] = (Last created unit)
      • Unit - Create 1 SFXDummy1_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 270.00 degrees
      • Set CO_SFXDummy3[CO_Index[2]] = (Last created unit)
      • Unit - Create 1 SFXDummy1_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 30.00 degrees
      • Set CO_SFXDummy5[CO_Index[2]] = (Last created unit)
      • -------- SFXDummy2_CO --------
      • Unit - Create 1 SFXDummy2_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 210.00 degrees
      • Set CO_SFXDummy2[CO_Index[2]] = (Last created unit)
      • Unit - Create 1 SFXDummy2_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 330.00 degrees
      • Set CO_SFXDummy4[CO_Index[2]] = (Last created unit)
      • Unit - Create 1 SFXDummy2_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 90.00 degrees
      • Set CO_SFXDummy6[CO_Index[2]] = (Last created unit)
      • -------- SFXDummy3_CO --------
      • Unit - Create 1 SFXDummy3_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 210.00 degrees
      • Set CO_SFXDummy7[CO_Index[2]] = (Last created unit)
      • Unit - Create 1 SFXDummy3_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 330.00 degrees
      • Set CO_SFXDummy8[CO_Index[2]] = (Last created unit)
      • Unit - Create 1 SFXDummy3_CO for (Owner of (Triggering unit)) at CO_CenterLoc[CO_Index[2]] facing 90.00 degrees
      • Set CO_SFXDummy9[CO_Index[2]] = (Last created unit)
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • -------- Removing leaks --------
      • -------- -------------------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_CO_TrigUnitLoc[udg_CO_Index[2]])
      • Custom script: call RemoveLocation(udg_CO_TargUnitLoc[udg_CO_Index[2]])
      • Custom script: call RemoveLocation(udg_CO_CenterLoc[udg_CO_Index[2]])

Comradeship Loop
  • Comradeship Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer CO_Index[3]) from 1 to CO_Index[2], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • CO_Off[CO_Index[3]] Equal to True
            • Then - Actions
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- This variable acts like the Wait action --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Set CO_WaitCounter[CO_Index[3]] = (CO_WaitCounter[CO_Index[3]] + 0.03)
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- A counter to later determine the position of each special effect dummy --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Set CO_EffectOffsetCounter[CO_Index[3]] = (CO_EffectOffsetCounter[CO_Index[3]] + CO_SFXSpeed[CO_Index[3]])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CO_EffectOffsetCounter[CO_Index[3]] Greater than or equal to 360.00
                • Then - Actions
                  • Set CO_EffectOffsetCounter[CO_Index[3]] = 0.00
                • Else - Actions
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- These variables set the positions of both, the Triggering Unit and the Target Unit --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Set CO_TrigUnitLoc[CO_Index[3]] = (Position of CO_TrigUnit[CO_Index[3]])
              • Set CO_TargUnitLoc[CO_Index[3]] = (Position of CO_TargUnit[CO_Index[3]])
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Mathematical equation to define four sections of the circle to be used to determine the damage of the units depending on the distance --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Set CO_DmgLevelIteger[CO_Index[3]] = ((Integer(CO_MaxDistance[CO_Index[3]])) / (Integer((Distance between CO_TrigUnitLoc[CO_Index[3]] and CO_TargUnitLoc[CO_Index[3]]))))
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- If/Then function to be sure the Integer doesn't go over 4 in order not to mix up with the damage of the other levels --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CO_DmgLevelIteger[CO_Index[3]] Greater than 4
                • Then - Actions
                  • Set CO_DmgLevelIteger[CO_Index[3]] = 4
                • Else - Actions
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Sets the additional unit by setting the level of Comradeship Damage --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (CO_TrigUnit[CO_Index[3]] is in CO_Debug) Equal to False
                  • (CO_TargUnit[CO_Index[3]] is in CO_Debug) Equal to False
                • Then - Actions
                  • Unit Group - Add CO_TrigUnit[CO_Index[3]] to CO_Debug
                  • Unit Group - Add CO_TargUnit[CO_Index[3]] to CO_Debug
                  • Unit - Add Comradeship Damage to CO_TrigUnit[CO_Index[3]]
                  • Unit - Add Comradeship Damage to CO_TargUnit[CO_Index[3]]
                • Else - Actions
              • Set CO_DmgLevelDetermining[CO_Index[3]] = (CO_DmgLevelIteger[CO_Index[3]] + (((Level of Comradeship for CO_TrigUnit[CO_Index[3]]) - 1) x 4))
              • Unit - Set level of Comradeship Damage for CO_TrigUnit[CO_Index[3]] to CO_DmgLevelDetermining[CO_Index[3]]
              • Unit - Set level of Comradeship Damage for CO_TargUnit[CO_Index[3]] to CO_DmgLevelDetermining[CO_Index[3]]
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Sets the X's and Y's of the positions of both units --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Set CO_TrigUnitX[CO_Index[3]] = (X of CO_TrigUnitLoc[CO_Index[3]])
              • Set CO_TargUnitX[CO_Index[3]] = (X of CO_TargUnitLoc[CO_Index[3]])
              • Set CO_TrigUnitY[CO_Index[3]] = (Y of CO_TrigUnitLoc[CO_Index[3]])
              • Set CO_TargUnitY[CO_Index[3]] = (Y of CO_TargUnitLoc[CO_Index[3]])
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Simple "vector-midpoint" formula --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Set CO_CenterLoc[CO_Index[3]] = (Point(((CO_TrigUnitX[CO_Index[3]] + CO_TargUnitX[CO_Index[3]]) / 2.00), ((CO_TrigUnitY[CO_Index[3]] + CO_TargUnitY[CO_Index[3]]) / 2.00)))
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Setting points for circular motion into variables --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CO_WaitCounter[CO_Index[3]] Greater than or equal to 1.98
                • Then - Actions
                  • Set CO_PolProj1[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by (CO_MaxDistance[CO_Index[3]] / 2.00) towards (CO_EffectOffsetCounter[CO_Index[3]] + 60.00) degrees)
                  • Set CO_PolProj2[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by (CO_MaxDistance[CO_Index[3]] / 2.00) towards (CO_EffectOffsetCounter[CO_Index[3]] + 120.00) degrees)
                  • Set CO_PolProj3[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by (CO_MaxDistance[CO_Index[3]] / 2.00) towards (CO_EffectOffsetCounter[CO_Index[3]] + 180.00) degrees)
                  • Set CO_PolProj4[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by (CO_MaxDistance[CO_Index[3]] / 2.00) towards (CO_EffectOffsetCounter[CO_Index[3]] + 240.00) degrees)
                  • Set CO_PolProj5[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by (CO_MaxDistance[CO_Index[3]] / 2.00) towards (CO_EffectOffsetCounter[CO_Index[3]] + 300.00) degrees)
                  • Set CO_PolProj6[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by (CO_MaxDistance[CO_Index[3]] / 2.00) towards (CO_EffectOffsetCounter[CO_Index[3]] + 360.00) degrees)
                • Else - Actions
                  • Set CO_SFXAlgeo[CO_Index[3]] = (CO_WaitCounter[CO_Index[3]] / 1.98)
                  • Set CO_PolProj1[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by ((CO_MaxDistance[CO_Index[3]] / 2.00) x CO_SFXAlgeo[CO_Index[3]]) towards (CO_EffectOffsetCounter[CO_Index[3]] + 60.00) degrees)
                  • Set CO_PolProj2[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by ((CO_MaxDistance[CO_Index[3]] / 2.00) x CO_SFXAlgeo[CO_Index[3]]) towards (CO_EffectOffsetCounter[CO_Index[3]] + 120.00) degrees)
                  • Set CO_PolProj3[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by ((CO_MaxDistance[CO_Index[3]] / 2.00) x CO_SFXAlgeo[CO_Index[3]]) towards (CO_EffectOffsetCounter[CO_Index[3]] + 180.00) degrees)
                  • Set CO_PolProj4[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by ((CO_MaxDistance[CO_Index[3]] / 2.00) x CO_SFXAlgeo[CO_Index[3]]) towards (CO_EffectOffsetCounter[CO_Index[3]] + 240.00) degrees)
                  • Set CO_PolProj5[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by ((CO_MaxDistance[CO_Index[3]] / 2.00) x CO_SFXAlgeo[CO_Index[3]]) towards (CO_EffectOffsetCounter[CO_Index[3]] + 300.00) degrees)
                  • Set CO_PolProj6[CO_Index[3]] = (CO_CenterLoc[CO_Index[3]] offset by ((CO_MaxDistance[CO_Index[3]] / 2.00) x CO_SFXAlgeo[CO_Index[3]]) towards (CO_EffectOffsetCounter[CO_Index[3]] + 360.00) degrees)
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Checks the distance between both units, the value of CO_WaitCounter, and if any of the two units are dead or not --------
              • -------- and if any of the Conditions apply Special Effects are destroyed, and additional damage and leaks removed --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Distance between CO_TrigUnitLoc[CO_Index[3]] and CO_TargUnitLoc[CO_Index[3]]) Greater than CO_MaxDistance[CO_Index[3]]
                      • CO_WaitCounter[CO_Index[3]] Greater than or equal to CO_SpellLastingTime[CO_Index[3]]
                      • (CO_TrigUnit[CO_Index[3]] is dead) Equal to True
                      • (CO_TargUnit[CO_Index[3]] is dead) Equal to True
                • Then - Actions
                  • Set CO_Off[CO_Index[3]] = False
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • -------- Removing extra damage --------
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • Unit - Remove Comradeship Damage from CO_TrigUnit[CO_Index[3]]
                  • Unit - Remove Comradeship Damage from CO_TargUnit[CO_Index[3]]
                  • Unit Group - Remove CO_TrigUnit[CO_Index[3]] from CO_Debug
                  • Unit Group - Remove CO_TargUnit[CO_Index[3]] from CO_Debug
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • -------- Removing special effect dummies --------
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy1[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy2[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy3[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy4[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy5[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy6[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy7[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy8[CO_Index[3]]
                  • Unit - Add a 0.01 second Generic expiration timer to CO_SFXDummy9[CO_Index[3]]
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • -------- Removing weapons' effects --------
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • Special Effect - Destroy CO_SFXTrig1[CO_Index[3]]
                  • Special Effect - Destroy CO_SFXTrig2[CO_Index[3]]
                  • Special Effect - Destroy CO_SFXTarg1[CO_Index[3]]
                  • Special Effect - Destroy CO_SFXTarg2[CO_Index[3]]
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • -------- Reseting Counters --------
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • Set CO_WaitCounter[CO_Index[3]] = 0.00
                  • Set CO_EffectOffsetCounter[CO_Index[3]] = 0.00
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • -------- Reducing CO_Index[1] because one spell instance has ended --------
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • Set CO_Index[1] = (CO_Index[1] - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CO_Index[1] Equal to 0
                    • Then - Actions
                      • -------- -------------------------------------------------------------------------------------------------------------- --------
                      • -------- Destroying Debug group --------
                      • -------- -------------------------------------------------------------------------------------------------------------- --------
                      • Custom script: call DestroyGroup(udg_CO_Debug)
                      • Custom script: set udg_CO_Debug = null
                      • -------- -------------------------------------------------------------------------------------------------------------- --------
                      • -------- Resetting CO_Index[2] to 0 because no active spells are running then turning the trigger off --------
                      • Set CO_Index[2] = 0
                      • -------- -------------------------------------------------------------------------------------------------------------- --------
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • -------- Setting the special effect dummies in a circular motion --------
                  • -------- -------------------------------------------------------------------------------------------------------------- --------
                  • Unit - Move CO_SFXDummy1[CO_Index[3]] instantly to CO_PolProj1[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 150.00) degrees
                  • Unit - Move CO_SFXDummy2[CO_Index[3]] instantly to CO_PolProj2[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 210.00) degrees
                  • Unit - Move CO_SFXDummy3[CO_Index[3]] instantly to CO_PolProj3[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 270.00) degrees
                  • Unit - Move CO_SFXDummy4[CO_Index[3]] instantly to CO_PolProj4[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 330.00) degrees
                  • Unit - Move CO_SFXDummy5[CO_Index[3]] instantly to CO_PolProj5[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 30.00) degrees
                  • Unit - Move CO_SFXDummy6[CO_Index[3]] instantly to CO_PolProj6[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 90.00) degrees
                  • -------- - --------
                  • Unit - Move CO_SFXDummy7[CO_Index[3]] instantly to CO_PolProj2[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 210.00) degrees
                  • Unit - Move CO_SFXDummy8[CO_Index[3]] instantly to CO_PolProj4[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 330.00) degrees
                  • Unit - Move CO_SFXDummy9[CO_Index[3]] instantly to CO_PolProj6[CO_Index[3]], facing (CO_EffectOffsetCounter[CO_Index[3]] + 90.00) degrees
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • -------- Removing leaks --------
              • -------- -------------------------------------------------------------------------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_CO_TrigUnitLoc[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_TargUnitLoc[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_CenterLoc[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_PolProj1[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_PolProj2[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_PolProj3[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_PolProj4[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_PolProj5[udg_CO_Index[3]])
              • Custom script: call RemoveLocation(udg_CO_PolProj6[udg_CO_Index[3]])
            • Else - Actions

Credits to
Rmx
- pin-pointing unremoved point leaks
- pin-pointing a mistake concerning Indexing
- fixing a bug

Dark_Dragon
- pin-pointing unremoved leaks
- advising on how-to-improve

-BerZeKeR-
- picking more creative special effect models

Credit is appreciated but unnecessary.

Keywords:
Comradeship, Deuterium, Bonus, Damage, Simple, Leakless, MUI, GUI
Contents

Comradeship v1.03 (Map)

Reviews
Moderator
22:50, 6th Jun 2009 hvo-busterkomo: A fairly advanced GUI spell. The scripting and effect both look fine, approved.
  1. 22:50, 6th Jun 2009
    hvo-busterkomo: A fairly advanced GUI spell. The scripting and effect both look fine, approved.
     
  2. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    This is the first time I ever make a spell MUI using anything other than Local Variables, so there might be mistakes considering that.

    @ Rmx:
    My test-map beats you new one! (btw Credits to LebaneseSoul who worked on the terrain of our original map from which I took the test-map)

    @ Septimus:
    See, a creative, original and simple spell! :D
    And don't start bugging me with submission rules :p

    EDIT: Spell slightly lags! I'm gonna fix that whenever possible as I mentioned...
     
    Last edited: May 26, 2009
  3. Dark_Dragon

    Dark_Dragon

    Joined:
    Jul 19, 2007
    Messages:
    596
    Resources:
    8
    Tools:
    1
    Spells:
    7
    Resources:
    8
    i checked the spell and i can say i am very impressed on how fast did you learn so much!
    spell idea is really good and test map is awesome, very creative from u!

    spell by itself seems leakless, MUI, GUI and usefull.
    the only thing which is currently my problem, is that i dont have too fast computer so i have a little lag but only little xD

    anyway from when i remember u where total beginner and from now what i can see: is i cant beleve u became so good, but wait ur a new one Deuterium now xD

    all in all once again: spell seems to be MUI, leakless, bugfree, usefull, good documented and ofc idea alone is quite good + coding is impressive since you learned this all in a short amount of time.

    i can see you will not currently have some time to work on spells but thats ofc understandable, make sure to study for school first if u have exams xD

    well it would be 4/5 for now and +rep for great work!

    Greets!
    ~Dark Dragon
     
  4. hell gate

    hell gate

    Joined:
    Nov 23, 2008
    Messages:
    477
    Resources:
    10
    Models:
    1
    Spells:
    9
    Resources:
    10
    a great spell 5/5. nice effects, easy to understand...
    but plz add a variable to change the number of the picked units.
     
  5. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    Yeah i forgot to mention the slight lag :p but i mentioned the method of fixing it in the "To be fixed in future versions" :p
    thanks for the review!

    What picked units!? I don't use groups in all the triggers :p
     
  6. aaron

    aaron

    Joined:
    Oct 18, 2008
    Messages:
    512
    Resources:
    6
    Maps:
    2
    Spells:
    4
    Resources:
    6
    impressive.
     
  7. Aspard

    Aspard

    Joined:
    Jul 2, 2008
    Messages:
    595
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Wow! Very impressive! Really creative and unique! Seems that there are a bit many special effects, cause after second casting I had some lags. (But only after the second :D ) But it's really brilliant! I think, you deserved 5/5 now! ;)

    He means, if you can add a possibility to target more than one comrade to organise this commune :)
     
  8. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    Yeah the first second is very laggy because I didn't preload anything...
     
  9. Rmx

    Rmx

    Joined:
    Aug 27, 2007
    Messages:
    1,088
    Resources:
    18
    Icons:
    3
    Spells:
    15
    Resources:
    18
    Downloading WOHOOO !!!
     
  10. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    I understand now... I'll have to think about that
     
  11. Rmx

    Rmx

    Joined:
    Aug 27, 2007
    Messages:
    1,088
    Resources:
    18
    Icons:
    3
    Spells:
    15
    Resources:
    18
    Review

    REVIEW RULES

    Rating System :

    0 - 15 = Shame on U
    16 - 25 = Unacceptable
    26 - 35 = Lacking
    36 - 45 = Useful
    46 - 55 = Recommended - Highly Recommended
    56 - 60 = Directors Cut


    Recommended to read the How to improve on every review.


    Review
    Idea and Creativity - 10/10.
    Spell Description and In game Balance - 9/10.
    Triggering and Scripting - 6/10.
    Special effects *Eye Candy* - 7/10.
    User Friendly *Documentation* - 9/10.
    Efficiency - 7/10.

    Is it Multi Instanceable - [YES]
    .

    Final Rating - [48].

    Status - ***Highly Recommended***.

    How to improve
    Well you leak 3 Point every 0.20 seconds the three points are
    • [ CO_CenterLoc ext.. -- CO_trigUnitLoc -- CO_TargUnitLoc ]
    Fix them and make it more efficient like not spamming this blue special effect make it like two Axes spinning around the location and fire on them it will be much more Lovely :) ...anyway fix the Leaks and make it more efficient :) .......


    My View of the Spell
    My view is that this spell IS AWESOME AND VERY FUCKEN COOL .... Thunder STRIKE .. Thumbs UP ext. ext.. .But the problem is read the HOW TO IMPROVE :( this is what sad.


    EDIT : Forgot one thing +REP !!!!!!!!!!!!!!!!!!!!!!!!!!
     
    Last edited: May 21, 2009
  12. Septimus

    Septimus

    Joined:
    May 3, 2008
    Messages:
    4,176
    Resources:
    49
    Packs:
    1
    Maps:
    35
    Spells:
    8
    Tutorials:
    5
    Resources:
    49
    I won't bug a user if they follow the submission rules.

    But I could still bug you to code it in JASS/VJASS :p
     
  13. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    Ohh haha yeah I knew I forgot something! that's easy to fix... I'll do that later :) I tried fixing that quickly now but I'm too sleepy to place the custom scripts in the right places :p
    & although it's not excuse... i mentioned that it still needs fixing in the description

    Hehe as I said, I wont rush up into scripting Jass ;)
     
    Last edited: May 22, 2009
  14. Rmx

    Rmx

    Joined:
    Aug 27, 2007
    Messages:
    1,088
    Resources:
    18
    Icons:
    3
    Spells:
    15
    Resources:
    18
    I think u are too much sleepy GO TO BED ! looool.

    Well MUI GUI yes ... Leakless i don't think so loooooooool :p
     
    Last edited: May 21, 2009
  15. Dark_Dragon

    Dark_Dragon

    Joined:
    Jul 19, 2007
    Messages:
    596
    Resources:
    8
    Tools:
    1
    Spells:
    7
    Resources:
    8

    sry i did not really look too well in the GUI code and well i missed this xD but ur right sry! it was a quick look at GUI since when i see GUI its kind a... dono how to say but y my mistake since it leaks but i said "seems" xD

    EDIT: lals he even stored in vars but not removed xD well i did not expect that since when someone stores them he removes them as well :( now i know why i missed it :/

    anyway thanks for pointing my mistake Rmx!
     
  16. Deuterium

    Deuterium

    Joined:
    Mar 17, 2009
    Messages:
    1,301
    Resources:
    2
    Spells:
    1
    Tutorials:
    1
    Resources:
    2
    Well no the thing is that I removed the leak only once when the spell ends and forgot that in that case it'll be leaking every 0.20 seconds... :p if the purpose wasn't to remove leaks i wouldnt have stored them in variables ;)
     
  17. Dark_Dragon

    Dark_Dragon

    Joined:
    Jul 19, 2007
    Messages:
    596
    Resources:
    8
    Tools:
    1
    Spells:
    7
    Resources:
    8

    yeah i know xD its coz u stored but removed at wrong place so actually there is still this leaks... and ofc as i quickly looked i was not injecting ur algorithms in my head xD and thats why i said seems leakless :O but anyway this is piece of cake for u to fix!
     
  18. Rmx

    Rmx

    Joined:
    Aug 27, 2007
    Messages:
    1,088
    Resources:
    18
    Icons:
    3
    Spells:
    15
    Resources:
    18
    Well there is another LEAK .........

    The trigger VARIBLE ... Damage thingy ... forgot it's name ..

    Anyway it makes ( Damage_? ) ( Level of ability for CAting unit [2] WOW NOT MUI -1 ) x4

    Fix the array .... also ... change the special effects to something more lovely and less laggy ... i casted it twice and BAM LAG !

    Also i spammed it like 8 TIMES ... and then the special effect on the hand of the unit did not go when it has finished LOOL.
     
  19. Arman

    Arman

    Joined:
    Nov 16, 2008
    Messages:
    7
    Resources:
    0
    Resources:
    0
    THanks +rep