Taarions Welt

Rollenspiel und andere Fantastereien!

Zeitmanagement in FoundryVTT

Foundry VTT

Die Software Foundry VTT hat rudimentäre, eigene Mittel für Zeitmanagement. Die schlummern aber unter der Haube und sind nicht direkt zugänglich. Dazu bedarf es zusätzlicher Plugins. Ein solches das gut funktioniert ist Simple Calendar.

Simple Calendar

Screenshot des UI von Simple Calendar

Simple Calendar bereichert Foundry VTT um einen Kalender in dem du Tage auswählen, die Zeit in verschiedenen Intervallen fortschreiben und Notizen an Tagen positionieren kannst. Damit nicht unser weltlicher Kalender die Immersion stört, kann Simple Calendar umfangreich angepasst werden um den Kalender aus dem jeweiligen Spiel abzubilden.

Ich komme mit dem Plugin gut klar. Behalte damit die Tagesabschnitte und Jahreszeiten im Auge. Auch kann ich so markieren wann Verwundungen ausgeheilt sind. Damit das gut funktioniert habe ich den Kalender aus den Rabenlanden mit seinen acht Monaten in Simple Calendar abgebildet. Damit du auch davon profitieren kannst stelle ich dir hier die Konfiguration zum Importieren in deine Spielwelt bereit. Gegenüber der englischen Version, die dem Plugin beiliegt, habe ich auch noch die Feiertage eingetragen und an den Monatsnamen die Modifikatoren fürs Sammeln als kleines Tooltip ergänzt sowie die Sonnenauf und -untergänge eingetragen.

Konfigurationsdatei

(Schönes) Wetter

Mit dem Monsterhandbuch zusammen, wurden Zufallstabellen veröffentlicht mit dem man das tägliche Wetter auswürfeln kann. Ich vergesse aber immer das auch zu machen. Daher habe ich ein wenig programmiert um automatisch beim Tageswechsel die Tabellen zu befragen.

Script für automatische Wetterbestimmung
Hooks.on("updateWorldTime", async (worldTime, dt, options, userId) => {
   if (SimpleCalendar) {
    const d1 = SimpleCalendar.api.currentDateTime()
    const d2 = SimpleCalendar.api.timestampToDate(worldTime - dt)
    const i = SimpleCalendar.api.secondsToInterval(dt)

    if (i.day >= 1 || d2.day < d1.day) {
            const table = await fromUuid("RollTable.sOAKyTgz8jK3r0rZ");
            await table.draw();
        }
   } else {
        const d2 = new Date(worldTime * 1000)
        const d1 = new Date((worldTime - dt) * 1000)
        if (d1.getDate() < d2.getDate()) {
            const table = await fromUuid("RollTable.sOAKyTgz8jK3r0rZ");
            await table.draw();
        }
   }
})

Das Script das dabei herausgekommen ist, kannst du auf zweierlei Arten einbinden. Entweder du erstellst dir ein Macro (Typ: Script). Du musst das Macro dann aber immer einmal ausführen wenn du Foundry geladen hast. Alternativ kannst du den Code auch in die Datei scripts/init.js des Modules fbl-book-of-beasts einfügen. Dann wird es automatisch aktiv. Aber Achtung: Die Datei wird überschrieben wenn ein Update des Modules ansteht.

Sonnenaufgang und -untergang

Simple Calendar erlaubt es zu jeder Jahreszeit die Zeit des Sonnenaufgang und -untergangs anzugeben. Ich habe versucht, darauf basierend die aktive Szene abzudunkeln wenn die Nacht hereinbrechen würde. Leider habe ich das nicht hinbekommen. Die Darstellung reagiert einfach nicht wenn ich den Wert für darknessLevel ändere. Wenn du einen Tipp hast – Ich würde mich freuen wenn du mir helfen könntest. Der Trick ist hierbei eine update-Funktion zu nutzen anstelle den Wert für das darknessLevel direkt zu ändern.

Script für automatische Abdunklung
Hooks.on("updateWorldTime", async (worldTime, dt, options, userId) => {
    const scene = game.scenes.active

    if (SimpleCalendar && !scene.environment.darknessLock) {
        let currentDate = SimpleCalendar.api.currentDateTime()
        let secondsInDay = currentDate.hour * 60 * 60 + currentDate.minute * 60
        let sunriseTime = SimpleCalendar.api.getCurrentSeason().sunriseTime
        let sunsetTime = SimpleCalendar.api.getCurrentSeason().sunsetTime

        if (sunriseTime < secondsInDay &&  sunset > secondsInDay) {
            scene.update({"darkness": 0})
        } else {
            scene.update({"darkness": 0.75})
        }
    }
})

Alternativ gibt es wohl auch ein weiteres Plugin das das gleiche (und mehr) tut: Small Time. Ich bin aber mit meiner Minimallösung zufrieden – noch ein schwebendes Fenster mehr brauch ich nicht auf meinem Monitor.