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

Hell Rising v1.3

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: BUP and Ofel
Hell Rising v1.3
Hell Rising have 3 level:
___Level 1___:Summon Fire From the hell.the fire will move to target point.Enemy unit in 100 range from fire will take damage 5 per 0.03 second.Fire will launch a firebolt to enemy unit in 0 - 500 range from fire and take damage 40 damage per fire bolt and Burn Enemy for 3 second dealt 10 damage per second
___Level 2___:Summon Fire From the hell.the fire will move to target point.Enemy unit in 200 range from fire will take damage 10 per 0.03 second.Fire will launch a firebolt to enemy unit in 0 - 500 range from fire and take damage 50 damage per fire bolt and Burn Enemy for 4 second dealt 15 damage per second
___Level 3___:Summon Fire From the hell.the fire will move to target point.Enemy unit in 300 range from fire will take damage 15 per 0.03 second.Fire will launch a firebolt to enemy unit in 0 - 500 range from fire and take damage 60 damage per fire bolt and Burn Enemy for 5 second dealt 20 damage per second

___________________________________________________________________________

  • Setting
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Set Damage Per 0.03 --------
      • Set HR_DAMAGE[1] = 5.00
      • Set HR_DAMAGE[2] = 10.00
      • Set HR_DAMAGE[3] = 15.00
      • -------- Set AoE --------
      • Set HR_AoE[1] = 100.00
      • Set HR_AoE[2] = 200.00
      • Set HR_AoE[3] = 300.00
      • -------- Set Ability ID --------
      • Set HR_A = Hell Rising
      • Set HR_DA = Firebolt(Multi)
      • -------- Set Damage Type --------
      • Set HR_AT = Chaos
      • Set HR_DT = Fire
      • -------- Set Unit Type --------
      • Set HR_UT = Fire Laucher
      • -------- Set Timer for damage,special effect,dummy --------
      • Set HR_SE_Interval = 0.20
      • Set HR_Number = 10.00
      • Set HR_Timer_Number = 0.03
      • -------- Set Unit Expiration timer --------
      • Set HR_ET = 2.00
      • -------- Set Special effect 1 --------
      • Set HR_SE = Abilities\Spells\Other\Doom\DoomDeath.mdl
      • -------- Set Special effect 2 --------
      • Set HR_SE_2 = Abilities\Spells\Other\Volcano\VolcanoDeath.mdl
      • -------- Set Special effect 3 --------
      • Set HR_SE_3 = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • -------- Set Special effect 4 --------
      • Set HR_SE_4 = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
      • -------- True : Damage enemy unit --------
      • -------- False : Damage enemy unit and Friendly unit --------
      • Set HR_Boolean_1 = True
      • -------- True : Damage Ground Unit --------
      • -------- False : Damage Ground and Flying Unit --------
      • Set HR_Boolean_2 = True
      • -------- True : Damage Alive --------
      • -------- False : Damage alive unit and dead unit --------
      • Set HR_Boolean_3 = True
  • Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to HR_A
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HR_IndexListener Equal to 0
        • Then - Actions
          • Trigger - Turn on Loop <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HR_RecycleSize Greater than 0
        • Then - Actions
          • Set HR_RecycleSize = (HR_RecycleSize - 1)
          • Set HR_CurrentIndex = HR_RecycleContainer[HR_RecycleSize]
        • Else - Actions
          • Set HR_CurrentIndex = HR_IndexSize
          • Set HR_IndexSize = (HR_IndexSize + 1)
      • -------- Store Caster to variable --------
      • Set HR_Temploc_Unit = (Position of (Triggering unit))
      • -------- Store Target point to variable --------
      • Set HR_Temploc_point = (Target point of ability being cast)
      • Set HR_Angle[HR_CurrentIndex] = (Angle from HR_Temploc_Unit to HR_Temploc_point)
      • Set HR_Distance[HR_CurrentIndex] = (Distance between HR_Temploc_Unit and HR_Temploc_point)
      • Set HR_Unit[HR_CurrentIndex] = (Triggering unit)
      • Set HR_Point[HR_CurrentIndex] = (Position of (Triggering unit))
      • Set HR_player_Unit = (Owner of HR_Unit[HR_CurrentIndex])
      • -------- Remove Leak --------
      • Custom script: call RemoveLocation(udg_HR_Temploc_Unit)
      • Custom script: call RemoveLocation(udg_HR_Temploc_point)
      • Set HR_IndexContainer[HR_IndexListener] = HR_CurrentIndex
      • Set HR_IndexListener = (HR_IndexListener + 1)
      • Set HR_Level[HR_CurrentIndex] = (Level of Hell Rising for HR_Unit[HR_CurrentIndex])
  • Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer HR_Loop) from 0 to (HR_IndexListener - 1), do (Actions)
        • Loop - Actions
          • Set HR_CurrentIndex = HR_IndexContainer[HR_Loop]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HR_Distance[HR_CurrentIndex] Greater than 0.00
            • Then - Actions
              • Set HR_Temploc_Unit = (HR_Point[HR_CurrentIndex] offset by HR_Number towards HR_Angle[HR_CurrentIndex] degrees)
              • Set HR_Temploc_point = HR_Point[HR_CurrentIndex]
              • -------- Remove Leak --------
              • Custom script: call RemoveLocation(udg_HR_Temploc_point)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HR_Timer[HR_CurrentIndex] Greater than 0.00
                • Then - Actions
                  • Set HR_Timer[HR_CurrentIndex] = (HR_Timer[HR_CurrentIndex] - HR_Timer_Number)
                • Else - Actions
                  • Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_2
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_3
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_4
                  • Special Effect - Destroy (Last created special effect)
                  • Set HR_Timer[HR_CurrentIndex] = HR_SE_Interval
              • -------- Remove Leak --------
              • Custom script: set bj_wantDestroyGroup=true
              • Unit Group - Pick every unit in (Units within HR_AoE[HR_Level[HR_CurrentIndex]] of HR_Temploc_Unit matching ((((Matching unit) belongs to an enemy of HR_player_Unit) Equal to HR_Boolean_1) and ((((Matching unit) is A ground unit) Equal to HR_Boolean_2) and (((Matching unit) is alive) Equal and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (((Picked unit) belongs to an enemy of HR_player_Unit) Equal to HR_Boolean_1) and ((((Picked unit) is A ground unit) Equal to HR_Boolean_2) and (((Picked unit) is alive) Equal to HR_Boolean_3))
                    • Then - Actions
                      • Unit - Cause HR_Unit[HR_CurrentIndex] to damage (Picked unit), dealing HR_DAMAGE[HR_Level[HR_CurrentIndex]] damage of attack type HR_AT and damage type HR_DT
                    • Else - Actions
              • Unit - Create 1 Fire Laucher for HR_player_Unit at HR_Temploc_Unit facing Default building facing degrees
              • Set HR_Dummy_Unit = (Last created unit)
              • Unit - Add a HR_ET second Generic expiration timer to HR_Dummy_Unit
              • Unit - Order HR_Dummy_Unit to Move To HR_Temploc_point
              • Unit - Set level of HR_DA for HR_Dummy_Unit to HR_Level[HR_CurrentIndex]
              • Set HR_Point[HR_CurrentIndex] = HR_Temploc_Unit
              • Set HR_Distance[HR_CurrentIndex] = (HR_Distance[HR_CurrentIndex] - HR_Number)
            • Else - Actions
              • Set HR_Temploc_Unit = HR_Point[HR_CurrentIndex]
              • -------- Remove Leak --------
              • Custom script: call RemoveLocation(udg_HR_Temploc_Unit)
              • Set HR_IndexListener = (HR_IndexListener - 1)
              • Set HR_IndexContainer[HR_Loop] = HR_IndexContainer[HR_IndexListener]
              • Set HR_RecycleContainer[HR_RecycleSize] = HR_CurrentIndex
              • Set HR_RecycleSize = (HR_RecycleSize + 1)
              • Set HR_Loop = (HR_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HR_IndexListener Equal to 0
                • Then - Actions
                  • Trigger - Turn off Loop <gen>
                • Else - Actions

___________________________________________________________________________

---------File

---------Preferences

---------Mark "Automatically create unknown variable while pasting trigger data"

---------Copy all trigger exept read me

---------Paste to your map

---------Copy dummy unit and dummy ability

---------Paste to your map

___________________________________________________________________________
Don't forget to credit if you use it in your map!

-BUP for timer in special effect and dummy remover
-Ofel The Editor for teaching me from his tutorial map
-Almia for comment protein ;)


Keywords:
Fire,Demon,Hell,Wave,Explosion,Burn
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Hell Rising v1.3 | Reviewed by Maker | 23rd Feb 2013 Needs Fix Required changes You leak HR_TempLocUnit in loop trigger Suggested changes Set cast point of dummy to 0 Make the...

Moderator

M

Moderator

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


Hell Rising v1.3 | Reviewed by Maker | 23rd Feb 2013
Needs Fix

Required changes
  • You leak HR_TempLocUnit in loop trigger
Suggested changes
  • Set cast point of dummy to 0
  • Make the caster deal all the damage
  • Remove structures built and upgrades used from the dummy,
    reduce the dummy's sight range
  • Rename your triggers, the names are so generic
[td]
[/td]




Reviewed by Maker, Hell Rising v1.2, 14th Jan 2013

Required changes:
  • Add importing instructions
  • Set the dummy's death type to Can't raise, does not decay in object editor
  • Delete Dummy trigger

Suggested changes:
  • You could add a configurable variable for the ability, use it in the spell
    s main condition
  • You're setting Position of triggering unit twice in the cast trigger. Only set it once.
  • You could filter out dead units from being damaged
  • You don't need to set special effects into variables when you destroy them right away.
    Use "Destroy last created special effect"
  • Firebolt(multi) could have a variable
04:21, 1st Jan 2013
Magtheridon96:

-
  • Set HR_Temploc_point = HR_Point[HR_CurrentIndex]
  • Custom script: call RemoveLocation(udg_HR_Temploc_point)
You can totally remove this.

- The special effects need to be configurable
- All spells submitted to Hiveworkshop need to have support for multiple levels, so the configuration trigger should be using arrays for spell data instead of regular variables. You should also add comments to the configuration trigger to explain what each variable is responsible for.
- In the Cast trigger, you can first store the (Triggering unit) into your spell variable, then use that variable twice so you don't have to repeat (Triggering unit) more than once.
- I'd recommend storing the (Triggering player) into a spell variable so you wouldn't have to keep calling (Owner of HR_unit[..]) inside your loop trigger.
- You don't need the "Skip remaining actions" at the end of the loop.
- HR_Point is being leaked. In the cast trigger, you're giving it a value. Then, in the loop trigger, you're overwriting that value. When the spell instance is done, you're removing the wrong point. To fix this, just remove this line:
Set HR_Point[HR_CurrentIndex] = HR_Temploc_Unit
from the loop trigger, and the same goes for this line:
Set HR_Temploc_Unit = HR_Point[HR_CurrentIndex]
and then change the custom script that removes HR_Temploc_Unit near the end of the trigger so that it removes HR_Point.
- The expiration timer duration (2.00) should be configurable as well.

 
Review:
1: What's this for?
  • Set HR_Temploc_Unit = HR_Pont[HR_CurrentIndex]
  • Custom script: call RemoveLocation(udg_HR_Temploc_Unit)
2:Set HR_Distance[HR_CurrentIndex] = (HR_Distance[HR_CurrentIndex] - 10.00)
Make 10 configurable
3:Unit - Cause HR_Unit[HR_CurrentIndex] to damage (Picked unit), dealing 25.00 damage of attack type Chaos and damage type Unknown
Make damage value configurable
4:pick every unit in (Units within 200.00 of HR_Temploc_Unit)
Make AoE configurable
5: Create a special effect at HR_Temploc_Unit using Abilities\Spells\Other\Doom\DoomDeath.mdl
Make model configurable
6:Add a configuration trigger
7:I really dont understand 1. you are not even using it
 
Level 13
Joined
Mar 29, 2012
Messages
530
Review:
1: What's this for?
  • Set HR_Temploc_Unit = HR_Pont[HR_CurrentIndex]
  • Custom script: call RemoveLocation(udg_HR_Temploc_Unit)
2:Set HR_Distance[HR_CurrentIndex] = (HR_Distance[HR_CurrentIndex] - 10.00)
Make 10 configurable
3:Unit - Cause HR_Unit[HR_CurrentIndex] to damage (Picked unit), dealing 25.00 damage of attack type Chaos and damage type Unknown
Make damage value configurable
4:pick every unit in (Units within 200.00 of HR_Temploc_Unit)
Make AoE configurable
5: Create a special effect at HR_Temploc_Unit using Abilities\Spells\Other\Doom\DoomDeath.mdl
Make model configurable
6:Add a configuration trigger
7:I really dont understand 1. you are not even using it

Come on, he just a beginner...!! :grin:

Edit: Oh...yeah...Btw you have leak :
  • Set HR_Temploc_Unit = (HR_Pont[HR_CurrentIndex] offset by 10.00 towards HR_Angle[HR_CurrentIndex] degrees)
 
Last edited by a moderator:

BUP

BUP

Level 9
Joined
Sep 9, 2012
Messages
172
What did you do to that??
I can't find any cause....
and
  • Dummy
    • Events
      • Map initialization
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Last created unit) is dead) Equal to True
        • Then - Actions
          • Unit - Remove (Last created unit) from the game
        • Else - Actions
What's that??
You should store the unit-type of the spell into a variable and do like this

  • Dummy
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Your_Saved_Unit_Type_Variable
    • Actions
      • Unit - Remove (Triggering unit) from the game
 
Review #2
1) Set HR_Temploc_Unit = (HR_Point[HR_CurrentIndex] offset by 10.00 towards HR_Angle[HR_CurrentIndex] degrees)
10 should be configurable
2) Special Effect - Create a special effect at HR_Temploc_Unit using Abilities\Spells\Other\Doom\DoomDeath.mdl
Model path should be configurable,same w/:
Custom script: call DestroyEffect(AddSpecialEffectLoc("Abilities\\Spells\\Other\\Doom\\DoomDeath.mdl", udg_HR_Temploc_Unit))
3)Explain to me why are you not using the following:
Set HR_Temploc_Unit = HR_Point[HR_CurrentIndex]
Custom script: call RemoveLocation(udg_HR_Temploc_Unit)
Set HR_Temploc_point = HR_Point[HR_CurrentIndex]
Custom script: call RemoveLocation(udg_HR_Temploc_point
4)move the interval value to the configuration trigger
 
