Loops and TerraGen - Looping for ...

Cokemonkey11

New Member
Reaction score
18
[GUI] Loops and TerraGen - Looping for >30 not working?

Is there something wrong with my math? Because when I create a loop that goes from 0-359 or 3 loops from 0-120, 121-240, 241-359, it still just seems to work from 0-30 or so.

Here is my trigger:

JASS:
terrain2
    Events
    Conditions
        (Terrain type at pointTerrainTemporary) Equal to (==) Cityscape - Grass Trim
    Actions
        Environment - Create a 0.01 second Permanent crater deformation at pointTerrainTemporary with radius (Real(integerRadiusTemporary)) and depth ((Real(integerMultiplier)) x (Real(integerCliffHeightTemporary)))
         Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                integerMultiplier Equal to (==) -1
            Then - Actions
                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        integerCliffHeightTemporary Less than or equal to (<=) 175
                    Then - Actions
                        Environment - Change terrain type at pointTerrainTemporary to Sunken Ruins - Grass using variation -1 in an area of size (integerRadiusTemporary / 150) and shape Circle
                    Else - Actions
                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        integerCliffHeightTemporary Greater than or equal to (>=) 176
                        integerCliffHeightTemporary Less than or equal to (<=) 200
                    Then - Actions
                        Environment - Change terrain type at pointTerrainTemporary to Icecrown Glacier - Snow using variation -1 in an area of size (integerRadiusTemporary / 150) and shape Circle
                    Else - Actions
                 Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        integerCliffHeightTemporary Greater than or equal to (>=) 201
                    Then - Actions
                        Environment - Change terrain type at pointTerrainTemporary to Lordaeron Summer - Rock using variation -1 in an area of size (integerRadiusTemporary / 150) and shape Circle
                    Else - Actions
                -------- - --------
                 Do Multiple ActionsFor each (Integer A) from 0 to 359, do (Actions)
                    Loop - Actions
                         Do Multiple ActionsFor each (Integer B) from 0 to (integerRadiusTemporary / 16), do (Actions)
                            Loop - Actions
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Floatability to Off
            Else - Actions
                Environment - Change terrain type at pointTerrainTemporary to Sunken Ruins - Dirt using variation -1 in an area of size (integerRadiusTemporary / 128) and shape Circle
                 Do Multiple ActionsFor each (Integer A) from 0 to 120, do (Actions)
                    Loop - Actions
                         Do Multiple ActionsFor each (Integer B) from 0 to (integerRadiusTemporary / 16), do (Actions)
                            Loop - Actions
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Buildability to Off
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Walkability to Off
                 Do Multiple ActionsFor each (Integer A) from 121 to 240, do (Actions)
                    Loop - Actions
                         Do Multiple ActionsFor each (Integer B) from 0 to (integerRadiusTemporary / 16), do (Actions)
                            Loop - Actions
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Buildability to Off
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Walkability to Off
                 Do Multiple ActionsFor each (Integer A) from 241 to 359, do (Actions)
                    Loop - Actions
                         Do Multiple ActionsFor each (Integer B) from 0 to (integerRadiusTemporary / 16), do (Actions)
                            Loop - Actions
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Buildability to Off
                                Environment - Set terrain pathing at (pointTerrainTemporary offset by ((Real((Integer B))) x 16.00) towards ((Real((Integer A))) x 1.00) degrees) of type Walkability to Off


and here is the result in-game when using a positive multiplier (crater goes down, triggers buildability/walkability actions)

2521080d31a5e5a672ef645a5553173ea7f8aed6.png


I can't figure out what i'm doing wrong, weather it's a mathematical miscalculation, a limit of GUI, or if I'm just plain doing it wrong.

Thanks for any help.

Edit - changed code tags to jass tags to help readability, even though it is only GUI.
 

cleeezzz

The Undead Ranger.
Reaction score
268
try using For Integer Variable instead. (assign a new integer variable for each loop)

example

Code:
For Integer (Temp_Int) from 0 - 359, do actions
     loop actions
           Set hi[Temp_Int] = 0
use a different integer for each one. so the next loop would use
Code:
For Integer (Temp_Int2) from 0 - 359, do actions
     loop actions
           Set hi[Temp_Int] = 1
make sure you dont use Temp_Int or Temp_Int2 in any other loop or variable.


the reason for this is Integer A can bug if two of them run at the same time. integer variable loops prevents this (as long as you use different variables)
 

Weyrling

New Member
Reaction score
25
I don't see any specific problems, but I know that the 'permanent deformation' action isn't perfectly precise.
 

vypur85

Hibernate
Reaction score
803
If I'm not mistaken, a single trigger has a limit to only handle a set number of actions. Probably your action number has exceeded the number. Was it 15,000? Not sure. Got this from Ace.

Also, try adding some game text to see whether the actions have really run or not. It could be due to your conditions as well.
 

Cokemonkey11

New Member
Reaction score
18
I've gotten it to work through a number of your fixes.

I split the trigger up into multiple triggers, reducing actions per second with periodic events, custom GUI loops, etc etc.

Reps for you all and hopefully this system will be usable on any map soon.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top