- Joined
- Feb 28, 2013
- Messages
- 1,897
Hello, I made this trigger for my map, I just want to consult to you guys if it is actually good or it can be optimized abit more.
I saved the points of the destructibles at the array so that the destructible will not spawn at the same spot.
Edit: Actually it still doesn't work, destructible/s still spawn/s on top of another destructible (see attachment). I'll try to fix it, brb
I saved the points of the destructibles at the array so that the destructible will not spawn at the same spot.
-
Dev Arena Detect
-
Events
- Player - Player 1 (Red) skips a cinematic sequence
- Unit - A unit enters Arena Detect Player <gen>
- Conditions
-
Actions
- -------- --------
- -------- Debug --------
- Game - Display to (All players) the text: Randomized
- -------- --------
- -------- Setup --------
- Set Arena_DesCountMax = 20
- Set Arena_DesCountCurrent = 0
- Set Arena_SimilarPointCheck = False
- -------- --------
- -------- Clear the area --------
-
Destructible - Pick every destructible in Arena Detect Player <gen> and do (Actions)
-
Loop - Actions
- Destructible - Remove (Picked destructible)
-
Loop - Actions
- -------- --------
- -------- Clear the points --------
-
For each (Integer A) from 1 to Arena_DesCountMax, do (Actions)
-
Loop - Actions
- Set Arena_DesPointArraySaved[(Integer A)] = (Point(0.00, 0.00))
-
Loop - Actions
- -------- --------
- -------- Generate Objects --------
- Trigger - Run Dev Arena Generate <gen> (ignoring conditions)
-
Events
-
Dev Arena Generate
- Events
- Conditions
-
Actions
- -------- --------
- -------- Check if objects is below or equal the max --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Arena_DesCountCurrent Less than or equal to Arena_DesCountMax
-
Then - Actions
- -------- --------
- -------- Check if the point is already taken --------
- Set Arena_DesPoint = (Random point in Arena Spawn Doods <gen>)
-
For each (Integer A) from 1 to Arena_DesCountMax, 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
- (X of Arena_DesPointArraySaved[(Integer A)]) Equal to (X of Arena_DesPoint)
- (Y of Arena_DesPointArraySaved[(Integer A)]) Equal to (Y of Arena_DesPoint)
-
Conditions
-
And - All (Conditions) are true
-
Then - Actions
- Set Arena_SimilarPointCheck = True
-
Else - Actions
- Do nothing
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- -------- --------
- -------- Rerun trigger without increment if point already exists, otherwise generate objects --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Arena_SimilarPointCheck Equal to True
-
Then - Actions
- -------- --------
- -------- Debug --------
- Game - Display to (All players) the text: Same Point
- -------- --------
- -------- Run again --------
- Trigger - Run (This trigger) (ignoring conditions)
-
Else - Actions
- -------- --------
- -------- Debug --------
- Game - Display to (All players) the text: Generated
- -------- --------
- -------- Randomize object models --------
- Set Arena_DesRandomDes = (Random integer number between 1 and 2)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Arena_DesRandomDes Equal to 1
-
Then - Actions
- Destructible - Create a #B02_ArenaBarrel at Arena_DesPoint facing (Random angle) with scale 3.00 and variation 0
-
Else - Actions
- Destructible - Create a #B02_ArenaBarrel2 at Arena_DesPoint facing (Random angle) with scale 3.00 and variation 0
-
If - Conditions
- -------- --------
- -------- Save the point as taken --------
- Set Arena_DesPointArraySaved[Arena_DesCountCurrent] = (Point((X of (Position of (Last created destructible))), (Y of (Position of (Last created destructible)))))
- -------- --------
- -------- Increment --------
- Set Arena_DesCountCurrent = (Arena_DesCountCurrent + 1)
- -------- --------
- -------- Run again --------
- Trigger - Run (This trigger) (ignoring conditions)
-
If - Conditions
-
Else - Actions
- Custom script: call RemoveLocation(udg_Arena_DesPoint)
- Set Arena_DesCountCurrent = 0
-
For each (Integer A) from 1 to Arena_DesCountMax, do (Actions)
-
Loop - Actions
- Custom script: call RemoveLocation(udg_Arena_DesPointArraySaved[udg_Arena_DesCountCurrent])
-
Loop - Actions
- Set Arena_DesCountCurrent = 0
-
If - Conditions
Edit: Actually it still doesn't work, destructible/s still spawn/s on top of another destructible (see attachment). I'll try to fix it, brb
Attachments
Last edited: