0% found this document useful (0 votes)
150 views3 pages

Noita Seed Tool

This function allows starting the game Noita from PowerShell with options to set a specific seed value or start in dev mode. It can also unpack data. The function has documentation in comments and examples of usage.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
150 views3 pages

Noita Seed Tool

This function allows starting the game Noita from PowerShell with options to set a specific seed value or start in dev mode. It can also unpack data. The function has documentation in comments and examples of usage.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

function Start-Noita {

<#
.SYNOPSIS
Starts Noita from a PowerShell prompt, optionally with a specific set seed
for a new game.

.DESCRIPTION
To use this function, copy and paste the complete function definition into
a PowerShell
session, and then invoke it with `Start-Noita`. Supply `-Seed somevalue` if
you would like
to run a specific seed (see the examples below).

.EXAMPLE
PS> Start-Noita

Starts Noita normally.

.EXAMPLE
PS> Start-Noita -Seed 1

Starts Noita with a fixed seed value of 1.

.EXAMPLE
PS> Start-Noita -Seed 1 -Path C:\Noita\noita.exe

Starts Noita from the requested location with a fixed seed value of 1.
Use this form if your copy of Noita was not installed via Steam, or modify
the default
setting for $Path below before loading the function into your PowerShell
session.

.NOTES
If you want, you can load this function into your PowerShell profile as
follows:

1. Copy the entire function definition from top to bottom to your Windows
clipboard (Ctrl+C).
2. Run the following code in PowerShell:

Get-Clipboard | Add-Content -Path $profile

3. Close and reopen PowerShell to load the newly modified profile.


4. Run `Start-Noita` directly as needed. It will be automatically loaded in
any future PowerShell sessions.
#>
[CmdletBinding(DefaultParameterSetName = 'Default')]
param(
[Parameter()]
[string]
$Path = "C:\Program Files (x86)\Steam\steamapps\common\Noita",

[Parameter(Position = 0, ParameterSetName = 'Default')]


[long]
$Seed,

[Parameter(ParameterSetName = 'Default')]
[switch]
$DevMode,
[Parameter(Mandatory, ParameterSetName = 'Unpack')]
[switch]
$UnpackData
)

$noitaArgs = @()
$noitaFolder = $Path | Split-Path -Parent

if ($Seed) {
$xml = [System.Xml.XmlDocument]::new()
$node = $xml.CreateElement('MagicNumbers')
$xml.AppendChild($node) > $null
$blank = $xml.CreateTextNode([Environment]::NewLine)
$node.AppendChild($blank) > $null
$node.SetAttribute('WORLD_SEED', $Seed)
$node.SetAttribute('_DEBUG_DONT_LOAD_OTHER_MAGIC_NUMBERS', 1)
$node.SetAttribute('_DEBUG_DONT_SAVE_MAGIC_NUMBERS', 1)

$magicPath = $Path | Join-Path -ChildPath 'magic.txt'


$sb = [System.Text.StringBuilder]::new()
$xmlWriter = [System.Xml.XmlWriter]::Create(
$sb,
@{
Indent = $true
NewLineOnAttributes = $true
OmitXmlDeclaration = $true
}
)
$xml.Save($xmlWriter)
$xmlText = $sb.ToString()
Write-Verbose $xmlText
$xmlText | Set-Content -Path $magicPath

$noitaArgs = @(
'-no_logo_splashes'
'-magic_numbers', 'magic.txt'
)
}
elseif ($UnpackData) {
$noitaArgs = @(
'-wizard_unpak'
)
}

$filename = if ($DevMode) {
'noita_dev.exe'
}
else {
'noita.exe'
}

$executable = Join-Path $Path -ChildPath $filename

try {
Push-Location $Path
& $executable @noitaArgs
}
finally {
Pop-Location
}
}

You might also like