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

GUI Rupture V1.6

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Thanks to Valve for the Rupture Icon.
Credits go to Icefrog for the original spell.

Deals a mighty blow to the enemy causing any movement to result in bleeding and loss of life.
Level 1-150 Initial damage, 20% of distance dealt in damage. Lasts for 7 seconds.
Level 2-250 Initial damage, 40% of distance dealt in damage. Lasts for 8 seconds.
Level 3-350 Initial damage, 60% of distance dealt in damage. Lasts for 9 seconds.

Cooldown: 70/60/50


  • RUPTURECONFIG
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ABILITY BEING CAST: --------
      • Set RUPTURE_ABILITY = Rupture
      • -------- THE ABILITY'S BUFF: --------
      • Set RUPTURE_BUFF = Rupture
      • -------- INITIAL DAMAGE: --------
      • Set RUPTURE_INITIAL_DAMAGE[1] = 150.00
      • Set RUPTURE_INITIAL_DAMAGE[2] = 250.00
      • Set RUPTURE_INITIAL_DAMAGE[3] = 350.00
      • -------- VALUE TO BE MULTIPLIED TO DISTANCE TRAVELLED: --------
      • Set RUPTURE_DAMAGE_MUTIPLIER[1] = 0.20
      • Set RUPTURE_DAMAGE_MUTIPLIER[2] = 0.40
      • Set RUPTURE_DAMAGE_MUTIPLIER[3] = 0.60
      • -------- DURATION: --------
      • Set RUPTURE_INITIAL_DURATION[1] = 7.00
      • Set RUPTURE_INITIAL_DURATION[2] = 8.00
      • Set RUPTURE_INITIAL_DURATION[3] = 9.00
      • -------- THE SPECIAL EFFECT THAT APPEARS WHENEVER THE TARGET UNIT MOVES: --------
      • Set RUPTURE_SPFX = war3mapImported\BleedEffect.mdx




  • RUPTURESTART
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to RUPTURE_ABILITY
    • Actions
      • -------- IMPORTANT SYSTEM PART START --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • RUPTURE_INDEX_LISTENER Equal to 0
        • Then - Actions
          • Trigger - Turn on RUPTURELOOP <gen>
        • Else - Actions
      • -------- Check if the Recycle Container got free slots where you can grab an index --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • RUPTURE_RECYCLE_SIZE Greater than 0
        • Then - Actions
          • Set RUPTURE_RECYCLE_SIZE = (RUPTURE_RECYCLE_SIZE - 1)
          • Set RUPTURE_CURRENT_INDEX = RUPTURE_RECYCLE_CONTAINER[RUPTURE_RECYCLE_SIZE]
        • Else - Actions
          • Set RUPTURE_CURRENT_INDEX = RUPTURE_INDEX_SIZE
          • Set RUPTURE_INDEX_SIZE = (RUPTURE_INDEX_SIZE + 1)
      • -------- IMPORTANT SYSTEM PART END --------
      • Set RUPTURE_TRIGGER_UNIT[RUPTURE_CURRENT_INDEX] = (Triggering unit)
      • Set RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX] = (Target unit of ability being cast)
      • Set RUPTURE_POSITION_OF_TARGET[RUPTURE_CURRENT_INDEX] = (Position of RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX])
      • Unit - Cause RUPTURE_TRIGGER_UNIT[RUPTURE_CURRENT_INDEX] to damage RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX], dealing RUPTURE_INITIAL_DAMAGE[(Level of RUPTURE_ABILITY for (Triggering unit))] damage of attack type Spells and damage type Magic
      • Set RUPTURE_SPELL_DURATION[RUPTURE_CURRENT_INDEX] = RUPTURE_INITIAL_DURATION[(Level of RUPTURE_ABILITY for (Triggering unit))]
      • -------- IMPORTANT SYSTEM PART START --------
      • -------- Register the current index --------
      • Set RUPTURE_INDEX_CONTAINER[RUPTURE_INDEX_LISTENER] = RUPTURE_CURRENT_INDEX
      • -------- Increase the size of the Index Container --------
      • Set RUPTURE_INDEX_LISTENER = (RUPTURE_INDEX_LISTENER + 1)
      • -------- IMPORTANT SYSTEM PART END --------




  • RUPTURELOOP
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer RUPTURE_EXAMPLE_LOOP) from 0 to (RUPTURE_INDEX_LISTENER - 1), do (Actions)
        • Loop - Actions
          • -------- Set the current index --------
          • Set RUPTURE_CURRENT_INDEX = RUPTURE_INDEX_CONTAINER[RUPTURE_EXAMPLE_LOOP]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • RUPTURE_SPELL_DURATION[RUPTURE_CURRENT_INDEX] Greater than 0.00
            • Then - Actions
              • Set RUPTURE_SPELL_DURATION[RUPTURE_CURRENT_INDEX] = (RUPTURE_SPELL_DURATION[RUPTURE_CURRENT_INDEX] - 0.03)
              • -------- This checks if the target unit has moved. --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX] has buff RUPTURE_BUFF) Equal to True
                • Then - Actions
                  • Set RUPTURE_DISTANCE_TRAVELLED[RUPTURE_CURRENT_INDEX] = (Distance between (Position of RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX]) and RUPTURE_POSITION_OF_TARGET[RUPTURE_CURRENT_INDEX])
                  • -------- If the "DISTANCE TRAVELLED" variable stores a real value greater than 0, the target unit takes damage. --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • RUPTURE_DISTANCE_TRAVELLED[RUPTURE_CURRENT_INDEX] Greater than 0.00
                    • Then - Actions
                      • Set RUPTURE_DAMAGE_TO_BE_DEALT[RUPTURE_CURRENT_INDEX] = (RUPTURE_DAMAGE_MUTIPLIER[(Level of RUPTURE_ABILITY for RUPTURE_TRIGGER_UNIT[RUPTURE_CURRENT_INDEX])] x (Distance between (Position of RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX]) and RUPTURE_POSITION_OF_TARGET[RUPTURE_CURRENT_INDEX]))
                      • Unit - Cause RUPTURE_TRIGGER_UNIT[RUPTURE_CURRENT_INDEX] to damage RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX], dealing RUPTURE_DAMAGE_TO_BE_DEALT[RUPTURE_CURRENT_INDEX] damage of attack type Chaos and damage type Magic
                      • Set RUPTURE_POSITION_OF_TARGET[RUPTURE_CURRENT_INDEX] = (Position of RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX])
                      • Special Effect - Create a special effect attached to the chest of RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX] using RUPTURE_SPFX
                      • Special Effect - Destroy (Last created special effect)
                      • -------- This resets the "DISTANCE_TRAVELLED" variable. --------
                      • Set RUPTURE_DISTANCE_TRAVELLED[RUPTURE_CURRENT_INDEX] = 0.00
                    • Else - Actions
                      • -------- This resets the "DISTANCE_TRAVELLED" variable. --------
                      • Set RUPTURE_DISTANCE_TRAVELLED[RUPTURE_CURRENT_INDEX] = 0.00
                • Else - Actions
                  • Set RUPTURE_INITIAL_DURATION[RUPTURE_CURRENT_INDEX] = 0.00
            • Else - Actions
              • Set RUPTURE_DAMAGE_TO_BE_DEALT[RUPTURE_CURRENT_INDEX] = 0.00
              • Set RUPTURE_DISTANCE_TRAVELLED[RUPTURE_CURRENT_INDEX] = 0.00
              • Set RUPTURE_TRIGGER_UNIT[RUPTURE_CURRENT_INDEX] = No unit
              • Set RUPTURE_TARGET_UNIT[RUPTURE_CURRENT_INDEX] = No unit
              • Custom script: call RemoveLocation(udg_RUPTURE_POSITION_OF_TARGET[udg_RUPTURE_CURRENT_INDEX])
              • Custom script: set udg_RUPTURE_POSITION_OF_TARGET[udg_RUPTURE_CURRENT_INDEX]=null
              • -------- IMPORTANT SYSTEM PART START --------
              • -------- Decrease the normal index container size --------
              • Set RUPTURE_INDEX_LISTENER = (RUPTURE_INDEX_LISTENER - 1)
              • -------- Exchange the data from the last index to the current index --------
              • Set RUPTURE_INDEX_CONTAINER[RUPTURE_EXAMPLE_LOOP] = RUPTURE_INDEX_CONTAINER[RUPTURE_INDEX_LISTENER]
              • -------- Add an index to the Recycle Container --------
              • Set RUPTURE_RECYCLE_CONTAINER[RUPTURE_RECYCLE_SIZE] = RUPTURE_CURRENT_INDEX
              • -------- Recycle Container Index Size gets increased --------
              • Set RUPTURE_RECYCLE_SIZE = (RUPTURE_RECYCLE_SIZE + 1)
              • -------- Reset Loop --------
              • Set RUPTURE_EXAMPLE_LOOP = (RUPTURE_EXAMPLE_LOOP - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • RUPTURE_INDEX_LISTENER Equal to 0
                • Then - Actions
                  • Trigger - Turn off RUPTURELOOP <gen>
                  • Skip remaining actions
                • Else - Actions



BleedEffect Model made by me.
Previous Indexing system replaced with hanky's.

Keywords:
rupture,blood,slash,doom,strike,critical,bleed,doom
Contents

GUI Rupture (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Rupture V1.6 | Reviewed by Maker | 1st November 2013 Concept[/COLOR]] The spell can be used tactically as it makes the target take more damage if it moves It is directly from...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.


Rupture V1.6 | Reviewed by Maker | 1st November 2013

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

[COLOR="gray"

Concept[/COLOR]]
126248-albums6177-picture66521.png
  • The spell can be used tactically as it makes the target take more
    damage if it moves
126248-albums6177-picture66523.png
  • It is directly from DotA as far as I know,
    copying the spells from there is not so original
Triggers[/COLOR]]
126248-albums6177-picture66521.png
  • The spell is MUI and has a configuration trigger
