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

Problem with cliff level detection

Status
Not open for further replies.
Level 7
Joined
May 30, 2018
Messages
290
I made this trigger

  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain cliff level at loc_Shrine) Equal to 2
            • Then - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_loc_Shrine)
              • Set VariableSet PingLocation = (Position of (Last created unit))
              • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
              • Custom script: call RemoveLocation(udg_PingLocation)
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_loc_Shrine)
              • Set VariableSet PingLocation = (Position of (Last created unit))
              • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
              • Custom script: call RemoveLocation(udg_PingLocation)
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_loc_Shrine)
              • Set VariableSet PingLocation = (Position of (Last created unit))
              • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
              • Custom script: call RemoveLocation(udg_PingLocation)
            • Else - Actions
          • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)
And it works as intended, except the cliff level part. The structures also spawn on top of the cliffs (which they shouldn't) and I don't know why exactly. Maybe somebody can help out and tell me where I made the mistake!
 
Last edited:
Level 24
Joined
Jun 26, 2020
Messages
1,852
Thats because you are changing the variable of the point of the spawning, you must correct this to:
  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • For each (Integer "Your Integer") from 1 to 3 do (Actions):
            • Loop - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain cliff level at loc_Shrine) Equal to 2
                • Then - Actions
                  • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
                  • Set VariableSet PingLocation = (Position of (Last created unit))
                  • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
                  • Custom script: call RemoveLocation(udg_PingLocation)
                • Else - Actions
              • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)
 
Last edited:
Level 7
Joined
May 30, 2018
Messages
290
Thats because you are changing the variable of the point of the spawning, you must correct this to:
  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • For each (Integer "Your Integer") from 1 to 3 do (Actions):
            • Loop - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain cliff level at loc_Shrine) Equal to 2
                • Then - Actions
                  • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
                  • Set VariableSet PingLocation = (Position of (Last created unit))
                  • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
                  • Custom script: call RemoveLocation(udg_PingLocation)
                • Else - Actions
              • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)

Wow thanks, I didn't even realize I could simplify this whole thing via interger loop...thanks man !
 
Level 7
Joined
May 30, 2018
Messages
290
Thats because you are changing the variable of the point of the spawning, you must correct this to:
  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • For each (Integer "Your Integer") from 1 to 3 do (Actions):
            • Loop - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain cliff level at loc_Shrine) Equal to 2
                • Then - Actions
                  • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
                  • Set VariableSet PingLocation = (Position of (Last created unit))
                  • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
                  • Custom script: call RemoveLocation(udg_PingLocation)
                • Else - Actions
              • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)

Hey man, I now tried your trigger suggestion, but something weird happens: After the timer expires it spawns 1 Shrine, then the next time 2, then 3 and so on
I want them to spawn simultaneously.

Here is my trigger

  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • For each (Integer Integer_Artifact) from 1 to 3, do (Actions)
            • Loop - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain cliff level at loc_Shrine) Equal to 2
                • Then - Actions
                  • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
                  • Set VariableSet PingLocation = (Position of (Last created unit))
                  • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
                  • Custom script: call RemoveLocation(udg_PingLocation)
                • Else - Actions
              • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)
 
Level 24
Joined
Jun 26, 2020
Messages
1,852
Hey man, I now tried your trigger suggestion, but something weird happens: After the timer expires it spawns 1 Shrine, then the next time 2, then 3 and so on
I want them to spawn simultaneously.

Here is my trigger

  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • For each (Integer Integer_Artifact) from 1 to 3, do (Actions)
            • Loop - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain cliff level at loc_Shrine) Equal to 2
                • Then - Actions
                  • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
                  • Set VariableSet PingLocation = (Position of (Last created unit))
                  • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
                  • Custom script: call RemoveLocation(udg_PingLocation)
                • Else - Actions
              • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)
That always happens or just sometimes?
 
Level 7
Joined
May 30, 2018
Messages
290
I'm not sure, in fact it would be weird if this was the reason, but try deleting the minimap ping just for test, if it is not, I think the problem is other that I will tell you.

Just out of curiousity , how do i properly set up the integer (Integer_Artifact) or can I just use it without set-up?
 
