Dungeons & PowerShell

Dungeons & PowerShell

 05.02.2017,  02.01.2020 -  Sebastian Pech -  ~3 Minuten

PowerShell ist nicht nur ein mächtiges Werkzeug für Administratoren und Entwickler auch Rollenspieler können die umfangreiche Skriptsprache nutzen. Egal ob Dungeons & Dragons, Das schwarze Auge, Pathfinder oder Splittermond, jedes System kann mit Hilfe der PowerShell als Grundlage für Würfel und Zufallsereignisse dienen.

Würfeln

Die Würfel lassen sich als Kombination aus Anzahl und Seiten darstellen, getrennt mit einem W für Würfel oder im Englischen mit d für dice. Somit ergibt 1W6 einen sechsseitigen Würfel mit den Augen von 1 bis 6. Der klassische 1W20 für D&D würfelt die Zahlen von 1 bis 20. Bei 2W4 werden zwei Würfel mit je vier Seiten gewürfelt, das Ergebnis liegt zwischen 2 und 8. PowerShell simuliert dies durch die Funktion Get-Random. Der minimale Wert ist dabei inklusive, der maximale Wert ist exklusiv! Dadurch ergeben sich die folgenden Aurufe für den 1W6 und 1W20.

Get-Random -Minimum 1 -Maximum 7
# oder
1..6 | Get-Random

Get-Random -Minimum 1 -Maximum 21
oder
1..20 | Get-Random

Mehrere Würfel lassen sich simulieren wenn für jeden Würfel ein eigenes Array erstellt wird. Aus der Gesamtmenge sind dann die Zahlen zufällig zu wählen. Wird die Count Option von Get-Random auf einem einfachen Array genutzt können die Zahlen nicht doppelt vorkommen. Die Funktion für 2W20 sieht damit wie folgt aus.

$Seiten = 20
$Anzahl = 2
(1..$Seiten)*$Anzahl | Get-Random -Count $Anzahl

Möchte man das Ergebnis aller Würfel addieren kommt Measure-Object zum Einsatz. Dabei kann optional auch ein Wert aufaddiert werden, beispielsweise um Fähigkeitsmodifikatoren einzurechnen. Das 2W20 Beispiel von oben, ergänzt um einen +4 Modifikator, also 2W20+4 sieht dann wie folgt aus.

(((1..$Seiten)*$Anzahl | Get-Random -Count $Anzahl) | Measure-Object -Sum).Sum + 4

Zum Schluss werfen wir einen Blick auf die Charaktererstellung von D&D und Pathfinder. Eine Möglichkeit der fünften Edition ist das Auswürfeln. Bei der Methode „4d6 drop lowest“ werden vier sechsseitige Würfel genutzt und der Kleinste entfernt. Dadurch entstehen Werte von 3 (sehr unwahrscheinlich) bis 18 (sehr unwahrscheinlich), im Schnitt liegen die Werte bei 9 bis 16. In die Formeln oben eingesetzt lassen sich die Attribute des Charakters somit wie folgt auswürfeln.

(1..6)*4 | Get-Random -Count 4 | Sort-Object | Select -Last 3 | Measure-Object -Sum | Select -ExpandProperty Sum

Zufallsbegegnungen

Spielleiter sind von Natur aus oft faule Zeitgenossen. Nicht umsonst erklären sich die Seitenlangen Begegnungstabellen in vielen Regelwerken. Mit Hilfe der PowerShell können solche Tabellen auch zufällig ermittelt werden. Eine Variante wäre das Speichern der Begegnungen in diversen Dateien. Exemplarisch ist in diesem Artikel aber eine statische Liste auf Basis der Tabelle „Gewölbe (für niedrige Stufen) HG 2“ aus dem Pathfinder Referenz Dokument gezeigt.

# Begegnungen definieren mit Wahrscheinlichkeit
$Begegnungen = 
@([pscustomobject]@{Min=1; Max=6; Name="1W6 Schreckensratten"},
[pscustomobject]@{Min=7; Max=12; Name="1W6 Feuerkäfer"},
[pscustomobject]@{Min=13; Max=20; Name="1W6 Menschliche Skelette"},
[pscustomobject]@{Min=21; Max=24; Name="1W4 Riesentausendfüßler"},
[pscustomobject]@{Min=25; Max=26; Name="1 Spinnenschwarm"},
[pscustomobject]@{Min=27; Max=32; Name="1W6 Menschliche Zombies"})

# Maximale Wahrscheinlichkeit ermitteln und einen zufälligen Wert bestimmen
$Max = $Begegnungen | foreach { $_.Max } | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum
$Auswahl = Get-Random -Minimum 1 -Maximum ([int32]$Max+1)

#Begegnung darstellen
$Begegnungen | Where-Object { $Auswahl -ge $_.Min -and $Auswahl -le $_.Max }

NPCs

NPCs können beliebig komplex aufgebaut sein. Ein einfaches Mittel ist das Definieren von verschiedenen Feldern, die sinnvoll kombiniert werden.

$Namen = "Sarah", "Annabelle", "Johanna", "Lindsey", "Elaine"
$Eigenschaften = "abenteuerlustige", "böse", "chaotische", "erfinderische", "mutige", "risikofreudige"
$Klassen = "Kriegerin", "Magierin", "Schurkin", "Adelige", "Bettlerin", "Händlerin"
"{0} ist eine {1} {2}." -f ($Namen | Get-Random), ($Eigenschaften | Get-Random), ($Klassen | Get-Random)

„Johanna ist eine mutige Kriegerin.“

 

Bilder: Pixabay , [Wikipedia][4]