126248-albums6177-picture66522.png
  • You have a leak when checking the travelled distance
  • Use the ability level at the time of casting when dealing damage
  • You need to remove the old position of target before updating it
126248-albums6177-picture66523.png
  • Add importing instructions
Objects[/COLOR]]
126248-albums6177-picture66521.png
  • No critical issues
126248-albums6177-picture66523.png
  • The spell is given "spell, throw" animation, the caster does not have
    that animation
  • You could remove the extra empty lines from the learn tooltip text
  • Remove the dummy units if they are not used
Effects[/COLOR]]
126248-albums6177-picture66521.png
  • A buff is applied
  • There is a special effect to indicate that damage is dealt
    however you could consider creating a bit less effects
126248-albums6177-picture66522.png
  • The spell makes no sound
Rating[/COLOR]]
CONCEPTTRIGGERSOBJECTSEFFECTSRATINGSTATUS
126248-albums6177-picture75358.jpg
126248-albums6177-picture75358.jpg
126248-albums6177-picture75358.jpg
126248-albums6177-picture75358.jpg
126248-albums6177-picture75358.jpg
NEEDS FIX

[COLOR="gray"

[/TD]
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
post triggers in description.
I think this is normal GUI not UMSWE.

Don't just use ITEs to make different lvls simply use a math equation.
This is MUI but it will loop through all unused indexes. Look at my tutorial things a guier should know the chapter how to index. It will show you how to properly index a spell.
This leaks locations very bad. Anything with position of / center of / player start location / offset will leak. Look at the tutorial things that leak on triggers and scripts page.
Never use 0.01 for a loop timer use 0.03
You need a config trigger. Please read spell submission rules before posting spells.
Don't use waits. not sure why you have a reset trigger...
 
Level 22
Joined
Aug 27, 2013
Messages
3,973
  • Set RupturePositionofTarget[OverallInt] = (Position of (Target unit of ability being cast))
should be
  • Set RupturePositionofTarget[OverallInt] = (Position of RuptureTargetUnit[OverallInt])
so it's like this
  • Set OverallInt = (OverallInt + 1)
  • Set RuptureTriggerUnit[OverallInt] = (Triggering unit)
  • Set RuptureTargetUnit[OverallInt] = (Target unit of ability being cast)
  • Set RupturePositionofTarget[OverallInt] = (Position of RuptureTargetUnit[OverallInt])
also store the level of ability
and you should null a variable when it is no longer used
why this?
  • Unit - Cause RuptureTriggerUnit[TempInt] to damage RuptureTargetUnit[TempInt], dealing (RuptureDamage[TempInt] x (Distance between (Position of RuptureTargetUnit[TempInt]) and RupturePositionofTarget[TempInt])) damage
it should be
  • Unit - Cause RuptureTriggerUnit[TempInt] to damage RuptureTargetUnit[TempInt], dealing (RuptureDamage[TempInt] x (Distance between RupturePositionofTarget[TempInt] and RupturePositionofTarget[TempInt])) damage
so it's like this
  • Set RupturePositionofTarget[TempInt] = (Position of RuptureTargetUnit[TempInt])
  • Unit - Cause RuptureTriggerUnit[TempInt] to damage RuptureTargetUnit[TempInt], dealing (RuptureDamage[TempInt] x (Distance between RupturePositionofTarget[TempInt] and RupturePositionofTarget[TempInt])) damage
may i ask? is the rupture buff will stay forever?
and why the periodic timer is not turned off when you finish on using it?
 
Level 7
Joined
Aug 29, 2013
Messages
30
If I do this:
  • Unit - Cause RuptureTriggerUnit[TempInt] to damage RuptureTargetUnit[TempInt], dealing (RuptureDamage[TempInt] x (Distance between RupturePositionofTarget[TempInt] and RupturePositionofTarget[TempInt])) damage
Then the damage would only be .20/.40/.60. The damage will be too small. As though the target unit doesn't even take damage.

Thanks for pointing this out:
  • Set RupturePositionofTarget[OverallInt] = (Position of (Target unit of ability being cast))
No, the buff doesn't last forever. But once the unit loses the buff, the trigger no longer affects the unit. But the damage will stack if you cast the ability twice on the same unit (As long as it has the buff.).
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
Fix the leaks.

  • Untitled Trigger 001
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • (Level of Rupture for RuptureTriggerUnit[OverallInt]) Equal to 1
      • Then - Actions
        • Unit - Cause RuptureTriggerUnit[OverallInt] to damage RuptureTargetUnit[OverallInt], dealing 150.00 damage...
        • Set RuptureDamage[OverallInt] = 0.20
        • Set RuptureDuration[OverallInt] = 7.00
      • Else - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Level of Rupture for RuptureTriggerUnit[OverallInt]) Equal to 2
          • Then - Actions
            • Unit - Cause RuptureTriggerUnit[OverallInt] to damage RuptureTargetUnit[OverallInt], dealing 250.00 damage...
            • Set RuptureDamage[OverallInt] = 0.40
            • Set RuptureDuration[OverallInt] = 8.00
          • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • (Level of Rupture for RuptureTriggerUnit[OverallInt]) Equal to 3
              • Then - Actions
                • Unit - Cause RuptureTriggerUnit[OverallInt] to damage RuptureTargetUnit[OverallInt], dealing 350.00 damage...
                • Set RuptureDamage[OverallInt] = 0.60
                • Set RuptureDuration[OverallInt] = 9.00
              • Else - Actions
