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

Necrotic Beam Ver. Jovial Jerboa

This bundle is marked as pending. It has not been reviewed by a staff member yet.

Description

Spell Preview


deathcoil-gif.342154

screenshot_8-png.342153


necrotic-beam-gif.342155



Triggers

How to install

Wonderful people!

Changelog



Necrotic Beam Config
  • Necrotic Beam Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ========================= --------
      • -------- --------
      • -------- Ability that will be used to cast the spell --------
      • Set VariableSet EyBe_Config_Ability[0] = Necrotic Beam
      • -------- --------
      • -------- Dummy's slow spell --------
      • Set VariableSet EyBe_Config_Ability[1] = Slow [EyBe]
      • -------- --------
      • -------- Dummy used to cast the slow spell --------
      • Set VariableSet EyBe_Config_D_Type = Universal Dummy Unit [EyBe]
      • -------- --------
      • -------- order id of the spell, if the caster is not channeling with this specifc order ID the spell will fail --------
      • -------- check object editor and the spell itself to see "DATA - BASE ORDER ID" to see what this spell currently has, by default it will have "starfall" --------
      • Set VariableSet EyBe_Config_Ability_Order_ID = starfall
      • -------- --------
      • -------- Damage is calculated ( Dam * Tick) I.e. the Default 180 will deal a total of 45 damage per (default) 0.25 seconds --------
      • -------- Base damage --------
      • Set VariableSet EyBe_Config_Damage[0] = 110.00
      • -------- Damage Per Level --------
      • Set VariableSet EyBe_Config_Damage_Bonus[1] = 70.00
      • Set VariableSet EyBe_Config_Damage_Bonus[2] = 140.00
      • Set VariableSet EyBe_Config_Damage_Bonus[3] = 210.00
      • -------- --------
      • -------- Duration of the spell --------
      • Set VariableSet EyBe_Config_Duration[1] = 2.50
      • Set VariableSet EyBe_Config_Duration[2] = 2.50
      • Set VariableSet EyBe_Config_Duration[3] = 2.50
      • -------- --------
      • -------- Duration of the slow --------
      • Set VariableSet EyBe_Config_Duration_Slow[1] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[2] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[3] = 1.00
      • -------- --------
      • -------- Slow Percentage --------
      • Set VariableSet EyBe_Config_Slow[1] = 0.20
      • Set VariableSet EyBe_Config_Slow[2] = 0.20
      • Set VariableSet EyBe_Config_Slow[3] = 0.20
      • -------- --------
      • -------- Laser Butt Effect --------
      • Set VariableSet EyBe_Config_Effect_Path[0] = Abilities\Spells\Other\Parasite\ParasiteMissile.mdl
      • -------- --------
      • -------- Laser Hit Effect --------
      • Set VariableSet EyBe_Config_Effect_Path[1] = Abilities\Weapons\DemonHunterMissile\DemonHunterMissile.mdl
      • -------- --------
      • -------- Height Value --------
      • -------- Of Lightning --------
      • Set VariableSet EyBe_Config_Height[0] = 80.00
      • -------- On hit effect --------
      • Set VariableSet EyBe_Config_Height[1] = 15.00
      • -------- --------
      • -------- What Flavor of annihilation --------
      • Set VariableSet EyBe_Config_Lightning_Type = Mana Burn
      • -------- --------
      • -------- Increase this if you find the End point jitterying too much, or negate from it if you find it's not accurate enough --------
      • Set VariableSet EyBe_Config_Margin = 25.00
      • -------- --------
      • -------- How fast does periodic timer run --------
      • Set VariableSet EyBe_Config_Periodic = 0.03
      • Trigger - Add to Necrotic Beam Periodic <gen> the event (Time - Every EyBe_Config_Periodic seconds of game time)
      • -------- --------
      • -------- Range of Spell --------
      • Set VariableSet EyBe_Config_Range = 1000.00
      • -------- --------
      • -------- Width of laser --------
      • Set VariableSet EyBe_Config_Width[1] = 72.00
      • Set VariableSet EyBe_Config_Width[2] = 72.00
      • Set VariableSet EyBe_Config_Width[3] = 72.00
      • -------- --------
      • -------- how fast the caster can reposition the laser --------
      • Set VariableSet EyBe_Config_Speed[1] = 1.05
      • Set VariableSet EyBe_Config_Speed[2] = 1.05
      • Set VariableSet EyBe_Config_Speed[3] = 1.05
      • -------- --------
      • -------- This value visiually negates from the total length of the laser --------
      • -------- I.e. Default range is 1000, witth this value the visual laser will sit at 950. --------
      • Set VariableSet EyBe_Config_End_P_Offset = 65.00
      • -------- --------
      • -------- how often damage & dummy slow occurs --------
      • -------- Warning, changing this value to be --------
      • Set VariableSet EyBe_Config_Tick = 0.25
      • -------- --------
      • -------- preload dummy & ability so its smoothing upon cast. --------
      • Set VariableSet EyBe_Point[9] = (Center of (Playable map area))
      • Unit - Create 1 EyBe_Config_D_Type for Neutral Passive at EyBe_Point[9] facing Default building facing degrees
      • Unit - Add a 0.01 second Generic expiration timer to (Triggering unit)
      • Unit - Add EyBe_Config_Ability[1] to (Last created unit)
      • Custom script: call RemoveLocation(udg_EyBe_Point[9])
      • -------- preload dummy & ability so its smoothing upon cast. --------
      • -------- ========================= --------