Level 6
Joined
Nov 24, 2012
Messages
198
(1) yes i will do it
(2) I not save special effect on variable cause i get error message
(3)Set HR_Temploc_point = HR_Point[HR_CurrentIndex]
Custom script: call RemoveLocation(udg_HR_Temploc_point
yes i used its
Explain to me why are you not using the following:
Set HR_Temploc_Unit = HR_Point[HR_CurrentIndex]
No im not used it cause the special effect will be gone for 1 second and its move to target and its really bad
(4) yes you right i will do it :)
 
Level 13
Joined
Mar 29, 2012
Messages
530
Yes...BUP is right you should use timer for creating the special effect

Example :
  • Set Timer[Index] = (Timer[Index] + 0.03)
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • Timer[Index] greater than 0.15
    • Then - Actions
      • Create your special effect here
      • Set Timer[Index] = 0.00
    • Else - Actions
 

  • Dummy
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Your_Saved_Unit_Type_Variable
    • Actions
      • Unit - Remove (Triggering unit) from the game

I would disagree, something along these lines is better:


  • Dummy
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • Set TempU = Triggering unit
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (TempU) Equal to Your_Saved_Unit_Type_Variable
        • Then - Actions
          • Unit - Remove (TempU) from the game
        • Else - Actions


Eitherway, besides being pedantic I wanted to point out that the damage from the ability should be of type spell, not type unknown or chaos or whatever else there is for options
 

