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

Alien spell pack 2.2

  • Like
Reactions: Zealon
Acid blood - Whenever the unit is attacked by a unit there's a % chance that the acid blood in the attacked units body will land on the attacking unit dealing ? damage and reducing the attacking units armor by ? for ? seconds, Other units with acid blood are immune to this skill

Level 1: 10 percent chance 5 damage armor reduced by 2 over 2 seconds
Level 2: 20 percent chance 10 damage armor reduced by 4 over 4 seconds
Level 3: 30 percent chance 15 damage armor reduced by 6 over 6 seconds

  • Acid blood settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Sets the base spell duration --------
      • Set AB_Duration = 0
      • -------- Sets how much seconds are added to the duration per level --------
      • Set AB_Duration_Per_Level = 2
      • -------- Sets the base spell damage --------
      • Set AB_Damage = 0
      • -------- Sets the damage added per level --------
      • Set AB_Damage_Per_Level = 5
      • -------- end of settings --------
      • Set AB_On = (Units in (Playable map area) matching (((Matching unit) has buff Acid blood ) Equal to True))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (AB_On is empty) Equal to False
        • Then - Actions
          • Hashtable - Create a hashtable
          • Set AB_Hash = (Last created hashtable)
          • Trigger - Turn on Acid blood <gen>
          • Trigger - Turn off Acid blood on <gen>
          • Custom script: call DestroyTrigger (gg_trg_Acid_blood_on)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_AB_On)
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
  • Acid blood on
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Acid blood
    • Actions
      • Hashtable - Create a hashtable
      • Set AB_Hash = (Last created hashtable)
      • Trigger - Turn on Acid blood <gen>
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
  • Acid blood
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) is A structure) Equal to False
      • ((Attacking unit) has buff Acid blood ) Equal to False
      • ((Triggering unit) has buff Acid blood ) Equal to True
      • ((Attacking unit) is in AB_Unitgroup) Equal to False
    • Actions
      • Set AB_Level = (Level of Acid blood for (Triggering unit))
      • Set AB_Percent_chance = (AB_Level x 10)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • AB_Percent_chance Greater than or equal to (Random integer number between 1 and 100)
        • Then - Actions
          • Set Shared_Integer = (AB_Damage + (AB_Damage_Per_Level x AB_Level))
          • Set Shared_Integer_2 = (AB_Duration + (AB_Duration_Per_Level x AB_Level))
          • Set Shared_Unit = (Attacking unit)
          • Set AB_Key = (Key (Attacking unit))
          • Hashtable - Save Shared_Integer as 3 of AB_Key in AB_Hash
          • Hashtable - Save Shared_Integer_2 as 0 of AB_Key in AB_Hash
          • Hashtable - Save AB_Level as 1 of AB_Key in AB_Hash
          • Hashtable - Save Handle Of(Triggering unit) as 2 of AB_Key in AB_Hash
          • Unit Group - Add Shared_Unit to AB_Unitgroup
          • Trigger - Turn on Acid blood loop <gen>
        • Else - Actions
  • Acid blood loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • -------- do not touch this trigger unless you know what your doing, all settings are set in the settings trigger --------
      • Unit Group - Pick every unit in AB_Unitgroup and do (Actions)
        • Loop - Actions
          • Set AB_Key = (Key (Picked unit))
          • Set Shared_Unit = (Picked unit)
          • Set Shared_Unit_2 = (Load 2 of AB_Key in AB_Hash)
          • Set AB_Remainingtime = (Load 0 of AB_Key from AB_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • AB_Remainingtime Greater than 0
              • (Shared_Unit is alive) Equal to True
            • Then - Actions
              • Unit - Cause Shared_Unit_2 to damage Shared_Unit, dealing (Real((Load 3 of AB_Key from AB_Hash))) damage of attack type Spells and damage type Magic
              • Hashtable - Save (AB_Remainingtime - 1) as 0 of AB_Key in AB_Hash
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Shared_Unit has buff Acid blood (dummy) ) Equal to False
                • Then - Actions
                  • Set Shared_Point = (Position of Shared_Unit)
                  • Unit - Create 1 dummy - Acid blood for Neutral Passive at Shared_Point facing Shared_Point
                  • Set Shared_Dummy = (Last created unit)
                  • Unit - Add Acid blood dummy to Shared_Dummy
                  • Unit - Set level of Acid blood dummy for Shared_Dummy to (Level of Acid blood for Shared_Unit_2)
                  • Unit - Order Shared_Dummy to Night Elf Druid Of The Talon - Faerie Fire Shared_Unit
                  • Unit - Add a 1.00 second Generic expiration timer to Shared_Dummy
                  • Custom script: call RemoveLocation( udg_Shared_Point )
                • Else - Actions
            • Else - Actions
              • Unit - Remove Acid blood (dummy) buff from Shared_Unit
              • Unit Group - Remove Shared_Unit from AB_Unitgroup
              • Hashtable - Clear all child hashtables of child AB_Key in AB_Hash
      • If ((AB_Unitgroup is empty) Equal to True) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
