1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. We have recently started the 16th edition of the Mini Mapping Contest. The theme is mini RPG. Do check it out and have fun.
    Dismiss Notice
  5. Dismiss Notice
  6. The Highway to Hell has been laid open. Come along and participate in the 5th Special Effect Contest.
    Dismiss Notice
  7. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

The Virus Buff v1.03

Submitted by dark09cry
This bundle is marked as substandard. It may contain bugs, not perform optimally or otherwise be in violation of the submission rules.
[​IMG]

DESCRIPTION

A deadly virus that cause forced adrenaline among those infected thus quickly spreading death to those nearby. The infected can quickly infect others in just seconds time. These virus can cause such destruction for a long duration but slightly weakens as it infects others. Whenever these infected dies, they have a chance to blow up and infect within an area of its point. Beware to those of the living...


Screenshots



[​IMG]

Triggers:

(Outdated)

  • FB Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Specify The Fire Buff (also change the buff of the FB_BuffSpell to FB_FireBuff in Object Editor) --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_Buff = Sick
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Specify the Fire Ability (for buff placement - you must base it on Cripple) --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_BuffSpell = Fire
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Specify the Fire's Attack/Damage Type --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_DamageType = Magic
      • Set FB_AttackType = Spells
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Specify the Dummy Unit Casting FB_BuffSpell --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_DummyUnit = Dummy1
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- [ M A I N A B I L I T Y ] --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_MainSpell = FB_MainSpell
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- [ C O N S T A N T S ] --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Infection Radius --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_CONSTANT_InfectRadius = 155.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- MinDuration per spread in seconds --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_CONSTANT_MinDuration = 3.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- MaxDamage per spread. Expressed in base value. --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_CONSTANT_MaxDamage = 75.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Infection Delay in seconds --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_CONSTANT_InfectDelay = 0.75
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Infected Chance To Explode On Death --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_ChanceToExplode = 100.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Infect Explosion Radius --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_ExplodeInfectRadius = 200.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Infection Damage/Duration per spread. Expressed in (%) --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_CONSTANT_Damage = 10.00
      • Set FB_CONSTANT_Duration = 10.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Virus Damage & Duration (Levels) --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set CFG_LevelDamage[1] = 4.00
      • Set CFG_LevelDamage[2] = 8.00
      • Set CFG_LevelDamage[3] = 12.00
      • Set CFG_LevelDamage[4] = 16.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set CFG_LevelDuration[1] = 15.00
      • Set CFG_LevelDuration[2] = 16.00
      • Set CFG_LevelDuration[3] = 17.00
      • Set CFG_LevelDuration[4] = 18.00
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • -------- Others (DO NOT TOUCH) --------
      • -------- ------------------------------------------------------------------------------------------------------------ --------
      • Set FB_CONSTANT_Damage = (FB_CONSTANT_Damage / 100.00)
      • Set FB_CONSTANT_Duration = (FB_CONSTANT_Duration / 100.00)
      • Set TempPoint = (Center of (Playable map area))
      • Unit - Create 1 FB_DummyUnit for Neutral Hostile at TempPoint facing Default building facing degrees
      • Set FB_DummyCaster = (Last created unit)
      • Unit - Add FB_BuffSpell to FB_DummyCaster
      • Custom script: call RemoveLocation(udg_TempPoint)
      • -------- ------------------------------------------------------------------------------------------------------------ --------

  • FB Call
    • Events
    • Conditions
    • Actions
      • Set FB_Integer1 = (FB_Integer1 + 1)
      • Set FB_Caster[FB_Integer1] = CFG_Caster
      • Set FB_Counter[FB_Integer1] = 0.00
      • Set FB_CurDur[FB_Integer1] = CFG_Duration
      • Set FB_Damage[FB_Integer1] = CFG_Damage
      • Set FB_Duration[FB_Integer1] = CFG_Duration
      • Set FB_Player[FB_Integer1] = (Owner of CFG_Target)
      • Set FB_Target[FB_Integer1] = CFG_Target
      • Unit - Order FB_DummyCaster to Undead Necromancer - Cripple FB_Target[FB_Integer1]
      • Animation - Change FB_Target[FB_Integer1]'s vertex coloring to (0.00%, 50.00%, 0.00%) with 0.00% transparency
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FB_Integer1 Equal to 1
        • Then - Actions
          • Trigger - Turn on FB Loop <gen>
        • Else - Actions

  • FB Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer FB_Integer2) from 1 to FB_Integer1, 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
                  • FB_Duration[FB_Integer2] Less than or equal to 0.00
                  • (FB_Target[FB_Integer2] has buff FB_Buff) Equal to False
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (FB_Target[FB_Integer2] is dead) Equal to True
                • Then - Actions
                  • Unit - Make FB_Target[FB_Integer2] Explode on death
                  • Set TempReal = (Random real number between 0.00 and 100.00)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • TempReal Less than or equal to FB_ChanceToExplode
                    • Then - Actions
                      • Set TempPoint = (Position of FB_Target[FB_Integer2])
                      • Set TempGroup = (Units within FB_ExplodeInfectRadius of TempPoint)
                      • Unit Group - Pick every unit in TempGroup and do (Actions)
                        • Loop - Actions
                          • Set TempUnit = (Picked unit)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (TempUnit belongs to an ally of FB_Player[FB_Integer2]) Equal to True
                              • TempUnit Not equal to FB_Caster[FB_Integer2]
                              • TempUnit Not equal to FB_Target[FB_Integer2]
                              • (Unit-type of TempUnit) Not equal to FB_DummyUnit
                              • (TempUnit has buff FB_Buff) Not equal to True
                            • Then - Actions
                              • Set CFG_Caster = FB_Caster[FB_Integer2]
                              • Set CFG_Damage = (FB_Damage[FB_Integer2] + (FB_Damage[FB_Integer2] x FB_CONSTANT_Damage))
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • CFG_Damage Greater than FB_CONSTANT_MaxDamage
                                • Then - Actions
                                  • Set CFG_Damage = FB_CONSTANT_MaxDamage
                                • Else - Actions
                              • Set CFG_Duration = (FB_CurDur[FB_Integer2] - (FB_CurDur[FB_Integer2] x FB_CONSTANT_Duration))
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • CFG_Duration Less than FB_CONSTANT_MinDuration
                                • Then - Actions
                                  • Set CFG_Duration = FB_CONSTANT_MinDuration
                                • Else - Actions
                              • Set CFG_Target = TempUnit
                              • Trigger - Run FB Call <gen> (ignoring conditions)
                            • Else - Actions
                      • Custom script: call DestroyGroup(udg_TempGroup)
                      • Custom script: call RemoveLocation(udg_TempPoint)
                    • Else - Actions
                • Else - Actions
              • Unit - Make FB_Target[FB_Integer2] Die normally on death
              • Unit - Remove FB_Buff buff from FB_Target[FB_Integer2]
              • Animation - Change FB_Target[FB_Integer2]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
              • Set FB_Caster[FB_Integer2] = FB_Caster[FB_Integer1]
              • Set FB_CurDur[FB_Integer2] = FB_CurDur[FB_Integer1]
              • Set FB_Damage[FB_Integer2] = FB_Damage[FB_Integer1]
              • Set FB_Duration[FB_Integer2] = FB_Duration[FB_Integer1]
              • Set FB_Player[FB_Integer2] = FB_Player[FB_Integer1]
              • Set FB_Target[FB_Integer2] = FB_Target[FB_Integer1]
              • Set FB_Caster[FB_Integer1] = No unit
              • Set FB_Target[FB_Integer1] = No unit
              • Set FB_Integer1 = (FB_Integer1 - 1)
              • Set FB_Integer2 = (FB_Integer2 - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FB_Integer1 Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions
              • Unit - Cause FB_Caster[FB_Integer2] to damage FB_Target[FB_Integer2], dealing (FB_Damage[FB_Integer2] x 0.03) damage of attack type FB_AttackType and damage type FB_DamageType
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FB_Counter[FB_Integer2] Greater than or equal to FB_CONSTANT_InfectDelay
                • Then - Actions
                  • Set TempPoint = (Position of FB_Target[FB_Integer2])
                  • Set TempGroup = (Units within FB_CONSTANT_InfectRadius of TempPoint)
                  • Custom script: set udg_TempGroup2 = CreateGroup()
                  • Unit Group - Pick every unit in TempGroup and do (Actions)
                    • Loop - Actions
                      • Set TempUnit = (Picked unit)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (TempUnit belongs to an ally of FB_Player[FB_Integer2]) Equal to True
                          • TempUnit Not equal to FB_Caster[FB_Integer2]
                          • TempUnit Not equal to FB_Target[FB_Integer2]
                          • (Unit-type of TempUnit) Not equal to FB_DummyUnit
                          • (TempUnit has buff FB_Buff) Not equal to True
                        • Then - Actions
                          • Unit Group - Add TempUnit to TempGroup2
                        • Else - Actions
                  • Set CFG_Caster = FB_Caster[FB_Integer2]
                  • Set CFG_Damage = (FB_Damage[FB_Integer2] + (FB_Damage[FB_Integer2] x FB_CONSTANT_Damage))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CFG_Damage Greater than FB_CONSTANT_MaxDamage
                    • Then - Actions
                      • Set CFG_Damage = FB_CONSTANT_MaxDamage
                    • Else - Actions
                  • Set CFG_Duration = (FB_CurDur[FB_Integer2] - (FB_CurDur[FB_Integer2] x FB_CONSTANT_Duration))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CFG_Duration Less than FB_CONSTANT_MinDuration
                    • Then - Actions
                      • Set CFG_Duration = FB_CONSTANT_MinDuration
                    • Else - Actions
                  • Set CFG_Target = (Random unit from TempGroup2)
                  • Trigger - Run FB Call <gen> (ignoring conditions)
                  • Set FB_Counter[FB_Integer2] = 0.00
                  • Custom script: call DestroyGroup(udg_TempGroup)
                  • Custom script: call DestroyGroup(udg_TempGroup2)
                  • Custom script: call RemoveLocation(udg_TempPoint)
                • Else - Actions
                  • Set FB_Counter[FB_Integer2] = (FB_Counter[FB_Integer2] + 0.03)
              • Set FB_Duration[FB_Integer2] = (FB_Duration[FB_Integer2] - 0.03)



Usage:


- Copy the Fire Buff folder and paste it in your Trigger Editor. Make sure to check "Automatically create unknown variables while pasting trigger data" if its enabled.​

Versions:



  • 1.00 - First release
  • 1.01 - Modified dummy caster. Changed to a global caster. Updated at the triggers. As mentioned by BPower.
  • 1.02 - Renamed spell to The Virus Buff to remove any sarcastic feedback. Cleaned up everything needs cleaning I guess. Added new features. Spell is still registered manually since its a buff now.
  • 1.03 - Fixed a lag issue when multiple infected units explode at the same time. Fixed explode effects firing on a dead unit.

"Always use the latest version."

At: http://www.hiveworkshop.com/forums/...bcfe45bd991588092b20252bd&dateline=1419428870

"Don't forget! Credits for use."



Keywords:
virus, disease, plague, sick, deadly, infect, dead
Contents

Incendiary Bottle (Map)

Reviews
Moderator
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. 01:27, 17nd Feb 2015 IcemanBo: http://www.hiveworkshop.com/forums/spells-569/virus-buff-v1-02-a-260573/index2.html#post2654147 15:32, 2nd Feb 2015 IcemanBo:...
  1. Almia

    Almia

    Joined:
    Apr 24, 2012
    Messages:
    4,843
    Resources:
    35
    Spells:
    30
    Tutorials:
    4
    JASS:
    1
    Resources:
    35
    Actually the spell was named Ebola Virus FYI
     
  2. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,222
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    Is it "The Plague" or "The Virus Buff" or "Fire Buff"? I saw these three different names. :D

    • Explode effect should be configurable.
    • The exact definition of unit visuals should be configurable. (you change vertex color)
      • Custom script: set udg_TempGroup2 = CreateGroup()
      ^Why? It might already exist. (and certain that it exists after init.)
    • Why you infect only one random unit in range?
    • As said before, damage can be calculated once only.
    • The "Or - Multiple Conditions" block can be avoided.
    • No real variable is needed to check the explosion chance. You directly can use the expression in the comparisson.
      • -------- Infection Damage/Duration per spread. Expressed in (%) --------
      ^I don't think this comment is quite correct. User might get confused. (damage/duration constants in config part)
     
  3. leventopoulo

    leventopoulo

    Joined:
    Mar 17, 2009
    Messages:
    58
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Hahaha, I like the idea man! keep it up
     
  4. Lambdadelta

    Lambdadelta

    Joined:
    Jul 6, 2009
    Messages:
    721
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Virus spread by an airborne pathogen which causes explosions. Lol. Seems interesting.
     
  5. dark09cry

    dark09cry

    Joined:
    May 14, 2013
    Messages:
    40
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Ok to be clear this spell is not really intended to be a virus buff in the first place. Before I really got the idea of a virus buff this spell was just a simple fire buff that spread & spread. Then I realized something more interesting than a simple fire buff and that is why it has the Fire Buff tag in it.

    No worries it is destroyed after its been used.

    I changed it from area infection to single infection so that logical values can be more efficient because area infection per delay is inefficient and only spread let say 10 DPS from host then infect adds 10% damage is now 11 where in some cases doesn't reach the max damage.

    Well as I am using your method I didn't like the result, GUI reals only accept 2 decimal ends and when the resulting DPS with a (registered damage * 0.03) becomes somewhere below 0.00101 no damage is applied since I'm using another multiplier to register another damage on infect.

    Which in particular?

    Updated :D
     
    Last edited: Feb 17, 2015
  6. IcemanBo

    IcemanBo

    Joined:
    Sep 6, 2013
    Messages:
    6,222
    Resources:
    22
    Maps:
    3
    Spells:
    11
    Template:
    1
    Tutorials:
    4
    JASS:
    3
    Resources:
    22
    The very first in loop.:)

    But it does already exist after map initialization. GUI will automatically create a group.

    You currently have 3 temporary unit groups, which you create/destroy.
    You need only 1 temp group, and 1 static group.
    The temp one can be used for creation like "PickEveryUnits....".
    The static one can be used for evaluating your random target. You only
    have to add units to this group, and then use the "Clear group" function afterwerds.
    No need to create/destroy it each time. :)