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

[Trigger] Progress of Blood Bath

Status
Not open for further replies.
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