Lay alien egg - Lays a alien egg at the casting units location, the alien egg will remain motionless for ? seconds and after ? seconds the egg will hatch into a unit of your choice (edited in the Alien egg settings trigger). The level of infect for the hatchling will depend on the level of lay alien egg for the caster.

Level 1 - 40 seconds
Level 2 - 30 seconds
Level 3 - 20 seconds

  • Alien egg settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set LAE_Hash = (Last created hashtable)
      • -------- Sets how many seconds it takes for the egg to hatch --------
      • Set LAE_Hatch_Time = 50.00
      • -------- Sets how many seconds are deducted from the hatch time per level --------
      • Set LAE_Duration_Decreased = 10.00
      • -------- Sets how many eggs are allowed for each player at one time --------
      • Set LAE_Maximum_Eggs = 5
      • -------- Sets how many more eggs can be created per level --------
      • Set LAE_Added_Eggs = 1
      • -------- Sets which type of unit is hatched from the egg --------
      • Set LAE_Hatched_Unit = alien hatched unit
      • -------- Sets the egg unit that the hatched unit hatches from --------
      • Set LAE_Egg_Unit = Alien egg
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
  • Alien egg
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Lay alien egg
    • Actions
      • Set LAE_Number_Of_Eggs = (Units owned by (Triggering player) matching ((((Matching unit) is alive) Equal to True) and ((Unit-type of (Matching unit)) Equal to LAE_Egg_Unit)))
      • Set Shared_Unit = (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in LAE_Number_Of_Eggs) Less than (LAE_Maximum_Eggs + (LAE_Added_Eggs x (Level of Lay alien egg for Shared_Unit)))
        • Then - Actions
          • Set Shared_Real = (LAE_Hatch_Time - (LAE_Duration_Decreased x (Real((Level of Lay alien egg for Shared_Unit)))))
          • Set Shared_Point = (Position of Shared_Unit)
          • Unit - Create 1 LAE_Egg_Unit for (Triggering player) at Shared_Point facing Shared_Point
          • Set Shared_Unit = (Last created unit)
          • Unit - Add a (Shared_Real + 0.10) second Generic expiration timer to Shared_Unit
          • Set LAE_Key = (Key (Last created unit))
          • Hashtable - Save Shared_Real as 0 of LAE_Key in LAE_Hash
          • Hashtable - Save (Level of Lay alien egg for (Triggering unit)) as 1 of LAE_Key in LAE_Hash
          • Unit Group - Add Shared_Unit to LAE_Egg_group
          • Trigger - Turn on Alien egg loop <gen>
          • Custom script: call RemoveLocation( udg_Shared_Point )
        • Else - Actions
          • Unit - Order Shared_Unit to Stop
      • Custom script: call DestroyGroup( udg_LAE_Number_Of_Eggs )
  • Alien egg loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- do not touch this trigger unless you know what your doing, all settings are set in the settings trigger --------
      • Unit Group - Pick every unit in LAE_Egg_group and do (Actions)
        • Loop - Actions
          • Set LAE_Key = (Key (Picked unit))
          • Set Shared_Unit_2 = (Picked unit)
          • Set Shared_Real = (Load 0 of LAE_Key from LAE_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Shared_Unit_2 is alive) Equal to True
              • Shared_Real Greater than 0.00
            • Then - Actions
              • Hashtable - Save (Shared_Real - 0.03) as 0 of LAE_Key in LAE_Hash
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Shared_Unit_2 is alive) Equal to True
                  • Shared_Real Less than or equal to 0.00
                • Then - Actions
                  • Set Shared_Point = (Position of Shared_Unit_2)
                  • Unit - Kill Shared_Unit_2
                  • Unit - Create 1 LAE_Hatched_Unit for (Owner of Shared_Unit_2) at Shared_Point facing Shared_Point
                  • Unit - Set level of Infect for (Last created unit) to (Load 1 of LAE_Key from LAE_Hash)
                  • Custom script: call RemoveLocation( udg_Shared_Point )
                • Else - Actions
              • Unit Group - Remove Shared_Unit_2 from LAE_Egg_group
              • Hashtable - Clear all child hashtables of child LAE_Key in LAE_Hash
      • If ((LAE_Egg_group is empty) Equal to True) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