Necrotic Beam Cast
  • Necrotic Beam Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to EyBe_Config_Ability[0]
    • Actions
      • -------- ========================= --------
      • -------- --------
      • -------- Get the lay of the land --------
      • Set VariableSet EyBe_Unit[1] = (Triggering unit)
      • Set VariableSet EyBe_Point[0] = (Position of EyBe_Unit[1])
      • Set VariableSet EyBe_Point[1] = (Target point of ability being cast)
      • Set VariableSet EyBe_Point[2] = (EyBe_Point[0] offset by (EyBe_Config_Range - EyBe_Config_End_P_Offset) towards (Angle from EyBe_Point[0] to EyBe_Point[1]) degrees.)
      • Set VariableSet EyBe_LvL = (Level of EyBe_Config_Ability[0] for EyBe_Unit[1])
      • -------- Get the lay of the land --------
      • -------- --------
      • -------- Rev up them Indexes --------
      • Set VariableSet EyBe_Index = (EyBe_Index + 1)
      • -------- --------
      • -------- Negotiate with the triggers about where the lightning will be created --------
      • Custom script: set udg_EyBe_Point_Z_Height[0] = GetLocationZ(udg_EyBe_Point[0])
      • Set VariableSet EyBe_XYZ[1] = (X of EyBe_Point[0])
      • Set VariableSet EyBe_XYZ[2] = (Y of EyBe_Point[0])
      • Set VariableSet EyBe_XYZ[3] = ((Current flying height of EyBe_Unit_Caster[EyBe_Loop]) + (EyBe_Config_Height[0] + EyBe_Point_Z_Height[0]))
      • Custom script: set udg_EyBe_Point_Z_Height[1] = GetLocationZ(udg_EyBe_Point[2])
      • Set VariableSet EyBe_XYZ2[1] = (X of EyBe_Point[2])
      • Set VariableSet EyBe_XYZ2[2] = (Y of EyBe_Point[2])
      • Set VariableSet EyBe_XYZ2[3] = (EyBe_Config_Height[0] + EyBe_Point_Z_Height[1])
      • -------- --------
      • -------- Create some lighning like some rad 90's wizard on some dad's van --------
      • Custom script: set udg_EyBe_Lightning[(udg_EyBe_Index)] = AddLightningEx(udg_EyBe_Config_Lightning_Type, true, udg_EyBe_XYZ[1], udg_EyBe_XYZ[2], udg_EyBe_XYZ[3], udg_EyBe_XYZ2[1], udg_EyBe_XYZ2[2], udg_EyBe_XYZ2[3])
      • -------- --------
      • -------- Store some values in our index for later use --------
      • Set VariableSet EyBe_Unit_Caster[EyBe_Index] = EyBe_Unit[1]
      • Set VariableSet EyBe_UnitC_Angle[EyBe_Index] = (Angle from EyBe_Point[0] to EyBe_Point[2])
      • Set VariableSet EyBe_Damage[EyBe_Index] = (EyBe_Config_Damage[0] + EyBe_Config_Damage_Bonus[EyBe_LvL])
      • Set VariableSet EyBe_Duration[EyBe_Index] = EyBe_Config_Duration[EyBe_LvL]
      • Unit - Create 1 EyBe_Config_D_Type for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees
      • Set VariableSet EyBe_Unit_Dummy[EyBe_Index] = (Last created unit)
      • Unit - Add EyBe_Config_Ability[1] to EyBe_Unit_Dummy[EyBe_Index]
      • Unit - Add a EyBe_Duration[EyBe_Index] second Generic expiration timer to EyBe_Unit_Dummy[EyBe_Index]
      • Set VariableSet EyBe_Duration_Slow[EyBe_Index] = EyBe_Config_Duration_Slow[EyBe_LvL]
      • Set VariableSet EyBe_Owner[EyBe_Index] = (Owner of EyBe_Unit[1])
      • Set VariableSet EyBe_Slow[EyBe_Index] = EyBe_Config_Slow[EyBe_LvL]
      • Set VariableSet EyBe_Tick[EyBe_Index] = 0.00
      • Set VariableSet EyBe_Width[EyBe_Index] = EyBe_Config_Width[EyBe_LvL]
      • -------- --------
      • -------- Rip the attention of our wizard to our wishes instead of truly asking how he feels --------
      • Unit - Make EyBe_Unit_Caster[EyBe_Loop] face EyBe_Point[2] over 0.00 seconds
      • -------- --------
      • -------- Create a shapely bottom for our laser, don't stare too long, it's rude --------
      • Special Effect - Create a special effect at EyBe_Point[2] using EyBe_Config_Effect_Path[0]
      • Special Effect - Set Scale of (Last created special effect) to 4.50
      • Set VariableSet EyBe_Point_Node[EyBe_Index] = (Last created special effect)
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • EyBe_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Necrotic Beam Periodic <gen>
        • Else - Actions
      • -------- --------
      • -------- Remove Locations we don't need any more --------
      • -------- This is a crucial step to ensure the map that uses this spell doesn't lag --------
      • -------- if you are curious and wish to know more about "Leaks" visit https://www.hiveworkshop.com/threads/things-that-leak.35124/ to learn more --------
      • Custom script: call RemoveLocation(udg_EyBe_Point[0])
      • Custom script: call RemoveLocation(udg_EyBe_Point[1])
      • Custom script: call RemoveLocation(udg_EyBe_Point[2])
      • -------- --------
      • -------- ========================= --------