Level 24
Joined
Jun 26, 2020
Messages
1,852
My second option is in the condition "Terrain cliff level Equal to 2" when you do "Random point in region" that point must satisfy that condition or the unit won't spawn, so if you wanna spawn 3 of your units yes or yes, the unique option is using loops, but that is only avaible in JASS so you must use custom script:
  • Set Temp_Loc=Random point in region
  • Custom script: loop
  • Custom script: exitwhen Terrain cliff level of Temp_Loc=2 (I don't know the equivalent in JASS)
  • Custom script: call RemoveLocation(udg_Temp_Loc)
  • Set Temp_Loc=Random point in region
  • Custom script: endloop
 
Level 7
Joined
May 30, 2018
Messages
290
My second option is in the condition "Terrain cliff level Equal to 2" when you do "Random point in region" that point must satisfy that condition or the unit won't spawn, so if you wanna spawn 3 of your units yes or yes, the unique option is using loops, but that is only avaible in JASS so you must use custom script:
  • Set Temp_Loc=Random point in region
  • Custom script: loop
  • Custom script: exitwhen Terrain cliff level of Temp_Loc=2 (I don't know the equivalent in JASS)
  • Custom script: call RemoveLocation(udg_Temp_Loc)
  • Set Temp_Loc=Random point in region
  • Custom script: endloop

mhh interesting Ill need to have a look into that, kinda hard for me to understand, but I will try!
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,539
Actually, on second thought it sounds like it's working as intended. It's finding 1 valid point the first time, then 2 valid points the second time, then 3.

There's a bug with Reforged that is causing the RNG (Seed) to be fixed. Meaning every time you test your map you're going to experience the same exact RNG.

Luckily, this is getting fixed in the next patch.
 
Level 7
Joined
May 30, 2018
Messages
290
Actually, on second thought it sounds like it's working as intended. It's finding 1 valid point the first time, then 2 valid points the second time, then 3.

There's a bug with Reforged that is causing the RNG (Seed) to be fixed. Meaning every time you test your map you're going to experience the same exact RNG.

Luckily, this is getting fixed in the next patch.

Sounds weird, but I understand...guess its the waiting game again...sigh
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,539
Sounds weird, but I understand...guess its the waiting game again...sigh
Don't worry, the RNG seed is still properly randomized when you host the game on bnet and LAN. It'll only cause problems for you while testing in the editor.

So this Fixed Seed setting can be found in the Editor's preferences, see the picture I attached. It's a useful feature to be able to toggle it on and off.

Let's say if you wanted to test something consistently, you may want to turn the RNG "off". It's just that it's stuck to ON right now is the problem.
 

Attachments

  • ex.png
    ex.png
    2.1 MB · Views: 26
Last edited:
Level 7
Joined
May 30, 2018
Messages
290
Don't worry, the RNG seed is still properly randomized when you host the game on bnet and LAN. It'll only cause problems for you while testing in the editor.

I noticed that, because I already hosted on BNET and there it always worked properly, at least the random spawn aspect. But thanks for mentioning :)

Only the part with the cliff level detection + simultanous spawn of multiple structures doesn't work :s
 
Level 7
Joined
May 30, 2018
Messages
290
But how are you sure it isn't working? It's picking 3 random points, and if those points aren't Cliff level 2 then nothing will spawn for them. It's doing this for each Altar.

Ah I see what you mean. What I meant was: I always would like to spawn 3 structures (in any case) so lets say, if it detects a higher cliff level , i'd like it to spawn the structure elsewhere, where the cliff level is accurate. I hope you understand what I mean.

With my old method

  • Artifact
    • Events
      • Time - CountdownTimer_Artifact expires
    • Conditions
    • Actions
      • Set VariableSet Group_Stalacmite = (Units of type Ancient Shrine)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Group_Stalacmite) Less than 6
        • Then - Actions
          • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
          • Game - Display to (All players) the text: |cffff0000Rare, pow...
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain cliff level at loc_Shrine) Equal to 2
            • Then - Actions
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_loc_Shrine)
              • Set VariableSet PingLocation = (Position of (Last created unit))
              • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
              • Custom script: call RemoveLocation(udg_PingLocation)
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_loc_Shrine)
              • Set VariableSet PingLocation = (Position of (Last created unit))
              • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
              • Custom script: call RemoveLocation(udg_PingLocation)
              • Set VariableSet loc_Shrine = (Random point in Cave Spawn <gen>)
              • Unit - Create 1 Ancient Shrine for Player 14 (Navy) at loc_Shrine facing Default building facing degrees
              • Custom script: call RemoveLocation(udg_loc_Shrine)
              • Set VariableSet PingLocation = (Position of (Last created unit))
              • Cinematic - Ping minimap for (All players) at PingLocation for 7.00 seconds
              • Custom script: call RemoveLocation(udg_PingLocation)
            • Else - Actions
          • Custom script: call RemoveLocation(udg_loc_Shrine)
        • Else - Actions
      • Custom script: call DestroyGroup(udg_Group_Stalacmite)