Infect - The caster gives his life to lay a egg in the body of a targeted unit, in ? seconds the egg will hatch and the hatchling will burst from the targeted units chest. The hatchling must then gain 5 kills in order for it to gain the cocoon ability and progress to its next stage of evolution. The egg can be dispelled, This spell grants sight of the targeted unit untill either the spell finishes, the egg is dispelled, or the unit dies. The level of cocoon for the bursted unit depends on the level of infect for the caster.

Infect will still work without the cocoon ability

Level 1 - 20 seconds
Level 2 - 15 seconds
Level 3 - 10 seconds

  • Infect settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set I_Hash = (Last created hashtable)
      • -------- Sets how long it takes for the unit to burst from the targets body --------
      • Set I_Duration = 25.00
      • -------- Sets how many seconds are deducted from the duration per level --------
      • Set I_Reduced_Duration = 5.00
      • -------- Sets which type of unit bursts from the targeted units body --------
      • Set I_Unit_Burst = chest burster
      • -------- Sets how many kills are required for the burst unit to gain the cocoon ability --------
      • Set I_Maximum_Kills = 5
      • -------- End of settings --------
      • Set I_Init_Growth = (Units of type I_Unit_Burst)
      • Unit Group - Pick every unit in I_Init_Growth and do (Actions)
        • Loop - Actions
          • Hashtable - Save 1 as 5 of (Key (Picked unit)) in I_Hash
          • Hashtable - Save Handle Of(Picked unit) as 6 of (Key (Picked unit)) in I_Hash
      • If (((Infect growth <gen> is on) Equal to False) and ((I_Init_Growth is empty) Equal to False)) then do (Trigger - Turn on Infect growth <gen>) else do (Do nothing)
      • Custom script: call DestroyGroup(udg_I_Init_Growth)
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
  • Infect
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Infect
    • Actions
      • Set Shared_Unit = (Target unit of ability being cast)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of Shared_Unit) Not equal to (Unit-type of (Triggering unit))
          • (Unit-type of Shared_Unit) Not equal to I_Unit_Burst
          • (Shared_Unit has buff Infect ) Equal to False
          • (Shared_Unit is in I_Group) Equal to False
        • Then - Actions
          • Set Shared_Real = (I_Duration - (I_Reduced_Duration x (Real((Level of Infect for (Triggering unit))))))
          • Set I_Key = (Key (Target unit of ability being cast))
          • Set Shared_Start_Timer = ((Integer(Shared_Real)) + 1)
          • Set Shared_Group = (All players matching (((Owner of Shared_Unit) Not equal to (Matching player)) and ((Triggering player) Not equal to (Matching player))))
          • Floating Text - Create floating text that reads (String(Shared_Start_Timer)) above Shared_Unit with Z offset 5.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
          • Set Shared_Text = (Last created floating text)
          • Floating Text - Hide Shared_Text for Shared_Group
          • Hashtable - Save Handle OfShared_Text as 3 of I_Key in I_Hash
          • Custom script: call DestroyForce(udg_Shared_Group)
          • Hashtable - Save Shared_Real as 0 of I_Key in I_Hash
          • Hashtable - Save Handle Of(Triggering unit) as 1 of I_Key in I_Hash
          • Unit Group - Add Shared_Unit to I_Group
          • Trigger - Turn on Infect loop <gen>
        • Else - Actions
          • Unit - Order (Triggering unit) to Stop
  • Infect loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- do not touch this trigger unless you know what your doing, all settings are set in the settings trigger --------
      • Unit Group - Pick every unit in I_Group and do (Actions)
        • Loop - Actions
          • Set I_Key = (Key (Picked unit))
          • Set Shared_Unit_3 = (Picked unit)
          • Set Shared_Unit_2 = (Load 1 of I_Key in I_Hash)
          • Set Shared_Real = (Load 0 of I_Key from I_Hash)
          • Set Shared_Text = (Load 3 of I_Key in I_HashIf the label is not found, this function returns NULL.)
          • Set Shared_Point = (Position of Shared_Unit_3)
          • Visibility - Destroy (Load 4 of I_Key in I_Hash)
          • Visibility - Create an initially Enabled visibility modifier for (Owner of Shared_Unit_2) emitting Visibility from Shared_Point to a radius of 500.00
          • Set Shared_Visibility = (Last created visibility modifier)
          • Hashtable - Save Handle OfShared_Visibility as 4 of I_Key in I_Hash
          • Custom script: call RemoveLocation(udg_Shared_Point)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Shared_Unit_3 has buff Infect ) Equal to True
              • Shared_Real Less than or equal to 0.00
              • (Shared_Unit_3 is alive) Equal to True
            • Then - Actions
              • Set Shared_Point = (Position of Shared_Unit_3)
              • Unit - Cause Shared_Unit_2 to damage Shared_Unit_3, dealing 1000000000.00 damage of attack type Chaos and damage type Divine
              • Unit - Create 1 I_Unit_Burst for (Owner of Shared_Unit_2) at Shared_Point facing Shared_Point
              • Set Shared_Unit = (Last created unit)
              • Set I_Key_2 = (Key (Last created unit))
              • Hashtable - Save 1 as 5 of I_Key_2 in I_Hash
              • Hashtable - Save Handle OfShared_Unit as 6 of I_Key_2 in I_Hash
              • Hashtable - Save (Level of Infect for Shared_Unit_2) as 7 of I_Key_2 in I_Hash
              • If ((Infect growth <gen> is on) Equal to False) then do (Trigger - Turn on Infect growth <gen>) else do (Do nothing)
              • Unit Group - Remove Shared_Unit_3 from I_Group
              • Visibility - Destroy Shared_Visibility
              • Floating Text - Destroy Shared_Text
              • Hashtable - Clear all child hashtables of child I_Key in I_Hash
              • Custom script: call RemoveLocation( udg_Shared_Point )
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Shared_Real Greater than 0.00
                  • (Shared_Unit_3 has buff Infect ) Equal to True
                  • (Shared_Unit_3 is alive) Equal to True
                • Then - Actions
                  • Unit - Kill Shared_Unit_2
                  • Set Shared_Change_Timer = ((Integer((Load 0 of I_Key from I_Hash))) + 1)
                  • Hashtable - Save (Shared_Real - 0.03) as 0 of I_Key in I_Hash
                  • Floating Text - Change text of Shared_Text to (String(Shared_Change_Timer)) using font size 10.00
                  • Floating Text - Change the position of Shared_Text to Shared_Unit_3 with Z offset 0.00
                • Else - Actions
                  • Visibility - Destroy Shared_Visibility
                  • Floating Text - Destroy Shared_Text
                  • Unit Group - Remove Shared_Unit_3 from I_Group
                  • Hashtable - Clear all child hashtables of child I_Key in I_Hash
      • If ((I_Group is empty) Equal to True) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
  • Infect growth
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Load 6 of (Key (Killing unit)) in I_Hash) Equal to (Killing unit)
      • (((Killing unit) belongs to an enemy of (Triggering player)) Equal to True) or ((Triggering player) Equal to Neutral Passive)
    • Actions
      • Set I_Key_2 = (Key (Killing unit))
      • Set I_Growth_Unit = (Killing unit)
      • Set I_Growth_Killcount = (Load 5 of I_Key_2 from I_Hash)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • I_Growth_Killcount Less than I_Maximum_Kills
        • Then - Actions
          • Hashtable - Save (I_Growth_Killcount + 1) as 5 of I_Key_2 in I_Hash
        • Else - Actions
          • If (I_Growth_Killcount Equal to I_Maximum_Kills) then do (Unit - Add Cocoon to I_Growth_Unit) else do (Do nothing)
          • Unit - Set level of Cocoon for I_Growth_Unit to (Load 7 of I_Key_2 from I_Hash)
          • Hashtable - Clear all child hashtables of child I_Key_2 in I_Hash