Necrotic Beam Periodic
  • Necrotic Beam Periodic
    • Events
    • Conditions
    • Actions
      • For each (Integer EyBe_Loop) from 1 to EyBe_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Current order of EyBe_Unit_Caster[EyBe_Loop]) Not equal to (Order(EyBe_Config_Ability_Order_ID))
                  • EyBe_Duration[EyBe_Loop] Less than EyBe_Config_Periodic
                  • (EyBe_Unit_Caster[EyBe_Loop] is alive) Equal to False
            • Then - Actions
              • -------- ========================= --------
              • -------- --------
              • -------- End, The laser is over, go home --------
              • -------- Destroy stuff we ain't using --------
              • Lightning - Destroy EyBe_Lightning[EyBe_Loop]
              • Special Effect - Destroy EyBe_Point_Node[EyBe_Loop]
              • -------- --------
              • -------- De-index the variables we used --------
              • Set VariableSet EyBe_Unit_Dummy[EyBe_Loop] = EyBe_Unit_Dummy[EyBe_Index]
              • Set VariableSet EyBe_Damage[EyBe_Loop] = EyBe_Damage[EyBe_Index]
              • Set VariableSet EyBe_Duration[EyBe_Loop] = EyBe_Duration[EyBe_Index]
              • Set VariableSet EyBe_Duration_Slow[EyBe_Loop] = EyBe_Config_Duration_Slow[EyBe_Index]
              • Set VariableSet EyBe_Lightning[EyBe_Loop] = EyBe_Lightning[EyBe_Index]
              • Set VariableSet EyBe_Owner[EyBe_Loop] = EyBe_Owner[EyBe_Index]
              • Set VariableSet EyBe_MouseX_Prev[EyBe_Loop] = EyBe_MouseX_Prev[EyBe_Index]
              • Set VariableSet EyBe_MouseY_Prev[EyBe_Loop] = EyBe_MouseY_Prev[EyBe_Index]
              • Set VariableSet EyBe_Point_Node[EyBe_Loop] = EyBe_Point_Node[EyBe_Index]
              • Set VariableSet EyBe_Slow[EyBe_Loop] = EyBe_Slow[EyBe_Index]
              • Set VariableSet EyBe_Tick[EyBe_Loop] = EyBe_Tick[EyBe_Index]
              • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = EyBe_UnitC_Angle[EyBe_Index]
              • Set VariableSet EyBe_Unit_Caster[EyBe_Loop] = EyBe_Unit_Caster[EyBe_Index]
              • Set VariableSet EyBe_Width[EyBe_Loop] = EyBe_Width[EyBe_Index]
              • Set VariableSet EyBe_Loop = (EyBe_Loop - 1)
              • Set VariableSet EyBe_Index = (EyBe_Index - 1)
              • -------- If no more lasers are running, turn off the trigger, much like you turn off the lights when you leave the room --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EyBe_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
              • -------- --------
              • -------- ========================= --------
            • Else - Actions
              • -------- ========================= --------
              • -------- --------
              • -------- Remove some of the time left on the spell --------
              • Set VariableSet EyBe_Duration[EyBe_Loop] = (EyBe_Duration[EyBe_Loop] - EyBe_Config_Periodic)
              • -------- Remove some of the time left on the spell --------
              • -------- --------
              • -------- Get our Bearings --------
              • Set VariableSet EyBe_Point[3] = (Position of EyBe_Unit_Caster[EyBe_Loop])
              • Set VariableSet EyBe_Point[4] = (Point((Position - X of EyBe_Point_Node[EyBe_Loop].), (Position - Y of EyBe_Point_Node[EyBe_Loop].)))
              • -------- --------
              • Custom script: set udg_EyBe_MouseX = GetPlayerMouseX(GetOwningPlayer(udg_EyBe_Unit_Caster[udg_EyBe_Loop]))
              • Custom script: set udg_EyBe_MouseY = GetPlayerMouseY(GetOwningPlayer(udg_EyBe_Unit_Caster[udg_EyBe_Loop]))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EyBe_MouseX Equal to 0.00
                  • EyBe_MouseY Equal to 0.00
                • Then - Actions
                  • Set VariableSet EyBe_Point[5] = (Point(EyBe_MouseX_Prev[EyBe_Loop], EyBe_MouseY_Prev[EyBe_Loop]))
                • Else - Actions
                  • Set VariableSet EyBe_Point[5] = (Point(EyBe_MouseX, EyBe_MouseY))
                  • Set VariableSet EyBe_MouseX_Prev[EyBe_Loop] = (X of EyBe_Point[5])
                  • Set VariableSet EyBe_MouseY_Prev[EyBe_Loop] = (Y of EyBe_Point[5])
              • -------- --------
              • Set VariableSet EyBe_Point[6] = (EyBe_Point[3] offset by (EyBe_Config_Range - EyBe_Config_End_P_Offset) towards (Angle from EyBe_Point[3] to EyBe_Point[5]) degrees.)
              • -------- --------
              • Set VariableSet EyBe_Tar_Angle = (Angle from EyBe_Point[3] to EyBe_Point[6])
              • -------- Get our Bearings --------
              • -------- --------
              • -------- Magne- err Mathematics how do they work? --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between EyBe_Point[4] and EyBe_Point[6]) Greater than EyBe_Config_Margin
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Tar_Angle Greater than 180.00
                    • Then - Actions
                      • Set VariableSet EyBe_Tar_Angle = (EyBe_Tar_Angle - 360.00)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_UnitC_Angle[EyBe_Loop] Greater than 180.00
                    • Then - Actions
                      • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = (EyBe_UnitC_Angle[EyBe_Loop] - 360.00)
                    • Else - Actions
                  • Set VariableSet EyBe_Real[0] = (EyBe_Tar_Angle - EyBe_UnitC_Angle[EyBe_Loop])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Real[0] Less than -180.00
                    • Then - Actions
                      • Set VariableSet EyBe_Real[0] = (EyBe_Real[0] + 360.00)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Real[0] Greater than 180.00
                    • Then - Actions
                      • Set VariableSet EyBe_Real[0] = (EyBe_Real[0] - 360.00)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Real[0] Greater than 0.00
                    • Then - Actions
                      • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = (EyBe_UnitC_Angle[EyBe_Loop] + EyBe_Config_Speed[(Level of EyBe_Config_Ability[0] for EyBe_Unit_Caster[EyBe_Loop])])
                    • Else - Actions
                      • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = (EyBe_UnitC_Angle[EyBe_Loop] - EyBe_Config_Speed[(Level of EyBe_Config_Ability[0] for EyBe_Unit_Caster[EyBe_Loop])])
                  • Set VariableSet EyBe_Point[7] = (EyBe_Point[3] offset by (EyBe_Config_Range - EyBe_Config_End_P_Offset) towards EyBe_UnitC_Angle[EyBe_Loop] degrees.)
                • Else - Actions
                  • Set VariableSet EyBe_Point[7] = EyBe_Point[6]
              • -------- Magne- err Mathematics how do they work? --------
              • -------- --------
              • Special Effect - Set Position of EyBe_Point_Node[EyBe_Loop] to EyBe_Point[7]
              • -------- --------
              • -------- --------
              • -------- Make the caster do kissy faces towards their opponents. --------
              • Unit - Make EyBe_Unit_Caster[EyBe_Loop] face EyBe_Point[4] over 0.00 seconds
              • -------- Make the caster do kissy faces towards their opponents. --------
              • -------- --------
              • -------- Let the Lightning know our bearings --------
              • Custom script: set udg_EyBe_Point_Z_Height[2] = GetLocationZ(udg_EyBe_Point[3])
              • Set VariableSet EyBe_XYZ[4] = (X of EyBe_Point[3])
              • Set VariableSet EyBe_XYZ[5] = (Y of EyBe_Point[3])
              • Set VariableSet EyBe_XYZ[6] = ((Current flying height of EyBe_Unit_Caster[EyBe_Loop]) + (EyBe_Config_Height[0] + EyBe_Point_Z_Height[2]))
              • Custom script: set udg_EyBe_Point_Z_Height[3] = GetLocationZ(udg_EyBe_Point[7])
              • Set VariableSet EyBe_XYZ2[4] = (X of EyBe_Point[7])
              • Set VariableSet EyBe_XYZ2[5] = (Y of EyBe_Point[7])
              • Set VariableSet EyBe_XYZ2[6] = (EyBe_Config_Height[0] + EyBe_Point_Z_Height[3])
              • -------- Let the Lightning know our bearings --------
              • -------- --------
              • -------- Ensure our Laser End point is at a proper height --------
              • Special Effect - Set Position - Z of EyBe_Point_Node[EyBe_Loop] to (EyBe_Point_Z_Height[3] + EyBe_Config_Height[0])
              • -------- Ensure our Laser End point is at a proper height --------
              • -------- --------
              • -------- Move the Laser according the above Values --------
              • -------- also pray to Shiva that you spelt each variable correctly --------
              • Custom script: call MoveLightningEx(udg_EyBe_Lightning[(udg_EyBe_Loop)], true, udg_EyBe_XYZ[4], udg_EyBe_XYZ[5], udg_EyBe_XYZ[6], udg_EyBe_XYZ2[4], udg_EyBe_XYZ2[5], udg_EyBe_XYZ2[6])
              • -------- also pray to Shiva that you spelt each variable correctly --------
              • -------- Move the Laser according the above Values --------
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EyBe_Tick[EyBe_Loop] Less than EyBe_Config_Periodic
                • Then - Actions
                  • -------- ========================= --------
                  • -------- --------
                  • -------- Tick tock be sure to set back the clock! --------
                  • Set VariableSet EyBe_Tick[EyBe_Loop] = EyBe_Config_Tick
                  • -------- Tick tock be sure to set back the clock! --------
                  • -------- --------
                  • -------- Outsource Enum to Icemanbo's wonderful system --------
                  • Set VariableSet LSE_Loc_1 = EyBe_Point[3]
                  • Set VariableSet LSE_Loc_2 = (EyBe_Point[3] offset by EyBe_Config_Range towards (Angle from EyBe_Point[3] to EyBe_Point[4]) degrees.)
                  • Set VariableSet LSE_Offset = EyBe_Width[EyBe_Loop]
                  • Trigger - Run LSE_GetUnits (ignoring conditions)
                  • -------- Outsource Enum to Icemanbo's wonderful system --------
                  • -------- --------
                  • -------- Form a pact with Gulog on the terrible to humbly request that he be a big dummy for us --------
                  • Set VariableSet EyBe_Unit[2] = EyBe_Unit_Dummy[EyBe_Loop]
                  • Unit - Move EyBe_Unit[2] instantly to EyBe_Point[4]
                  • Ability - Set Ability: (Unit: EyBe_Unit[2]'s Ability with Ability Code: EyBe_Config_Ability[1])'s Real Level Field: Movement Speed Factor ('Slo1') of Level: 0 to EyBe_Slow[EyBe_Loop]
                  • Ability - Set Ability: (Unit: EyBe_Unit[2]'s Ability with Ability Code: EyBe_Config_Ability[1])'s Real Level Field: Duration - Normal ('adur') of Level: 0 to EyBe_Duration_Slow[EyBe_Loop]
                  • Ability - Set Ability: (Unit: EyBe_Unit[2]'s Ability with Ability Code: EyBe_Config_Ability[1])'s Real Level Field: Duration - Hero ('ahdu') of Level: 0 to EyBe_Duration_Slow[EyBe_Loop]
                  • -------- Form a pact with Gulog on the terrible to humbly request that he be a big dummy for us --------
                  • -------- --------
                  • -------- Literally compact +50 lines into 5 thanks to Icemanbo --------
                  • Unit Group - Pick every unit in LSE_Group and do (Actions)
                    • Loop - Actions
                      • Set VariableSet EyBe_Unit[3] = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (EyBe_Unit[3] is A structure) Equal to False
                          • (EyBe_Unit[3] is Magic Immune) Equal to False
                          • (EyBe_Unit[3] is dead) Equal to False
                          • (EyBe_Unit[3] belongs to an ally of EyBe_Owner[EyBe_Loop].) Equal to False
                          • EyBe_Unit[3] Not equal to EyBe_Unit_Caster[EyBe_Loop]
                        • Then - Actions
                          • Set VariableSet EyBe_Point[8] = (Position of EyBe_Unit[3])
                          • Unit - Order EyBe_Unit[2] to Human Sorceress - Slow EyBe_Unit[3]
                          • Custom script: set udg_EyBe_Point_Z_Height[5] = GetLocationZ(udg_EyBe_Point[8])
                          • Special Effect - Create a special effect at EyBe_Point[8] using EyBe_Config_Effect_Path[1]
                          • Set VariableSet EyBe_Spef = (Last created special effect)
                          • Special Effect - Set Height of EyBe_Spef to: (EyBe_Config_Height[1] + (EyBe_Point_Z_Height[5] + (Current flying height of EyBe_Unit[3])))
                          • Special Effect - Set Yaw of EyBe_Spef to: (Radians((Angle from EyBe_Point[3] to EyBe_Point[8])))
                          • Special Effect - Destroy EyBe_Spef
                          • Unit - Cause EyBe_Unit_Caster[EyBe_Loop] to damage EyBe_Unit[3], dealing (EyBe_Damage[EyBe_Loop] x EyBe_Config_Tick) damage of attack type Spells and damage type Universal
                          • Custom script: call RemoveLocation(udg_EyBe_Point[8])
                        • Else - Actions
                  • -------- Literally compact +50 lines into 5 thanks to Icemanbo --------
                  • -------- --------
                  • Custom script: call RemoveLocation(udg_LSE_Loc_1)
                  • Custom script: call RemoveLocation(udg_LSE_Loc_2)
                  • -------- --------
                  • -------- ========================= --------
                • Else - Actions
                  • Set VariableSet EyBe_Tick[EyBe_Loop] = (EyBe_Tick[EyBe_Loop] - EyBe_Config_Periodic)
              • -------- Pick Unit FIlter --------
              • -------- --------
              • -------- --------
              • -------- Remove Locaitons so we don't leak them later on --------
              • Custom script: call RemoveLocation(udg_EyBe_Point[3])
              • Custom script: call RemoveLocation(udg_EyBe_Point[4])
              • Custom script: call RemoveLocation(udg_EyBe_Point[5])
              • Custom script: call RemoveLocation(udg_EyBe_Point[6])
              • Custom script: call RemoveLocation(udg_EyBe_Point[7])
              • -------- Remove Locaitons so we don't leak them later on --------
              • -------- --------
              • -------- ========================= --------





Import Necrotic Beam in your map!
  1. Allow creation of unknown variables - (Understand that this is absolutely nessesary)
    Under Preferences, make sure you have "Automatically create unknown variables while pasting trigger data" checked.

  2. Copy Paste the Necrotic Beam folder into your trigger editor

  3. Copy Paste the "Required" folder containing Mouse Utilities by Mypad & LSE (Line Segment Enumeration) by Icemanbo

  4. Copy the Necrotic Beam Ability from Object Editor, and set it to the variable "EyBe_Config_Ability[0]" located at the top of Necrotic Beam Config

  5. Copy the Slow Ability & Slowed Buff from Object Editor, and set it to the variable "EyBe_Config_Ability[1]" located at the top of Necrotic Beam Config to the Slow Ability

  6. Copy the Universal Dummy Unit from Object Editor, and set it to the variable "EyBe_Config_D_Type" located at the top of Necrotic Beam Config



Without these folks this wouldn't be possible.

C.B.King - The one who requested this type of spell, and that I thought was already being helped but due to a social faux pas on my part, I essentially killed his thread, so out of pure social anxiety and curiosity I managed to make this spell

Pyrogasm - Helped me fine tune everything & a fine teacher of the arcane arts of triggers.
Additional Mention: Dragged me kicking and screaming into the wonderful world of JASS & Lua.

AutisticTenacity - Spoon-fed me the Enum Beam filtering for the damage portion allowing for a smooth rectangle shape to the beam!

MyPad - Fine tuning and ensuring I'm not serving up a pile of slop to the spell section.
Additional Mention: allowing me to use his wonderful resource [vJASS] - [Snippet] Mouse Utility

Majistey - Bug report!

Mythic - tip on gifs

Icemanbo - for his suggestions and wonderful Line Segment Enumeration System, turned +50 lines into 5 for me.

Xorkatoss - Bug report!

League of Legends / Vel'Koz - direct inspiration for this spell


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

Release Ver.Jovial Jerboa 2021-09- 30:03:19-AM PST

Minor:
- changed dummy creation, rather than letting it float in abyss it simply spawns one upon cast and sets it's expiration timer to the casting duration.

Major
- Config dummy creation was not set by a variable which caused bad things to happen!(Thanks Gnuoy!)

Previous changelog
Release Ver. Impertinent Imbis 2020-02- 12:06-PM PST

Minor:
- Added MouseX/Y_Last, allowing the beam to continue to move to the mouses last quantifiable location before it slips into the void that is the UI part of the screen, ne'er to be seen again by mortal eyes.
(Thanks to Xorkatoss!)
- Fixed bug where Dummy Unit was being referred as (Last Created Unit) during periodic!
- Dummy changes owner during Periodic to ensure any damage related debuffs are credited to owner of caster. (Thanks Icemanbo & Pyrogasm!)
----------------------------------------------------------------------
Release Ver. Honest Honey-Bee 2019-12-31 8:57AM PST
Minor:
- Replaced dummy created each tick to a single neutral passive dummy created along with the config
- fixed an issue that was calculating the enumeration to be limited to the indication offset instead of the full 1000 default range.

----------------------------------------------------------------------
Release Ver. Garish Gharial - 2019-12-30 8:25PM PST
Major
- Outsourced math logic to Icemanbo's wonderful system (Link at site)
Minor, Took more of Icemanbo's advice
- Single Dummy on each tick of damage
- Indexed Owner
- Added temp variables for cleaner triggers
- Set Index of various leveled variables to start at 1 instead of 0, effectively reversing the previous version's changes.
- added immolation effect to buff slow

----------------------------------------------------------------------
Release Ver. Felonious Frigatebird - 2019-12-22 12:02PM PST

- Fixed bug (Thanks to Majistey) where I didn't set the array to 0 instead of 1 resulting in the mouse control being lost at levels higher than 2.

----------------------------------------------------------------------
Release Ver. Eerie Earwig - 2019-12-13 2:46AM PST

- Added Lightning Configuration

----------------------------------------------------------------------
Release Ver. Dervish Dragonfly - 2019-12-11 11:37PM PST

- Changed duplicate Point [7] in enum filter to [8]
- Changed Default Periodic to 0.03 > 0.05
- Changed Tick from modulo to more generic but stable version
- Changed "If duration > less or Equal to 0.00" to "if duration > Periodic"
- Removed some useless arrays from some of the config variables.

----------------------------------------------------------------------
Release Ver. Cautious Canary - 2019-12-08 - 11:03PM PST

- Added [Snippet] Mouse Utilities by Mypad, from Pyrogasm's suggestion.
- Removed Change Directory Trigger & Add Mouse Pos. Event from Config due to Mouse Utilities

Big thanks to Pyrogasm who showed me to not fear the unknown.

----------------------------------------------------------------------
Release Ver. Bodacious Butterfly - 2019-12-07 - 11:32PM PST
- Moved Mouse Event Add from cast to Map Init
Thanks Mypad!

----------------------------------------------------------------------
Release Ver. Absolute Antelope - 2019-12-06 - 3:29PM PST

- Public Release


Please let me know your thoughts, I will take any feedback on to improve Necrotic Beam.
Contents

Necrotic Beam (Map)

Level 24
Joined
Feb 9, 2009
Messages
1,787
it creates a full blown unit and moves that unit around. if i attack it, it recreates it at same hp. if i kill it then it doesn't respawn.

I copied it in the same order as the install guide. I hate to trouble you but if you want to look at the map here it is, the trigger is under folder Extra -> Imported Spells -> Necrotic Beam: https://drive.google.com/file/d/1-GmrLH2xgdzY_QrGTNeVIhZ7zR2yKw0O/view?usp=sharing
Nonsense, no trouble at all, in fact the reverse, I'm sorry for all the trouble this is causing you.
This is caused by blunder on my end.

1632996043770.png

Just change the Royal Guard tower to the variable EyBe_Config_D_Type.
 
Level 13
Joined
Jul 2, 2015
Messages
872
Is it possible to change the visual effect from the lighting to smth else? Like lasers or smth of the sort? I tried tinkering around with "Laser Hit Effect" and "Laser Butt Effect" but it didn't really change much aside from the tip of the laser.
 
Level 3
Joined
Mar 3, 2023
Messages
17
Hey sorry to bother after you created this years ago! When I downloaded the test map, it didn't provide the same lightning effects as preview on this post. It looks like the spell does as intended except the green beam does not appear, I only see a green ball at max range.
Is there something I am supposed to enable on wc3 editor in order to support this or where in the trigger would I look to correcting it? I ran both texts triggers from this post and from my map on textcompare.org and the only difference is my spell has 10 lvls and deals more damage.
  • Necrotic Beam Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ========================= --------
      • -------- --------
      • -------- Ability that will be used to cast the spell --------
      • Set VariableSet EyBe_Config_Ability[0] = Necrotic Beam
      • -------- --------
      • -------- Dummy's slow spell --------
      • Set VariableSet EyBe_Config_Ability[1] = Slow [EyBe]
      • -------- --------
      • -------- Dummy used to cast the slow spell --------
      • Set VariableSet EyBe_Config_D_Type = Universal Dummy Unit [EyBe]
      • -------- --------
      • -------- order id of the spell, if the caster is not channeling with this specifc order ID the spell will fail --------
      • -------- check object editor and the spell itself to see "DATA - BASE ORDER ID" to see what this spell currently has, by default it will have "starfall" --------
      • Set VariableSet EyBe_Config_Ability_Order_ID = starfall
      • -------- --------
      • -------- Damage is calculated ( Dam * Tick) I.e. the Default 180 will deal a total of 45 damage per (default) 0.25 seconds --------
      • -------- Base damage --------
      • Set VariableSet EyBe_Config_Damage[0] = 110.00
      • -------- Damage Per Level --------
      • Set VariableSet EyBe_Config_Damage_Bonus[1] = 50.00
      • Set VariableSet EyBe_Config_Damage_Bonus[2] = 100.00
      • Set VariableSet EyBe_Config_Damage_Bonus[3] = 150.00
      • Set VariableSet EyBe_Config_Damage_Bonus[4] = 200.00
      • Set VariableSet EyBe_Config_Damage_Bonus[5] = 250.00
      • Set VariableSet EyBe_Config_Damage_Bonus[6] = 300.00
      • Set VariableSet EyBe_Config_Damage_Bonus[7] = 350.00
      • Set VariableSet EyBe_Config_Damage_Bonus[8] = 400.00
      • Set VariableSet EyBe_Config_Damage_Bonus[9] = 450.00
      • Set VariableSet EyBe_Config_Damage_Bonus[10] = 500.00
      • -------- --------
      • -------- Duration of the spell --------
      • Set VariableSet EyBe_Config_Duration[1] = 2.50
      • Set VariableSet EyBe_Config_Duration[2] = 2.50
      • Set VariableSet EyBe_Config_Duration[3] = 2.50
      • Set VariableSet EyBe_Config_Duration[4] = 2.50
      • Set VariableSet EyBe_Config_Duration[5] = 2.50
      • Set VariableSet EyBe_Config_Duration[6] = 2.50
      • Set VariableSet EyBe_Config_Duration[7] = 2.50
      • Set VariableSet EyBe_Config_Duration[8] = 2.50
      • Set VariableSet EyBe_Config_Duration[9] = 2.50
      • Set VariableSet EyBe_Config_Duration[10] = 2.50
      • -------- --------
      • -------- Duration of the slow --------
      • Set VariableSet EyBe_Config_Duration_Slow[1] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[2] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[3] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[4] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[5] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[6] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[7] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[8] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[9] = 1.00
      • Set VariableSet EyBe_Config_Duration_Slow[10] = 1.00
      • -------- --------
      • -------- Slow Percentage --------
      • Set VariableSet EyBe_Config_Slow[1] = 0.20
      • Set VariableSet EyBe_Config_Slow[2] = 0.20
      • Set VariableSet EyBe_Config_Slow[3] = 0.20
      • Set VariableSet EyBe_Config_Slow[4] = 0.20
      • Set VariableSet EyBe_Config_Slow[5] = 0.20
      • Set VariableSet EyBe_Config_Slow[6] = 0.20
      • Set VariableSet EyBe_Config_Slow[7] = 0.20
      • Set VariableSet EyBe_Config_Slow[8] = 0.20
      • Set VariableSet EyBe_Config_Slow[9] = 0.20
      • Set VariableSet EyBe_Config_Slow[10] = 0.20
      • -------- --------
      • -------- Laser Butt Effect --------
      • Set VariableSet EyBe_Config_Effect_Path[0] = Abilities\Spells\Other\Parasite\ParasiteMissile.mdl
      • -------- --------
      • -------- Laser Hit Effect --------
      • Set VariableSet EyBe_Config_Effect_Path[1] = Abilities\Weapons\DemonHunterMissile\DemonHunterMissile.mdl
      • -------- --------
      • -------- Height Value --------
      • -------- Of Lightning --------
      • Set VariableSet EyBe_Config_Height[0] = 80.00
      • -------- On hit effect --------
      • Set VariableSet EyBe_Config_Height[1] = 15.00
      • -------- --------
      • -------- What Flavor of annihilation --------
      • Set VariableSet EyBe_Config_Lightning_Type = Mana Burn
      • -------- --------
      • -------- Increase this if you find the End point jitterying too much, or negate from it if you find it's not accurate enough --------
      • Set VariableSet EyBe_Config_Margin = 25.00
      • -------- --------
      • -------- How fast does periodic timer run --------
      • Set VariableSet EyBe_Config_Periodic = 0.03
      • Trigger - Add to Necrotic Beam Periodic <gen> the event (Time - Every EyBe_Config_Periodic seconds of game time)
      • -------- --------
      • -------- Range of Spell --------
      • Set VariableSet EyBe_Config_Range = 1000.00
      • -------- --------
      • -------- Width of laser --------
      • Set VariableSet EyBe_Config_Width[1] = 72.00
      • Set VariableSet EyBe_Config_Width[2] = 72.00
      • Set VariableSet EyBe_Config_Width[3] = 72.00
      • Set VariableSet EyBe_Config_Width[4] = 72.00
      • Set VariableSet EyBe_Config_Width[5] = 72.00
      • Set VariableSet EyBe_Config_Width[6] = 72.00
      • Set VariableSet EyBe_Config_Width[7] = 72.00
      • Set VariableSet EyBe_Config_Width[8] = 72.00
      • Set VariableSet EyBe_Config_Width[9] = 72.00
      • Set VariableSet EyBe_Config_Width[10] = 72.00
      • -------- --------
      • -------- how fast the caster can reposition the laser --------
      • Set VariableSet EyBe_Config_Speed[1] = 1.05
      • Set VariableSet EyBe_Config_Speed[2] = 1.05
      • Set VariableSet EyBe_Config_Speed[3] = 1.05
      • Set VariableSet EyBe_Config_Speed[4] = 1.05
      • Set VariableSet EyBe_Config_Speed[5] = 1.05
      • Set VariableSet EyBe_Config_Speed[6] = 1.05
      • Set VariableSet EyBe_Config_Speed[7] = 1.05
      • Set VariableSet EyBe_Config_Speed[8] = 1.05
      • Set VariableSet EyBe_Config_Speed[9] = 1.05
      • Set VariableSet EyBe_Config_Speed[10] = 1.05
      • -------- --------
      • -------- This value visiually negates from the total length of the laser --------
      • -------- I.e. Default range is 1000, witth this value the visual laser will sit at 950. --------
      • Set VariableSet EyBe_Config_End_P_Offset = 65.00
      • -------- --------
      • -------- how often damage & dummy slow occurs --------
      • -------- Warning, changing this value to be --------
      • Set VariableSet EyBe_Config_Tick = 0.25
      • -------- --------
      • -------- preload dummy & ability so its smoothing upon cast. --------
      • Set VariableSet EyBe_Point[9] = (Center of (Playable map area))
      • Unit - Create 1 EyBe_Config_D_Type for Neutral Passive at EyBe_Point[9] facing Default building facing degrees
      • Unit - Add a 0.01 second Generic expiration timer to (Triggering unit)
      • Unit - Add EyBe_Config_Ability[1] to (Last created unit)
      • Custom script: call RemoveLocation(udg_EyBe_Point[9])
      • -------- preload dummy & ability so its smoothing upon cast. --------
      • -------- ========================= --------
  • Necrotic Beam Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to EyBe_Config_Ability[0]
    • Actions
      • -------- ========================= --------
      • -------- --------
      • -------- Get the lay of the land --------
      • Set VariableSet EyBe_Unit[1] = (Triggering unit)
      • Set VariableSet EyBe_Point[0] = (Position of EyBe_Unit[1])
      • Set VariableSet EyBe_Point[1] = (Target point of ability being cast)
      • Set VariableSet EyBe_Point[2] = (EyBe_Point[0] offset by (EyBe_Config_Range - EyBe_Config_End_P_Offset) towards (Angle from EyBe_Point[0] to EyBe_Point[1]) degrees.)
      • Set VariableSet EyBe_LvL = (Level of EyBe_Config_Ability[0] for EyBe_Unit[1])
      • -------- Get the lay of the land --------
      • -------- --------
      • -------- Rev up them Indexes --------
      • Set VariableSet EyBe_Index = (EyBe_Index + 1)
      • -------- --------
      • -------- Negotiate with the triggers about where the lightning will be created --------
      • Custom script: set udg_EyBe_Point_Z_Height[0] = GetLocationZ(udg_EyBe_Point[0])
      • Set VariableSet EyBe_XYZ[1] = (X of EyBe_Point[0])
      • Set VariableSet EyBe_XYZ[2] = (Y of EyBe_Point[0])
      • Set VariableSet EyBe_XYZ[3] = ((Current flying height of EyBe_Unit_Caster[EyBe_Loop]) + (EyBe_Config_Height[0] + EyBe_Point_Z_Height[0]))
      • Custom script: set udg_EyBe_Point_Z_Height[1] = GetLocationZ(udg_EyBe_Point[2])
      • Set VariableSet EyBe_XYZ2[1] = (X of EyBe_Point[2])
      • Set VariableSet EyBe_XYZ2[2] = (Y of EyBe_Point[2])
      • Set VariableSet EyBe_XYZ2[3] = (EyBe_Config_Height[0] + EyBe_Point_Z_Height[1])
      • -------- --------
      • -------- Create some lighning like some rad 90's wizard on some dad's van --------
      • Custom script: set udg_EyBe_Lightning[(udg_EyBe_Index)] = AddLightningEx(udg_EyBe_Config_Lightning_Type, true, udg_EyBe_XYZ[1], udg_EyBe_XYZ[2], udg_EyBe_XYZ[3], udg_EyBe_XYZ2[1], udg_EyBe_XYZ2[2], udg_EyBe_XYZ2[3])
      • -------- --------
      • -------- Store some values in our index for later use --------
      • Set VariableSet EyBe_Unit_Caster[EyBe_Index] = EyBe_Unit[1]
      • Set VariableSet EyBe_UnitC_Angle[EyBe_Index] = (Angle from EyBe_Point[0] to EyBe_Point[2])
      • Set VariableSet EyBe_Damage[EyBe_Index] = (EyBe_Config_Damage[0] + EyBe_Config_Damage_Bonus[EyBe_LvL])
      • Set VariableSet EyBe_Duration[EyBe_Index] = EyBe_Config_Duration[EyBe_LvL]
      • Unit - Create 1 EyBe_Config_D_Type for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees
      • Set VariableSet EyBe_Unit_Dummy[EyBe_Index] = (Last created unit)
      • Unit - Add EyBe_Config_Ability[1] to EyBe_Unit_Dummy[EyBe_Index]
      • Unit - Add a EyBe_Duration[EyBe_Index] second Generic expiration timer to EyBe_Unit_Dummy[EyBe_Index]
      • Set VariableSet EyBe_Duration_Slow[EyBe_Index] = EyBe_Config_Duration_Slow[EyBe_LvL]
      • Set VariableSet EyBe_Owner[EyBe_Index] = (Owner of EyBe_Unit[1])
      • Set VariableSet EyBe_Slow[EyBe_Index] = EyBe_Config_Slow[EyBe_LvL]
      • Set VariableSet EyBe_Tick[EyBe_Index] = 0.00
      • Set VariableSet EyBe_Width[EyBe_Index] = EyBe_Config_Width[EyBe_LvL]
      • -------- --------
      • -------- Rip the attention of our wizard to our wishes instead of truly asking how he feels --------
      • Unit - Make EyBe_Unit_Caster[EyBe_Loop] face EyBe_Point[2] over 0.00 seconds
      • -------- --------
      • -------- Create a shapely bottom for our laser, don't stare too long, it's rude --------
      • Special Effect - Create a special effect at EyBe_Point[2] using EyBe_Config_Effect_Path[0]
      • Special Effect - Set Scale of (Last created special effect) to 4.50
      • Set VariableSet EyBe_Point_Node[EyBe_Index] = (Last created special effect)
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • EyBe_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Necrotic Beam Periodic <gen>
        • Else - Actions
      • -------- --------
      • -------- Remove Locations we don't need any more --------
      • -------- This is a crucial step to ensure the map that uses this spell doesn't lag --------
      • -------- if you are curious and wish to know more about "Leaks" visit https://www.hiveworkshop.com/threads/things-that-leak.35124/ to learn more --------
      • Custom script: call RemoveLocation(udg_EyBe_Point[0])
      • Custom script: call RemoveLocation(udg_EyBe_Point[1])
      • Custom script: call RemoveLocation(udg_EyBe_Point[2])
      • -------- --------
      • -------- ========================= --------
  • Necrotic Beam Periodic
    • Events
    • Conditions
    • Actions
      • For each (Integer EyBe_Loop) from 1 to EyBe_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Current order of EyBe_Unit_Caster[EyBe_Loop]) Not equal to (Order(EyBe_Config_Ability_Order_ID))
                  • EyBe_Duration[EyBe_Loop] Less than EyBe_Config_Periodic
                  • (EyBe_Unit_Caster[EyBe_Loop] is alive) Equal to False
            • Then - Actions
              • -------- ========================= --------
              • -------- --------
              • -------- End, The laser is over, go home --------
              • -------- Destroy stuff we ain't using --------
              • Lightning - Destroy EyBe_Lightning[EyBe_Loop]
              • Special Effect - Destroy EyBe_Point_Node[EyBe_Loop]
              • -------- --------
              • -------- De-index the variables we used --------
              • Set VariableSet EyBe_Unit_Dummy[EyBe_Loop] = EyBe_Unit_Dummy[EyBe_Index]
              • Set VariableSet EyBe_Damage[EyBe_Loop] = EyBe_Damage[EyBe_Index]
              • Set VariableSet EyBe_Duration[EyBe_Loop] = EyBe_Duration[EyBe_Index]
              • Set VariableSet EyBe_Duration_Slow[EyBe_Loop] = EyBe_Config_Duration_Slow[EyBe_Index]
              • Set VariableSet EyBe_Lightning[EyBe_Loop] = EyBe_Lightning[EyBe_Index]
              • Set VariableSet EyBe_Owner[EyBe_Loop] = EyBe_Owner[EyBe_Index]
              • Set VariableSet EyBe_MouseX_Prev[EyBe_Loop] = EyBe_MouseX_Prev[EyBe_Index]
              • Set VariableSet EyBe_MouseY_Prev[EyBe_Loop] = EyBe_MouseY_Prev[EyBe_Index]
              • Set VariableSet EyBe_Point_Node[EyBe_Loop] = EyBe_Point_Node[EyBe_Index]
              • Set VariableSet EyBe_Slow[EyBe_Loop] = EyBe_Slow[EyBe_Index]
              • Set VariableSet EyBe_Tick[EyBe_Loop] = EyBe_Tick[EyBe_Index]
              • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = EyBe_UnitC_Angle[EyBe_Index]
              • Set VariableSet EyBe_Unit_Caster[EyBe_Loop] = EyBe_Unit_Caster[EyBe_Index]
              • Set VariableSet EyBe_Width[EyBe_Loop] = EyBe_Width[EyBe_Index]
              • Set VariableSet EyBe_Loop = (EyBe_Loop - 1)
              • Set VariableSet EyBe_Index = (EyBe_Index - 1)
              • -------- If no more lasers are running, turn off the trigger, much like you turn off the lights when you leave the room --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EyBe_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
              • -------- --------
              • -------- ========================= --------
            • Else - Actions
              • -------- ========================= --------
              • -------- --------
              • -------- Remove some of the time left on the spell --------
              • Set VariableSet EyBe_Duration[EyBe_Loop] = (EyBe_Duration[EyBe_Loop] - EyBe_Config_Periodic)
              • -------- Remove some of the time left on the spell --------
              • -------- --------
              • -------- Get our Bearings --------
              • Set VariableSet EyBe_Point[3] = (Position of EyBe_Unit_Caster[EyBe_Loop])
              • Set VariableSet EyBe_Point[4] = (Point((Position - X of EyBe_Point_Node[EyBe_Loop].), (Position - Y of EyBe_Point_Node[EyBe_Loop].)))
              • -------- --------
              • Custom script: set udg_EyBe_MouseX = GetPlayerMouseX(GetOwningPlayer(udg_EyBe_Unit_Caster[udg_EyBe_Loop]))
              • Custom script: set udg_EyBe_MouseY = GetPlayerMouseY(GetOwningPlayer(udg_EyBe_Unit_Caster[udg_EyBe_Loop]))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EyBe_MouseX Equal to 0.00
                  • EyBe_MouseY Equal to 0.00
                • Then - Actions
                  • Set VariableSet EyBe_Point[5] = (Point(EyBe_MouseX_Prev[EyBe_Loop], EyBe_MouseY_Prev[EyBe_Loop]))
                • Else - Actions
                  • Set VariableSet EyBe_Point[5] = (Point(EyBe_MouseX, EyBe_MouseY))
                  • Set VariableSet EyBe_MouseX_Prev[EyBe_Loop] = (X of EyBe_Point[5])
                  • Set VariableSet EyBe_MouseY_Prev[EyBe_Loop] = (Y of EyBe_Point[5])
              • -------- --------
              • Set VariableSet EyBe_Point[6] = (EyBe_Point[3] offset by (EyBe_Config_Range - EyBe_Config_End_P_Offset) towards (Angle from EyBe_Point[3] to EyBe_Point[5]) degrees.)
              • -------- --------
              • Set VariableSet EyBe_Tar_Angle = (Angle from EyBe_Point[3] to EyBe_Point[6])
              • -------- Get our Bearings --------
              • -------- --------
              • -------- Magne- err Mathematics how do they work? --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between EyBe_Point[4] and EyBe_Point[6]) Greater than EyBe_Config_Margin
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Tar_Angle Greater than 180.00
                    • Then - Actions
                      • Set VariableSet EyBe_Tar_Angle = (EyBe_Tar_Angle - 360.00)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_UnitC_Angle[EyBe_Loop] Greater than 180.00
                    • Then - Actions
                      • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = (EyBe_UnitC_Angle[EyBe_Loop] - 360.00)
                    • Else - Actions
                  • Set VariableSet EyBe_Real[0] = (EyBe_Tar_Angle - EyBe_UnitC_Angle[EyBe_Loop])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Real[0] Less than -180.00
                    • Then - Actions
                      • Set VariableSet EyBe_Real[0] = (EyBe_Real[0] + 360.00)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Real[0] Greater than 180.00
                    • Then - Actions
                      • Set VariableSet EyBe_Real[0] = (EyBe_Real[0] - 360.00)
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EyBe_Real[0] Greater than 0.00
                    • Then - Actions
                      • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = (EyBe_UnitC_Angle[EyBe_Loop] + EyBe_Config_Speed[(Level of EyBe_Config_Ability[0] for EyBe_Unit_Caster[EyBe_Loop])])
                    • Else - Actions
                      • Set VariableSet EyBe_UnitC_Angle[EyBe_Loop] = (EyBe_UnitC_Angle[EyBe_Loop] - EyBe_Config_Speed[(Level of EyBe_Config_Ability[0] for EyBe_Unit_Caster[EyBe_Loop])])
                  • Set VariableSet EyBe_Point[7] = (EyBe_Point[3] offset by (EyBe_Config_Range - EyBe_Config_End_P_Offset) towards EyBe_UnitC_Angle[EyBe_Loop] degrees.)
                • Else - Actions
                  • Set VariableSet EyBe_Point[7] = EyBe_Point[6]
              • -------- Magne- err Mathematics how do they work? --------
              • -------- --------
              • Special Effect - Set Position of EyBe_Point_Node[EyBe_Loop] to EyBe_Point[7]
              • -------- --------
              • -------- --------
              • -------- Make the caster do kissy faces towards their opponents. --------
              • Unit - Make EyBe_Unit_Caster[EyBe_Loop] face EyBe_Point[4] over 0.00 seconds
              • -------- Make the caster do kissy faces towards their opponents. --------
              • -------- --------
              • -------- Let the Lightning know our bearings --------
              • Custom script: set udg_EyBe_Point_Z_Height[2] = GetLocationZ(udg_EyBe_Point[3])
              • Set VariableSet EyBe_XYZ[4] = (X of EyBe_Point[3])
              • Set VariableSet EyBe_XYZ[5] = (Y of EyBe_Point[3])
              • Set VariableSet EyBe_XYZ[6] = ((Current flying height of EyBe_Unit_Caster[EyBe_Loop]) + (EyBe_Config_Height[0] + EyBe_Point_Z_Height[2]))
              • Custom script: set udg_EyBe_Point_Z_Height[3] = GetLocationZ(udg_EyBe_Point[7])
              • Set VariableSet EyBe_XYZ2[4] = (X of EyBe_Point[7])
              • Set VariableSet EyBe_XYZ2[5] = (Y of EyBe_Point[7])
              • Set VariableSet EyBe_XYZ2[6] = (EyBe_Config_Height[0] + EyBe_Point_Z_Height[3])
              • -------- Let the Lightning know our bearings --------
              • -------- --------
              • -------- Ensure our Laser End point is at a proper height --------
              • Special Effect - Set Position - Z of EyBe_Point_Node[EyBe_Loop] to (EyBe_Point_Z_Height[3] + EyBe_Config_Height[0])
              • -------- Ensure our Laser End point is at a proper height --------
              • -------- --------
              • -------- Move the Laser according the above Values --------
              • -------- also pray to Shiva that you spelt each variable correctly --------
              • Custom script: call MoveLightningEx(udg_EyBe_Lightning[(udg_EyBe_Loop)], true, udg_EyBe_XYZ[4], udg_EyBe_XYZ[5], udg_EyBe_XYZ[6], udg_EyBe_XYZ2[4], udg_EyBe_XYZ2[5], udg_EyBe_XYZ2[6])
              • -------- also pray to Shiva that you spelt each variable correctly --------
              • -------- Move the Laser according the above Values --------
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • EyBe_Tick[EyBe_Loop] Less than EyBe_Config_Periodic
                • Then - Actions
                  • -------- ========================= --------
                  • -------- --------
                  • -------- Tick tock be sure to set back the clock! --------
                  • Set VariableSet EyBe_Tick[EyBe_Loop] = EyBe_Config_Tick
                  • -------- Tick tock be sure to set back the clock! --------
                  • -------- --------
                  • -------- Outsource Enum to Icemanbo's wonderful system --------
                  • Set VariableSet LSE_Loc_1 = EyBe_Point[3]
                  • Set VariableSet LSE_Loc_2 = (EyBe_Point[3] offset by EyBe_Config_Range towards (Angle from EyBe_Point[3] to EyBe_Point[4]) degrees.)
                  • Set VariableSet LSE_Offset = EyBe_Width[EyBe_Loop]
                  • Trigger - Run LSE_GetUnits (ignoring conditions)
                  • -------- Outsource Enum to Icemanbo's wonderful system --------
                  • -------- --------
                  • -------- Form a pact with Gulog on the terrible to humbly request that he be a big dummy for us --------
                  • Set VariableSet EyBe_Unit[2] = EyBe_Unit_Dummy[EyBe_Loop]
                  • Unit - Move EyBe_Unit[2] instantly to EyBe_Point[4]
                  • Ability - Set Ability: (Unit: EyBe_Unit[2]'s Ability with Ability Code: EyBe_Config_Ability[1])'s Real Level Field: Movement Speed Factor ('Slo1') of Level: 0 to EyBe_Slow[EyBe_Loop]
                  • Ability - Set Ability: (Unit: EyBe_Unit[2]'s Ability with Ability Code: EyBe_Config_Ability[1])'s Real Level Field: Duration - Normal ('adur') of Level: 0 to EyBe_Duration_Slow[EyBe_Loop]
                  • Ability - Set Ability: (Unit: EyBe_Unit[2]'s Ability with Ability Code: EyBe_Config_Ability[1])'s Real Level Field: Duration - Hero ('ahdu') of Level: 0 to EyBe_Duration_Slow[EyBe_Loop]
                  • -------- Form a pact with Gulog on the terrible to humbly request that he be a big dummy for us --------
                  • -------- --------
                  • -------- Literally compact +50 lines into 5 thanks to Icemanbo --------
                  • Unit Group - Pick every unit in LSE_Group and do (Actions)
                    • Loop - Actions
                      • Set VariableSet EyBe_Unit[3] = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (EyBe_Unit[3] is A structure) Equal to False
                          • (EyBe_Unit[3] is Magic Immune) Equal to False
                          • (EyBe_Unit[3] is dead) Equal to False
                          • (EyBe_Unit[3] belongs to an ally of EyBe_Owner[EyBe_Loop].) Equal to False
                          • EyBe_Unit[3] Not equal to EyBe_Unit_Caster[EyBe_Loop]
                        • Then - Actions
                          • Set VariableSet EyBe_Point[8] = (Position of EyBe_Unit[3])
                          • Unit - Order EyBe_Unit[2] to Human Sorceress - Slow EyBe_Unit[3]
                          • Custom script: set udg_EyBe_Point_Z_Height[5] = GetLocationZ(udg_EyBe_Point[8])
                          • Special Effect - Create a special effect at EyBe_Point[8] using EyBe_Config_Effect_Path[1]
                          • Set VariableSet EyBe_Spef = (Last created special effect)
                          • Special Effect - Set Height of EyBe_Spef to: (EyBe_Config_Height[1] + (EyBe_Point_Z_Height[5] + (Current flying height of EyBe_Unit[3])))
                          • Special Effect - Set Yaw of EyBe_Spef to: (Radians((Angle from EyBe_Point[3] to EyBe_Point[8])))
                          • Special Effect - Destroy EyBe_Spef
                          • Unit - Cause EyBe_Unit_Caster[EyBe_Loop] to damage EyBe_Unit[3], dealing (EyBe_Damage[EyBe_Loop] x EyBe_Config_Tick) damage of attack type Spells and damage type Universal
                          • Custom script: call RemoveLocation(udg_EyBe_Point[8])
                        • Else - Actions
                  • -------- Literally compact +50 lines into 5 thanks to Icemanbo --------
                  • -------- --------
                  • Custom script: call RemoveLocation(udg_LSE_Loc_1)
                  • Custom script: call RemoveLocation(udg_LSE_Loc_2)
                  • -------- --------
                  • -------- ========================= --------
                • Else - Actions
                  • Set VariableSet EyBe_Tick[EyBe_Loop] = (EyBe_Tick[EyBe_Loop] - EyBe_Config_Periodic)
              • -------- Pick Unit FIlter --------
              • -------- --------
              • -------- --------
              • -------- Remove Locaitons so we don't leak them later on --------
              • Custom script: call RemoveLocation(udg_EyBe_Point[3])
              • Custom script: call RemoveLocation(udg_EyBe_Point[4])
              • Custom script: call RemoveLocation(udg_EyBe_Point[5])
              • Custom script: call RemoveLocation(udg_EyBe_Point[6])
              • Custom script: call RemoveLocation(udg_EyBe_Point[7])
              • -------- Remove Locaitons so we don't leak them later on --------
              • -------- --------
              • -------- ========================= --------
 
Last edited:
Level 3
Joined
Mar 3, 2023
Messages
17
This is my current map, I'm working on to gain experience on map making. I didn't make it a testing environment but if you need me to do that I can resend a new map with like a hero and enemy on the field or something to test it out. (I'm not sure what proper etiquette is for this type of stuff)
 

Attachments

  • Team Hero Survival 0.1.6b.w3x
    30.7 MB · Views: 1
Level 3
Joined
Mar 3, 2023
Messages
17
I'm so sorry for wasting some of your time, I think I sent you the wrong one where I made a duplicate (I triple checked on the triggers right before sending this time). Even with having that fixed line I run into the same issue where the beam is not constant. My biggest concern is that on the test map attached to the post it still doesn't work as shown either, which makes me feel like I may have something set up wrong but not sure what it could be.
 

Attachments

  • Team Hero Survival 0.1.6c.w3x
    30.7 MB · Views: 2
Level 3
Joined
Mar 3, 2023
Messages
17
I am, is it supposed to be SD?:eekani: (showed my preferences) Also have "JassHelper" and "vJass" enabled, if you can use it correctly means I definitely have something setup wrong.
Would it be related to this popup that happens whenever I open wc3 editor? (view second screenshot)
 
Last edited:
Level 3
Joined
Mar 3, 2023
Messages
17
I was using reforged graphics once i switched to classic, it worked. :cry: is there a way to make reforge support or just an unfortunate event?
 
Level 24
Joined
Feb 9, 2009
Messages
1,787
I was using reforged graphics once i switched to classic, it worked. :cry: is there a way to make reforge support or just an unfortunate event?
The spell was made before I had access to HD assets for testing.
Lightning is very different between SD & HD.

Ah, life drain instead of mana burn seems to work:
1678147036859.png


Also another reforged fuckup on deactivation drizzle is special effects via triggers:
1678147194208.png

Modify the special effect by adding the highlighted line to the effect when a unit takes damage from the beam:
1678147477460.png
 
Last edited:
Top