It actually creates 3 Shrines simultaneously, but it is not regarding the cliff level, so they are partially created on high cliffs, which I don't really want :I
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,539
I understand now, so when a Point fails because it's not cliff level 2, you want to try again, and again, and again, until it finds a safe and usable point. Guaranteeing that all 3 altars ALWAYS spawn.

This can be very tricky because you aren't guaranteed to find a safe point. That's RNG for you, there's always the chance that it could take 500,000 attempts to find one.

A nice way to get around this would be to have some extra regions that were always safe to spawn in. So when an Altar fails to spawn, you instead pick one of these regions at random, pick a point in said region at random, and spawn the Altar there.

Additionally, you could design it so that the trigger attempts to find a safe point in your Cave region up to let's say 10 times before it gives up and resorts to one of those "safe" regions I just mentioned. With a setup like this it'll greatly increase the odds that the Altars spawn somewhere genuinely random, and in those rare cases when it fails, they'll still feel somewhat random since those "safe" regions are still randomized.

Shrine* not Altar.
 
Last edited:
Level 7
Joined
May 30, 2018
Messages
290
I understand now, so when a Point fails because it's not cliff level 2, you want to try again, and again, and again, until it finds a valid point. Guaranteeing that all 3 altars ALWAYS spawn.

This can be very tricky because you aren't guaranteed to find a valid point. That's RNG for you, there's always the chance that it could take 500,000 attempts to find one.

A nice way to get around this would be to have some extra regions that were always safe to spawn in. So when an Altar fails to spawn, you instead pick one of these regions at random, pick a point in said region at random, and spawn the Altar there.

Additionally, you could design it so that the trigger attempts to find a valid point in your Cave region up to let's say 10 times before it gives up and resorts to one of those "safe" regions I just mentioned. With a setup like this it'll greatly increase the odds that the Altars spawn somewhere genuinely random, and in those rare cases when it fails, they'll still feel somewhat random since those "safe" regions are still randomized.
Ill Try that :D
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,539
  • Artifact Timer
    • Events
      • Time - Art_Timer expires
    • Conditions
    • Actions
      • Set VariableSet Art_Shrines = 3
      • Set VariableSet Art_Attempts = 10
      • For each (Integer Art_Loop) from 1 to Art_Attempts, do (Actions)
        • Loop - Actions
          • Set VariableSet Art_Point = (Random point in (Playable map area))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain cliff level at Art_Point) Equal to 2
            • Then - Actions
              • Unit - Create 1 Shrine for Player 1 (Red) at Art_Point facing Default building facing degrees
              • Custom script: call RemoveLocation (udg_Art_Point)
              • Set VariableSet Art_Shrines = (Art_Shrines - 1)
              • Set VariableSet Art_Loop = 0
              • Custom script: exitwhen udg_Art_Shrines == 0
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Art_Loop Equal to Art_Attempts
                • Then - Actions
                  • Set VariableSet Art_Point = (Random point in Art_Safe_Region[(Random integer number between 1 and 4)])
                  • Unit - Create 1 Shrine for Player 1 (Red) at Art_Point facing Default building facing degrees
                  • Custom script: call RemoveLocation (udg_Art_Point)
                  • Set VariableSet Art_Shrines = (Art_Shrines - 1)
                  • Set VariableSet Art_Loop = 0
                  • Custom script: exitwhen udg_Art_Shrines == 0
                • Else - Actions
                  • Custom script: call RemoveLocation (udg_Art_Point)
  • Artifact Setup
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Countdown Timer - Start Art_Timer as a Repeating timer that will expire in 5.00 seconds
      • Set VariableSet Art_Safe_Region[1] = Safe1 <gen>
      • Set VariableSet Art_Safe_Region[2] = Safe2 <gen>
      • Set VariableSet Art_Safe_Region[3] = Safe3 <gen>
      • Set VariableSet Art_Safe_Region[4] = Safe4 <gen>