Cocoon - After the chest burster has killed 5 enemy or neutral passive units he gains the ability to cocoon himself, after 10 seconds he will have evolved into the next stage of his evolution and leave his cocoon. If the cocoon dies before the evolution is complete the evolved chest burster will have a ?% chance to survive with 1/4 of its health left

Cocoon will still function without the infect ability.

Level 1 - 10%
Level 2 - 15%
Level 3 - 20%

  • Cocoon settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set C_Hash = (Last created hashtable)
      • -------- This sets the percent chance that when the cocoon dies the unit will still evolve --------
      • Set C_Percent = 5
      • -------- This sets the percent chance gained per level --------
      • Set C_Percent_Gain = 5
      • -------- This sets how long it takes for the newly evolved unit to leave its cocoon --------
      • Set C_Duration = 10.00
      • -------- This sets what unit-type the newly evolved unit will be --------
      • Set C_Evolved_Unit = evolved chest burster
      • -------- This sets what unit-type the cocoon is --------
      • Set C_Cocoon_Unit = Cocoon
      • Custom script: call DestroyTrigger(GetTriggeringTrigger())
  • Cocoon
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Cocoon
    • Actions
      • Set Shared_Unit = (Triggering unit)
      • Set Shared_Start_Timer = (Integer(C_Duration))
      • Set Shared_Point = (Position of Shared_Unit)
      • Unit - Remove Shared_Unit from the game
      • Unit - Create 1 C_Cocoon_Unit for (Triggering player) at Shared_Point facing Shared_Point
      • Set Shared_Unit_2 = (Last created unit)
      • Unit - Add a (C_Duration + 0.10) second Generic expiration timer to Shared_Unit_2
      • Set Shared_Point = (Position of Shared_Unit_2)
      • Set C_Key = (Key (Last created unit))
      • Hashtable - Save C_Duration as 0 of C_Key in C_Hash
      • Hashtable - Save (Level of Cocoon for Shared_Unit) as 1 of C_Key in C_Hash
      • Unit Group - Add Shared_Unit_2 to C_Cocoon_Group
      • Trigger - Turn on Cocoon loop <gen>
      • Custom script: call RemoveLocation(udg_Shared_Point)
  • Cocoon loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in C_Cocoon_Group and do (Actions)
        • Loop - Actions
          • Set C_Key = (Key (Picked unit))
          • Set Shared_Unit_3 = (Picked unit)
          • Set Shared_Real = (Load 0 of C_Key from C_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Shared_Unit_3 is alive) Equal to True
              • Shared_Real Greater than 0.00
            • Then - Actions
              • Hashtable - Save (Shared_Real - 0.03) as 0 of C_Key in C_Hash
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Shared_Unit_3 is alive) Equal to True
                  • Shared_Real Less than or equal to 0.00
                • Then - Actions
                  • Set Shared_Point = (Position of Shared_Unit_3)
                  • Unit - Explode Shared_Unit_3
                  • Unit - Create 1 C_Evolved_Unit for (Owner of Shared_Unit_3) at Shared_Point facing Shared_Point
                  • Custom script: call RemoveLocation(udg_Shared_Point)
                • Else - Actions
              • Unit Group - Remove Shared_Unit_3 from C_Cocoon_Group
              • Hashtable - Clear all child hashtables of child C_Key in C_Hash
      • If ((C_Cocoon_Group is empty) Equal to True) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
  • Cocoon death
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to C_Cocoon_Unit
    • Actions
      • Set C_Death_Unit = (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (C_Percent + (C_Percent_Gain x (Load 1 of (Key (Triggering unit)) from C_Hash))) Greater than or equal to (Random integer number between 1 and 100)
        • Then - Actions
          • Set C_Death_Point = (Position of C_Death_Unit)
          • Unit - Create 1 C_Evolved_Unit for (Owner of C_Death_Unit) at C_Death_Point facing C_Death_Point
          • Unit - Set life of (Last created unit) to 25.00%
          • Custom script: call RemoveLocation(udg_C_Death_Point)
        • Else - Actions
      • Unit Group - Remove (Triggering unit) from C_Cocoon_Group
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in C_Hash

version 1.0
spell uploaded

version 1.1
removed acid blood trigger 3 and added a expiration timer for the dummy instead
removed possible unitgroup leak
all loop triggers are now initally off untill the skill is activated

version 1.2
changed the art - target for head bite
updated the acid blood tooltip
removed_HB_Life_After HB_Life_Before HB_Life_Inbetween HB_Life_Final HB_Unitgroupcasters variables and changed the headbite function trigger
changed the art - target attachment to the head for head bite

version 1.3
Added more integer and unit variables
changed owner actions from owner of triggering unit to triggering player
acid blood can no longer function on attacking structures

version 1.4
added the variable AB_Picked_Unit and edited the trigger Acid blood function
Fixed a possible bug where the Infest caster had enough time to cast again before dying
food cost for dummy units is now 0

version 1.5
Changed alien egg model file
Changed the target model of the acid blood buff

version 1.6
added a floating text timer indication above the layed alien eggs only visible to the owner of the alien egg.
removed headbite dummy
edited dummy settings
edited triggers Lay alien egg settings, Lay alien egg function, acid blood function, Infect Function, Infect settings
changed the I_Unit_Burst to a nerubian warrior for now
deleted headbite function trigger and edited headbite settings trigger

version 1.7
added a floating text timer to the infect target
changed integers for lay alien egg and infect to reals
edited the triggers lay alien egg settings, lay alien egg function, infect settings, infect function.
changed the duration of Infect and Acid blood dummy to 0
changed the loop timer for lay alien egg and infect to every 0.03 seconds

version 1.8
fixed the alien egg explosion after hatch
put the floating text actions into the function triggers fixing a possible bug where the text didnt show

version 1.9
added the spell Cocoon
changed the model file of the chest burster
edited the how to import triggers and edited the description of infect
the timer for the infected unit now shows to both the owner of the casting unit and the owner of the target
added a extra setting into the infect settings trigger
edited the infect function trigger
fixed a possible bug where the AI had enough time to use the acid blood dummy to recast the acid blood dummy spell
added more integer and text variables
moved the floating text actions to the settings triggers
removed the head bite spell

version 2.0
removed some integer unit and playergroup variables
edited the setting trigger for all spells and added a extra trigger for all spells
fixed a bug where as soon as acid blood dummy was cast the buff infect was removed
edited all trigger and trigger comments

version 2.1
Finished all the spell tooltips
acid blood will activate at startup if units have the ability now
added levels for lay alien egg, infect, and cocoon
edited and changed most init and settings triggers
added a extra trigger to the cocoon category
most spell settings are now set at map initialization
added a expiration timer to the cocoon and alien egg
removed the cocoon and alien egg floating text
the floating text for infect now goes from x-1

version 2.2
changed the setting triggers event to map initialization instead of a timer
fixed a region leak in acid blood settings
the loop triggers are now turned off at the end of the loop trigger not at the beginning.


Spells coming soon


None for now.




















Keywords:
Aliens Alien spells acid blood head bite infect lay egg alien infection eggs toxic
Contents

Alien spell pack (Map)

Reviews
19 Dec 2011 Bribe: You did move the line "if group is empty" line below the "remove unit from group" line, however what I meant was to add it in the same block so it is indented the same as "remove unit from unit group". I'm going to approve this...

Moderator

M

Moderator

19 Dec 2011
Bribe: You did move the line "if group is empty" line below the "remove unit from group" line, however what I meant was to add it in the same block so it is indented the same as "remove unit from unit group".

I'm going to approve this with a 3/5 for now (decent spellpack).
 
  • Acid blood settings
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) has buff Acid blood ) Equal to False
      • ((Triggering unit) has buff Acid blood ) Equal to True
      • ((Attacking unit) is in AB_Unitgroup) Equal to False
    • Actions
      • Set AB_Percentage = (Random integer number between 1 and 100)
      • -------- Sets the level of Acid blood for the attacked unit --------
      • Set AB_Level = (Level of Acid blood for (Triggering unit))
      • -------- Sets how many seconds the spell lasts for --------
      • Set AB_Duration = (AB_Level x 2)
      • -------- Sets the percent chance the skill has to activate --------
      • Set AB_Percent_chance = (AB_Level x 10)
      • -------- Sets how much damage the spell inflicts each second --------
      • Set AB_Damage = (AB_Level x 5)
      • -------- End of settings --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • AB_Percentage Less than or equal to AB_Percent_chance
        • Then - Actions
          • Hashtable - Save AB_Damage as 3 of (Key (Attacking unit)) in AB_Hash
          • Hashtable - Save AB_Duration as 0 of (Key (Attacking unit)) in AB_Hash
          • Hashtable - Save AB_Level as 1 of (Key (Attacking unit)) in AB_Hash
          • Hashtable - Save Handle Of(Owner of (Triggering unit)) as 2 of (Key (Attacking unit)) in AB_Hash
          • Unit Group - Add (Attacking unit) to AB_Unitgroup
          • Trigger - Turn on Acid blood function <gen>
        • Else - Actions
