diff --git a/foundry/wg-voidship-hulls copy.db b/foundry/wg-voidship-hulls copy.db new file mode 100644 index 0000000..228f197 --- /dev/null +++ b/foundry/wg-voidship-hulls copy.db @@ -0,0 +1,24 @@ +{"name": "Escort Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Escort Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 18}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Escort Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "4412029d26021383", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Frigate Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Frigate Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 24}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Frigate Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "1f954166473bedf3", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Light Cruiser Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Light Cruiser Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 0, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 9, "wounds": {"value": 0, "bonus": 0, "max": 32}, "resilience": {"bonus": 0, "total": 11}, "defence": {"bonus": 2}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Light Cruiser Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "c5ca1fc87803b111", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Cruiser Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Cruiser Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Cruiser Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "96a0dacd77d672bb", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Jericho-class Pilgrim Vessel", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Jericho-class Pilgrim Vessel", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Immense conversions for pilgrim passages and reliquary cargo. Cavernous holds and chapels; range and capacity over armour and speed.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 195"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Jericho-class Pilgrim Vessel", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "a08b1d9ef251ec0b", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Vagabond-class Merchant Trader", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Vagabond-class Merchant Trader", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Modular cargobays and adaptable fittings; a chartist workhorse. Simple to keep running in frontier yards; heavily customised.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 195"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Vagabond-class Merchant Trader", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "95fcf7b99d705bd1", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Hazeroth-class Privateer", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Hazeroth-class Privateer", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Knife-fast raider with reinforced internals and stripped armour. Favoured for ambushes and commerce raiding.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 195"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Hazeroth-class Privateer", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "521f6e630bd813a4", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Havoc-class Merchant Raider", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Havoc-class Merchant Raider", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Hybrid carrier-raider balancing battery weight with cargo. Less protected than Navy hulls but brutal on traffic.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 196"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Havoc-class Merchant Raider", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "c4c69cf1b895c0e1", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Sword-class Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Sword-class Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Reliable escort with accurate dorsal lasers and stout drives. Squadrons screen convoys and prosecute pirates.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 28"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Sword-class Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "ec53303961ef4fd4", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Tempest-class Strike Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Tempest-class Strike Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Close-action brawler for boardings and short-range gunnery. Reinforced prow and over-tuned drives.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 196"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Tempest-class Strike Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "fb874877eacc7a08", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Dauntless-class Light Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Dauntless-class Light Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 0, "notes": "Versatile patrol cruiser—good acceleration and flexible refits. Often leads Passage Watch patrols.", "combat": {"size": "colossal", "speed": 9, "wounds": {"value": 0, "bonus": 0, "max": 32}, "resilience": {"bonus": 0, "total": 11}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 36"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Dauntless-class Light Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "c8975bb7181d8e12", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Lunar-class Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Lunar-class Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Archetypal line cruiser—balanced, dependable, easily refitted. Backbone of many squadrons.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 24"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Lunar-class Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "0b59c38ddda63f42", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Cobra-class Destroyer", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Cobra-class Destroyer", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Torpedo raider hunting in packs; strikes, then disengages to reload.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 66"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Cobra-class Destroyer", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "b518e981d69324aa", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Falchion-class Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Falchion-class Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Modernised frigate with improved drives for frontier scouting.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 28"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Falchion-class Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "d3853b0270deaf3f", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Turbulent-class Heavy Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Turbulent-class Heavy Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Strengthened frame and broader arcs; trades agility for staying power.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 28"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Turbulent-class Heavy Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "f1ea3416a6d0d27e", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Defiant-class Light Cruiser (Carrier)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Defiant-class Light Cruiser (Carrier)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 0, "notes": "Light carrier with significant attack craft; excellent for recon and strikes.", "combat": {"size": "colossal", "speed": 9, "wounds": {"value": 0, "bonus": 0, "max": 32}, "resilience": {"bonus": 0, "total": 11}, "defence": {"bonus": 2}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Defiant-class Light Cruiser (Carrier)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "73eed7c83ea60340", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Universe-class Mass Conveyor", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Universe-class Mass Conveyor", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Super-massive hauler for colony loads and crusade materiel; logistics linchpin.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 31"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Universe-class Mass Conveyor", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "6836e238cce8d9fc", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Goliath-class Factory Ship", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Goliath-class Factory Ship", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Roving manufactorum and refinery; long autonomous deployments.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 30"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Goliath-class Factory Ship", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "2c612305a7bb853f", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Conquest-class Star Galleon", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Conquest-class Star Galleon", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Heavily built merchant galleon with strong batteries and hull.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 25"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Conquest-class Star Galleon", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "287a7cd15c95031f", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Orion-class Star Clipper", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Orion-class Star Clipper", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Fast passenger/light-cargo clipper for courier missions and risky runs.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 150"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Orion-class Star Clipper", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "750ee1998f698e08", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Cobra-class Destroyer (Renegade)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Cobra-class Destroyer (Renegade)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Ex-Navy Cobra in privateer hands with non-standard prow refits.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 66"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Cobra-class Destroyer (Renegade)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "6da4418bdbd2206c", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Secutor-class Monitor-Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Secutor-class Monitor-Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Mechanicus monitor with powerful dorsals and redundant shielding; anchors actions.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 151"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Secutor-class Monitor-Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "0eb071148d375807", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Lathe-class Monitor-Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Lathe-class Monitor-Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Lathes-forged variant emphasising resilient sanctified systems.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 152"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Lathe-class Monitor-Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "104965869ffa36bb", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name": "Tyrant-class Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Tyrant-class Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Macrobattery-focused cruiser optimised for crushing broadsides.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 153"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Tyrant-class Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "6774443321f24e87", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} diff --git a/wg-voidships-builder/packs/wg-voidship-hulls.db b/wg-voidships-builder/packs/wg-voidship-hulls.db index 228f197..5991d98 100644 --- a/wg-voidships-builder/packs/wg-voidship-hulls.db +++ b/wg-voidships-builder/packs/wg-voidship-hulls.db @@ -1,24 +1 @@ -{"name": "Escort Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Escort Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 18}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Escort Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "4412029d26021383", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Frigate Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Frigate Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 24}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Frigate Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "1f954166473bedf3", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Light Cruiser Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Light Cruiser Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 0, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 9, "wounds": {"value": 0, "bonus": 0, "max": 32}, "resilience": {"bonus": 0, "total": 11}, "defence": {"bonus": 2}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Light Cruiser Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "c5ca1fc87803b111", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Cruiser Hull (Empty)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Cruiser Hull (Empty)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Empty hull. Add Components from Items pack.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Cruiser Hull (Empty)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "96a0dacd77d672bb", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Jericho-class Pilgrim Vessel", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Jericho-class Pilgrim Vessel", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Immense conversions for pilgrim passages and reliquary cargo. Cavernous holds and chapels; range and capacity over armour and speed.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 195"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Jericho-class Pilgrim Vessel", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "a08b1d9ef251ec0b", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Vagabond-class Merchant Trader", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Vagabond-class Merchant Trader", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Modular cargobays and adaptable fittings; a chartist workhorse. Simple to keep running in frontier yards; heavily customised.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 195"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Vagabond-class Merchant Trader", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "95fcf7b99d705bd1", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Hazeroth-class Privateer", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Hazeroth-class Privateer", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Knife-fast raider with reinforced internals and stripped armour. Favoured for ambushes and commerce raiding.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 195"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Hazeroth-class Privateer", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "521f6e630bd813a4", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Havoc-class Merchant Raider", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Havoc-class Merchant Raider", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Hybrid carrier-raider balancing battery weight with cargo. Less protected than Navy hulls but brutal on traffic.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 196"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Havoc-class Merchant Raider", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "c4c69cf1b895c0e1", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Sword-class Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Sword-class Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Reliable escort with accurate dorsal lasers and stout drives. Squadrons screen convoys and prosecute pirates.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 28"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Sword-class Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "ec53303961ef4fd4", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Tempest-class Strike Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Tempest-class Strike Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Close-action brawler for boardings and short-range gunnery. Reinforced prow and over-tuned drives.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Rogue Trader Core Rulebook, p. 196"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Tempest-class Strike Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "fb874877eacc7a08", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Dauntless-class Light Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Dauntless-class Light Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 0, "notes": "Versatile patrol cruiser—good acceleration and flexible refits. Often leads Passage Watch patrols.", "combat": {"size": "colossal", "speed": 9, "wounds": {"value": 0, "bonus": 0, "max": 32}, "resilience": {"bonus": 0, "total": 11}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 36"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Dauntless-class Light Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "c8975bb7181d8e12", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Lunar-class Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Lunar-class Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Archetypal line cruiser—balanced, dependable, easily refitted. Backbone of many squadrons.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 24"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Lunar-class Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "0b59c38ddda63f42", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Cobra-class Destroyer", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Cobra-class Destroyer", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Torpedo raider hunting in packs; strikes, then disengages to reload.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 66"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Cobra-class Destroyer", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "b518e981d69324aa", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Falchion-class Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Falchion-class Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Modernised frigate with improved drives for frontier scouting.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 28"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Falchion-class Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "d3853b0270deaf3f", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Turbulent-class Heavy Frigate", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Turbulent-class Heavy Frigate", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 1, "notes": "Strengthened frame and broader arcs; trades agility for staying power.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 28}, "resilience": {"bonus": 0, "total": 10}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 28"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Turbulent-class Heavy Frigate", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "f1ea3416a6d0d27e", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Defiant-class Light Cruiser (Carrier)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Defiant-class Light Cruiser (Carrier)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 0, "notes": "Light carrier with significant attack craft; excellent for recon and strikes.", "combat": {"size": "colossal", "speed": 9, "wounds": {"value": 0, "bonus": 0, "max": 32}, "resilience": {"bonus": 0, "total": 11}, "defence": {"bonus": 2}, "fly": 0}}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Defiant-class Light Cruiser (Carrier)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "73eed7c83ea60340", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Universe-class Mass Conveyor", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Universe-class Mass Conveyor", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Super-massive hauler for colony loads and crusade materiel; logistics linchpin.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 31"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Universe-class Mass Conveyor", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "6836e238cce8d9fc", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Goliath-class Factory Ship", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Goliath-class Factory Ship", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Roving manufactorum and refinery; long autonomous deployments.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 30"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Goliath-class Factory Ship", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "2c612305a7bb853f", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Conquest-class Star Galleon", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Conquest-class Star Galleon", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Heavily built merchant galleon with strong batteries and hull.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Battlefleet Koronus, p. 25"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Conquest-class Star Galleon", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "287a7cd15c95031f", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Orion-class Star Clipper", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Orion-class Star Clipper", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Fast passenger/light-cargo clipper for courier missions and risky runs.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 36}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 150"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Orion-class Star Clipper", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "750ee1998f698e08", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Cobra-class Destroyer (Renegade)", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Cobra-class Destroyer (Renegade)", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": 2, "notes": "Ex-Navy Cobra in privateer hands with non-standard prow refits.", "combat": {"size": "colossal", "speed": 10, "wounds": {"value": 0, "bonus": 0, "max": 22}, "resilience": {"bonus": 0, "total": 9}, "defence": {"bonus": 3}, "fly": 0}, "source": "Battlefleet Koronus, p. 66"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Cobra-class Destroyer (Renegade)", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "6da4418bdbd2206c", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Secutor-class Monitor-Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Secutor-class Monitor-Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Mechanicus monitor with powerful dorsals and redundant shielding; anchors actions.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 151"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Secutor-class Monitor-Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "0eb071148d375807", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Lathe-class Monitor-Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Lathe-class Monitor-Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Lathes-forged variant emphasising resilient sanctified systems.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 152"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Lathe-class Monitor-Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "104965869ffa36bb", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} -{"name": "Tyrant-class Cruiser", "type": "vehicle", "img": "icons/svg/ship.svg", "folder": null, "sort": 0, "ownership": {"default": 0}, "flags": {"core": {"sheetClass": "wg-voidships-builder.VoidshipSheet"}, "wg-voidships-builder": {"isVoidship": true, "hull": {"class": "Tyrant-class Cruiser", "size": "Cruiser", "slots": {"prow": 0, "dorsal": 0, "port": 0, "starboard": 0, "keel": 0}}, "base": {"armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0}, "crew": {"command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0}, "rtRaw": {"mnvr": -1, "notes": "Macrobattery-focused cruiser optimised for crushing broadsides.", "combat": {"size": "colossal", "speed": 8, "wounds": {"value": 0, "bonus": 0, "max": 40}, "resilience": {"bonus": 0, "total": 12}, "defence": {"bonus": 2}, "fly": 0}, "source": "Into the Storm, p. 153"}}}, "system": {}, "effects": [], "items": [], "prototypeToken": {"name": "Tyrant-class Cruiser", "actorLink": true, "texture": {"src": "icons/svg/ship.svg"}, "disposition": 1, "displayName": 0}, "_id": "6774443321f24e87", "systemId": "wrath-and-glory", "systemVersion": "7.1.1"} +{"name":"Universe-class Mass Conveyor","type":"vehicle","img":"icons/svg/ship.svg","folder":null,"sort":0,"ownership":{"default":0},"flags":{"core":{"sheetClass":"wg-voidships-builder.VoidshipSheet"},"wg-voidships-builder":{"isVoidship":true,"hull":{"class":"Universe-class Mass Conveyor","size":"Cruiser","slots":{"prow":0,"dorsal":0,"port":1,"starboard":1,"keel":0},"requirements":[{"tag":"cargo-bay","min":4,"label":"Cargo Holds"},{"tag":"aux-plasma","min":1,"label":"Auxiliary Plasma Generator"}]},"base":{"armour":12,"integrity":36,"manoeuvre":-1,"detection":0,"speed":8,"space":60,"power":55},"crew":{"command":1,"pilot":1,"sensors":1,"engineering":2,"gunnery":2,"security":2,"flightDeck":0,"passengers":0},"rtRaw":{"mnvr":-1,"notes":"Super-massive hauler for colony loads and crusade materiel; logistics linchpin.","combat":{"size":"colossal","speed":8,"wounds":{"value":0,"bonus":0,"max":36},"resilience":{"bonus":0,"total":12},"defence":{"bonus":2},"fly":0},"rt":{"speed":8,"manoeeuvrability":-10,"detection":0,"armour":12,"hullIntegrity":36,"space":60,"power":55,"weapons":{"prow":0,"dorsal":0,"port":1,"starboard":1,"keel":0},"turret":1,"source":"Battlefleet Koronus p.31 — to verify"},"source":"Battlefleet Koronus, p. 31"}}},"system":{},"effects":[],"items":[],"prototypeToken":{"name":"Universe-class Mass Conveyor","actorLink":true,"texture":{"src":"icons/svg/ship.svg"},"disposition":1,"displayName":0},"_id":"6836e238cce8d9fc","systemId":"wrath-and-glory","systemVersion":"7.1.1"} diff --git a/wg-voidships-builder/packs/wg-voidship-items.db b/wg-voidships-builder/packs/wg-voidship-items.db index fb00a68..2a3201f 100644 --- a/wg-voidships-builder/packs/wg-voidship-items.db +++ b/wg-voidships-builder/packs/wg-voidship-items.db @@ -1,76 +1,7 @@ -{"_id": "4c636b539f64cdb9", "name": "Mars-Pattern Macrocannon", "type": "weapon", "img": null, "system": {"category": "ranged", "damage": {"base": 12, "bonus": 0, "rank": 0, "ed": {"base": 3, "bonus": 0, "rank": 0}, "ap": {"base": -1, "bonus": 0, "rank": 0}, "enabled": false, "otherDamage": {"mortal": "0", "shock": "0", "wounds": "0"}}, "range": {"short": 30, "medium": 60, "long": 120, "melee": 1, "thrown": null}, "salvo": 3, "traits": {"list": [{"name": "brutal"}, {"name": "rapidFire", "rating": "2"}]}, "keywords": "VOIDSHIP, MACROBROADSIDES"}} -{"_id": "ca475410c5c586ab", "name": "Sunsear Laser Battery", "type": "weapon", "img": null, "system": {"category": "ranged", "damage": {"base": 14, "bonus": 0, "rank": 0, "ed": {"base": 2, "bonus": 0, "rank": 0}, "ap": {"base": -2, "bonus": 0, "rank": 0}, "enabled": false, "otherDamage": {"mortal": "0", "shock": "0", "wounds": "0"}}, "range": {"short": 40, "medium": 80, "long": 160, "melee": 1, "thrown": null}, "salvo": 2, "traits": {"list": [{"name": "reliable"}, {"name": "volley", "rating": "2"}]}, "keywords": "VOIDSHIP, MACROLASERS"}} -{"_id": "2e5ebcbd3f63b739", "name": "Lance Battery", "type": "weapon", "img": null, "system": {"category": "ranged", "damage": {"base": 16, "bonus": 0, "rank": 0, "ed": {"base": 1, "bonus": 0, "rank": 0}, "ap": {"base": -3, "bonus": 0, "rank": 0}, "enabled": false, "otherDamage": {"mortal": "0", "shock": "0", "wounds": "0"}}, "range": {"short": 50, "medium": 100, "long": 200, "melee": 1, "thrown": null}, "salvo": 2, "traits": {"list": [{"name": "precise"}, {"name": "volley", "rating": "2"}]}, "keywords": "VOIDSHIP, LANCE"}} -{"_id":"c0e76cf8e4a100c0","name":"Torpedo Tubes","type":"weapon","img":"modules/wng-core/assets/icons/weapons/missile-launcher.webp","system":{"category":"launcher","description":"Torpedowe wyrzutnie okrętowe. Strzał: Gunnery (BS) vs DEF; przechwytywalne przez TUR. Statystyki efektu zależą od załadowanej głowicy.\n\n**Kompatybilna amunicja (drag&drop na aktora, a następnie wybierz w polu Ammo):**\n• Torpedo Warhead — Standard / Plasma / Melta / Virus / Vortex / Guided.\n\n**Uwaga:** natywny system W&G nie zmienia DMG/AP/ED wg amunicji; używaj opisu ładunku przy interpretacji efektu.","keywords":"VOIDSHIP, ORDNANCE, TORPEDO, AMMO-DEPENDENT","rarity":"uncommon","salvo":1,"damage":{"enabled":false,"base":0,"bonus":0,"rank":0,"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{},"traits":{"list":[{"name":"ordnance"},{"name":"interceptable","rating":"TUR"}]},"upgrades":[]}} -{"_id":"60951ef378ddb44c","name":"Launch Bay","type":"weapon","img":"modules/wng-core/assets/icons/weapons/missile-launcher.webp","system":{"category":"launcher","description":"Zatoki startowe dla skrzydeł. Test Gunnery (BS) vs DEF celu lub manewry CAP/Intercept/Bombing/Assault zgodnie z ładunkiem skrzydeł.\n\n**Kompatybilna amunicja (wybierz w polu Ammo):**\n• Wing Loadout — Fury Interceptors / Starhawk Bombers / Assault Boats.\n\n**Uwaga:** system nie modyfikuje DMG/AP/ED wg ładunku — używaj opisu skrzydła.","keywords":"VOIDSHIP, CARRIER, CRAFT, AMMO-DEPENDENT","rarity":"uncommon","salvo":1,"damage":{"enabled":false,"base":0,"bonus":0,"rank":0,"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{},"traits":{"list":[{"name":"carrier","rating":"wings"},{"name":"interceptable","rating":"TUR"}]},"upgrades":[]}} -{"_id": "24c79e9c9ee464af","name":"Nova Cannon","type":"weapon","img":null,"system":{"category":"ranged","description":"Potężny strzał z przeładowaniem: można odpalić co 2 rundy (Recharge 1). Jeśli chybi, fala uderzeniowa rozrywa jednostki w promieniu 1 VU od punktu detonacji (rozproszenie). Każda 6 na ED przy trafieniu generuje dodatkowy krytyk.","keywords":"VOIDSHIP, SIEGE, NOVA","rarity":"rare","salvo":1,"damage":{"enabled":false,"base":0,"bonus":0,"rank":0,"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"traits":{"list":[{"name":"recharge","rating":"1 (fires every 2 rounds)"},{"name":"blast","rating":"1 VU (shockwave on miss)"},{"name":"nova-scatter","rating":"miss: detonate area"},{"name":"ed6-extra-crit","rating":"ED=6 → +1 Crit"}]},"install":{"notes":"DMG/AP/ED i dokładny szablon efektu mogą być modulowane stołowo; core: Recharge 1, miss→fala 1 VU, ED=6→+1 Crit."}}} -{"_id": "dce16e3acc436f41", "name": "Plasma Drive — Jovian Pattern", "type": "gear", "img": null, "system": {"description": "Essential Component: plasma drive (Jovian).", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, DRIVE"}} -{"_id": "501ff1a2bd541b7a", "name": "Plasma Drive — Lathe Pattern", "type": "gear", "img": null, "system": {"description": "Essential Component: plasma drive (Lathe).", "value": 0, "rarity": "veryRare", "keywords": "VOIDSHIP, ESSENTIAL, DRIVE"}} -{"_id": "696ec23471a30210", "name": "Warp Engine — Strelov", "type": "gear", "img": null, "system": {"description": "Essential Component: warp engine (Strelov).", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, WARP"}} -{"_id": "6251cd78f55a7109", "name": "Warp Engine — Miloslav", "type": "gear", "img": null, "system": {"description": "Essential Component: warp engine (Miloslav).", "value": 0, "rarity": "veryRare", "keywords": "VOIDSHIP, ESSENTIAL, WARP"}} -{"_id": "46a88fd35a5b5c3c", "name": "Geller Field (Primary)", "type": "gear", "img": null, "system": {"description": "Primary Geller field projector.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, GELLER"}} -{"_id": "3e086585bbae99e3", "name": "Geller Field (Reserve)", "type": "gear", "img": null, "system": {"description": "Reserve/backup Geller field (independent).", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, GELLER"}} -{"_id": "252f476c561c29a4", "name": "Void Shield Array (Single)", "type": "gear", "img": null, "system": {"description": "Single-pattern void shields.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, SHIELDS"}} -{"_id": "ba4dff7991891d61", "name": "Void Shield Array (Double)", "type": "gear", "img": null, "system": {"description": "Dual-pattern void shields.", "value": 0, "rarity": "veryRare", "keywords": "VOIDSHIP, ESSENTIAL, SHIELDS"}} -{"_id": "830b39f8c6a0367e", "name": "Combat Bridge", "type": "gear", "img": null, "system": {"description": "Command bridge; targeting/cmd suites.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, ESSENTIAL, BRIDGE"}} -{"_id": "9f0743898f310492", "name": "Vitae-Pattern Life Sustainer", "type": "gear", "img": null, "system": {"description": "Essential life sustainer system.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, LIFE-SUSTAINER"}} -{"_id": "d8430ab1d15beb37", "name": "Voidsmen Quarters", "type": "gear", "img": null, "system": {"description": "Standard crew quarters.", "value": 0, "rarity": "common", "keywords": "VOIDSHIP, ESSENTIAL, QUARTERS"}} -{"_id": "1916605eb593cc0a", "name": "Luxury Passenger Quarters", "type": "gear", "img": null, "system": {"description": "Luxury accommodations.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, ESSENTIAL, QUARTERS"}} -{"_id": "dd72e813065d0e34", "name": "Auger Array", "type": "gear", "img": null, "system": {"description": "Standard shipboard augur sensors.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, ESSENTIAL, AUGUR"}} -{"_id": "fff778f13b7ddf73", "name": "Empyrean Mantle", "type": "gear", "img": null, "system": {"description": "Warp-signature damping.", "value": 0, "rarity": "veryRare", "keywords": "VOIDSHIP, SUPPLEMENTAL, STEALTH"}} -{"_id": "2a099d32269fcc91", "name": "Holo-Baffles", "type": "gear", "img": null, "system": {"description": "Visual/holo signature masking.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, SUPPLEMENTAL, STEALTH"}} -{"_id": "692975b02473b4ef", "name": "Teleportarium", "type": "gear", "img": null, "system": {"description": "Teleport insertion capability.", "value": 0, "rarity": "veryRare", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "26ea0553729833be", "name": "Tenebro-Maze", "type": "gear", "img": null, "system": {"description": "Internal labyrinth vs boarders.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "b9cd53d57d0eb46c", "name": "Murder-Servitors", "type": "gear", "img": null, "system": {"description": "Automated servitor kill-grids.", "value": 0, "rarity": "veryRare", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "209b5b26731923b6", "name": "Superior Plating", "type": "gear", "img": null, "system": {"description": "Enhanced armor facings.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "96594975caec8fd1", "name": "Librarium Vault", "type": "gear", "img": null, "system": {"description": "Schola/librarium complex.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "53394adfd9df0f67", "name": "Temple-Shrine to the God-Emperor", "type": "gear", "img": null, "system": {"description": "Dedicated shrine complex.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "eed15ac1f0b855d0", "name": "Observation Dome", "type": "gear", "img": null, "system": {"description": "Panoramic astrogation dome.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "035ef8929ef5c465", "name": "Cargo Hold & Lighter Bay", "type": "gear", "img": null, "system": {"description": "Expanded cargo & lighters.", "value": 0, "rarity": "common", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "ce218220da6dad3e", "name": "Barracks", "type": "gear", "img": null, "system": {"description": "Embarked troops for boarding/landings.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "32caa789ebca127b", "name": "Auto-Temple", "type": "gear", "img": null, "system": {"description": "Automated Ecclesiarchy node.", "value": 0, "rarity": "rare", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id": "3e2dd5640db8e12b", "name": "Trophy Room", "type": "gear", "img": null, "system": {"description": "Crew morale-focused trophy hall.", "value": 0, "rarity": "uncommon", "keywords": "VOIDSHIP, SUPPLEMENTAL"}} -{"_id":"e101a1b2c3d4e5f1","name":"BG-15 Assault Scanners","type":"gear","img":null,"system":{"description":"Zbliżeniowe, agresywnie strojone auspeksy do skanów podczas abordażu i w zwarciu. Ułatwiają szybkie namierzanie celów w pobliżu.","keywords":"VOIDSHIP, ESSENTIAL, AUGUR","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e102a1b2c3d4e5f2","name":"Belecane-pattern 90.r Geller Field","type":"gear","img":null,"system":{"description":"Standaryzowany generator pola Gellera utrzymujący „bańkę” rzeczywistości podczas żeglugi w Osnowie.","keywords":"VOIDSHIP, ESSENTIAL, GELLER","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e103a1b2c3d4e5f3","name":"Bilge-Rat Quarters","type":"gear","img":null,"system":{"description":"Skrajnie oszczędne, ciasne kwatery maksymalizujące pojemność załogi kosztem morale i komfortu.","keywords":"VOIDSHIP, ESSENTIAL, QUARTERS","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e104a1b2c3d4e5f4","name":"Clemency-pattern Life Sustainer","type":"gear","img":null,"system":{"description":"Wydajny układ podtrzymania życia z ulepszonym obiegiem powietrza i recyklingiem; zmniejsza straty długodystansowe.","keywords":"VOIDSHIP, ESSENTIAL, LIFE-SUSTAINER","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e105a1b2c3d4e5f5","name":"Fleet Flag Bridge","type":"gear","img":null,"system":{"description":"Mostek flagowy do koordynacji formacji i zespołów zadaniowych; rozszerzone stanowiska dowodzenia i łączności.","keywords":"VOIDSHIP, ESSENTIAL, BRIDGE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e106a1b2c3d4e5f6","name":"Flight Command Bridge","type":"gear","img":null,"system":{"description":"Układ mostka zoptymalizowany pod działania lotnicze; integracja kontroli skrzydeł myśliwskich i rozpoznawczych.","keywords":"VOIDSHIP, ESSENTIAL, BRIDGE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e107a1b2c3d4e5f7","name":"Invasion Bridge","type":"gear","img":null,"system":{"description":"Mostek szturmowy do kierowania desantami i operacjami lądowania; kaplice bojowe i łącza do sekcji piechoty.","keywords":"VOIDSHIP, ESSENTIAL, BRIDGE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e108a1b2c3d4e5f8","name":"Jovian-pattern Class 8.1 Drive","type":"gear","img":null,"system":{"description":"Fregatowy rdzeń plazmowy Jovian – niezawodny i łatwy w serwisie w stoczniach Imperial Navy.","keywords":"VOIDSHIP, ESSENTIAL, DRIVE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e109a1b2c3d4e5f9","name":"Jovian-pattern Class 8.2 Drive","type":"gear","img":null,"system":{"description":"Lekkokrezerski wariant napędu Jovian zoptymalizowany do długich patroli i równych cykli obciążenia.","keywords":"VOIDSHIP, ESSENTIAL, DRIVE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e10aa1b2c3d4e5fa","name":"Jovian-pattern Class 8.3 Drive","type":"gear","img":null,"system":{"description":"Krezerskie turbiny Jovian – balans między ciągiem a nakładem obsługi i remontów.","keywords":"VOIDSHIP, ESSENTIAL, DRIVE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e10ba1b2c3d4e5fb","name":"Jovian-pattern Class 8.4 Drive","type":"gear","img":null,"system":{"description":"Rdzeń plazmowy dla ciężkich krążowników – długotrwałe kampanie i wysoka rezerwa mocy.","keywords":"VOIDSHIP, ESSENTIAL, DRIVE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e10ca1b2c3d4e5fc","name":"Miloslav G-616.b Warp Engine","type":"gear","img":null,"system":{"description":"Kompaktowy silnik Osnowy do rajderów/transportowców/fregat; agresywne, szybkie tranzyty kosztem kapryśności.","keywords":"VOIDSHIP, ESSENTIAL, WARP","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e10da1b2c3d4e5fd","name":"Miloslav H-616.b Warp Engine","type":"gear","img":null,"system":{"description":"Wzmocniona wersja Miloslava dla lekkich i pełnych krążowników; lepsza stabilność w burzach Osnowy.","keywords":"VOIDSHIP, ESSENTIAL, WARP","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e10ea1b2c3d4e5fe","name":"Saturine-pattern Class 4A Ultra Drive","type":"gear","img":null,"system":{"description":"Battlecruiserowy napęd plazmowy – brutalne przyspieszenia i wysoki ciąg w krótkich oknach bojowych.","keywords":"VOIDSHIP, ESSENTIAL, DRIVE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e10fa1b2c3d4e5ff","name":"Saturine-pattern Class 5 Drive","type":"gear","img":null,"system":{"description":"Napęd dla grand cruiser – imponująca moc przy wysokich kosztach utrzymania i wymogach serwisowych.","keywords":"VOIDSHIP, ESSENTIAL, DRIVE","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e110a1b2c3d4e5f0","name":"Triple Void Shield Array","type":"gear","img":null,"system":{"description":"Potrójna warstwa imperialnych osłon dla ciężkich kadłubów linii; zapewnia znacznie większą chłonność ognia.","keywords":"VOIDSHIP, ESSENTIAL, SHIELDS","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e111a1b2c3d4e5f1","name":"Voss 'Glimmer'-pattern Void Shield Array","type":"gear","img":null,"system":{"description":"Wydajna, jednowarstwowa osłona wg wzorca Voss – standard dla lżejszych kadłubów.","keywords":"VOIDSHIP, ESSENTIAL, SHIELDS","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e112a1b2c3d4e5f2","name":"Voss 'Glimmer'-pattern Multiple Void Shield Array","type":"gear","img":null,"system":{"description":"Rozbudowany układ tarcz Voss z wieloma warstwami – typowy dla krążowników.","keywords":"VOIDSHIP, ESSENTIAL, SHIELDS","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e113a1b2c3d4e5f3","name":"X-470 Ultimo Array","type":"gear","img":null,"system":{"description":"Mocny zewnętrzny zestaw augurów – ponadprzeciętna detekcja, ale silna sygnatura emisyjna.","keywords":"VOIDSHIP, ESSENTIAL, AUGUR","rarity":"uncommon","source":"Battlefleet Koronus, p. 34"}} -{"_id":"e114a1b2c3d4e5f4","name":"Arboretum","type":"gear","img":null,"system":{"description":"Hydroponiczne ogrody poprawiające morale i wspomagające podtrzymanie życia w długich rejsach.","keywords":"VOIDSHIP, SUPPLEMENTAL, LIFE-SUPPORT","rarity":"uncommon","source":"Into the Storm, p. 161–162"}} -{"_id":"e115a1b2c3d4e5f5","name":"Asteroid Mining Facility","type":"gear","img":null,"system":{"description":"Zestawy górnicze, holowniki i rafinerie pokładowe do samodzielnej eksploatacji pasów asteroid.","keywords":"VOIDSHIP, SUPPLEMENTAL, INDUSTRY","rarity":"uncommon","source":"Into the Storm, p. 161–162"}} -{"_id":"e116a1b2c3d4e5f6","name":"Astropathic Choir-chambers","type":"gear","img":null,"system":{"description":"Ufortyfikowane, wyciszone komnaty dla chóru astropatów z wzmacniaczami psycho-łączności.","keywords":"VOIDSHIP, SUPPLEMENTAL, COMMUNICATIONS","rarity":"uncommon","source":"Into the Storm, p. 161"}} -{"_id":"e117a1b2c3d4e5f7","name":"Auxiliary Plasma Banks","type":"gear","img":null,"system":{"description":"Dodatkowe akumulatory plazmowe zapewniające krótkie skoki mocy dla całego okrętu.","keywords":"VOIDSHIP, SUPPLEMENTAL, DRIVE","rarity":"uncommon","source":"Into the Storm, p. 161"}} -{"_id":"e118a1b2c3d4e5f8","name":"Broadband Hymn-casters","type":"gear","img":null,"system":{"description":"Wieże nadawcze zalewające wszystkie pasma hymnami, utrudniające koordynację przeciwnika.","keywords":"VOIDSHIP, SUPPLEMENTAL, COMMUNICATIONS","rarity":"uncommon","install":{"power":3,"space":0,"sp":1},"source":"Into the Storm, p. 161"}} -{"_id":"e119a1b2c3d4e5f9","name":"Drop Pod Launch Bays","type":"gear","img":null,"system":{"description":"Katedry startowe i układy naprowadzania do masowych zrzutów kapsuł desantowych.","keywords":"VOIDSHIP, SUPPLEMENTAL, ORDNANCE","rarity":"uncommon","install":{"power":1,"space":3,"sp":2},"source":"Into the Storm, p. 161"}} -{"_id":"e11aa1b2c3d4e5fa","name":"Empyrean Mantle (Expanded)","type":"gear","img":null,"system":{"description":"Rozbudowane projektory tłumiące sygnaturę w Osnowie; warianty dla mniejszych i większych kadłubów.","keywords":"VOIDSHIP, SUPPLEMENTAL, STEALTH","rarity":"uncommon","install":{"variants":[{"hulls":"Transports/Raiders/Frigates","power":3,"space":0,"sp":2},{"hulls":"Light Cruisers/Cruisers","power":5,"space":0,"sp":2}]},"source":"Into the Storm, p. 161–162"}} -{"_id":"e11ba1b2c3d4e5fb","name":"Reinforced Prow","type":"gear","img":null,"system":{"description":"Wzmocniona struktura dziobowa do taranowania i walki na kursie zbieżnym.","keywords":"VOIDSHIP, SUPPLEMENTAL, ARMOUR","rarity":"uncommon","install":{"power":0,"space":2,"sp":1},"source":"Into the Storm, p. 161–162"}} -{"_id":"e11ca1b2c3d4e5fc","name":"Shadowblind Bays","type":"gear","img":null,"system":{"description":"Zaciemnione, bafflowane zatoki maskujące ruchy i sygnaturę cieplną w trakcie operacji.","keywords":"VOIDSHIP, SUPPLEMENTAL, CARGO","rarity":"uncommon","source":"Into the Storm, p. 161"}} -{"_id":"e11da1b2c3d4e5fd","name":"Jovian-pattern Missile Battery","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"volley","rating":"2"}]},"description":"Zewnętrzne zasobniki rakiet do gwałtownego salwowania – idealne na otwarcie starcia, potem długi przeładunek.","keywords":"VOIDSHIP, ORDNANCE, MACROBATT","rarity":"uncommon","source":"Into the Storm, p. 161"}} -{"_id":"e11ea1b2c3d4e5fe","name":"Lathe-pattern Grav-culverin Broadside","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"broadside","rating":"-"},{"name":"option:extended-range (reduced damage)","rating":"-"}]},"description":"Grawitacyjne masowe miotacze; mogą odpalać samonapędzane pociski dla większego zasięgu kosztem obrażeń.","keywords":"VOIDSHIP, MACROBROADSIDES","rarity":"uncommon","source":"Into the Storm, p. 161–162"}} -{"_id":"e11fa1b2c3d4e5ff","name":"Mezoa-pattern Macrocannons","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"bulky","rating":"-"}]},"description":"Mezoański wariant Mars-pattern – wyższe osiągi za cenę większych wymagań mocy i przestrzeni.","keywords":"VOIDSHIP, MACROBATT","rarity":"uncommon","source":"Into the Storm, p. 161–162"}} -{"_id":"e120a1b2c3d4e5f0","name":"Pyros Melta-cannons","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"inferno-on-crit","rating":"-"}]},"description":"Przewymiarowane lufy z ładunkami melta; trafienia krytyczne łatwo wzniecają rozległe pożary.","keywords":"VOIDSHIP, MACROBATT, MELTA","rarity":"uncommon","source":"Into the Storm, p. 162"}} -{"_id":"e121a1b2c3d4e5f1","name":"Sunhammer Lance (Weapon)","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"lance","rating":"-"}]},"description":"Wysokoenergetyczny emiter lancy do przebijania pancerzy i pasów opancerzenia.","keywords":"VOIDSHIP, LANCE","rarity":"uncommon","source":"Into the Storm, p. 163"}} -{"_id":"e122a1b2c3d4e5f2","name":"Sunhammer Lance (Battery)","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"lance","rating":"-"},{"name":"battery","rating":"-"}]},"description":"Zespół sprzężonych emiterów Sunhammer – nasyca cel cięciem wiązek przy ogromnym poborze mocy.","keywords":"VOIDSHIP, LANCE","rarity":"uncommon","source":"Into the Storm, p. 163"}} -{"_id":"e123a1b2c3d4e5f3","name":"Sunsear Las-broadside","type":"weapon","img":null,"system":{"category":"ranged","damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","shock":"0","wounds":"0"}},"range":{"short":30,"medium":60,"long":120},"salvo":2,"traits":{"list":[{"name":"broadside","rating":"-"}]},"description":"Długozasięgowe zespoły Sunsear na burtach – celność i precyzja na dystansie.","keywords":"VOIDSHIP, MACROLASERS","rarity":"uncommon","source":"Into the Storm, p. 162–163"}} -{"_id":"a1b2c3d4e5f60123","name":"Torpedo Warhead — Standard","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"uncommon","description":"Standardowa głowica torpedy. Używana przez Torpedo Tubes. Strzał przechwytywalny przez TUR.","value":0,"keywords":"VOIDSHIP, TORPEDO, WARHEAD","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":14,"bonus":0,"rank":0,"ed":{"base":3,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":3,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"ordnance"},{"name":"interceptable","rating":"TUR"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"b2c3d4e5f6a70124","name":"Torpedo Warhead — Plasma","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"rare","description":"+1 ED przeciw celom z aktywnymi SHD.","value":0,"keywords":"VOIDSHIP, TORPEDO, PLASMA, WARHEAD","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":5,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":5,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"ordnance"},{"name":"interceptable","rating":"TUR"},{"name":"anti-shield","+1ED"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"c3d4e5f6a7b80125","name":"Torpedo Warhead — Melta","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"rare","description":"W Contact/Close: +2 ED; bardzo wysoki AP.","value":0,"keywords":"VOIDSHIP, TORPEDO, MELTA, WARHEAD","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":18,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-4,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-4,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"ordnance"},{"name":"interceptable","rating":"TUR"},{"name":"melta","+2ED @ Contact/Close"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"d4e5f6a7b8c90126","name":"Torpedo Warhead — Virus","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"very rare","description":"Niskie obrażenia kadłuba; dewastuje załogę/systemy (CR -1 on Hit bez SHD; na 6 na Wrath: kolejne -1).","value":0,"keywords":"VOIDSHIP, TORPEDO, VIRUS, WARHEAD","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":4,"bonus":0,"rank":0,"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"ordnance"},{"name":"interceptable","rating":"TUR"},{"name":"crew-killer"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"e5f6a7b8c9d00127","name":"Torpedo Warhead — Vortex","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"extremely rare","description":"On Crit: dodatkowy d66 Crit i Blast 1 VU.","value":0,"keywords":"VOIDSHIP, TORPEDO, VORTEX, WARHEAD","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":20,"bonus":0,"rank":0,"ed":{"base":6,"bonus":0,"rank":0},"ap":{"base":-5,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":6,"bonus":0,"rank":0},"ap":{"base":-5,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"ordnance"},{"name":"interceptable","rating":"TUR"},{"name":"blast","rating":"1VU"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"f6a7b8c9d0e10128","name":"Torpedo Warhead — Guided","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"rare","description":"+1k do ataku / przerzut 1 kości; TUR przeciwnika -1 do Intercept.","value":0,"keywords":"VOIDSHIP, TORPEDO, GUIDED, WARHEAD","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":14,"bonus":0,"rank":0,"ed":{"base":3,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":3,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"ordnance"},{"name":"guided"},{"name":"interceptable","rating":"TUR-1"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"a7b8c9d0e1f20129","name":"Wing Loadout — Fury Interceptors","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"uncommon","description":"CAP/Intercept przeciw craft/torpedom.","value":0,"keywords":"VOIDSHIP, WING, FURY, INTERCEPT","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":8,"bonus":0,"rank":0,"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":2,"bonus":0,"rank":0},"ap":{"base":-1,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"carrier-wing"},{"name":"cap"},{"name":"intercept","+2 vs craft/torp"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"b8c9d0e1f2a3012a","name":"Wing Loadout — Starhawk Bombers","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"uncommon","description":"Bombing run przeciw okrętom; +1 ED jeśli cel ma SHD>0.","value":0,"keywords":"VOIDSHIP, WING, STARHAWK, BOMBING","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":12,"bonus":0,"rank":0,"ed":{"base":4,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":4,"bonus":0,"rank":0},"ap":{"base":-2,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"carrier-wing"},{"name":"bombing"},{"name":"interceptable","rating":"TUR"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} -{"_id":"c9d0e1f2a3b4012b","name":"Wing Loadout — Assault Boats","type":"weapon","img":"modules/wng-core/assets/icons/weapons/ranged-weapon.webp","system":{"quantity":1,"rarity":"uncommon","description":"Zamiast DMG: Boarding (Close/Contact). Jeśli dotrą bez strat: +2 do 1. fazy.","value":0,"keywords":"VOIDSHIP, WING, ASSAULT, BOARDING","equipped":false,"attack":{"base":0,"bonus":0,"rank":"0"},"damage":{"base":0,"bonus":0,"rank":0,"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"enabled":false,"otherDamage":{"mortal":"0","wounds":"0","shock":"0"}},"ed":{"base":0,"bonus":0,"rank":0},"ap":{"base":0,"bonus":0,"rank":0},"category":"grenade-missile","range":{"short":30,"medium":60,"long":120,"melee":1,"thrown":null},"ammo":{"id":""},"salvo":1,"traits":{"list":[{"name":"carrier-wing"},{"name":"assault-boats"},{"name":"boarding"}]},"upgrades":[],"combi":{},"twinned":false,"otherDamage":{}}} +{"_id":"ITEMBRIDGECLV01","name":"Command Bridge (Civilian)","type":"gear","img":"icons/svg/book.svg","flags":{"wg-voidships-builder":{"component":{"kind":"bridge","subtype":"civilian","tags":["bridge"]},"voidOnly":true}},"system":{"description":"Standard command bridge and cogitators.","voidship":{"slot":"Internal","use":{"space":2,"power":2},"mods":{"armour":0,"integrity":0,"manoeuvre":1,"detection":1,"speed":0,"space":0,"power":0}}},"effects":[]} +{"_id":"ITEMGELLARSTD01","name":"Gellar Field Projector","type":"gear","img":"icons/svg/temple.svg","flags":{"wg-voidships-builder":{"component":{"kind":"gellar","subtype":"standard","tags":["gellar"]},"voidOnly":true}},"system":{"description":"Essential protection in the Immaterium.","voidship":{"slot":"Internal","use":{"space":2,"power":3},"mods":{"armour":0,"integrity":0,"manoeuvre":0,"detection":0,"speed":0,"space":0,"power":0}}},"effects":[]} +{"_id":"ITEMDRIVEWRP001","name":"Miloslav Warp Drive (Civilian)","type":"gear","img":"icons/svg/wing.svg","flags":{"wg-voidships-builder":{"component":{"kind":"drive","subtype":"warp","tags":["drive","warp"]},"voidOnly":true}},"system":{"description":"Reliable civilian warp drive.","voidship":{"slot":"Internal","use":{"space":3,"power":6},"mods":{"armour":0,"integrity":0,"manoeuvre":0,"detection":0,"speed":0,"space":0,"power":0}}},"effects":[]} +{"_id":"ITEMSENSORAG001","name":"Augur Array (Civilian)","type":"gear","img":"icons/svg/mystery-man.svg","flags":{"wg-voidships-builder":{"component":{"kind":"sensor","subtype":"augur","tags":["sensor","auspex"]},"voidOnly":true}},"system":{"description":"Standard augur/sensor package.","voidship":{"slot":"Aetherics","use":{"space":1,"power":2},"mods":{"armour":0,"integrity":0,"manoeuvre":0,"detection":2,"speed":0,"space":0,"power":0}}},"effects":[]} +{"_id":"ITEMARMORHL001","name":"Reinforced Hull Plating","type":"gear","img":"icons/svg/armor.svg","flags":{"wg-voidships-builder":{"component":{"kind":"armour","subtype":"plating","tags":["hull","armour"]},"voidOnly":true}},"system":{"description":"Additional armour plates and bracing.","voidship":{"slot":"Internal","use":{"space":1,"power":0},"mods":{"armour":2,"integrity":4,"manoeuvre":-1,"detection":0,"speed":0,"space":0,"power":0}}},"effects":[]} +{"_id":"ITEMCARGOHOLD01","name":"Cargo Hold & Lighter Bay","type":"gear","img":"icons/svg/crate.svg","flags":{"wg-voidships-builder":{"component":{"kind":"cargo-bay","subtype":"standard","tags":["cargo-bay","hold"]},"voidOnly":true}},"system":{"description":"General-purpose cargo hold with lighter handling.","voidship":{"slot":"Internal","use":{"space":-5,"power":1},"mods":{"armour":0,"integrity":0,"manoeuvre":0,"detection":0,"speed":0,"space":-5,"power":0}}},"effects":[]} +{"_id":"ITEMAUXPLASM01","name":"Auxiliary Plasma Generator","type":"gear","img":"icons/svg/energy.svg","flags":{"wg-voidships-builder":{"component":{"kind":"plasma","subtype":"aux-generator","tags":["aux-plasma"]},"voidOnly":true}},"system":{"description":"Auxiliary plasma reactor increasing available power.","voidship":{"slot":"Internal","use":{"space":2,"power":-6},"mods":{"armour":0,"integrity":0,"manoeuvre":0,"detection":0,"speed":0,"space":0,"power":6}}},"effects":[]} diff --git a/wg-voidships-builder/sample_universe.json b/wg-voidships-builder/sample_universe.json new file mode 100644 index 0000000..8652255 --- /dev/null +++ b/wg-voidships-builder/sample_universe.json @@ -0,0 +1,130 @@ +{ + "name": "Universe-class Mass Conveyor", + "type": "vehicle", + "img": "icons/svg/ship.svg", + "folder": null, + "ownership": { "default": 0 }, + "flags": { + "core": { "sheetClass": "wg-voidships-builder.VoidshipSheet" }, + "wg-voidships-builder": { + "isVoidship": true, + "hull": { + "class": "Universe-class Mass Conveyor", + "size": "Cruiser", + "slots": { "prow": 0, "dorsal": 0, "port": 1, "starboard": 1, "keel": 0 }, + "requirements": [ + { "tag": "cargo-bay", "min": 4, "label": "Cargo Holds" }, + { "tag": "aux-plasma", "min": 1, "label": "Auxiliary Plasma Generator" } + ] + }, + "base": { "armour": 12, "integrity": 36, "manoeuvre": -1, "detection": 0, "speed": 8, "space": 60, "power": 55 }, + "crew": { "command": 1, "pilot": 1, "sensors": 1, "engineering": 2, "gunnery": 2, "security": 2, "flightDeck": 0, "passengers": 0 }, + "rtRaw": { + "mnvr": -1, + "notes": "Super-massive hauler for colony loads and crusade materiel; logistics linchpin.", + "combat": { "size": "colossal", "speed": 8, "wounds": { "value": 0, "bonus": 0, "max": 36 }, "resilience": { "bonus": 0, "total": 12 }, "defence": { "bonus": 2 }, "fly": 0 }, + "rt": { + "speed": 8, + "manoeuvrability": -10, + "detection": 0, + "armour": 12, + "hullIntegrity": 36, + "space": 60, + "power": 55, + "weapons": { "prow": 0, "dorsal": 0, "port": 1, "starboard": 1, "keel": 0 }, + "turret": 1, + "source": "Battlefleet Koronus p.31 — to verify" + }, + "source": "Battlefleet Koronus, p. 31" + } + } + }, + "system": {}, + "effects": [], + "items": [ + { + "_id": "ABCD1234EFGH5678", + "name": "Command Bridge (Civilian)", + "type": "gear", + "img": "icons/svg/book.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "bridge", "subtype": "civilian", "tags": ["bridge"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": 2, "power": 2 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 1, "detection": 1, "speed": 0, "space": 0, "power": 0 } } } + }, + { + "_id": "IJKL9012MNOP3456", + "name": "Gellar Field Projector", + "type": "gear", + "img": "icons/svg/temple.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "gellar", "subtype": "standard", "tags": ["gellar"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": 2, "power": 3 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0 } } } + }, + { + "_id": "QRST7890UVWX1234", + "name": "Miloslav Warp Drive (Civilian)", + "type": "gear", + "img": "icons/svg/wing.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "drive", "subtype": "warp", "tags": ["drive", "warp"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": 3, "power": 6 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 0 } } } + }, + { + "_id": "YZAB5678CDEF9012", + "name": "Augur Array (Civilian)", + "type": "gear", + "img": "icons/svg/mystery-man.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "sensor", "subtype": "augur", "tags": ["sensor", "auspex"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Aetherics", "use": { "space": 1, "power": 2 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 2, "speed": 0, "space": 0, "power": 0 } } } + }, + { + "_id": "GHIJ3456KLMN7890", + "name": "Reinforced Hull Plating", + "type": "gear", + "img": "icons/svg/armor.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "armour", "subtype": "plating", "tags": ["hull", "armour"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": 1, "power": 0 }, "mods": { "armour": 2, "integrity": 4, "manoeuvre": -1, "detection": 0, "speed": 0, "space": 0, "power": 0 } } } + }, + { + "_id": "PQRS9012TUVW3456", + "name": "Cargo Hold & Lighter Bay", + "type": "gear", + "img": "icons/svg/crate.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "cargo-bay", "subtype": "standard", "tags": ["cargo-bay", "hold"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": -5, "power": 1 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": -5, "power": 0 } } } + }, + { + "_id": "WXYZ1234ABCD5678", + "name": "Cargo Hold & Lighter Bay", + "type": "gear", + "img": "icons/svg/crate.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "cargo-bay", "subtype": "standard", "tags": ["cargo-bay", "hold"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": -5, "power": 1 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": -5, "power": 0 } } } + }, + { + "_id": "EFGH9012IJKL3456", + "name": "Cargo Hold & Lighter Bay", + "type": "gear", + "img": "icons/svg/crate.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "cargo-bay", "subtype": "standard", "tags": ["cargo-bay", "hold"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": -5, "power": 1 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": -5, "power": 0 } } } + }, + { + "_id": "MNOP5678QRST9012", + "name": "Cargo Hold & Lighter Bay", + "type": "gear", + "img": "icons/svg/crate.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "cargo-bay", "subtype": "standard", "tags": ["cargo-bay", "hold"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": -5, "power": 1 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": -5, "power": 0 } } } + }, + { + "_id": "UVWX3456YZAB7890", + "name": "Auxiliary Plasma Generator", + "type": "gear", + "img": "icons/svg/energy.svg", + "flags": { "wg-voidships-builder": { "component": { "kind": "plasma", "subtype": "aux-generator", "tags": ["aux-plasma"] }, "voidOnly": true } }, + "system": { "voidship": { "slot": "Internal", "use": { "space": 2, "power": -6 }, "mods": { "armour": 0, "integrity": 0, "manoeuvre": 0, "detection": 0, "speed": 0, "space": 0, "power": 6 } } } + } + ], + "prototypeToken": { "name": "Universe-class Mass Conveyor", "actorLink": true, "texture": { "src": "icons/svg/ship.svg" }, "disposition": 1, "displayName": 0 }, + "_id": "6836e238cce8d9fc", + "systemId": "wrath-and-glory", + "systemVersion": "7.1.1" +} diff --git a/wg-voidships-builder/scripts/voidship-actor.js b/wg-voidships-builder/scripts/voidship-actor.js index 73d1bf0..2cebd21 100644 --- a/wg-voidships-builder/scripts/voidship-actor.js +++ b/wg-voidships-builder/scripts/voidship-actor.js @@ -1,13 +1,15 @@ // W&G Voidships Builder — Voidship Actor Sheet (vehicle+flag emulation) -// v1.0.0 (safe MVP) — works on Foundry v11–v13 +// v1.0.1 — works on Foundry v11–v13 /* eslint-env es2021 */ const VB_MOD = "wg-voidships-builder"; +const VB_DEBUG = true; // debug; później zrobimy game.settings +function dbg(...args) { if (VB_DEBUG) console.debug("[VB]", ...args); } class VoidshipSheet extends ActorSheet { static get defaultOptions() { const opts = super.defaultOptions; return foundry.utils.mergeObject(opts, { - classes: ["wg-voidships", "sheet", "actor", "voidship"], + classes: ["wg-voidships", "sheet", "actor", "voidship", "themed", "theme-light"], template: `modules/${VB_MOD}/templates/voidship-sheet.hbs`, width: 720, height: 680, @@ -15,32 +17,27 @@ class VoidshipSheet extends ActorSheet { }); } - /** Prefer to use this sheet only for vehicles marked flagiem voidship */ - _canUserView(user) { - return !!user; - } - get isVoidship() { - return this.actor?.getFlag(VB_MOD, "isVoidship") === true; - } + _canUserView(user) { return !!user; } + get isVoidship() { return this.actor?.getFlag(VB_MOD, "isVoidship") === true; } - /** Aggregate base + mods from items into derived summary (safe, optional) */ + /** Prostszą agregację zostawiamy do walidacji ręcznej etc. */ _computeDerived() { const a = this.actor; -const b = a.getFlag(VB_MOD, "base") || {}; -const base = { - armour: Number(b.armour) || 0, - integrity: Number(b.integrity) || 0, - manoeuvre: Number(b.manoeuvre) || 0, - detection: Number(b.detection) || 0, - speed: Number(b.speed) || 0, - space: Number(b.space) || 0, - power: Number(b.power) || 0 -}; + const b = a.getFlag(VB_MOD, "base") || {}; + const base = { + armour: Number(b.armour) || 0, + integrity: Number(b.integrity) || 0, + manoeuvre: Number(b.manoeuvre) || 0, + detection: Number(b.detection) || 0, + speed: Number(b.speed) || 0, + space: Number(b.space) || 0, + power: Number(b.power) || 0 + }; const mods = { armour: 0, integrity: 0, manoeuvre: 0, detection: 0, speed: 0, space: 0, power: 0 }; const slots = { prow: 0, dorsal: 0, port: 0, starboard: 0, keel: 0, other: 0 }; const items = a?.items ?? []; for (const it of items) { - const eq = (it.system?.equipped ?? true); // treat as mounted unless explicitly off + const eq = (it.system?.equipped ?? true); const v = it.system?.voidship ?? {}; const m = v.mods ?? {}; if (eq) { @@ -50,7 +47,7 @@ const base = { } } const slot = String((v.slot || it.getFlag(VB_MOD, "slot") || "")).toLowerCase(); - if (slot && slots.hasOwnProperty(slot)) slots[slot]++; else slots.other++; + if (slot && Object.prototype.hasOwnProperty.call(slots, slot)) slots[slot]++; else slots.other++; } const total = { armour: base.armour + mods.armour, @@ -61,62 +58,153 @@ const base = { space: base.space + mods.space, power: base.power + mods.power }; - // Headroom (positive = free) total.spaceFree = total.space; total.powerFree = total.power; - // If components encode their usage (voidship.use.{space|power}) for (const it of items) { const use = it.system?.voidship?.use ?? {}; if (Number.isFinite(Number(use.space))) total.spaceFree -= Number(use.space); if (Number.isFinite(Number(use.power))) total.powerFree -= Number(use.power); } + dbg("computeDerived: base=", base, "mods=", mods, "total=", total, "slots=", slots); return { base, mods, total, slots }; } - async getData(options = {}) { + async getData(options) { const data = await super.getData(options); - data.isVoidship = this.isVoidship; - data.voidship = this._computeDerived(); + const actor = this.actor; - const hull = this.actor.getFlag(VB_MOD, "hull") || {}; - data.hull = { - class: hull.class || this.actor.name, - size: hull.size || "Cruiser", - slotsAllowed: hull.slots || { prow: 0, dorsal: 0, port: 0, starboard: 0, keel: 0 } - }; - data.crew = this.actor.getFlag(VB_MOD, "crew") || { - command: 1, pilot: 1, sensors: 1, engineering: 2, - gunnery: 2, security: 2, flightDeck: 0, passengers: 0 - }; -data.rtRaw = this.actor.getFlag(VB_MOD, "rtRaw") || {}; -try { - data.rtRawString = JSON.stringify(data.rtRaw, null, 2); -} catch (e) { - data.rtRawString = "{}"; -} + // ——— FLAGS (cały namespace) + const ns = actor.flags?.[VB_MOD] || {}; + const hull = ns.hull || { class: actor.name, size: "Cruiser", slots: { prow: 0, dorsal: 0, port: 0, starboard: 0, keel: 0 } }; + const base = ns.base || { armour: 0, integrity: 0, manoeuvre: 0, detection: 0, speed: 0, space: 0, power: 0 }; + const crew = ns.crew || { command: 1, pilot: 1, sensors: 1, engineering: 2, gunnery: 2, security: 2, flightDeck: 0, passengers: 0 }; + const rtRaw = ns.rtRaw || {}; + const rt = rtRaw.rt || {}; - - // expose a minimal config (labels) - data.cfg = { - labels: { - armour: "Armour", - integrity: "Integrity", - manoeuvre: "Manoeuvre", - detection: "Detection", - speed: "Speed", - space: "Space", - power: "Power", - spaceFree: "Space (free)", - powerFree: "Power (free)" - } + // ——— RT snapshot do karty + const rtCard = { + speed: rt.speed ?? rtRaw.combat?.speed ?? 0, + manoeuvrability: rt.manoeuvrability ?? rtRaw.mnvr ?? 0, + detection: rt.detection ?? 0, + hullIntegrity: rt.hullIntegrity ?? rtRaw.combat?.wounds?.max ?? 0, + armour: rt.armour ?? 0, + space: rt.space ?? 0, + power: rt.power ?? 0, + weapons: { + prow: rt.weapons?.prow ?? 0, + dorsal: rt.weapons?.dorsal ?? 0, + port: rt.weapons?.port ?? 0, + starboard: rt.weapons?.starboard ?? 0, + keel: rt.weapons?.keel ?? 0 + }, + turret: rt.turret ?? 0, + notes: rtRaw.notes ?? "", + source: rt.source ?? "" }; + + // ——— KOMPONENTY (tylko nasze) + const components = actor.items.contents + .filter(i => i.flags?.[VB_MOD]?.component?.kind) + .map(i => { + const vs = i.system?.voidship ?? i.flags?.[VB_MOD]?.voidship ?? {}; + const v = foundry.utils.deepClone(vs); + v.itemId = i.id; + v.name = i.name; + v.equipped = (i.system?.equipped ?? true); + v.slot = (v.slot || "Internal"); + v.use = Object.assign({ space: 0, power: 0 }, v.use); + v.mods = Object.assign({ armour: 0, integrity: 0, manoeuvre: 0, detection: 0, speed: 0, space: 0, power: 0 }, v.mods); + v.kind = i.flags?.[VB_MOD]?.component?.kind; + v.tags = i.flags?.[VB_MOD]?.component?.tags ?? []; + return v; + }); + + // ——— SUMY MODYFIKATORÓW (equipped) + const modsSum = components.reduce((acc, c) => { + if (!c.equipped) return acc; + acc.armour += Number(c.mods.armour || 0); + acc.integrity += Number(c.mods.integrity || 0); + acc.manoeuvre += Number(c.mods.manoeuvre || 0); + acc.detection += Number(c.mods.detection || 0); + acc.speed += Number(c.mods.speed || 0); + acc.space += Number(c.mods.space || 0); + acc.power += Number(c.mods.power || 0); + return acc; + }, { armour:0, integrity:0, manoeuvre:0, detection:0, speed:0, space:0, power:0 }); + + // ——— CAPACITY (use) dla equipped + const useTotal = components.reduce((acc, c) => { + if (!c.equipped) return acc; + acc.space += Number(c.use.space || 0); + acc.power += Number(c.use.power || 0); + return acc; + }, { space: 0, power: 0 }); + + // ——— TOTALS = BASE + MODS + const totals = { + armour: (Number(base.armour) || 0) + modsSum.armour, + integrity: (Number(base.integrity) || 0) + modsSum.integrity, + manoeuvre: (Number(base.manoeuvre) || 0) + modsSum.manoeuvre, + detection: (Number(base.detection) || 0) + modsSum.detection, + speed: (Number(base.speed) || 0) + modsSum.speed, + space: (Number(base.space) || 0) + modsSum.space, + power: (Number(base.power) || 0) + modsSum.power + }; + totals.spaceFree = totals.space - useTotal.space; + totals.powerFree = totals.power - useTotal.power; + + // ——— SLOTY (użyte vs limit) + const slotsUsed = components.reduce((acc, c) => { + if (!c.equipped) return acc; + const k = (c.slot || "Internal").toLowerCase(); + if (["prow","dorsal","port","starboard","keel"].includes(k)) acc[k] = (acc[k]||0)+1; + return acc; + }, { prow:0, dorsal:0, port:0, starboard:0, keel:0 }); + + // ——— Ostrzeżenia + wymagania + const warnings = {}; + const anySlotOver = + (slotsUsed.prow > (hull.slots?.prow || 0)) || + (slotsUsed.dorsal > (hull.slots?.dorsal || 0)) || + (slotsUsed.port > (hull.slots?.port || 0)) || + (slotsUsed.starboard > (hull.slots?.starboard || 0)) || + (slotsUsed.keel > (hull.slots?.keel || 0)); + if (anySlotOver) warnings.slots = "One or more weapon slot groups exceed hull limits."; + if (totals.spaceFree < 0) warnings.capacity = "Not enough Space for installed components."; + if (totals.powerFree < 0) warnings.capacity = (warnings.capacity ? warnings.capacity + " " : "") + "Not enough Power for installed components."; + + const req = (hull.requirements ?? []).map(r => ({ tag: r.tag, min: Number(r.min||0), label: r.label || r.tag })); + const haveByTag = components.reduce((acc, c) => { + if (!c.equipped) return acc; + const tags = Array.isArray(c.tags) ? c.tags : []; + for (const t of tags) acc[t] = (acc[t]||0) + 1; + return acc; + }, {}); + const missing = req.filter(r => (haveByTag[r.tag]||0) < r.min); + if (missing.length) { + const list = missing.map(m => `${m.label}: ${haveByTag[m.tag]||0}/${m.min}`).join("; "); + warnings.requirements = `Missing required components → ${list}`; + } + + // ——— Dane do template + data.hull = hull; + data.base = base; + data.crew = crew; + data.rtCard = rtCard; + data.components = components; + data.modsSum = modsSum; + data.totals = totals; + data.slotsUsed = slotsUsed; + data.warnings = warnings; + data.flags = actor.flags; + return data; - } activateListeners(html) { super.activateListeners(html); - // Guard: allow sheet UI even for non-voidship, but prompt to mark + + // Mark/Unmark html.find("[data-action='mark-voidship']").on("click", async () => { await this.actor.setFlag(VB_MOD, "isVoidship", true); ui.notifications.info("Marked as Voidship."); @@ -127,17 +215,20 @@ try { ui.notifications.info("Unmarked Voidship."); this.render(true); }); + + // Base config dialog html.find("[data-action='configure-base']").on("click", async () => { const cur = this._computeDerived().base; const content = ` -
-
-
-
-
-
-
- `; +
+
+
+
+
+
+
+
+
`; new Dialog({ title: "Voidship — Base Stats", content, buttons: { @@ -146,17 +237,17 @@ try { callback: async (html) => { const form = html[0].querySelector("form") || html[0]; const get = (k) => Number(form.querySelector(`[name="${k}"]`)?.value || 0); -const patchBase = { - armour: get("armour"), - integrity: get("integrity"), - manoeuvre: get("manoeuvre"), - detection: get("detection"), - speed: get("speed"), - space: get("space"), - power: get("power") -}; -await this.actor.setFlag(VB_MOD, "base", patchBase); -this.render(true); + const patchBase = { + armour: get("armour"), + integrity: get("integrity"), + manoeuvre: get("manoeuvre"), + detection: get("detection"), + speed: get("speed"), + space: get("space"), + power: get("power") + }; + await this.actor.setFlag(VB_MOD, "base", patchBase); + this.render(true); } }, cancel: { label: "Cancel" } @@ -164,17 +255,142 @@ this.render(true); default: "ok" }, { jQuery: true }).render(true); }); + + // Toggle equipped + html.on("click", "[data-action='comp-toggle']", async (ev) => { + const tr = ev.currentTarget.closest("tr[data-item-id]"); + const itemId = tr?.dataset.itemId; + if (!itemId) return; + const item = this.actor.items.get(itemId); + const cur = !!(item.system?.equipped ?? true); + await item.update({ "system.equipped": !cur }); + this.render(true); + }); + + // Edit component + html.on("click", "[data-action='comp-edit']", async (ev) => { + const tr = ev.currentTarget.closest("tr[data-item-id]"); + const itemId = tr?.dataset.itemId; + if (!itemId) return; + const item = this.actor.items.get(itemId); + const v = foundry.utils.deepClone(item.system?.voidship || {}); + v.slot = v.slot || "Internal"; + v.use = Object.assign({ space: 0, power: 0 }, v.use); + v.mods = Object.assign({ armour: 0, integrity: 0, manoeuvre: 0, detection: 0, speed: 0, space: 0, power: 0 }, v.mods); + const eq = (item.system?.equipped ?? true); + + const slotOptions = ["Prow", "Dorsal", "Port", "Starboard", "Keel", "Internal", "Aetherics"] + .map(s => ``).join(""); + + const content = ` +
+
+
+
Use +
+
+
+
Mods + ${["armour", "integrity", "manoeuvre", "detection", "speed", "space", "power"].map(k => ` +
+ +
`).join("")} +
+
`; + + new Dialog({ + title: `Edit Component — ${item.name}`, + content, + buttons: { + ok: { + label: "Save", + callback: async (dlg) => { + const f = dlg[0].querySelector("form"); + const read = (sel, num = false) => { + const el = f.querySelector(`[name="${sel}"]`); + if (!el) return num ? 0 : ""; + if (el.type === "checkbox") return el.checked; + const val = el.value ?? (el.textContent ?? ""); + return num ? Number(val || 0) : val; + }; + const patch = { + "system.voidship.slot": read("slot"), + "system.voidship.use.space": read("use.space", true), + "system.voidship.use.power": read("use.power", true), + "system.voidship.mods.armour": read("mods.armour", true), + "system.voidship.mods.integrity": read("mods.integrity", true), + "system.voidship.mods.manoeuvre": read("mods.manoeuvre", true), + "system.voidship.mods.detection": read("mods.detection", true), + "system.voidship.mods.speed": read("mods.speed", true), + "system.voidship.mods.space": read("mods.space", true), + "system.voidship.mods.power": read("mods.power", true), + "system.equipped": !!read("equipped") + }; + await item.update(patch); + // miękka walidacja + const { total, slots } = this._computeDerived(); + const flags = this.actor.getFlag(VB_MOD, "") || {}; + const hull = flags.hull || { slots: { prow: 0, dorsal: 0, port: 0, starboard: 0, keel: 0 } }; + const overSlots = ["prow", "dorsal", "port", "starboard", "keel"].filter(k => slots[k] > (hull.slots?.[k] || 0)); + if (overSlots.length) ui.notifications.warn(`Slot limit exceeded: ${overSlots.join(", ")}`); + if (total.spaceFree < 0) ui.notifications.warn(`Not enough Space (over by ${Math.abs(total.spaceFree)})`); + if (total.powerFree < 0) ui.notifications.warn(`Not enough Power (over by ${Math.abs(total.powerFree)})`); + this.render(true); + } + }, + cancel: { label: "Cancel" } + }, + default: "ok" + }, { jQuery: true }).render(true); + }); + + // Remove + html.on("click", "[data-action='comp-remove']", async (ev) => { + const tr = ev.currentTarget.closest("tr[data-item-id]"); + const itemId = tr?.dataset.itemId; + if (!itemId) return; + const item = this.actor.items.get(itemId); + new Dialog({ + title: "Remove Component", + content: `