->
  • Unit - unit to damage unit, dealing (50.00 + (100.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))) damage...
  • Set RuptureDamage[OverallInt] = 0.20 x ability level
  • Set RuptureDuration[OverallInt] = 6 + ability level
 

Roland

R

Roland

I Downloaded the spell and Tested it to my Map a While ago, (I was in school) Then, I was surprised that the Functions of the Spell looks great and outstanding. Well, 10 Over 10.
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
I Downloaded the spell and Tested it to my Map a While ago, (I was in school) Then, I was surprised that the Functions of the Spell looks great and outstanding. Well, 10 Over 10.

If you are going to give rating on triggers also please look at the triggers closer.
This still has a lot of leaks.

If just one instance is running this leaks 3 positions every .03 seconds. That is a lot of leaks when multiple units cast the spell and when the spell lasts for a long time. if spell lasts for 1 second and 100 units cast it it leaks 3,333 locations.
 
Level 16
Joined
Jul 31, 2012
Messages
2,217

Review

Suggestions

Rating

  • Set RuptureDuration[TempInt] = (RuptureDuration[TempInt] - 0.00)
there is no need for this ^"
  • Custom script: call RemoveLocation(udg_RupturePositionofTarget[udg_TempInt])
You need to move this after the Destroy effect, it doesn not clear leaks where you added it
  • Custom script: set udg_RupturePositionofTarget[udg_TempInt]=null
This ^ too
  • Special Effect - Create a special effect attached to the chest of RuptureTargetUnit[TempInt] using Objects\Spawnmodels\Human\HumanBlood\BloodElfSpellThiefBlood.mdl
attach it to the origin, not chest

Remove the Fx from the Buff, and add something like: if distance > 15 then create another Fx, like a double Fx
225233-albums6523-picture74070.jpg
 
Top