Since you're using (Attacking unit) and Key(Attacking unit) more than once, it would be more efficient if you store them in variables.

  • Set AttackingU = (Attacking unit)
  • Custom script: set udg_Attacking_key = GetHandleId(udg_AttackingU)
Oh and use (Triggering player) instead of (Owner of (Triggering unit))
 
Level 4
Joined
Feb 19, 2010
Messages
22
Updating.

Edit:
Since you're using (Attacking unit) and Key(Attacking unit) more than once, it would be more efficient if you store them in variables.

  • Set AttackingU = (Attacking unit)
  • Custom script: set udg_Attacking_key = GetHandleId(udg_AttackingU)

when using this custom script i get the error type mismatch in assignment
 
Last edited by a moderator:
Level 2
Joined
Nov 22, 2010
Messages
21
please get this as a constructive critique - i basically want to use these spells at some stage in project i'm working on

unfortunately, due to large number of units and great potential of number of same spells being cast in short period of time, any 'every 0.03 sec' loop is unacceptable for me.

now, to the point (all based on avoiding the loops):
1) acid blood - why not using 'faerie fire' or 'inner fire' or whatever timed spell with specified duration, instead having a loop
2) infect - kinda similar to 'parasite' ability - can't you use it to avoid loop?

other two - again, are they possible without short-timed loop?

(basically, i could do it on my own and still give you all credits in map, but you had very nice idea, and i would prefer to use then in original form)

also, expanding of your spellpack will be greatly appreciated.

keep up the good work
 
Level 4
Joined
Feb 19, 2010
Messages
22
I will no longer work on this spell pack for now, I may however come back to it some time in the future. If you want to remake it using your idea with the same function then you can use it in your map or maps without giving any credit.
 
Last edited:
Top