• 🏆 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] Fixing possible errors

Status
Not open for further replies.
Level 2
Joined
Jun 26, 2012
Messages
7
Hey there.
As always, i got a little problem and I hope, that I endet up in the right place for it. (Hopefully not the wrong forum. If so, I'm sorry.)
For my map, i created a new Hero, the Biomancer. Since I'm not very skilled in creating flawless triggers, I would appreciate, if you could take a look at them, so I can ensure a map without errors. =)

I must warn you. Advanced triggerer might be offendet by the imperfection. ^^"

  • Biomancer Sell
    • Events
      • Unit - A unit Sells a unit
    • Conditions
      • (Unit-type of (Sold unit)) Equal to Biomancer
    • Actions
      • Set Biomancer = (Sold unit)
Increases the Stats of the Target hero, based on the Level of the Biomancer
  • Stats Manipulator Cast
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Organic Manipulator [Necrosis]
    • Actions
      • Set Manipulated = (Target unit of ability being cast)
      • Set Stat_Increase = (Hero level of Biomancer)
      • Dialog - Change the title of Stat_Dialog to Stats Increase
      • Dialog - Create a dialog button for Stat_Dialog labelled |cffff0000Strength|...
      • Set Strength = (Last created dialog Button)
      • Dialog - Create a dialog button for Stat_Dialog labelled |cff00e500Agility|r
      • Set Agility = (Last created dialog Button)
      • Dialog - Create a dialog button for Stat_Dialog labelled |cff0000ffIntellige...
      • Set Intelligence = (Last created dialog Button)
      • Dialog - Show Stat_Dialog for (Owner of Biomancer)
  • Stats Manipulator manipulation
    • Events
      • Dialog - A dialog button is clicked for Stat_Dialog
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Clicked dialog button) Equal to Strength
        • Then - Actions
          • Hero - Modify Strength of Manipulated: Add Stat_Increase
          • Game - Display to (All players) for 5.00 seconds the text: ((Name of (Owner of Biomancer)) + (( increased the strength of + (Name of (Owner of Manipulated))) + (by + (String(Stat_Increase)))))
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Clicked dialog button) Equal to Agility
            • Then - Actions
              • Hero - Modify Agility of Manipulated: Add Stat_Increase
              • Game - Display to (All players) for 5.00 seconds the text: ((Name of (Owner of Biomancer)) + (( increased the agility of + (Name of (Owner of Manipulated))) + (by + (String(Stat_Increase)))))
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Clicked dialog button) Equal to Intelligence
                • Then - Actions
                  • Hero - Modify Intelligence of Manipulated: Add Stat_Increase
                  • Game - Display to (All players) for 5.00 seconds the text: ((Name of (Owner of Biomancer)) + (( increased the intelligence of + (Name of (Owner of Manipulated))) + (by + (String(Stat_Increase)))))
                • Else - Actions
      • Dialog - Clear Stat_Dialog
With every attack, the Biomancer increases hiw own damage. If he has collected enough, he is able to summon a Biomonster by sacrifising some oth the charges
  • Biomass learn
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Collect Biomass [Necrosis]
    • Actions
      • Set Biomancer = (Learning Hero)
      • Set Biomass = 1
      • Set Biomass_Max = ((Level of Collect Biomass [Necrosis] for Biomancer) x 5)
      • Unit - Add Damage +2 [Biomass] to Biomancer
      • Trigger - Turn on Biomass collection <gen>
  • Biomass collection
    • Events
      • Unit - A unit Is attacked
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Attacking unit) has buff Collecting Biomass ) Equal to True
        • Then - Actions
          • Set Biomass_Max = ((Level of Collect Biomass [Necrosis] for Biomancer) x 5)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Biomass Less than Biomass_Max
            • Then - Actions
              • Set Biomass = (Biomass + 1)
              • Unit - Set level of Damage +2 [Biomass] for Biomancer to Biomass
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Biomass Equal to Biomass_Max
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
                  • Do nothing
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Biomass Equal to 15
        • Then - Actions
          • Set TempLocation[9] = (Random point in (Playable map area))
          • Unit - Create 1 15 Biomasses collected for (Owner of Biomancer) at TempLocation[9] facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_TempLocation[9])
          • Set Biomass_Unit = (Last created unit)
        • Else - Actions
  • Summon Biomonster
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Biotic Monstrosity
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Biomass Greater than or equal to 15
        • Then - Actions
          • Set Biomass = (Biomass - 15)
          • Unit - Set level of Damage +2 [Biomass] for Biomancer to Biomass
          • Trigger - Turn on Biomass collection <gen>
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Biomass Less than 15
        • Then - Actions
          • Unit - Remove Biomass_Unit from the game
        • Else - Actions
