• 💀 Happy Halloween! 💀 It's time to vote for the best terrain! Check out the entries to Hive's HD Terrain Contest #2 - Vampire Folklore.❗️Poll closes on November 14, 2023. 🔗Click here to cast your vote!
  • 🏆 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!
  • 🏆 HD Level Design Contest #1 is OPEN! Contestants must create a maze with at least one entry point, and at least one exit point. The map should be made in HD mode, and should not be openable in SD. Only custom models from Hive's HD model and texture sections are allowed. The only exceptions are DNC models and omnilights. This is mainly a visual and design oriented contest, not technical. The UI and video walkthrough rules are there to give everyone an equal shot at victory by standardizing how viewers see the terrain. 🔗Click here to enter!

[Trigger] Progress of Blood Bath

Status
Not open for further replies.
Level 15
Joined
Jul 4, 2008
Messages
1,106
Hello, I'm working on another GUI spell now.
Summons a pool of boiling blood at the target location, splashing the blood to nearby enemies and burning alive those inside it.

Splash damage: 07.50
- Targets: Air, Ground, Structure
Passive damage: 15.00
- Targets: Ground, Structure

I'd greatly appreciate comments/criticism for the Trigger itself.

  • BloodBath OnCast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to [W] Blood Bath
    • Actions
      • -------- [[ Main Switch ]] --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BloodBath_MainIndex Equal to 0
        • Then - Actions
          • Trigger - Turn on BloodBath IndexQueue <gen>
        • Else - Actions
      • -------- [[ Index ]] --------
      • Set BloodBath_MainIndex = (BloodBath_MainIndex + 1)
      • Set BloodBath_Index = (BloodBath_Index + 1)
      • -------- [[ Setups ]] --------
      • Set BloodBath_Duration[BloodBath_Index] = 30.00
      • Set BloodBath_PoolLocation[BloodBath_Index] = (Target point of ability being cast)
      • Set BloodBath_Caster[BloodBath_Index] = (Triggering unit)
  • BloodBath IndexQueue
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Cinematic - Clear the screen of text messages for (All players)
      • For each (Integer BloodBath_Loop) from 1 to BloodBath_Index, do (Actions)
        • Loop - Actions
          • -------- [[ Index is not empty ]] --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BloodBath_Caster[BloodBath_Loop] Not equal to No unit
            • Then - Actions
              • Game - Display to (All players) the text: DebugPart: 0x0
              • -------- [[ Index Unit is alive ]] --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (BloodBath_Caster[BloodBath_Loop] is alive) Equal to True
                • Then - Actions
                  • Game - Display to (All players) the text: DebugPart: 1x0
                  • -------- [[ Duration is not over ]] --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BloodBath_Duration[BloodBath_Loop] Greater than 0.00
                    • Then - Actions
                      • Game - Display to (All players) the text: DebugPart: 2x0
                      • -------- [[ Animate the Pool ]] --------
                      • -------- [[ Spawn ]] --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • BloodBath_SFXCount[BloodBath_Loop] Less than 10
                        • Then - Actions
                          • Game - Display to (All players) the text: DebugPart: 3x0
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • BloodBath_SFXSpawnTimer[BloodBath_Loop] Less than 0.00
                            • Then - Actions
                              • Game - Display to (All players) the text: DebugPart: 4x0
                              • -------- [[ Setup Default SFX ]] --------
                              • Set BloodBath_SFXCount[BloodBath_Loop] = (BloodBath_SFXCount[BloodBath_Loop] + 1)
                              • Set BloodBath_SFXSpawnHeight[BloodBath_Loop] = (25.00 x (Real(BloodBath_SFXCount[BloodBath_Loop])))
                              • -------- [[ Set up dummy-index ]] --------
                              • Set BloodBath_SFXMainIndex[BloodBath_Loop] = (BloodBath_SFXMainIndex[BloodBath_Loop] + 1)
                              • Set BloodBath_SFXIndex[BloodBath_Loop] = (BloodBath_SFXIndex[BloodBath_Loop] + 1)
                              • -------- [[ Setup Dummy ]] --------
                              • Set BloodBath_SFXDeathTimer[BloodBath_SFXIndex[BloodBath_Loop]] = 5.00
                              • Unit - Create 1 dummy for (Owner of BloodBath_Caster[BloodBath_Loop]) at BloodBath_PoolLocation[BloodBath_Loop] facing (Random angle) degrees
                              • Unit - Add Crow Form to (Last created unit)
                              • Unit - Remove Crow Form from (Last created unit)
                              • Animation - Change (Last created unit) flying height to BloodBath_SFXSpawnHeight[BloodBath_Loop] at 0.00
                              • Set BloodBath_SFXDummy[BloodBath_SFXIndex[BloodBath_Loop]] = (Last created unit)
                              • Special Effect - Create a special effect attached to the chest of BloodBath_SFXDummy[BloodBath_SFXIndex[BloodBath_Loop]] using Objects\Spawnmodels\Human\HumanLargeDeathExplode\HumanLargeDeathExplode.mdl
                              • Set BloodBath_SFXEffect[BloodBath_SFXIndex[BloodBath_SFXLoop]] = (Last created special effect)
                              • Cinematic - Ping minimap for (All players) at BloodBath_PoolLocation[BloodBath_Loop] for 1.00 seconds
                              • -------- [[ Reset spawn ]] --------
                              • Set BloodBath_SFXSpawnTimer[BloodBath_Loop] = 0.10
                            • Else - Actions
                              • Game - Display to (All players) the text: DebugPart: 4x1
                              • Set BloodBath_SFXSpawnTimer[BloodBath_Loop] = (BloodBath_SFXSpawnTimer[BloodBath_Loop] - 0.03)
                        • Else - Actions
                          • Game - Display to (All players) the text: DebugPart: 3x1
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • BloodBath_SFXDeathTimer[BloodBath_Loop] Less than 0.00
                            • Then - Actions
                              • -------- [[ Destroy ]] --------
                              • Game - Display to (All players) the text: DebugPart: 3x1[0x0]
                              • Set BloodBath_SFXDeathTimer[BloodBath_Loop] = 5.00
                              • For each (Integer BloodBath_SFXLoop) from 1 to BloodBath_SFXIndex[BloodBath_Loop], do (Actions)
                                • Loop - Actions
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • BloodBath_SFXDummy[BloodBath_SFXLoop] Not equal to No unit
                                    • Then - Actions
                                      • Game - Display to (All players) the text: DebugPart: 3x1[1x0]
                                      • Special Effect - Destroy BloodBath_SFXEffect[BloodBath_SFXLoop]
                                      • Unit - Remove BloodBath_SFXDummy[BloodBath_SFXLoop] from the game
                                      • Set BloodBath_SFXDummy[BloodBath_SFXLoop] = No unit
                                      • Set BloodBath_SFXMainIndex[BloodBath_Loop] = (BloodBath_SFXMainIndex[BloodBath_SFXLoop] - 1)
                                      • Set BloodBath_SFXCount[BloodBath_Loop] = (BloodBath_SFXCount[BloodBath_Loop] - 1)
                                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • BloodBath_SFXMainIndex[BloodBath_SFXLoop] Equal to 0
                                        • Then - Actions
                                          • Set BloodBath_SFXIndex[BloodBath_SFXLoop] = 0
                                        • Else - Actions
                                    • Else - Actions
                                      • Game - Display to (All players) the text: DebugPart: 3x1[1x1]
                            • Else - Actions
                              • Game - Display to (All players) the text: DebugPart: 3x1[0x1]
                              • Set BloodBath_SFXDeathTimer[BloodBath_Loop] = (BloodBath_SFXDeathTimer[BloodBath_Loop] - 0.03)
                      • -------- [[ Lower the duration ]] --------
                      • Set BloodBath_Duration[BloodBath_Loop] = (BloodBath_Duration[BloodBath_Loop] - 0.03)
                    • Else - Actions
                      • Game - Display to (All players) the text: DebugPart: 2x1
                • Else - Actions
                  • Game - Display to (All players) the text: DebugPart: 1x1
            • Else - Actions
              • Game - Display to (All players) the text: DebugPart: 0x1

endnote; The spell should be about 15-30% finished, even though it is only effect spam at this moment.
 
Status
Not open for further replies.
Top