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

Terrain 'Breaking' system V1.55

This is a system that will destroy terrain when a player has been standing on it too long.

It would be quite a good addition to 2D generators as well as escape maps, and soon I shall add an anti terrain missile.

each terrain type has a differant duration depending on what ever you set it. it has been tested many times and it MUI and MPI. it can be tested with 12 players to show this as well as player 1 having 2 units unlike everybody else who has 1.

you cannot die in the test map for the sake of testing.

  • Setting currant Units and missiles
    • Events
      • Time - Intervals expires
    • Conditions
    • Actions
      • -------- this wll register units that can destroy terrain, remember if you want more than one unit type add --------
      • -------- and or function (eg: pick all unit in region (playable map area) matching condition unit type of whatever OR unit type of unit --------
      • -------- repeat for more units --------
      • Set TempGroup = (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Footman) or ((Unit-type of (Matching unit)) Equal to Siege Engine)))
      • -------- * --------
      • Unit Group - Pick every unit in TempGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • ((Picked unit) is alive) Equal to True
                  • ((Picked unit) is in WaitGroup) Equal to False
            • Then - Actions
              • -------- This is what actually adds them to the terrain destroying group, there is no ned to modify this unless your heavily modifing it --------
              • -------- * --------
              • Set WaitCount = (WaitCount + 1)
              • -------- * --------
              • Set WaitTime[WaitCount] = 0
              • -------- * --------
              • Set WaitUnit[WaitCount] = (Picked unit)
              • -------- * --------
              • Unit Group - Add WaitUnit[WaitCount] to WaitGroup
              • Custom script: call DestroyGroup(udg_TempGroup)
            • Else - Actions
      • -------- this wll register units that can destroy terrain, remember if you want more than one unit type add --------
      • -------- and or function (eg: pick all unit in region (playable map area) matching condition unit type of whatever OR unit type of unit --------
      • -------- repeat for more units --------
      • Set TempGroup = (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Anti Terrain Missile) or ((Unit-type of (Matching unit)) Equal to Peircing Missile)))
      • -------- * --------
      • Unit Group - Pick every unit in TempGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • ((Picked unit) is alive) Equal to True
                  • ((Picked unit) is in WaitGroup) Equal to False
            • Then - Actions
              • -------- This is what actually adds them to the terrain destroying group, there is no ned to modify this unless your heavily modifing it --------
              • -------- * --------
              • Set Missile_count = (Missile_count + 1)
              • -------- * --------
              • Set Missile_unit[Missile_count] = (Picked unit)
              • -------- * --------
              • Unit Group - Add Missile_unit[Missile_count] to Missile_group
              • Custom script: call DestroyGroup(udg_TempGroup)
            • Else - Actions
  • Terrain destory
    • Events
      • Time - Intervals expires
    • Conditions
    • Actions
      • For each (Integer A) from 1 to WaitCount, do (Actions)
        • Loop - Actions
          • -------- * --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • (WaitUnit[(Integer A)] is in WaitGroup) Equal to True
                  • (WaitUnit[(Integer A)] is alive) Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • WaitTime[(Integer A)] Equal to 0
                • Then - Actions
                  • -------- * --------
                  • Set Point_checker[(Integer A)] = (Position of WaitUnit[(Integer A)])
                • Else - Actions
              • -------- * --------
              • Set WaitTime[(Integer A)] = (WaitTime[(Integer A)] + 1)
              • -------- * --------
              • Custom script: call DestroyGroup(udg_TempGroup)
              • -------- ********************************** --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • WaitTime[(Integer A)] Greater than or equal to 3
                • Then - Actions
                  • -------- The condition above is the 'wait' between the first point being set and the second pooiint being set, --------
                  • -------- IT MUST NOT BE CHANGED --------
                  • -------- * --------
                  • Set WaitTime[(Integer A)] = 0
                  • -------- * --------
                  • Set Point_checker_confirm[(Integer A)] = (Position of WaitUnit[(Integer A)])
                  • -------- condition directly below (*) past that is where you need to set you bg then psst hat you need to set your units 'weight' --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Integer((X of Point_checker[(Integer A)]))) Equal to (Integer((X of Point_checker_confirm[(Integer A)])))
                      • (Integer((Y of Point_checker[(Integer A)]))) Equal to (Integer((Y of Point_checker_confirm[(Integer A)])))
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Terrain type at Point_checker_confirm[(Integer A)]) Not equal to Felwood - Poison
                        • Then - Actions
                          • Set Movement_detctor[(Integer A)] = 1
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Unit-type of WaitUnit[(Integer A)]) Equal to Footman
                            • Then - Actions
                              • -------- Create on of these for each unit type, then set the 'weight' by increasing the variable below --------
                              • Set Life_of_terrain[(Integer A)] = (Life_of_terrain[(Integer A)] + 1)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (Unit-type of WaitUnit[(Integer A)]) Equal to Siege Engine
                                • Then - Actions
                                  • Set Life_of_terrain[(Integer A)] = (Life_of_terrain[(Integer A)] + 3)
                                • Else - Actions
                        • Else - Actions
                    • Else - Actions
                      • Set Life_of_terrain[(Integer A)] = 0
                      • Set Movement_detctor[(Integer A)] = 1
                  • -------- This part is your destroyable terrain section --------
                  • -------- the number you see in the conditions --------
                  • -------- is the terrains strength --------
                  • -------- the first condition is the terrain type --------
                  • -------- Edit information is inside --------
                  • -------- the first 'if then else' function --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (Terrain type at Point_checker_confirm[(Integer A)]) Equal to Lordaeron Summer - Grass
                          • Life_of_terrain[(Integer A)] Greater than or equal to 45
                    • Then - Actions
                      • -------- Terrain it changes to after it 'breaks' --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Weakening_Option_Check Equal to 1
                        • Then - Actions
                          • Environment - Change terrain type at Point_checker_confirm[(Integer A)] to Lordaeron Summer - Grassy Dirt using variation -1 in an area of size 1 and shape Circle
                        • Else - Actions
                          • Environment - Change terrain type at Point_checker_confirm[(Integer A)] to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                      • -------- Special effect --------
                      • Special Effect - Create a special effect at Point_checker_confirm[(Integer A)] using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • -------- creates this terrain types dummy --------
                      • Unit - Create 1 dummy grass for Neutral Passive at Point_checker_confirm[(Integer A)] facing Default building facing degrees
                      • -------- * --------
                      • Set Life_of_terrain[(Integer A)] = 0
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (Terrain type at Point_checker_confirm[(Integer A)]) Equal to Lordaeron Summer - Rock
                          • Life_of_terrain[(Integer A)] Greater than or equal to 60
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Weakening_Option_Check Equal to 1
                        • Then - Actions
                          • Environment - Change terrain type at Point_checker_confirm[(Integer A)] to Lordaeron Summer - Grass using variation -1 in an area of size 1 and shape Circle
                        • Else - Actions
                          • Environment - Change terrain type at Point_checker_confirm[(Integer A)] to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                      • Special Effect - Create a special effect at Point_checker_confirm[(Integer A)] using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Create 1 dummy Rock for Neutral Passive at Point_checker_confirm[(Integer A)] facing Default building facing degrees
                      • -------- * --------
                      • Set Life_of_terrain[(Integer A)] = 0
                    • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (Terrain type at Point_checker_confirm[(Integer A)]) Equal to Lordaeron Summer - Grassy Dirt
                          • Life_of_terrain[(Integer A)] Greater than or equal to 15
                    • Then - Actions
                      • Environment - Change terrain type at Point_checker_confirm[(Integer A)] to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                      • Special Effect - Create a special effect at Point_checker_confirm[(Integer A)] using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Create 1 dummy grassy dirt for Neutral Passive at Point_checker_confirm[(Integer A)] facing Default building facing degrees
                      • -------- * --------
                      • Set Life_of_terrain[(Integer A)] = 0
                    • Else - Actions
                  • -------- * --------
                  • Custom script: call RemoveLocation(udg_Point_checker[bj_forLoopAIndex])
                  • -------- * --------
                  • Custom script: call RemoveLocation(udg_Point_checker_confirm[bj_forLoopAIndex])
                • Else - Actions
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • (WaitUnit[(Integer A)] is in WaitGroup) Equal to True
                      • (WaitUnit[(Integer A)] is alive) Equal to False
                • Then - Actions
                  • -------- * --------
                  • Set WaitTime[(Integer A)] = 0
                  • -------- * --------
                  • Unit Group - Remove WaitUnit[(Integer A)] from WaitGroup
                  • -------- * --------
                  • Set WaitUnit[(Integer A)] = No unit
                  • -------- * --------
                • Else - Actions
      • -------- Warning: caution when modifing this area --------
      • For each (Integer A) from 1 to Missile_count, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • (Missile_unit[(Integer A)] is in Missile_group) Equal to True
                  • (Missile_unit[(Integer A)] is alive) Equal to True
            • Then - Actions
              • -------- * --------
              • Set Temp_Point_3[(Integer A)] = (Position of Missile_unit[(Integer A)])
              • -------- * --------
              • Set Temp_point = (Position of Missile_unit[(Integer A)])
              • -------- This controlls it's speed --------
              • -------- and how it's locked onto beacons --------
              • -------- Documentation on editing on the first if then else --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Unit-type of Missile_unit[(Integer A)]) Equal to Peircing Missile
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Set_Beacon[(Integer A)] Equal to No unit
                    • Then - Actions
                      • -------- change the conditions 'number' as it were to increase and decrease the lockon AOE --------
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Number of units in (Units within 400.00 of Temp_Point_3[(Integer A)] matching ((Unit-type of (Matching unit)) Equal to Anti terrain beacon))) Equal to 0
                        • Then - Actions
                          • -------- controlls the missiles Speed --------
                          • Set Temp_point_4[(Integer A)] = (Temp_Point_3[(Integer A)] offset by 2.00 towards (Facing of Missile_unit[(Integer A)]) degrees)
                          • -------- * --------
                          • Unit - Move Missile_unit[(Integer A)] instantly to Temp_point_4[(Integer A)]
                          • -------- * --------
                          • Custom script: call RemoveLocation(udg_Temp_Point_3[bj_forLoopAIndex])
                          • Custom script: call RemoveLocation(udg_Temp_point_4[bj_forLoopAIndex])
                        • Else - Actions
                          • -------- Actually sets the lockon, change the number to change the lockon AOE --------
                          • Set Temp_Group_3 = (Units within 400.00 of Temp_Point_3[(Integer A)] matching ((Unit-type of (Matching unit)) Equal to Anti terrain beacon))
                          • -------- * --------
                          • Set Set_Beacon[(Integer A)] = (Random unit from Temp_Group_3)
                          • -------- * --------
                          • Custom script: call RemoveLocation(udg_Temp_Point_3[bj_forLoopAIndex])
                          • Custom script: call DestroyGroup(udg_Temp_Group_3)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Set_Beacon[(Integer A)] Not equal to No unit
                        • Then - Actions
                          • -------- * --------
                          • Set Temp_Point_2[(Integer A)] = (Position of Set_Beacon[(Integer A)])
                          • -------- Alter the number in this to change the missiles speed --------
                          • Set Temp_point_4[(Integer A)] = (Temp_Point_3[(Integer A)] offset by 2.00 towards (Facing of Missile_unit[(Integer A)]) degrees)
                          • -------- movement and cornering( * ) --------
                          • Unit - Move Missile_unit[(Integer A)] instantly to Temp_point_4[(Integer A)], facing (Angle from Temp_Point_3[(Integer A)] to Temp_Point_2[(Integer A)]) degrees
                          • -------- * --------
                          • Custom script: call RemoveLocation(udg_Temp_point_4[bj_forLoopAIndex])
                          • Custom script: call RemoveLocation(udg_Temp_Point_2[bj_forLoopAIndex])
                          • Custom script: call RemoveLocation(udg_Temp_Point_3[bj_forLoopAIndex])
                        • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Unit-type of Missile_unit[(Integer A)]) Equal to Anti Terrain Missile
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Set_Beacon[(Integer A)] Equal to No unit
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Number of units in (Units within 400.00 of Temp_Point_3[(Integer A)] matching ((Unit-type of (Matching unit)) Equal to Anti terrain beacon))) Equal to 0
                        • Then - Actions
                          • Set Temp_point_4[(Integer A)] = (Temp_Point_3[(Integer A)] offset by 1.00 towards (Facing of Missile_unit[(Integer A)]) degrees)
                          • Unit - Move Missile_unit[(Integer A)] instantly to Temp_point_4[(Integer A)]
                          • Custom script: call RemoveLocation(udg_Temp_Point_3[bj_forLoopAIndex])
                          • Custom script: call RemoveLocation(udg_Temp_point_4[bj_forLoopAIndex])
                        • Else - Actions
                          • Set Temp_Group_3 = (Units within 400.00 of Temp_Point_3[(Integer A)] matching ((Unit-type of (Matching unit)) Equal to Anti terrain beacon))
                          • Set Set_Beacon[(Integer A)] = (Random unit from Temp_Group_3)
                          • Custom script: call RemoveLocation(udg_Temp_Point_3[bj_forLoopAIndex])
                          • Custom script: call DestroyGroup(udg_Temp_Group_3)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Set_Beacon[(Integer A)] Not equal to No unit
                        • Then - Actions
                          • Set Temp_Point_2[(Integer A)] = (Position of Set_Beacon[(Integer A)])
                          • Set Temp_point_4[(Integer A)] = (Temp_Point_3[(Integer A)] offset by 1.00 towards (Facing of Missile_unit[(Integer A)]) degrees)
                          • Unit - Move Missile_unit[(Integer A)] instantly to Temp_point_4[(Integer A)], facing (Angle from Temp_Point_3[(Integer A)] to Temp_Point_2[(Integer A)]) degrees
                          • Custom script: call RemoveLocation(udg_Temp_point_4[bj_forLoopAIndex])
                          • Custom script: call RemoveLocation(udg_Temp_Point_2[bj_forLoopAIndex])
                          • Custom script: call RemoveLocation(udg_Temp_Point_3[bj_forLoopAIndex])
                        • Else - Actions
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (WaitUnit[(Integer A)] is in Missile_group) Equal to True
                      • (Missile_unit[(Integer A)] is dead) Equal to True
                    • Then - Actions
                      • -------- * --------
                      • Unit Group - Remove Missile_unit[(Integer A)] from Missile_group
                      • -------- * --------
                      • Set Missile_unit[(Integer A)] = No unit
                      • -------- * --------
                    • Else - Actions
              • -------- Terrain damage --------
              • -------- Documentation in the first if then else --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grassy Dirt
                • Then - Actions
                  • -------- Removes the normal missile and damages the peircing one --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Unit-type of Missile_unit[(Integer A)]) Equal to Anti Terrain Missile
                    • Then - Actions
                      • Unit - Remove Missile_unit[(Integer A)] from the game
                    • Else - Actions
                      • Unit - Set life of Missile_unit[(Integer A)] to ((Life of Missile_unit[(Integer A)]) - 5.00)
                  • -------- all the sfx --------
                  • Special Effect - Create a special effect at Temp_point using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Terrain type change --------
                  • Environment - Change terrain type at Temp_point to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                  • -------- More SFX --------
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Dummy created matching the destroyed terrain type --------
                  • Unit - Create 1 dummy grassy dirt for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grass
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Weakening_Option_Check Equal to 1
                    • Then - Actions
                      • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grassy Dirt using variation -1 in an area of size 1 and shape Circle
                    • Else - Actions
                      • Environment - Change terrain type at Temp_point to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Unit-type of Missile_unit[(Integer A)]) Equal to Anti Terrain Missile
                    • Then - Actions
                      • Unit - Remove Missile_unit[(Integer A)] from the game
                    • Else - Actions
                      • Unit - Set life of Missile_unit[(Integer A)] to ((Life of Missile_unit[(Integer A)]) - 5.00)
                  • Special Effect - Create a special effect at Temp_point using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Create 1 dummy grass for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain type at Temp_point) Equal to Lordaeron Summer - Rock
                • Then - Actions
                  • -------- This sets the terrain type it will change the ground to --------
                  • -------- at the moment it will automatically check whether or not you have --------
                  • -------- the weakining option active --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Weakening_Option_Check Equal to 1
                    • Then - Actions
                      • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grass using variation -1 in an area of size 1 and shape Circle
                    • Else - Actions
                      • Environment - Change terrain type at Temp_point to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                  • -------- Damages the peiceing missile, and destroyes the anti terrain missile --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Unit-type of Missile_unit[(Integer A)]) Equal to Anti Terrain Missile
                    • Then - Actions
                      • Unit - Remove Missile_unit[(Integer A)] from the game
                    • Else - Actions
                      • Unit - Set life of Missile_unit[(Integer A)] to ((Life of Missile_unit[(Integer A)]) - 5.00)
                  • -------- Creates all the sfx --------
                  • Special Effect - Create a special effect at Temp_point using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Creates your terrain types dummy, make sure this is right --------
                  • Unit - Create 1 dummy Rock for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain type at Temp_point) Equal to Lordaeron Summer - Dark Grass
                  • (Unit-type of Missile_unit[(Integer A)]) Equal to Peircing Missile
                • Then - Actions
                  • Unit - Set life of Missile_unit[(Integer A)] to ((Life of Missile_unit[(Integer A)]) - 5.00)
                  • -------- This sets the terrain type it will change the ground to --------
                  • -------- at the moment it will automatically check whether or not you have --------
                  • -------- the weakining option active --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Weakening_Option_Check Equal to 1
                    • Then - Actions
                      • Environment - Change terrain type at Temp_point to Lordaeron Summer - Rock using variation -1 in an area of size 1 and shape Circle
                    • Else - Actions
                      • Environment - Change terrain type at Temp_point to Felwood - Poison using variation -1 in an area of size 1 and shape Circle
                  • -------- Damages the peiceing missile, and destroyes the anti terrain missile --------
                  • -------- Creates all the sfx --------
                  • Special Effect - Create a special effect at Temp_point using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Creates your terrain types dummy, make sure this is right --------
                  • Unit - Create 1 dummy Dark grass for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
              • -------- * --------
              • Custom script: call RemoveLocation(udg_Temp_point)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • (Missile_unit[(Integer A)] is in Missile_group) Equal to True
                      • (Missile_unit[(Integer A)] is alive) Equal to False
                • Then - Actions
                  • -------- This is what actually adds them to the terrain destroying group, there is no ned to modify this unless your heavily modifing it --------
                  • -------- * --------
                  • Set Missile_count = (Missile_count - 1)
                  • -------- * --------
                  • Unit Group - Remove Missile_unit[(Integer A)] from Missile_group
                  • -------- * --------
                  • Set Missile_unit[Missile_count] = No unit
                  • -------- * --------
                  • Custom script: call DestroyGroup(udg_TempGroup)
                • Else - Actions
      • Set Beacons = (Units in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to Anti terrain beacon))
      • Unit Group - Pick every unit in Beacons and do (Actions)
        • Loop - Actions
          • Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 0.03)
  • Terrain revive
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • -------- this is the revival part --------
      • -------- it basically does the opposite to the destroy terrain functions --------
      • -------- it will return the terrain to it's original form trough a dummy check --------
      • -------- information inside the first 'if then else' function --------
      • Set Temp_point = (Position of (Triggering unit))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to dummy grass
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grassy Dirt
              • Weakening_Option_Check Equal to 1
            • Then - Actions
              • -------- Above this is the dummy unit check, change this to match your terrain --------
              • -------- * --------
              • -------- This is the corresponding terrain type to the dummy. --------
              • -------- if you dummy was created by whatever terrain being destroyed --------
              • -------- this should return it to the one it origionally was --------
              • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grass using variation -1 in an area of size 1 and shape Circle
              • -------- revival special effect --------
              • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Weakening_Option_Check Equal to 1
                • Then - Actions
                  • -------- This will change it to the --------
                  • -------- 'lower level' Terrain --------
                  • -------- and set it to heal to the next tier --------
                  • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grassy Dirt using variation -1 in an area of size 1 and shape Circle
                  • -------- SFX is located here --------
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • -------- Dummy unit --------
                  • -------- Needs to match the origional terrain --------
                  • -------- as it's only '1 tier' below it --------
                  • Unit - Create 1 dummy grass for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Weakening_Option_Check Equal to 0
            • Then - Actions
              • -------- Above this is the dummy unit check, change this to match your terrain --------
              • -------- * --------
              • Set Temp_point = (Position of (Triggering unit))
              • -------- This is the corresponding terrain type to the dummy. --------
              • -------- if you dummy was created by whatever terrain being destroyed --------
              • -------- this should return it to the one it origionally was --------
              • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grass using variation -1 in an area of size 1 and shape Circle
              • -------- revival special effect --------
              • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to dummy Rock
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grass
              • Weakening_Option_Check Equal to 1
            • Then - Actions
              • Environment - Change terrain type at Temp_point to Lordaeron Summer - Rock using variation -1 in an area of size 1 and shape Circle
              • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grassy Dirt
                  • Weakening_Option_Check Equal to 1
                • Then - Actions
                  • -------- Above this is the dummy unit check, change this to match your terrain --------
                  • -------- This is the corresponding terrain type to the dummy. --------
                  • -------- if you dummy was created by whatever terrain being destroyed --------
                  • -------- this should return it to the one it origionally was --------
                  • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grass using variation -1 in an area of size 1 and shape Circle
                  • -------- revival special effect --------
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Create 1 dummy Rock for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Weakening_Option_Check Equal to 1
                    • Then - Actions
                      • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grassy Dirt using variation -1 in an area of size 1 and shape Circle
                      • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Create 1 dummy Rock for Neutral Passive at Temp_point facing Default building facing degrees
                      • Unit - Create 1 dummy grass for Neutral Passive at Temp_point facing Default building facing degrees
                    • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Weakening_Option_Check Equal to 0
            • Then - Actions
              • Environment - Change terrain type at Temp_point to Lordaeron Summer - Rock using variation -1 in an area of size 1 and shape Circle
              • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to dummy grassy dirt
        • Then - Actions
          • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grassy Dirt using variation -1 in an area of size 1 and shape Circle
          • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
          • Special Effect - Destroy (Last created special effect)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to dummy Dark grass
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain type at Temp_point) Equal to Lordaeron Summer - Rock
              • Weakening_Option_Check Equal to 1
            • Then - Actions
              • -------- Above this is the dummy unit check, change this to match your terrain --------
              • -------- This is the corresponding terrain type to the dummy. --------
              • -------- if you dummy was created by whatever terrain being destroyed --------
              • -------- this should return it to the one it origionally was --------
              • Environment - Change terrain type at Temp_point to Lordaeron Summer - Dark Grass using variation -1 in an area of size 1 and shape Circle
              • -------- revival special effect --------
              • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grass
                  • Weakening_Option_Check Equal to 1
                • Then - Actions
                  • Environment - Change terrain type at Temp_point to Lordaeron Summer - Rock using variation -1 in an area of size 1 and shape Circle
                  • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Create 1 dummy Dark grass for Neutral Passive at Temp_point facing Default building facing degrees
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Terrain type at Temp_point) Equal to Lordaeron Summer - Grassy Dirt
                      • Weakening_Option_Check Equal to 1
                    • Then - Actions
                      • -------- Above this is the dummy unit check, change this to match your terrain --------
                      • -------- This is the corresponding terrain type to the dummy. --------
                      • -------- if you dummy was created by whatever terrain being destroyed --------
                      • -------- this should return it to the one it origionally was --------
                      • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grass using variation -1 in an area of size 1 and shape Circle
                      • -------- revival special effect --------
                      • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Create 1 dummy Rock for Neutral Passive at Temp_point facing Default building facing degrees
                      • Unit - Create 1 dummy Dark grass for Neutral Passive at Temp_point facing Default building facing degrees
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Weakening_Option_Check Equal to 1
                        • Then - Actions
                          • Environment - Change terrain type at Temp_point to Lordaeron Summer - Grassy Dirt using variation -1 in an area of size 1 and shape Circle
                          • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
                          • Special Effect - Destroy (Last created special effect)
                          • Unit - Create 1 dummy Rock for Neutral Passive at Temp_point facing Default building facing degrees
                          • Unit - Create 1 dummy grass for Neutral Passive at Temp_point facing Default building facing degrees
                          • Unit - Create 1 dummy Dark grass for Neutral Passive at Temp_point facing Default building facing degrees
                        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Weakening_Option_Check Equal to 0
            • Then - Actions
              • Environment - Change terrain type at Temp_point to Lordaeron Summer - Dark Grass using variation -1 in an area of size 1 and shape Circle
              • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
        • Else - Actions
      • -------- Removes the peircing missile when it is destroyed --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to Peircing Missile
        • Then - Actions
          • -------- SFX --------
          • Special Effect - Create a special effect at Temp_point using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Remove (Triggering unit) from the game
          • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
          • Special Effect - Destroy (Last created special effect)
        • Else - Actions
      • -------- Beacon --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to Anti terrain beacon
        • Then - Actions
          • -------- SFX --------
          • Special Effect - Create a special effect at Temp_point using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
          • Special Effect - Destroy (Last created special effect)
          • Unit - Remove (Triggering unit) from the game
          • Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
          • Special Effect - Destroy (Last created special effect)
        • Else - Actions
      • -------- * --------
      • Custom script: call RemoveLocation(udg_Temp_point)
  • System controlls
    • Events
      • Player - Player 1 (Red) types a chat message containing - as A substring
      • Player - Player 2 (Blue) types a chat message containing - as A substring
      • Player - Player 3 (Teal) types a chat message containing - as A substring
      • Player - Player 4 (Purple) types a chat message containing - as A substring
      • Player - Player 5 (Yellow) types a chat message containing - as A substring
      • Player - Player 6 (Orange) types a chat message containing - as A substring
      • Player - Player 7 (Green) types a chat message containing - as A substring
      • Player - Player 8 (Pink) types a chat message containing - as A substring
      • Player - Player 9 (Gray) types a chat message containing - as A substring
      • Player - Player 10 (Light Blue) types a chat message containing - as A substring
      • Player - Player 11 (Dark Green) types a chat message containing - as A substring
      • Player - Player 12 (Brown) types a chat message containing - as A substring
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Entered chat string) Equal to -Stop
        • Then - Actions
          • Countdown Timer - Pause Intervals
          • Trigger - Turn off Firing anti terrain missile <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Entered chat string) Equal to -Start
        • Then - Actions
          • Countdown Timer - Start Intervals as a Repeating timer that will expire in 0.03 seconds
          • Trigger - Turn on Firing anti terrain missile <gen>
        • Else - Actions
  • Firing anti terrain missile
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to Anti Terrain Missile
        • Then - Actions
          • Set Temp_point = (Position of (Triggering unit))
          • Unit - Create 1 Anti Terrain Missile for Neutral Passive at Temp_point facing (Facing of (Triggering unit)) degrees
          • Custom script: call RemoveLocation(udg_Temp_point)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to Anti Terrain Missile (peicing)
        • Then - Actions
          • Set Temp_point = (Position of (Triggering unit))
          • Unit - Create 1 Peircing Missile for Neutral Passive at Temp_point facing (Facing of (Triggering unit)) degrees
          • Custom script: call RemoveLocation(udg_Temp_point)
        • Else - Actions