Variables:
Art_Loop = Integer
Art_Attempts = Integer
Art_Shrines = Integer
Art_Point = Point
Art_Safe_Region = Region (Array) <-- These are those "safe" regions that I was talking about that you'd place in areas that have a cliff level of 2.

So the Loop attempts to find a safe and usable point up to 10 times for each Shrine. If it fails to find a safe point then it spawns the Shrine inside one of the safe Regions.

You would place these safe regions on Cliff Level 2 so that they will always work. You can see that in my example I pick 1 of 4 Safe regions at random. You could create as many as you'd like, I just went with 4 because it seemed reasonable.

Also, you can increase the number of Attempts for each Shrine. With a value of 10, the worst case scenario would be the Loop running 3*10 times (30 times total), which is fairly easy to process.

But if you increase this value too much then you will definitely see a performance hit, at least in the cases when luck isn't in your favor.
 

Attachments

  • Artifact Loop Example.w3m
    22.4 KB · Views: 16
Last edited:
Level 24
Joined
Jun 26, 2020
Messages
1,852
  • Artifact Timer
    • Events
      • Time - Art_Timer expires
    • Conditions
    • Actions
      • Set VariableSet Art_Shrines = 3
      • Set VariableSet Art_Attempts = 10
      • For each (Integer Art_Loop) from 1 to Art_Attempts, do (Actions)
        • Loop - Actions
          • Set VariableSet Art_Point = (Random point in (Playable map area))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain cliff level at Art_Point) Equal to 2
            • Then - Actions
              • Unit - Create 1 Shrine for Player 1 (Red) at Art_Point facing Default building facing degrees
              • Custom script: call RemoveLocation (udg_Art_Point)
              • Set VariableSet Art_Shrines = (Art_Shrines - 1)
              • Set VariableSet Art_Loop = 0
              • Custom script: exitwhen udg_Art_Shrines == 0
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Art_Loop Equal to Art_Attempts
                • Then - Actions
                  • Set VariableSet Art_Point = (Random point in Art_Safe_Region[(Random integer number between 1 and 4)])
                  • Unit - Create 1 Shrine for Player 1 (Red) at Art_Point facing Default building facing degrees
                  • Custom script: call RemoveLocation (udg_Art_Point)
                  • Set VariableSet Art_Shrines = (Art_Shrines - 1)
                  • Set VariableSet Art_Loop = 0
                  • Custom script: exitwhen udg_Art_Shrines == 0
                • Else - Actions
                  • Custom script: call RemoveLocation (udg_Art_Point)
  • Artifact Setup
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • Countdown Timer - Start Art_Timer as a Repeating timer that will expire in 5.00 seconds
      • Set VariableSet Art_Safe_Region[1] = Safe1 <gen>
      • Set VariableSet Art_Safe_Region[2] = Safe2 <gen>
      • Set VariableSet Art_Safe_Region[3] = Safe3 <gen>
      • Set VariableSet Art_Safe_Region[4] = Safe4 <gen>

Variables:
Art_Loop = Integer
Art_Attempts = Integer
Art_Shrines = Integer
Art_Point = Point
Art_Safe_Region = Region (Array) <-- These are those "safe" regions that I was talking about that you'd place in areas that have a cliff level of 2.

So the Loop attempts to find a safe and usable point up to 10 times for each Shrine. If it fails to find a safe point then it spawns the Shrine inside one of the safe Regions.

You would place these safe regions on Cliff Level 2 so that they will always work. You can see that in my example I pick 1 of 4 Safe regions at random. You could create as many as you'd like, I just went with 4 because it seemed reasonable.

Also, you can increase the number of Attempts for each Shrine. With a value of 10, the worst case scenario would be the Loop running 3*10 times (30 times total), which is fairly easy to process.

But if you increase this value too much then you will definitely see a performance hit, at least in the cases when luck isn't in your favor.
Ah yes, I forget the possibility of take a lot of attemps to get the correct point, so its better give it a limit, but in that case not always will spawn 3, I say for you know @Mechcash.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,539
Ah yes, I forget the possibility of take a lot of attemps to get the correct point, so its better give it a limit, but in that case not always will spawn 3, I say for you know @Mechcash.
Yeah, the game could end up freezing while it tries over and over again to find a working point. That's why in my setup I give up after 10 tries and instead spawn the Shrine in one of the pre-made "safe" Regions. The odds are heavily in the favor of getting an actual random point though, so it works out well.
 
Last edited:
Status
Not open for further replies.
Top