Total rework of the module battlemaps.
BIN
assets/maps/cellar-finished.webp
Normal file
After Width: | Height: | Size: 540 KiB |
Before Width: | Height: | Size: 15 KiB |
BIN
assets/maps/changer.webp
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
assets/maps/chaos-blood.webp
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
assets/maps/chaosstar.png
Normal file
After Width: | Height: | Size: 912 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 7.7 MiB |
Before Width: | Height: | Size: 549 KiB |
BIN
assets/maps/first-floor.webp
Normal file
After Width: | Height: | Size: 447 KiB |
BIN
assets/maps/hooded-man-high-res.webp
Normal file
After Width: | Height: | Size: 8.5 MiB |
Before Width: | Height: | Size: 366 KiB |
Before Width: | Height: | Size: 306 KiB |
BIN
assets/maps/level2.webp
Normal file
After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 3.5 MiB |
BIN
assets/maps/templemaster.png
Normal file
After Width: | Height: | Size: 11 MiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 964 KiB |
205
init.js
@ -11,7 +11,7 @@ Hooks.on("init", () => {
|
|||||||
name: "WFRP4e Night of Blood Initialization",
|
name: "WFRP4e Night of Blood Initialization",
|
||||||
label : "Initialize",
|
label : "Initialize",
|
||||||
hint : "This will import content for the WFRP4e adventure Night of Blood Module",
|
hint : "This will import content for the WFRP4e adventure Night of Blood Module",
|
||||||
type : WFRP4eNightOfBloodWrapper,
|
type : WFRP4eNightOfBloodInitialization,
|
||||||
restricted: true
|
restricted: true
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -24,18 +24,9 @@ Hooks.on("ready", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
class WFRP4eNightOfBloodWrapper extends FormApplication {
|
class WFRP4eNightOfBloodInitialization extends FormApplication {
|
||||||
render() {
|
render() {
|
||||||
new WFRP4eNightOfBloodInitialization().render(true);
|
let html = `<p class="notes"><img src="modules/wfrp4e-night-of-blood/assets/icons/logo.png"
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class WFRP4eNightOfBloodInitialization extends Dialog{
|
|
||||||
constructor()
|
|
||||||
{
|
|
||||||
super({
|
|
||||||
title: "WFRP4e Night of Blood Initialization",
|
|
||||||
content: `<p class="notes"><img src="modules/wfrp4e-night-of-blood/assets/icons/logo.png"
|
|
||||||
style="display: block; margin-left: auto; margin-right: auto;">
|
style="display: block; margin-left: auto; margin-right: auto;">
|
||||||
|
|
||||||
|
|
||||||
@ -48,7 +39,7 @@ class WFRP4eNightOfBloodInitialization extends Dialog{
|
|||||||
Special thanks to: <b>Russell Thurman (Moo Man)</b><br/><br/>
|
Special thanks to: <b>Russell Thurman (Moo Man)</b><br/><br/>
|
||||||
Foundry Edition by <b>Stuart Kerrigan</b><br/>
|
Foundry Edition by <b>Stuart Kerrigan</b><br/>
|
||||||
|
|
||||||
You can email us at <a href="mailto:perilousrealmpodcast@gmail.com">perilousrealmpodcast@gmail.com</a>
|
You can email us at <a href="mailto:perilousrealmpodcast@gmail.com">perilousrealmpodcast@gmail.com</a>3
|
||||||
|
|
||||||
<p class="notes"><strong>Want to support us?</strong><br/><br/>
|
<p class="notes"><strong>Want to support us?</strong><br/><br/>
|
||||||
|
|
||||||
@ -56,191 +47,7 @@ class WFRP4eNightOfBloodInitialization extends Dialog{
|
|||||||
|
|
||||||
<a href="https://paypal.me/perilousrealm?locale.x=en_GB"><img src="modules/wfrp4e-night-of-blood/paypal.png" style="display: block; margin-left: auto; margin-right: auto;" alt="paypal" /></a><br/><br/>
|
<a href="https://paypal.me/perilousrealm?locale.x=en_GB"><img src="modules/wfrp4e-night-of-blood/paypal.png" style="display: block; margin-left: auto; margin-right: auto;" alt="paypal" /></a><br/><br/>
|
||||||
|
|
||||||
You can also listen to the <a href="https://anchor.fm/peril">Perilous Realm Podcast</a><br/><br/><a href="https://anchor.fm/peril"><img src="modules/wfrp4e-night-of-blood/peril.png" style="display: block; margin-left: auto; margin-right: auto;" alt="peril logo"></a> <br/><br/>Lastly do share with us at <a href="mailto:perilousrealmpodcast@gmail.com">perilousrealmpodcast@gmail.com</a> any streams or audio you have of your adventures in the Hooded Man Inn - if anyone is left to tell the tale.</p>
|
You can also listen to the <a href="https://anchor.fm/peril">Perilous Realm Podcast</a><br/><br/><a href="https://anchor.fm/peril"><img src="modules/wfrp4e-night-of-blood/peril.png" style="display: block; margin-left: auto; margin-right: auto;" alt="peril logo"></a> <br/><br/>Lastly do share with us at <a href="mailto:perilousrealmpodcast@gmail.com">perilousrealmpodcast@gmail.com</a> any streams or audio you have of your adventures in the Hooded Man Inn - if anyone is left to tell the tale.</p>`
|
||||||
`,
|
new game.wfrp4e.apps.ModuleInitializer("wfrp4e-night-of-blood", "WFRP4e Night of Blood Initialization",html).render(true);
|
||||||
|
|
||||||
buttons: {
|
|
||||||
initialize: {
|
|
||||||
label : "Initialize",
|
|
||||||
callback : async () => {
|
|
||||||
game.settings.set("wfrp4e-night-of-blood", "initialized", true)
|
|
||||||
await new WFRP4eNightOfBloodInitialization().initialize()
|
|
||||||
ui.notifications.notify("Initialization Complete")
|
|
||||||
}
|
|
||||||
},
|
|
||||||
no: {
|
|
||||||
label : "No",
|
|
||||||
callback : () => {
|
|
||||||
game.settings.set("wfrp4e-night-of-blood", "initialized", true)
|
|
||||||
ui.notifications.notify("Skipped Initialization.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
this.folders = {
|
|
||||||
"Scene" : {},
|
|
||||||
"Item" : {},
|
|
||||||
"Actor" : {},
|
|
||||||
"JournalEntry" : {}
|
|
||||||
}
|
|
||||||
this.SceneFolders = {};
|
|
||||||
this.ActorFolders = {};
|
|
||||||
this.ItemFolders = {};
|
|
||||||
this.JournalEntryFolders = {};
|
|
||||||
this.journals = {};
|
|
||||||
this.scenes = {};
|
|
||||||
this.moduleKey = "wfrp4e-night-of-blood"
|
|
||||||
}
|
|
||||||
|
|
||||||
async initialize() {
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
fetch(`modules/${this.moduleKey}/initialization.json`).then(async r => r.json()).then(async json => {
|
|
||||||
let createdFolders = await Folder.create(json)
|
|
||||||
for (let folder of createdFolders)
|
|
||||||
this.folders[folder.data.type][folder.data.name] = folder;
|
|
||||||
|
|
||||||
for (let folderType in this.folders) {
|
|
||||||
for (let folder in this.folders[folderType]) {
|
|
||||||
|
|
||||||
let parent = this.folders[folderType][folder].getFlag(this.moduleKey, "initialization-parent")
|
|
||||||
if (parent) {
|
|
||||||
let parentId = this.folders[folderType][parent].data._id
|
|
||||||
await this.folders[folderType][folder].update({ parent: parentId })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await this.initializeEntities()
|
|
||||||
await this.initializeScenes()
|
|
||||||
resolve()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async initializeEntities() {
|
|
||||||
|
|
||||||
let packList= [ `${this.moduleKey}.NightOfBloodActors`,
|
|
||||||
`${this.moduleKey}.NightOfBloodScenes`,
|
|
||||||
`${this.moduleKey}.NightOfBloodJournal`]
|
|
||||||
|
|
||||||
for( let pack of packList)
|
|
||||||
{
|
|
||||||
console.log(pack);
|
|
||||||
let content = await game.packs.get(pack).getContent();
|
|
||||||
for (let entity of content)
|
|
||||||
{
|
|
||||||
let folder = entity.getFlag(this.moduleKey, "initialization-folder")
|
|
||||||
if (folder)
|
|
||||||
entity.data.folder = this.folders[entity.entity][folder].data._id;
|
|
||||||
}
|
|
||||||
switch(content[0].entity)
|
|
||||||
{
|
|
||||||
case "Actor":
|
|
||||||
ui.notifications.notify("Initializing Actors")
|
|
||||||
await Actor.create(content.map(c => c.data))
|
|
||||||
break;
|
|
||||||
case "Item":
|
|
||||||
ui.notifications.notify("Initializing Items")
|
|
||||||
await Item.create(content.map(c => c.data))
|
|
||||||
break;
|
|
||||||
case "JournalEntry" :
|
|
||||||
ui.notifications.notify("Initializing Journals")
|
|
||||||
let createdEntries = await JournalEntry.create(content.map(c => c.data))
|
|
||||||
if (!createdEntries.length)
|
|
||||||
break
|
|
||||||
for (let entry of createdEntries)
|
|
||||||
this.journals[entry.data.name] = entry
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async initializeScenes() {
|
|
||||||
ui.notifications.notify("Initializing Scenes")
|
|
||||||
let m = game.packs.get(`${this.moduleKey}.NightOfBloodScenes`)
|
|
||||||
let maps = await m.getContent()
|
|
||||||
for (let map of maps)
|
|
||||||
{
|
|
||||||
let folder = map.getFlag(this.moduleKey, "initialization-folder")
|
|
||||||
if (folder)
|
|
||||||
map.data.folder = this.folders["Scene"][folder].data._id;
|
|
||||||
|
|
||||||
let journalName = map.getFlag(this.moduleKey, "scene-note")
|
|
||||||
if (journalName)
|
|
||||||
map.data.journal = game.journal.getName(journalName).data._id;
|
|
||||||
|
|
||||||
map.data.notes.forEach(n => {
|
|
||||||
try {
|
|
||||||
n.entryId = this.journals[getProperty(n, `flags.${this.moduleKey}.initialization-entryName`)].data._id
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
console.log("wfrp4e | INITIALIZATION ERROR: " + e)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
await Scene.create(maps.map(m => m.data)).then(sceneArray => {
|
|
||||||
sceneArray.forEach(async s => {
|
|
||||||
let thumb = await s.createThumbnail();
|
|
||||||
s.update({"thumb" : thumb.thumb})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class WFRP4eNightOfBloodInitializationSetup {
|
|
||||||
|
|
||||||
static async setup()
|
|
||||||
{
|
|
||||||
WFRP4eNightOfBloodInitializationSetup.displayFolders()
|
|
||||||
WFRP4eNightOfBloodInitializationSetup.setFolderFlags()
|
|
||||||
WFRP4eNightOfBloodInitializationSetup.setEmbeddedEntities()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This gets every folder in the system */
|
|
||||||
static async displayFolders() {
|
|
||||||
let array = [];
|
|
||||||
game.folders.entities.forEach(async f => {
|
|
||||||
if (f.data.parent)
|
|
||||||
await f.setFlag("wfrp4e-night-of-blood", "initialization-parent", game.folders.get(f.data.parent).data.name)
|
|
||||||
})
|
|
||||||
game.folders.entities.forEach(f => {
|
|
||||||
array.push(f.data)
|
|
||||||
})
|
|
||||||
console.log(JSON.stringify(array))
|
|
||||||
}
|
|
||||||
|
|
||||||
static async setFolderFlags() {
|
|
||||||
for (let scene of game.scenes.entities)
|
|
||||||
await scene.setFlag("wfrp4e-night-of-blood", "initialization-folder", game.folders.get(scene.data.folder).data.name)
|
|
||||||
for (let actor of game.actors.entities)
|
|
||||||
await actor.setFlag("wfrp4e-night-of-blood", "initialization-folder", game.folders.get(actor.data.folder).data.name)
|
|
||||||
for (let item of game.items.entities)
|
|
||||||
await item.setFlag("wfrp4e-night-of-blood", "initialization-folder", game.folders.get(item.data.folder).data.name)
|
|
||||||
for (let journal of game.journal.entities)
|
|
||||||
await journal.setFlag("wfrp4e-night-of-blood", "initialization-folder", game.folders.get(journal.data.folder).data.name)
|
|
||||||
|
|
||||||
WFRP4eNightOfBloodInitializationSetup.setSceneNotes();
|
|
||||||
}
|
|
||||||
|
|
||||||
static async setSceneNotes() {
|
|
||||||
for (let scene of game.scenes.entities)
|
|
||||||
if (scene.data.journal)
|
|
||||||
await scene.setFlag("wfrp4e-night-of-blood", "scene-note", game.journal.get(scene.data.journal).data.name)
|
|
||||||
}
|
|
||||||
|
|
||||||
static async setEmbeddedEntities() {
|
|
||||||
for (let scene of game.scenes.entities)
|
|
||||||
{
|
|
||||||
let notes = duplicate(scene.data.notes)
|
|
||||||
for (let note of notes)
|
|
||||||
{
|
|
||||||
setProperty(note, "flags.wfrp4e-night-of-blood.initialization-entryName", game.journal.get(note.entryId).data.name)
|
|
||||||
}
|
|
||||||
await scene.update({notes : notes})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,9 +1,12 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"_id": "15vCMSPdiQ79lZVj",
|
"_id": "eD0dthg1vaqaQlbH",
|
||||||
"name": "Beginning In The Forest",
|
"name": "Beginning In The Forest",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
|
"parent": "jY6IpOz5yjaDoNm5",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 3500000,
|
"sort": 3500000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -11,33 +14,36 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "qauzWDTxBDTer6oQ",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "pnAQqGvoJN19iMxt",
|
"_id": "NYEfYRdiDtFaKkZT",
|
||||||
"name": "Chaos Hunters",
|
"name": "Chaos Hunters",
|
||||||
"type": "Actor",
|
"type": "Actor",
|
||||||
|
"parent": "SX3XJlccdnlgn0iC",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 1100000,
|
"sort": 1100000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
},
|
},
|
||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
|
},
|
||||||
|
"core": {
|
||||||
|
"sourceId": "Folder.NYEfYRdiDtFaKkZT"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"parent": "4EURm4BUTawgerv0",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"_id": "iTRwG5gS9CBxRdBC",
|
"_id": "ABuZc9FnWV0JHpAY",
|
||||||
"name": "Hooded Man Exterior",
|
"name": "Hooded Man Exterior",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
|
"parent": "jY6IpOz5yjaDoNm5",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 3300000,
|
"sort": 3300000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -45,16 +51,16 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "qauzWDTxBDTer6oQ",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "lcdcw69gWbKJ66au",
|
"_id": "xGE6hoQKNUXQ3DQb",
|
||||||
"name": "Hooded Man Interior",
|
"name": "Hooded Man Interior",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
|
"parent": "jY6IpOz5yjaDoNm5",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 3200000,
|
"sort": 3200000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -62,16 +68,16 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "qauzWDTxBDTer6oQ",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "I6Cro79fujYNXkqM",
|
"_id": "a9jVUkWTNbOM1oD4",
|
||||||
"name": "Inn Patrons",
|
"name": "Inn Patrons",
|
||||||
"type": "Actor",
|
"type": "Actor",
|
||||||
|
"parent": "SX3XJlccdnlgn0iC",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 1000000,
|
"sort": 1000000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -79,46 +85,46 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "4EURm4BUTawgerv0",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "4EURm4BUTawgerv0",
|
"_id": "Hf6hvwTMqGu5vdp5",
|
||||||
"name": "Night of Blood",
|
|
||||||
"type": "Actor",
|
|
||||||
"sort": 200000,
|
|
||||||
"flags": {},
|
|
||||||
"parent": null,
|
|
||||||
"sorting": "a",
|
|
||||||
"color": "#ff0d13"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"_id": "nEQnpf2p1xxgO02L",
|
|
||||||
"name": "Night of Blood",
|
"name": "Night of Blood",
|
||||||
"type": "Scene",
|
"type": "Scene",
|
||||||
"sort": 300000,
|
|
||||||
"flags": {},
|
|
||||||
"parent": null,
|
"parent": null,
|
||||||
"sorting": "a",
|
"sorting": "m",
|
||||||
"color": "#ff0d13"
|
"sort": 0,
|
||||||
|
"color": "#ff0000",
|
||||||
|
"flags": {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "qauzWDTxBDTer6oQ",
|
"_id": "SX3XJlccdnlgn0iC",
|
||||||
|
"name": "Night of Blood",
|
||||||
|
"type": "Actor",
|
||||||
|
"parent": null,
|
||||||
|
"sorting": "a",
|
||||||
|
"sort": 200000,
|
||||||
|
"color": "#ff0d13",
|
||||||
|
"flags": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "jY6IpOz5yjaDoNm5",
|
||||||
"name": "Night of Blood",
|
"name": "Night of Blood",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
"sort": 3100000,
|
|
||||||
"flags": {},
|
|
||||||
"parent": null,
|
"parent": null,
|
||||||
"sorting": "a",
|
"sorting": "a",
|
||||||
"color": "#ff0d13"
|
"sort": 3100000,
|
||||||
|
"color": "#ff0d13",
|
||||||
|
"flags": {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "dWAWJ7KmbgQgoT0r",
|
"_id": "QANo7xlmoUJ7GI0G",
|
||||||
"name": "The Aftermath",
|
"name": "The Aftermath",
|
||||||
"type": "Actor",
|
"type": "Actor",
|
||||||
|
"parent": "SX3XJlccdnlgn0iC",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 1300000,
|
"sort": 1300000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -126,16 +132,16 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "4EURm4BUTawgerv0",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "c5JXQqWCBiFev3YN",
|
"_id": "sOKZdwMAv9sAjliU",
|
||||||
"name": "The Horror",
|
"name": "The Horror",
|
||||||
"type": "Actor",
|
"type": "Actor",
|
||||||
|
"parent": "SX3XJlccdnlgn0iC",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 1200000,
|
"sort": 1200000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -143,16 +149,16 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "4EURm4BUTawgerv0",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "QA64W3jfMWG0KbhW",
|
"_id": "BvJldSIZ7lVdNwC4",
|
||||||
"name": "What Lies Beneath the Inn",
|
"name": "What Lies Beneath the Inn",
|
||||||
"type": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
|
"parent": "jY6IpOz5yjaDoNm5",
|
||||||
|
"sorting": "a",
|
||||||
"sort": 3400000,
|
"sort": 3400000,
|
||||||
|
"color": null,
|
||||||
"flags": {
|
"flags": {
|
||||||
"wfrp4e-night-of-blood": {
|
"wfrp4e-night-of-blood": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
@ -160,9 +166,6 @@
|
|||||||
"deprecated": {
|
"deprecated": {
|
||||||
"initialization-parent": "Night of Blood"
|
"initialization-parent": "Night of Blood"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"parent": "qauzWDTxBDTer6oQ",
|
|
||||||
"sorting": "a",
|
|
||||||
"color": ""
|
|
||||||
}
|
}
|
||||||
]
|
]
|
73
module.json
@ -1,52 +1,73 @@
|
|||||||
{
|
{
|
||||||
"name": "wfrp4e-night-of-blood",
|
"name": "wfrp4e-night-of-blood",
|
||||||
"title": "Night of Blood (WFRP 4e)",
|
"title": "Night of Blood (WFRP 4e)",
|
||||||
"description": "The classic Warhammer Fantasy Roleplay adventure, perfect for introducing new players",
|
"description": "The classic Warhammer Fantasy Roleplay adventure, perfect for introducing new players. Now updated to include multi-level scenes",
|
||||||
"version": "1.2",
|
"version": "2.0",
|
||||||
"author": "Stu",
|
"author": "Stuart Kerrigan",
|
||||||
|
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"name": "lib-wrapper"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "betterroofs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wall-height"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "levels"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "token-attacher"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ambientdoors"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tokenmagic"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"esmodules": [
|
||||||
|
],
|
||||||
|
"scripts": [
|
||||||
|
"initialization.js"
|
||||||
|
],
|
||||||
"systems": ["wfrp4e"],
|
"systems": ["wfrp4e"],
|
||||||
"styles": [
|
"styles": [
|
||||||
"./styles.css"
|
"./styles.css"
|
||||||
],
|
],
|
||||||
"scripts": [
|
|
||||||
"init.js"
|
|
||||||
],
|
|
||||||
"packs": [
|
"packs": [
|
||||||
{
|
{
|
||||||
"name": "NightOfBloodActors",
|
|
||||||
"label": "Night of Blood Actors",
|
"label": "Night of Blood Actors",
|
||||||
|
"type": "Actor",
|
||||||
|
"name": "NightOfBloodActors",
|
||||||
"path": "packs/night-of-blood-actors.db",
|
"path": "packs/night-of-blood-actors.db",
|
||||||
"entity": "Actor",
|
"package": "wfrp4e-night-of-blood" },
|
||||||
"module": "wfrp4e-night-of-blood",
|
|
||||||
"system": "wfrp4e"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "NightOfBloodScenes",
|
|
||||||
"label": "Night of Blood Scenes",
|
"label": "Night of Blood Scenes",
|
||||||
|
"type": "Scene",
|
||||||
|
"name": "NightOfBloodScenes",
|
||||||
"path": "packs/night-of-blood-scenes.db",
|
"path": "packs/night-of-blood-scenes.db",
|
||||||
"entity": "Scene",
|
"package": "wfrp4e-night-of-blood" },
|
||||||
"module": "wfrp4e-night-of-blood",
|
|
||||||
"system": "wfrp4e"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "NightOfBloodJournal",
|
|
||||||
"label": "Night of Blood Journal Entries",
|
"label": "Night of Blood Journal Entries",
|
||||||
|
"name": "NightOfBloodJournal",
|
||||||
"path": "packs/night-of-blood-journal.db",
|
"path": "packs/night-of-blood-journal.db",
|
||||||
"entity": "JournalEntry",
|
"type": "JournalEntry",
|
||||||
"module": "wfrp4e-night-of-blood",
|
"package": "wfrp4e-night-of-blood" },
|
||||||
"system": "wfrp4e"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "NightOfBloodSFX",
|
"name": "NightOfBloodSFX",
|
||||||
"label": "Night of Blood SFX",
|
"label": "Night of Blood SFX",
|
||||||
"path": "packs/night-of-blood-sfx.db",
|
"path": "packs/night-of-blood-sfx.db",
|
||||||
"entity": "Playlist",
|
"type": "Playlist",
|
||||||
"module": "wfrp4e-night-of-blood",
|
"package": "wfrp4e-night-of-blood" }
|
||||||
"system": "wfrp4e"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
|
"flags" : {
|
||||||
|
"initializationPacks" : [ ]
|
||||||
|
},
|
||||||
"languages": ["en"],
|
"languages": ["en"],
|
||||||
"minimumCoreVersion": "0.7.5",
|
"minimumCoreVersion": "0.9",
|
||||||
"manifest": "https://raw.githubusercontent.com/CStuartEKerrigan/WFRP-Night-of-Blood-4e-FVTT/master/module.json",
|
"manifest": "https://raw.githubusercontent.com/CStuartEKerrigan/WFRP-Night-of-Blood-4e-FVTT/master/module.json",
|
||||||
"download": "https://github.com/CStuartEKerrigan/WFRP-Night-of-Blood-4e-FVTT/archive/master.zip",
|
"download": "https://github.com/CStuartEKerrigan/WFRP-Night-of-Blood-4e-FVTT/archive/master.zip",
|
||||||
"url": "https://github.com/CStuartEKerrigan/WFRP-Night-of-Blood-4e-FVTT/"
|
"url": "https://github.com/CStuartEKerrigan/WFRP-Night-of-Blood-4e-FVTT/"
|
||||||
|