in this test map there is:

weaken mode:

type -weaken
this will activate terrain weakening. so it doesn't go straight from
rock -> BG
it'll go:
Rock -> Grass -> Grassy dirt -> BG
then recovery will do the same thing.
BG -> grassy dirt -> Grass -> rock

3 breakable terrains type.
1 unbreakble terrain type.

NEW
MISSILE HOMING BEACONS!
PIERCING MISSILE CAN NOW DESTROY THE UNBREAKABLE TERRAIN!

example times:

Footman:
Dark grass: unbreakable
Rock: 2:15 seconds
grass: 1:30 seconds
grassy dirt: 0:45 seconds

Seige Engine:
Darkgrass: Unbreakable
Rock: 0.45 seconds
Grass: 0.30 seconds
Grassy Dirt: 0.15 Seconds

Missiles:

Normal:
Darkgrass: unbreakable
Rock: Taken down a layer/destroyed
Grass: (same as above)
Grassy dirt: (same as above)

Piecre:
Darkgrass: Utterly destroyed
Rock: (same as above)
Grass: (same as above)
Grassy dirt: (Same as above)

documentation has been included.

Credit goes to Offgrpahic for helping making this system mui.


V1.55
Homing Beacons added
More documentation
Turn on/off command
Allowed the pierce missile to destroy the useually unbreakable terrain
V1.40
Removed an unused variable
Added movement detector
V1.35
Added peicing missile (player 1's seige tank)
Differant units now have differant weights (seige tank weight 3 times as much as footman)
V1.25
Added anti terrain missile
Added Weakening terrain option
Added some more documentation
Terrain cannot me instantyl destroyed as soon as it recovers.


Hope you enjoy it!
Give Credit if you use this system please. :)