Wrda

Spell Reviewer
Level 25
Joined
Nov 18, 2012
Messages
1,870
Please wolf_wing use HIDDEN tags while posting triggers, or it will increase the the thread... :vw_sad:
Edit: Do you know how much damage (25) per 0.03 seconds does per second? 833,(3)
It should be lower, even you should put a configuration trigger with damage and etc.
The spell description has grammar errors.
 

BUP

BUP

Level 9
Joined
Sep 9, 2012
Messages
172
I would disagree, something along these lines is better:


  • Dummy
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • Set TempU = Triggering unit
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (TempU) Equal to Your_Saved_Unit_Type_Variable
        • Then - Actions
          • Unit - Remove (TempU) from the game
        • Else - Actions


Eitherway, besides being pedantic I wanted to point out that the damage from the ability should be of type spell, not type unknown or chaos or whatever else there is for options

I was just telling him the way I know
You're a Pro and I agree that you disagree my opinion
 
Level 13
Joined
Mar 29, 2012
Messages
530
I would disagree, something along these lines is better:


  • Dummy
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • Set TempU = Triggering unit
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (TempU) Equal to Your_Saved_Unit_Type_Variable
        • Then - Actions
          • Unit - Remove (TempU) from the game
        • Else - Actions


Eitherway, besides being pedantic I wanted to point out that the damage from the ability should be of type spell, not type unknown or chaos or whatever else there is for options