Rips apart the target enemy an creates a Cellheap from it's remains. Max. 3 Heaps are allowed at the same time.
  • Cellular Fragmentation
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Cellular Fragmentation
    • Actions
      • Set Tempunit = (Target unit of ability being cast)
      • Set TempLocation[1] = (Position of Tempunit)
      • Special Effect - Create a special effect at TempLocation[1] using Objects\Spawnmodels\Human\HumanLargeDeathExplode\HumanLargeDeathExplode.mdl
      • Special Effect - Destroy (Last created special effect)
      • Unit - Kill Tempunit
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Cellheap Equal to 3
        • Then - Actions
          • Skip remaining actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Cellular Fragmentation for (Triggering unit)) Equal to 1
            • Then - Actions
              • Set Cellheap = (Cellheap + 1)
              • Unit - Create 1 Cellheap (lvl1) for Player 1 (Red) at TempLocation[1] facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_TempLocation[1])
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of Cellular Fragmentation for (Triggering unit)) Equal to 2
                • Then - Actions
                  • Set Cellheap = (Cellheap + 1)
                  • Unit - Create 1 Cellheap (lvl2) for Player 1 (Red) at TempLocation[1] facing Default building facing degrees
                  • Custom script: call RemoveLocation(udg_TempLocation[1])
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Level of Cellular Fragmentation for (Triggering unit)) Equal to 3
                    • Then - Actions
                      • Set Cellheap = (Cellheap + 1)
                      • Unit - Create 1 Cellheap (lvl3) for Player 1 (Red) at TempLocation[1] facing Default building facing degrees
                      • Custom script: call RemoveLocation(udg_TempLocation[1])
                    • Else - Actions
                      • Do nothing
  • Cellheap death
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Cellheap (lvl1)
      • (Unit-type of (Dying unit)) Equal to Cellheap (lvl2)
      • (Unit-type of (Dying unit)) Equal to Cellheap (lvl3)
    • Actions
      • Set Cellheap = (Cellheap - 1)
By fusing the Monstrosity with three Cellheaps, the Biomaster creates his ultimate creature, the Bio-Armageddon.
  • BioArmageddon
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Merge
    • Actions
      • Set Tempgroup = (Units of type Cellheap (lvl3))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Tempgroup) Equal to 3
        • Then - Actions
          • Set Tempunit = (Casting unit)
          • Unit - Pause Tempunit
          • Unit - Turn collision for Tempunit Off
          • Unit Group - Pick every unit in Tempgroup and do (Actions)
            • Loop - Actions
              • Unit - Kill (Picked unit)
          • Special Effect - Create a special effect attached to the origin of Tempunit using Objects\Spawnmodels\NightElf\EntBirthTarget\EntBirthTarget.mdl
          • Unit - Explode Tempunit
          • Unit - Create 1 Bio-Armageddon for (Owner of Tempunit) at (Position of Tempunit) facing Default building facing degrees
          • Set Tempunit = (Last created unit)
          • Special Effect - Destroy (Last created special effect)
          • Custom script: call DestroyGroup(udg_Tempgroup)
          • Set Cellheap = 3
        • Else - Actions
          • Do nothing
  • BioArmageddon Death
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Bio-Armageddon
    • Actions
      • Set Cellheap = 0
With every attack, units around the Biomancer have a small chance to create an energ eruption that travels along a path towards thier target, damaging all units along the way. Also this ability will unlock the Bio-Armageddon spell for the Monstrosity.
  • Biomaster
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) has buff Bio influence ) Equal to True
    • Actions
      • Set BioBlast = (Random integer number between 1 and 100)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BioBlast Less than or equal to 5
        • Then - Actions
          • Set Tempattack = (Attacking unit)
          • Set Tempattacked = (Attacked unit)
          • Set TempLocation[1] = (Position of Tempattack)
          • Set TempLocation[2] = (Position of Tempattacked)
          • Unit - Create 1 Dummy (Caster) for (Owner of Tempattack) at TempLocation[1] facing Default building facing degrees
          • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
          • Unit - Add Bioblast to (Last created unit)
          • Unit - Order (Last created unit) to Undead Dreadlord - Carrion Swarm TempLocation[2]
        • Else - Actions
      • Custom script: call RemoveLocation(udg_TempLocation[1])
      • Custom script: call RemoveLocation(udg_TempLocation[2])
I hope, that I haven' forgotten anything or done anything wrong. =/

Thanks to all who take the time to look at this. =)
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
first never use the Do Nothing action it is useless. slows things down and as its name says it does nothing except cause bugs some of the time and slow down triggers all the time.

i believe u leak the group because u have to do custom script: bjWantDestroyGroup == true b4 the group is created / destroyed.

your stats manipulator cast trigger leaks also since the dialogs r reset everytime someone casts the ability. use this action above at the top of the trigger
  • Dialog - Clear urDialog
oops nvm just noticed u had the clear in the other trigger

also your dialog events arent MPI so if player 1 and 2 use the ability at the same time it will not display for the one player

you can also change it and use one tempLocation for all ur locations. as long as you remove it in the same trigger b4 a wait then u will not leak and it will not get overwritten in another trigger.
 
Level 2
Joined
Jun 26, 2012
Messages
7
Thanks for the fast answer.
I already erased the "Do nothing" from all of my spells.
The MPI-Problem is solved in a simple way. Every Hero can only be on the field once. So the shouldn't be problems involving with multiple spells, right?
Sorry that i didn't mention that from the start.
 
Status
Not open for further replies.
Top