Keywords:
Terrain, break, destroy, escape, 2d, generator, 2d generator, terrain break, smash, crush, nature, natural, erosion, weight, moving, movement, move, H
Contents

Terrain breaking system (Map)

Reviews
21:54, 21st Mar 2010 The_Reborn_Devil: Hmm, finally an original idea :D The triggering looks good and this is indeed useful for 2D and maybe even 3D maps. Maybe make it so terrain isn't "healed" when people are standing on it, but that's not...

Moderator

M

Moderator

21:54, 21st Mar 2010
The_Reborn_Devil:

Hmm, finally an original idea :D
The triggering looks good and this is indeed useful for 2D and maybe even 3D maps. Maybe make it so terrain isn't "healed" when people are standing on it, but that's not required.


Status: Approved
Rating: Useful
 
you set which terrains area breakble, so technically you can make it work on any terrain but it doesn't have to.
DooDads are not effected by terrain break.

I shall also post what i'm adding here for the system as referance:
Terrain weakening (basically goes rock, grass, grassydirt, bg, this will be a second option for it and will be able to be set via typing '-weaken'
(completed)

Anti terrain missile (fires a missile which will continuall move, if it comes into contact with a terrain other than you bg (will work with multiple bg's) it will blow up and destroy that terrain.
(Completed)

Peicing missile (very simple edit, baisically peicing missile goes through the terrain (if this is used at the same time as the weaken it will just mange to go through 1, if used wihtout it will destroy 4, (lasts only so long untill death)
(Completed)

Differant units have differant weights
(Completed)

Awaiting suggestions.
 
Last edited:
Level 9
Joined
May 9, 2009
Messages
536
oh gratz, now were gonna get another swarm of these. first, someone made a jump system and theres a million of them now. second, inventories, then missiles, then combats, then projectiles with arcs... now where gonna have a million of these.

OMFG 4/5! very original. you sir, deserve a cookie.
 
Mind explaining what wasn't working always? (yes I know the missiles are pretty terrible although given a few minutes I'd have them working much better, but they are also extras and not really part of the "system") the system itself has always worked. on a side note: if it /wasn't/ useful then I wouldn't have been asked to have made it in the first place
 
Top