It's because if we using (Triggering unit), it will call GetTriggerUnit() in map scripts...you save it in a variable so it will only call once...

Is that correct ??
 
Level 13
Joined
Mar 29, 2012
Messages
530
Suggest :
Create a unit group (with array) and if some unit need to be damaged, check it if that unit is in the unit group, if false deals them the damage and add them to unit group, if true do nothing...

For Example look at my spell on my signature
 
Review#3
1) Set HR_DAMAGE[HR_CurrentIndex] = ((Real(HR_Level[HR_CurrentIndex])) x 5.00)
and
Set HR_AoE[HR_CurrentIndex] = ((Real((Level of Hell Rising for HR_Unit[HR_CurrentIndex]))) x 100.00)
Make 100 and 5 configurable.
2)Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE
Set HR_SE_LCS = (Last created special effect)
Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_2
Set HR_SE_LCS_2 = (Last created special effect)
Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_3
Set HR_SE_LCS_3 = (Last created special effect)
Set HR_Timer[HR_CurrentIndex] = HR_SE_Interval
Special Effect - Destroy HR_SE_LCS
Special Effect - Destroy HR_SE_LCS_2
Special Effect - Destroy HR_SE_LCS_2
-> Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_2
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at HR_Temploc_Unit using HR_SE_3
Special Effect - Destroy (Last created special effect)

also make the model's array.Then,create them inside a Integer Loop
3)Remove both of this
Set HR_Temploc_point = HR_Point[HR_CurrentIndex]
Custom script: call RemoveLocation(udg_HR_Temploc_point)

and

Set HR_Temploc_Unit = HR_Point[HR_CurrentIndex]
Custom script: call RemoveLocation(udg_HR_Temploc_Unit)

This is the third time im going to ask you.WHY ARE YOU NOT REMOVING THIS???YOU ARE NOT EVEN USING IT!!
 
Top