Remove ${foundry.utils.escapeHTML(item.name)} from this voidship?

`, + buttons: { + ok: { label: "Remove", callback: () => this.actor.deleteEmbeddedDocuments("Item", [itemId]) }, + cancel: { label: "Cancel" } + }, + default: "ok" + }).render(true); + }); + + // Auto-refresh po zmianach itemów tego aktora + const refreshIfMine = (doc) => { try { if (doc?.parent?.id === this.actor?.id) this.render(false); } catch(_) {} }; + Hooks.on('createItem', refreshIfMine); + Hooks.on('updateItem', refreshIfMine); + Hooks.on('deleteItem', refreshIfMine); + this.once("close", () => { + Hooks.off('createItem', refreshIfMine); + Hooks.off('updateItem', refreshIfMine); + Hooks.off('deleteItem', refreshIfMine); + }); } } +// ———————————————————————————————————————————————————————————————— +// INIT: helper + rejestracja sheetu + domyślki/sanitizacja Hooks.once("init", () => { - // Register the sheet for the 'vehicle' type (W&G Vehicles via Church of Steel) + if (!Handlebars.helpers.signed) { + Handlebars.registerHelper("signed", function (value) { + const n = Number(value || 0); + if (Number.isNaN(n) || n === 0) return "±0"; + return (n > 0 ? "+" : "−") + Math.abs(n); + }); + } + Actors.registerSheet(VB_MOD, VoidshipSheet, { types: ["vehicle"], makeDefault: false, label: "Voidship (W&G)" }); - // Optional: a convenient factory on game namespace + game.wgVoidships = game.wgVoidships || {}; game.wgVoidships.createVoidship = async function (name = "New Voidship") { const actor = await Actor.create({ name, type: "vehicle", folder: null }); @@ -182,5 +398,44 @@ Hooks.once("init", () => { ui.notifications.info(`Voidship created: ${name}`); return actor; }; + + // Auto-domyślki dla itemów dodawanych do voidshipów + Hooks.on("preCreateItem", (item) => { + const parent = item?.parent; + if (!(parent instanceof Actor)) return; + if (parent.getFlag(VB_MOD, "isVoidship") !== true) return; + + const vs = item.system?.voidship; + if (!vs) { + item.updateSource({ + "system.voidship": { + slot: "Internal", + use: { space: 0, power: 0 }, + mods: { armour: 0, integrity: 0, manoeuvre: 0, detection: 0, speed: 0, space: 0, power: 0 } + } + }); + } + if (item.system?.equipped === undefined) item.updateSource({ "system.equipped": true }); + }); + + // Sanitizacja liczb przy update (żeby nie trafiały NaN) + Hooks.on("preUpdateItem", (item, change) => { + const parent = item?.parent; + if (!(parent instanceof Actor)) return; + if (parent.getFlag(VB_MOD, "isVoidship") !== true) return; + + const fixNum = (path) => { + const v = foundry.utils.getProperty(change, path); + if (v === undefined) return; + const n = Number(v); + foundry.utils.setProperty(change, path, Number.isFinite(n) ? n : 0); + }; + [ + "system.voidship.use.space", "system.voidship.use.power", + "system.voidship.mods.armour", "system.voidship.mods.integrity", "system.voidship.mods.manoeuvre", + "system.voidship.mods.detection", "system.voidship.mods.speed", "system.voidship.mods.space", "system.voidship.mods.power" + ].forEach(fixNum); + }); + console.log(`${VB_MOD}: VoidshipSheet registered`); }); diff --git a/wg-voidships-builder/scripts/voidships.js b/wg-voidships-builder/scripts/voidships.js index c9e5959..86b5e57 100644 --- a/wg-voidships-builder/scripts/voidships.js +++ b/wg-voidships-builder/scripts/voidships.js @@ -3,9 +3,8 @@ Hooks.once('init', async () => { if (typeof Handlebars?.registerHelper === "function") { Handlebars.registerHelper("json", (ctx) => JSON.stringify(ctx ?? {}, null, 2)); } - await loadTemplates([ - "modules/wg-voidships-builder/templates/voidship-sheet.hbs" - ]); + await loadTemplates(["modules/wg-voidships-builder/templates/voidship-sheet.hbs"]); + console.debug("[VB] templates preloaded"); } catch (e) { console.warn("wg-voidships-builder: init failed", e); } diff --git a/wg-voidships-builder/templates/voidship-sheet.hbs b/wg-voidships-builder/templates/voidship-sheet.hbs index 657e305..6a5a6a4 100644 --- a/wg-voidships-builder/templates/voidship-sheet.hbs +++ b/wg-voidships-builder/templates/voidship-sheet.hbs @@ -1,129 +1,220 @@
- -

+ +

+
- {{#if isVoidship}} - + + {{#if (eq actor.flags.wg-voidships-builder.isVoidship true)}} {{else}} - + {{/if}}
- {{#unless isVoidship}} -
- This vehicle is not marked as a Voidship. Click Mark as Voidship to enable derived voidship stats. -
- {{/unless}} - - +
-
- -
-
-
-

Totals

-
    -
  1. {{cfg.labels.armour}}: {{voidship.total.armour}}
  2. -
  3. {{cfg.labels.integrity}}: {{voidship.total.integrity}}
  4. -
  5. {{cfg.labels.manoeuvre}}: {{voidship.total.manoeuvre}}
  6. -
  7. {{cfg.labels.detection}}: {{voidship.total.detection}}
  8. -
  9. {{cfg.labels.speed}}: {{voidship.total.speed}}
  10. -
  11. {{cfg.labels.spaceFree}}: {{voidship.total.spaceFree}}
  12. -
  13. {{cfg.labels.powerFree}}: {{voidship.total.powerFree}}
  14. -
-
-
-

Hull

-
    -
  1. Class: {{hull.class}} ({{hull.size}})
  2. -
  3. Slots Allowed — Prow: {{hull.slotsAllowed.prow}}, Dorsal: {{hull.slotsAllowed.dorsal}}, Port: {{hull.slotsAllowed.port}}, Starboard: {{hull.slotsAllowed.starboard}}, Keel: {{hull.slotsAllowed.keel}}
  4. -
-
-
-
-
-
-

Base (flags)

-
    -
  1. {{cfg.labels.armour}}: {{voidship.base.armour}}
  2. -
  3. {{cfg.labels.integrity}}: {{voidship.base.integrity}}
  4. -
  5. {{cfg.labels.manoeuvre}}: {{voidship.base.manoeuvre}}
  6. -
  7. {{cfg.labels.detection}}: {{voidship.base.detection}}
  8. -
  9. {{cfg.labels.speed}}: {{voidship.base.speed}}
  10. -
  11. {{cfg.labels.space}}: {{voidship.base.space}}
  12. -
  13. {{cfg.labels.power}}: {{voidship.base.power}}
  14. -
-
-
-

Mods (items)

-
    -
  1. {{cfg.labels.armour}}: {{voidship.mods.armour}}
  2. -
  3. {{cfg.labels.integrity}}: {{voidship.mods.integrity}}
  4. -
  5. {{cfg.labels.manoeuvre}}: {{voidship.mods.manoeuvre}}
  6. -
  7. {{cfg.labels.detection}}: {{voidship.mods.detection}}
  8. -
  9. {{cfg.labels.speed}}: {{voidship.mods.speed}}
  10. -
  11. {{cfg.labels.space}}: {{voidship.mods.space}}
  12. -
  13. {{cfg.labels.power}}: {{voidship.mods.power}}
  14. -
-
-
-
- - -
-
-

RT Raw (read-only snapshot)

-

Original RT-ish data preserved under flags.wg-voidships-builder.rtRaw for conversion mapping (next step).

-
{{rtRawString}}
-
-
- - -
-
-
-

Main Roles

-
    -
  1. Command: {{crew.command}}
  2. -
  3. Pilot/Helm: {{crew.pilot}}
  4. -
  5. Sensors/Auspex: {{crew.sensors}}
  6. -
  7. Engineering: {{crew.engineering}}
  8. -
-
-
-

Combat & Support

-
    -
  1. Gunnery: {{crew.gunnery}}
  2. -
  3. Security/Armsmen: {{crew.security}}
  4. -
  5. Flight Deck: {{crew.flightDeck}}
  6. -
  7. Passengers: {{crew.passengers}}
  8. -
-
-
-
+ +
+
+
+

Totals

+
    +
  1. Armour: {{totals.armour}} (base {{base.armour}}, mods {{signed modsSum.armour}})
  2. +
  3. Integrity: {{totals.integrity}} (base {{base.integrity}}, mods {{signed modsSum.integrity}})
  4. +
  5. Manoeuvre: {{totals.manoeuvre}} (base {{base.manoeuvre}}, mods {{signed modsSum.manoeuvre}})
  6. +
  7. Detection: {{totals.detection}} (base {{base.detection}}, mods {{signed modsSum.detection}})
  8. +
  9. Speed: {{totals.speed}} (base {{base.speed}}, mods {{signed modsSum.speed}})
  10. +
  11. Space (free/total): {{totals.spaceFree}} / {{totals.space}}
  12. +
  13. Power (free/total): {{totals.powerFree}} / {{totals.power}}
  14. +
+
+
+

Hull

+
    +
  1. Class: {{hull.class}} ({{hull.size}})
  2. +
  3. Slots Allowed — Prow: {{hull.slots.prow}}, Dorsal: {{hull.slots.dorsal}}, Port: + {{hull.slots.port}}, Starboard: {{hull.slots.starboard}}, Keel: {{hull.slots.keel}} +
  4. +
+
+
+ {{#if warnings.capacity}} +

{{warnings.capacity}}

+ {{/if}} + {{#if warnings.slots}} +

{{warnings.slots}}

+ {{/if}} + {{#if warnings.requirements}} +

{{warnings.requirements}}

+ {{/if}} +
+
+
+

Base (flags)

+
    +
  1. Armour: {{base.armour}}
  2. +
  3. Integrity: {{base.integrity}}
  4. +
  5. Manoeuvre: {{base.manoeuvre}}
  6. +
  7. Detection: {{base.detection}}
  8. +
  9. Speed: {{base.speed}}
  10. +
  11. Space: {{base.space}}
  12. +
  13. Power: {{base.power}}
  14. +
+
+
+

Mods (items)

+
    +
  1. Armour: {{signed modsSum.armour}}
  2. +
  3. Integrity: {{signed modsSum.integrity}}
  4. +
  5. Manoeuvre: {{signed modsSum.manoeuvre}}
  6. +
  7. Detection: {{signed modsSum.detection}}
  8. +
  9. Speed: {{signed modsSum.speed}}
  10. +
  11. Space: {{signed modsSum.space}}
  12. +
  13. Power: {{signed modsSum.power}}
  14. +
+
+
+ +
+
+
+

RT — Stat Block

+
    +
  1. Speed {{rtCard.speed}}
  2. +
  3. Manoeuvrability {{rtCard.manoeuvrability}}
  4. +
  5. Detection {{rtCard.detection}}
  6. +
  7. Hull Integrity {{rtCard.hullIntegrity}}
  8. +
  9. Armour {{rtCard.armour}}
  10. +
  11. Space {{rtCard.space}}
  12. +
  13. Power {{rtCard.power}}
  14. +
  15. Turret {{rtCard.turret}}
  16. +
+ {{#if rtCard.source}} +

Source: {{rtCard.source}}

+ {{/if}} +
+
+

RT — Weapon Capacity

+
    +
  1. Prow: {{rtCard.weapons.prow}}
  2. +
  3. Dorsal: {{rtCard.weapons.dorsal}}
  4. +
  5. Port: {{rtCard.weapons.port}}
  6. +
  7. Starboard: {{rtCard.weapons.starboard}}
  8. +
  9. Keel: {{rtCard.weapons.keel}}
  10. +
+ {{#if rtCard.notes}} +

{{rtCard.notes}}

+ {{/if}} +
+
+
+ + +
+
+
+

Main Roles

+
    +
  1. Command: {{crew.command}}
  2. +
  3. Pilot/Helm: {{crew.pilot}}
  4. +
  5. Sensors/Auspex: {{crew.sensors}}
  6. +
  7. Engineering: {{crew.engineering}}
  8. +
+
+
+

Combat & Support

+
    +
  1. Gunnery: {{crew.gunnery}}
  2. +
  3. Security/Armsmen: {{crew.security}}
  4. +
  5. Flight Deck: {{crew.flightDeck}}
  6. +
  7. Passengers: {{crew.passengers}}
  8. +
+
+
+
+ +
-
-

Mounted items are read from the Actor's inventory. For best results, put per-component data in item.system.voidship:

-
{
-  "slot": "Prow|Dorsal|Port|Starboard|Keel",
-  "mods": { "armour":0, "integrity":0, "manoeuvre":0, "detection":0, "speed":0, "space":0, "power":0 },
-  "use":  { "space":0, "power":0 }
-}
-
+
+
+

Capacity

+
    +
  1. Space (free / total): {{totals.spaceFree}} / {{totals.space}}
  2. +
  3. Power (free / total): {{totals.powerFree}} / {{totals.power}}
  4. +
+ {{#if warnings.capacity}}

{{warnings.capacity}}

{{/if}} +
+

Slots Used

+
    +
  1. Prow: {{slotsUsed.prow}} / {{hull.slots.prow}}
  2. +
  3. Dorsal: {{slotsUsed.dorsal}} / {{hull.slots.dorsal}}
  4. +
  5. Port: {{slotsUsed.port}} / {{hull.slots.port}}
  6. +
  7. Starboard: {{slotsUsed.starboard}} / {{hull.slots.starboard}}
  8. +
  9. Keel: {{slotsUsed.keel}} / {{hull.slots.keel}}
  10. +
+ {{#if warnings.slots}}

{{warnings.slots}}

{{/if}} + {{#if warnings.requirements}}

{{warnings.requirements}}

{{/if}} +
+ +
+

Mounted Components

+ {{#if components.length}} + + + + + + + + + + + + {{#each components as |c|}} + + + + + + + + {{/each}} + +
NameSlotUseModsActions
+ {{#if c.equipped}}{{else}}{{/if}} + {{c.name}} + {{c.slot}}Space: {{c.use.space}}, Power: {{c.use.power}} + + {{#if c.mods.armour}}Armour {{signed c.mods.armour}} {{/if}} + {{#if c.mods.integrity}}Integrity {{signed c.mods.integrity}} {{/if}} + {{#if c.mods.manoeuvre}}Manoeuvre {{signed c.mods.manoeuvre}} {{/if}} + {{#if c.mods.detection}}Detection {{signed c.mods.detection}} {{/if}} + {{#if c.mods.speed}}Speed {{signed c.mods.speed}} {{/if}} + {{#if c.mods.space}}Space {{signed c.mods.space}} {{/if}} + {{#if c.mods.power}}Power {{signed c.mods.power}} {{/if}} + + + + + +
+ {{else}} +

No components installed. Add items with item.system.voidship set.

+ {{/if}} +
+