42 lines
1.6 KiB
Go
42 lines
1.6 KiB
Go
package nmslib
|
||
|
||
import (
|
||
"fmt"
|
||
"math/rand"
|
||
"time"
|
||
)
|
||
|
||
/*
|
||
[P][SSS][YY][ZZZ][XXX] – (P = Planet Index / S = Star System Index / Y = Height / Z = Width / X = Length)
|
||
|
||
`Solar System Index
|
||
A Solar System Index is assigned to each star system in a region. It always begins at SolarSystemIndex=001
|
||
and counts up by one for every star system. The number of star systems in a region is variable so the
|
||
maximum value of the Solar System Index is also variable, though the two correspond directly. To date there
|
||
is no discovered value that is higher than SolarSystemIndex=243 (Mamundi-Kate in the Baadossm Anomaly of
|
||
Euclid galaxy), meaning that 579 is the maximum number of star systems yet discovered in a region. Based
|
||
on the evidence that every region has a SolarSystemIndex=079 and SolarSystemIndex=07A (with the former
|
||
always having a Black Hole and the latter always having an Atlas Station), it is known that every region has
|
||
at least 122 star systems. SolarSystemIndex=000 always leads to the region's first system, just like
|
||
PlanetIndex=0 always leads to the first portal of a system due to the error proximity mechanic.`
|
||
Source https://nomanssky.fandom.com/wiki/Portal_address#Solar_System_Index
|
||
|
||
*/
|
||
|
||
func RndPortal() (final string) {
|
||
rand.Seed(time.Now().UnixNano())
|
||
min := 0x1
|
||
ymax := 0xFF
|
||
xzmax := 0xFFF
|
||
ssimax := 0x242 // set this low to lower chances of an invalid address
|
||
|
||
x := rand.Intn(xzmax-min+1) + min
|
||
z := rand.Intn(xzmax-min+1) + min
|
||
y := rand.Intn(ymax-min+1) + min
|
||
ssi := rand.Intn(ssimax-min+1) + min
|
||
|
||
final = fmt.Sprintf("%00X%03X%02X%03X%03X", 1, ssi, y, z, x)
|
||
|
||
return
|
||
}
|