Spawn trigger not working correctly

Reaction score
149
I have a trigger that is supposed to spawn some boxes around, and it all should work out like this:
Code:
O O O O
O     O
O     O
O O O O

yet, it just spawns 3 boxes in a row, additional 1 box on top of those three and then spawns all other on a weird pattern in the middle of the map.

Here is the trigger:
Code:
Constructing
    Events
        Unit - A unit Begins construction
    Conditions
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Unit-type of (Constructing structure)) Equal to Small Wooden Citadel
            Then - Actions
                Set tempCPoint = (Position of (Constructing structure))
                Unit - Remove (Constructing structure) from the game
                Set tempPoint = (tempCPoint offset by (128.00, -128.00))
                Set tempInt = 4
            Else - Actions
        -------- Build --------
        For each (Integer A) from 1 to 4, do (Actions)
            Loop - Actions
                For each (Integer B) from 1 to tempInt, do (Actions)
                    Loop - Actions
                        Set bPoint = (tempPoint offset by (Real(((Integer B) x 32))) towards (Real((((Integer A) x 1) x 90))) degrees)
                        Unit - Create 1 Wooden Wall for (Owner of (Triggering unit)) at bPoint facing ((Real((Integer A))) x 90.00) degrees
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (Integer B) Equal to tempInt
                            Then - Actions
                                Custom script:   call RemoveLocation(udg_tempPoint)
                                Set tempPoint = bPoint
                            Else - Actions
                        Custom script:   call RemoveLocation(udg_bPoint)

Can anyone see the mistake I made?
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
888
First, I would say give us a screenshot and upload the map. It's kind of difficult to tell what it does versus what you want.

Second, here:

Code:
Custom script:   call RemoveLocation(udg_tempPoint)

This will get rid of that variable after only the first pass, so it won't work on subsequent Integer A loops.
 
Reaction score
149
Code:
 Custom script:   call RemoveLocation(udg_tempPoint)
 Set tempPoint = bPoint

Actually, this resets the tempPoint to the next corner of the shape, doesn't it?

All it is supposed to do is to spawn a square of boxes around some point.
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
888
temppoint does not get set in the loop. Therefore, when it is destroyed, it will not work again until it is set again.
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
888
Well, I think it does, but then when you destroy bPoint, it destoys the temppoint, too since they are equal to each other. I could be wrong, though.

I still don't know what it's doing versus what it should be doing.
 

Azylaminaz

Vox Populi
Reaction score
91
When a point is set to a point, it sets it to the point's coordinates(I just tested it).

Lol, that sounds complicated, follow this:
P1 = 0,0
P2 = P1
P1 = 50,50
P1 will be 50,50, and P2 will be 0,0.

Following this, I doubt it will delete both points.

Code:
Trigger I tested this with:
Untitled Trigger 001
    Events
        Time - Every 1.00 seconds of game time
    Conditions
        ((Triggering unit) is selected by Player 1 (Red)) Equal to True
    Actions
        Set Location[0] = (Point(0.00, 0.00))
        Set Location[1] = Location[0]
        Set Location[0] = (Point(50.00, 50.00))
        Game - Display to (All players) the text: (Location 0:  + ((String((X of Location[0]))) + (,  + ((String((Y of Location[0]))) + .))))
        Game - Display to (All players) the text: (Location 1:  + ((String((X of Location[1]))) + (,  + ((String((Y of Location[1]))) + .))))
 

Ghan

Administrator - Servers are fun
Staff member
Reaction score
888
But, as AceHart has said, destroying a variable deletes the content, not the variable. I don't really know, though.
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
> Set Location[0] = (Point(0.00, 0.00))

Creates a new point, stores it in "Location[0]".

> Set Location[1] = Location[0]

Copies the handle of Location[0] to Location[1].
At this point, both locations reference the very same point.
Destroying one will render both unusable.

> Set Location[0] = (Point(50.00, 50.00))

This creates a new point...
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top