@alpaca-software/40kdc-data 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/dist/bundle-schemas.d.ts +3 -0
- package/dist/bundle-schemas.js +137 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +31 -0
- package/dist/codegen-data.d.ts +1 -0
- package/dist/codegen-data.js +128 -0
- package/dist/commands/translate.d.ts +7 -0
- package/dist/commands/translate.js +238 -0
- package/dist/commands/validate-all.d.ts +3 -0
- package/dist/commands/validate-all.js +20 -0
- package/dist/commands/validate-core.d.ts +3 -0
- package/dist/commands/validate-core.js +12 -0
- package/dist/commands/validate-enrichment.d.ts +3 -0
- package/dist/commands/validate-enrichment.js +12 -0
- package/dist/convert-faction.d.ts +45 -0
- package/dist/convert-faction.js +479 -0
- package/dist/converters/configs/adepta-sororitas.d.ts +3 -0
- package/dist/converters/configs/adepta-sororitas.js +70 -0
- package/dist/converters/configs/adeptus-astartes.d.ts +3 -0
- package/dist/converters/configs/adeptus-astartes.js +74 -0
- package/dist/converters/configs/adeptus-custodes.d.ts +3 -0
- package/dist/converters/configs/adeptus-custodes.js +14 -0
- package/dist/converters/configs/adeptus-mechanicus.d.ts +3 -0
- package/dist/converters/configs/adeptus-mechanicus.js +51 -0
- package/dist/converters/configs/aeldari.d.ts +3 -0
- package/dist/converters/configs/aeldari.js +79 -0
- package/dist/converters/configs/agents-of-the-imperium.d.ts +3 -0
- package/dist/converters/configs/agents-of-the-imperium.js +57 -0
- package/dist/converters/configs/astra-militarum.d.ts +3 -0
- package/dist/converters/configs/astra-militarum.js +80 -0
- package/dist/converters/configs/black-templars.d.ts +3 -0
- package/dist/converters/configs/black-templars.js +16 -0
- package/dist/converters/configs/blood-angels.d.ts +3 -0
- package/dist/converters/configs/blood-angels.js +16 -0
- package/dist/converters/configs/chaos-daemons.d.ts +3 -0
- package/dist/converters/configs/chaos-daemons.js +40 -0
- package/dist/converters/configs/chaos-knights.d.ts +3 -0
- package/dist/converters/configs/chaos-knights.js +14 -0
- package/dist/converters/configs/chaos-space-marines.d.ts +3 -0
- package/dist/converters/configs/chaos-space-marines.js +95 -0
- package/dist/converters/configs/crimson-fists.d.ts +3 -0
- package/dist/converters/configs/crimson-fists.js +16 -0
- package/dist/converters/configs/dark-angels.d.ts +3 -0
- package/dist/converters/configs/dark-angels.js +16 -0
- package/dist/converters/configs/death-guard.d.ts +3 -0
- package/dist/converters/configs/death-guard.js +30 -0
- package/dist/converters/configs/deathwatch.d.ts +3 -0
- package/dist/converters/configs/deathwatch.js +16 -0
- package/dist/converters/configs/drukhari.d.ts +3 -0
- package/dist/converters/configs/drukhari.js +51 -0
- package/dist/converters/configs/emperors-children.d.ts +3 -0
- package/dist/converters/configs/emperors-children.js +38 -0
- package/dist/converters/configs/genestealer-cults.d.ts +3 -0
- package/dist/converters/configs/genestealer-cults.js +36 -0
- package/dist/converters/configs/grey-knights.d.ts +3 -0
- package/dist/converters/configs/grey-knights.js +39 -0
- package/dist/converters/configs/imperial-fists.d.ts +3 -0
- package/dist/converters/configs/imperial-fists.js +16 -0
- package/dist/converters/configs/imperial-knights.d.ts +3 -0
- package/dist/converters/configs/imperial-knights.js +14 -0
- package/dist/converters/configs/iron-hands.d.ts +3 -0
- package/dist/converters/configs/iron-hands.js +16 -0
- package/dist/converters/configs/leagues-of-votann.d.ts +3 -0
- package/dist/converters/configs/leagues-of-votann.js +32 -0
- package/dist/converters/configs/necrons.d.ts +3 -0
- package/dist/converters/configs/necrons.js +19 -0
- package/dist/converters/configs/orks.d.ts +3 -0
- package/dist/converters/configs/orks.js +71 -0
- package/dist/converters/configs/raven-guard.d.ts +3 -0
- package/dist/converters/configs/raven-guard.js +16 -0
- package/dist/converters/configs/salamanders.d.ts +3 -0
- package/dist/converters/configs/salamanders.js +16 -0
- package/dist/converters/configs/space-wolves.d.ts +3 -0
- package/dist/converters/configs/space-wolves.js +16 -0
- package/dist/converters/configs/tau-empire.d.ts +3 -0
- package/dist/converters/configs/tau-empire.js +44 -0
- package/dist/converters/configs/thousand-sons.d.ts +3 -0
- package/dist/converters/configs/thousand-sons.js +30 -0
- package/dist/converters/configs/tyranids.d.ts +3 -0
- package/dist/converters/configs/tyranids.js +27 -0
- package/dist/converters/configs/ultramarines.d.ts +3 -0
- package/dist/converters/configs/ultramarines.js +16 -0
- package/dist/converters/configs/white-scars.d.ts +3 -0
- package/dist/converters/configs/white-scars.js +16 -0
- package/dist/converters/configs/world-eaters.d.ts +3 -0
- package/dist/converters/configs/world-eaters.js +43 -0
- package/dist/converters/faction-config.d.ts +53 -0
- package/dist/converters/faction-config.js +22 -0
- package/dist/converters/id-generator.d.ts +14 -0
- package/dist/converters/id-generator.js +65 -0
- package/dist/converters/keyword-filter.d.ts +26 -0
- package/dist/converters/keyword-filter.js +78 -0
- package/dist/converters/stat-parser.d.ts +22 -0
- package/dist/converters/stat-parser.js +84 -0
- package/dist/converters/view-selector.d.ts +54 -0
- package/dist/converters/view-selector.js +96 -0
- package/dist/converters/weapon-dedup.d.ts +60 -0
- package/dist/converters/weapon-dedup.js +120 -0
- package/dist/data/bundle.generated.d.ts +3 -0
- package/dist/data/bundle.generated.js +3 -0
- package/dist/data/collection.d.ts +64 -0
- package/dist/data/collection.js +118 -0
- package/dist/data/dataset.d.ts +50 -0
- package/dist/data/dataset.js +134 -0
- package/dist/data/entities.d.ts +80 -0
- package/dist/data/entities.js +133 -0
- package/dist/data/index.d.ts +59 -0
- package/dist/data/index.js +57 -0
- package/dist/data/normalize.d.ts +29 -0
- package/dist/data/normalize.js +37 -0
- package/dist/data/types.d.ts +43 -0
- package/dist/data/types.js +25 -0
- package/dist/generated.d.ts +1084 -0
- package/dist/generated.js +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/known-support-10e.d.ts +31 -0
- package/dist/known-support-10e.js +113 -0
- package/dist/port-10e-faction.d.ts +52 -0
- package/dist/port-10e-faction.js +413 -0
- package/dist/report.d.ts +3 -0
- package/dist/report.js +31 -0
- package/dist/schema-loader.d.ts +15 -0
- package/dist/schema-loader.js +79 -0
- package/dist/validate.d.ts +21 -0
- package/dist/validate.js +124 -0
- package/package.json +77 -0
- package/schemas/$defs/common.schema.json +86 -0
- package/schemas/$defs/game-version-ref.schema.json +11 -0
- package/schemas/core/deployment-pattern.schema.json +102 -0
- package/schemas/core/detachment.schema.json +56 -0
- package/schemas/core/enhancement.schema.json +46 -0
- package/schemas/core/faction.schema.json +29 -0
- package/schemas/core/force-disposition.schema.json +22 -0
- package/schemas/core/game-version.schema.json +20 -0
- package/schemas/core/leader-attachment.schema.json +18 -0
- package/schemas/core/mission-matchup.schema.json +25 -0
- package/schemas/core/mission.schema.json +42 -0
- package/schemas/core/roster.schema.json +203 -0
- package/schemas/core/secondary-card.schema.json +195 -0
- package/schemas/core/stratagem.schema.json +58 -0
- package/schemas/core/terrain-layout.schema.json +135 -0
- package/schemas/core/unit-composition.schema.json +38 -0
- package/schemas/core/unit.schema.json +125 -0
- package/schemas/core/wargear-option.schema.json +47 -0
- package/schemas/core/weapon.schema.json +56 -0
- package/schemas/enrichment/ability-dsl/ability.schema.json +60 -0
- package/schemas/enrichment/ability-dsl/condition.schema.json +48 -0
- package/schemas/enrichment/ability-dsl/effect.schema.json +145 -0
- package/schemas/enrichment/ability-dsl/scope.schema.json +12 -0
- package/schemas/enrichment/interaction-flag.schema.json +17 -0
- package/schemas/enrichment/phase-mapping.schema.json +14 -0
- package/schemas/enrichment/resource-pool.schema.json +36 -0
- package/schemas/enrichment/timing-flag.schema.json +28 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const adeptusAstartes = {
|
|
3
|
+
sourceFactionId: "SM",
|
|
4
|
+
factionId: "adeptus-astartes",
|
|
5
|
+
factionName: "Adeptus Astartes",
|
|
6
|
+
factionAbilityName: "Oath of Moment",
|
|
7
|
+
factionRuleId: "oath-of-moment",
|
|
8
|
+
factionKeywords: ["Imperium", "Adeptus Astartes"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
// Crusader Squad (Black Templars)
|
|
13
|
+
"crusader-squad": [
|
|
14
|
+
{ name: "Sword Brother", profile_name: "Initiate", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "power-weapon"], is_leader_model: true },
|
|
15
|
+
{ name: "Initiate", min: 5, max: 11, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: false },
|
|
16
|
+
{ name: "Neophyte", min: 4, max: 8, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: false },
|
|
17
|
+
],
|
|
18
|
+
// Deathwatch Kill Teams
|
|
19
|
+
"deathwatch-veterans": [
|
|
20
|
+
{ name: "Watch Sergeant", min: 1, max: 1, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: true },
|
|
21
|
+
{ name: "Deathwatch Veteran", profile_name: "Deathwatch Veterans", min: 4, max: 9, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
22
|
+
],
|
|
23
|
+
"decimus-kill-team": [
|
|
24
|
+
{ name: "Watch Sergeant", profile_name: "Deathwatch Veteran", min: 1, max: 1, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: true },
|
|
25
|
+
{ name: "Deathwatch Veteran", min: 2, max: 7, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
26
|
+
{ name: "Gravis Veteran", min: 2, max: 2, default_weapon_ids: ["bolt-rifle", "close-combat-weapon"], is_leader_model: false },
|
|
27
|
+
],
|
|
28
|
+
"talonstrike-kill-team": [
|
|
29
|
+
{ name: "Kill Team Intercessor with Jump Pack", min: 5, max: 10, default_weapon_ids: ["bolt-rifle", "close-combat-weapon"], is_leader_model: false },
|
|
30
|
+
{ name: "Kill Team Heavy Intercessor with Jump Pack", min: 5, max: 5, default_weapon_ids: ["heavy-bolt-rifle", "close-combat-weapon"], is_leader_model: false },
|
|
31
|
+
],
|
|
32
|
+
// Outrider Squad with optional ATV
|
|
33
|
+
"outrider-squad": [
|
|
34
|
+
{ name: "Outrider Sergeant", profile_name: "Outrider", min: 1, max: 1, default_weapon_ids: ["heavy-bolt-pistol", "astartes-chainsword"], is_leader_model: true },
|
|
35
|
+
{ name: "Outrider", min: 2, max: 5, default_weapon_ids: ["heavy-bolt-pistol", "astartes-chainsword"], is_leader_model: false },
|
|
36
|
+
{ name: "Invader ATV", min: 0, max: 1, default_weapon_ids: ["onslaught-gatling-cannon"], is_leader_model: false },
|
|
37
|
+
],
|
|
38
|
+
// Space Wolves units
|
|
39
|
+
"wolf-guard-headtakers": [
|
|
40
|
+
{ name: "Wolf Guard Headtaker", min: 3, max: 12, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
41
|
+
{ name: "Hunting Wolf", profile_name: "Hunting Wolves", min: 0, max: 2, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
42
|
+
],
|
|
43
|
+
"wolf-scouts": [
|
|
44
|
+
{ name: "Wolf Scout Pack Leader", profile_name: "Wolf Scout", min: 1, max: 1, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: true },
|
|
45
|
+
{ name: "Wolf Scout", min: 4, max: 10, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
46
|
+
{ name: "Hunting Wolf", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
47
|
+
],
|
|
48
|
+
// Character companions
|
|
49
|
+
"chaplain-grimaldus": [
|
|
50
|
+
{ name: "Chaplain Grimaldus", min: 1, max: 1, default_weapon_ids: ["plasma-pistol", "close-combat-weapon"], is_leader_model: true },
|
|
51
|
+
{ name: "Cenobyte Servitor", min: 3, max: 3, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
52
|
+
],
|
|
53
|
+
"wardens-of-ultramar": [
|
|
54
|
+
{ name: "Veteran Sergeant Metaurus", profile_name: "Veteran Sergeant Metaurus", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: true },
|
|
55
|
+
{ name: "Lucia Vestha", profile_name: "Lucia Vestha", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: false },
|
|
56
|
+
{ name: "Victrix Guard", profile_name: "Veteran Sergeant Metaurus", min: 4, max: 4, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: false },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
detachmentFilter: [
|
|
60
|
+
"Gladius Task Force",
|
|
61
|
+
"Ironstorm Spearhead",
|
|
62
|
+
"1st Company Task Force",
|
|
63
|
+
"Firestorm Assault Force",
|
|
64
|
+
"Vanguard Spearhead",
|
|
65
|
+
"Stormlance Task Force",
|
|
66
|
+
"Anvil Siege Force",
|
|
67
|
+
"Librarius Conclave",
|
|
68
|
+
"Orbital Assault Force",
|
|
69
|
+
"Godhammer Assault Force",
|
|
70
|
+
"Spearpoint Task Force",
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
registerFaction(adeptusAstartes);
|
|
74
|
+
export default adeptusAstartes;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const adeptusCustodes = {
|
|
3
|
+
sourceFactionId: "AC",
|
|
4
|
+
factionId: "adeptus-custodes",
|
|
5
|
+
factionName: "Adeptus Custodes",
|
|
6
|
+
factionAbilityName: "Martial Ka\u2019tah",
|
|
7
|
+
factionRuleId: "martial-katah",
|
|
8
|
+
factionKeywords: ["Imperium", "Adeptus Custodes"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {},
|
|
12
|
+
};
|
|
13
|
+
registerFaction(adeptusCustodes);
|
|
14
|
+
export default adeptusCustodes;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const adeptusMechanicus = {
|
|
3
|
+
sourceFactionId: "AdM",
|
|
4
|
+
factionId: "adeptus-mechanicus",
|
|
5
|
+
factionName: "Adeptus Mechanicus",
|
|
6
|
+
factionAbilityName: "Doctrina Imperatives",
|
|
7
|
+
factionRuleId: "doctrina-imperatives",
|
|
8
|
+
factionKeywords: ["Imperium", "Adeptus Mechanicus"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
"skitarii-rangers": [
|
|
13
|
+
{ name: "Ranger Alpha", profile_name: "Skitarii Ranger", min: 1, max: 1, default_weapon_ids: ["mechanicus-pistol", "alpha-combat-weapon"], is_leader_model: true },
|
|
14
|
+
{ name: "Skitarii Ranger", min: 9, max: 9, default_weapon_ids: ["galvanic-rifle", "close-combat-weapon"], is_leader_model: false },
|
|
15
|
+
],
|
|
16
|
+
"skitarii-vanguard": [
|
|
17
|
+
{ name: "Vanguard Alpha", profile_name: "Skitarii Vanguard", min: 1, max: 1, default_weapon_ids: ["mechanicus-pistol", "alpha-combat-weapon"], is_leader_model: true },
|
|
18
|
+
{ name: "Skitarii Vanguard", min: 9, max: 9, default_weapon_ids: ["radium-carbine", "close-combat-weapon"], is_leader_model: false },
|
|
19
|
+
],
|
|
20
|
+
"sicarian-infiltrators": [
|
|
21
|
+
{ name: "Sicarian Princeps", profile_name: "Sicarian Infiltrator", min: 1, max: 1, default_weapon_ids: ["stubcarbine", "power-weapon"], is_leader_model: true },
|
|
22
|
+
{ name: "Sicarian Infiltrator", min: 4, max: 9, default_weapon_ids: ["stubcarbine", "power-weapon"], is_leader_model: false },
|
|
23
|
+
],
|
|
24
|
+
"sicarian-ruststalkers": [
|
|
25
|
+
{ name: "Sicarian Princeps", profile_name: "Sicarian Ruststalker", min: 1, max: 1, default_weapon_ids: ["transonic-blades-and-chordclaw"], is_leader_model: true },
|
|
26
|
+
{ name: "Sicarian Ruststalker", min: 4, max: 9, default_weapon_ids: ["transonic-blades-and-chordclaw"], is_leader_model: false },
|
|
27
|
+
],
|
|
28
|
+
"pteraxii-skystalkers": [
|
|
29
|
+
{ name: "Pteraxii Alpha", profile_name: "Pteraxii Skystalker", min: 1, max: 1, default_weapon_ids: ["flechette-blaster", "taser-goad"], is_leader_model: true },
|
|
30
|
+
{ name: "Pteraxii Skystalker", min: 4, max: 9, default_weapon_ids: ["flechette-carbine", "close-combat-weapon"], is_leader_model: false },
|
|
31
|
+
],
|
|
32
|
+
"pteraxii-sterylizors": [
|
|
33
|
+
{ name: "Pteraxii Alpha", profile_name: "Pteraxii Sterylizor", min: 1, max: 1, default_weapon_ids: ["flechette-blaster", "taser-goad"], is_leader_model: true },
|
|
34
|
+
{ name: "Pteraxii Sterylizor", min: 4, max: 9, default_weapon_ids: ["phosphor-torch", "pteraxii-talons"], is_leader_model: false },
|
|
35
|
+
],
|
|
36
|
+
"serberys-raiders": [
|
|
37
|
+
{ name: "Serberys Alpha", profile_name: "Serberys Raider", min: 1, max: 1, default_weapon_ids: ["mechanicus-pistol", "cavalry-sabre-and-clawed-limbs"], is_leader_model: true },
|
|
38
|
+
{ name: "Serberys Raider", min: 2, max: 5, default_weapon_ids: ["galvanic-carbine", "cavalry-sabre-and-clawed-limbs"], is_leader_model: false },
|
|
39
|
+
],
|
|
40
|
+
"serberys-sulphurhounds": [
|
|
41
|
+
{ name: "Serberys Alpha", profile_name: "Serberys Sulphurhound", min: 1, max: 1, default_weapon_ids: ["mechanicus-pistol", "cavalry-arc-maul"], is_leader_model: true },
|
|
42
|
+
{ name: "Serberys Sulphurhound", min: 2, max: 5, default_weapon_ids: ["sulphur-breath", "clawed-limbs"], is_leader_model: false },
|
|
43
|
+
],
|
|
44
|
+
"servitor-battleclade": [
|
|
45
|
+
{ name: "Servitor Underseer", min: 1, max: 1, default_weapon_ids: ["mechanicus-pistol", "dataspikes"], is_leader_model: true },
|
|
46
|
+
{ name: "Combat Servitor", min: 8, max: 8, default_weapon_ids: ["heavy-bolter", "servo-claw"], is_leader_model: false },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
registerFaction(adeptusMechanicus);
|
|
51
|
+
export default adeptusMechanicus;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const aeldari = {
|
|
3
|
+
sourceFactionId: "AE",
|
|
4
|
+
factionId: "aeldari",
|
|
5
|
+
factionName: "Aeldari",
|
|
6
|
+
factionAbilityName: "Strands of Fate",
|
|
7
|
+
factionRuleId: "strands-of-fate",
|
|
8
|
+
factionKeywords: ["Aeldari"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
// Aspect Warriors with Exarchs (from source data)
|
|
13
|
+
"dire-avengers": [
|
|
14
|
+
{ name: "Dire Avenger Exarch", min: 1, max: 1, default_weapon_ids: ["avenger-shuriken-catapult", "close-combat-weapon"], is_leader_model: true },
|
|
15
|
+
{ name: "Dire Avenger", min: 4, max: 9, default_weapon_ids: ["avenger-shuriken-catapult", "close-combat-weapon"], is_leader_model: false },
|
|
16
|
+
],
|
|
17
|
+
"howling-banshees": [
|
|
18
|
+
{ name: "Howling Banshee Exarch", min: 1, max: 1, default_weapon_ids: ["shuriken-pistol", "power-sword"], is_leader_model: true },
|
|
19
|
+
{ name: "Howling Banshee", min: 4, max: 9, default_weapon_ids: ["shuriken-pistol", "power-sword"], is_leader_model: false },
|
|
20
|
+
],
|
|
21
|
+
"striking-scorpions": [
|
|
22
|
+
{ name: "Striking Scorpion Exarch", min: 1, max: 1, default_weapon_ids: ["scorpion-chainsword", "shuriken-pistol"], is_leader_model: true },
|
|
23
|
+
{ name: "Striking Scorpion", min: 4, max: 9, default_weapon_ids: ["scorpion-chainsword", "shuriken-pistol"], is_leader_model: false },
|
|
24
|
+
],
|
|
25
|
+
"fire-dragons": [
|
|
26
|
+
{ name: "Fire Dragon Exarch", min: 1, max: 1, default_weapon_ids: ["dragon-fusion-gun", "close-combat-weapon"], is_leader_model: true },
|
|
27
|
+
{ name: "Fire Dragon", min: 4, max: 9, default_weapon_ids: ["dragon-fusion-gun", "close-combat-weapon"], is_leader_model: false },
|
|
28
|
+
],
|
|
29
|
+
"dark-reapers": [
|
|
30
|
+
{ name: "Dark Reaper Exarch", min: 1, max: 1, default_weapon_ids: ["reaper-launcher", "close-combat-weapon"], is_leader_model: true },
|
|
31
|
+
{ name: "Dark Reaper", min: 4, max: 9, default_weapon_ids: ["reaper-launcher", "close-combat-weapon"], is_leader_model: false },
|
|
32
|
+
],
|
|
33
|
+
"swooping-hawks": [
|
|
34
|
+
{ name: "Swooping Hawk Exarch", min: 1, max: 1, default_weapon_ids: ["lasblaster", "close-combat-weapon"], is_leader_model: true },
|
|
35
|
+
{ name: "Swooping Hawk", min: 4, max: 9, default_weapon_ids: ["lasblaster", "close-combat-weapon"], is_leader_model: false },
|
|
36
|
+
],
|
|
37
|
+
"warp-spiders": [
|
|
38
|
+
{ name: "Warp Spider Exarch", min: 1, max: 1, default_weapon_ids: ["death-spinner", "close-combat-weapon"], is_leader_model: true },
|
|
39
|
+
{ name: "Warp Spider", min: 4, max: 9, default_weapon_ids: ["death-spinner", "close-combat-weapon"], is_leader_model: false },
|
|
40
|
+
],
|
|
41
|
+
"shining-spears": [
|
|
42
|
+
{ name: "Shining Spear Exarch", min: 1, max: 1, default_weapon_ids: ["twin-shuriken-catapult", "laser-lance"], is_leader_model: true },
|
|
43
|
+
{ name: "Shining Spear", min: 2, max: 5, default_weapon_ids: ["twin-shuriken-catapult", "laser-lance"], is_leader_model: false },
|
|
44
|
+
],
|
|
45
|
+
// Guardian squads with platforms
|
|
46
|
+
"guardian-defenders": [
|
|
47
|
+
{ name: "Guardian Defender", min: 10, max: 10, default_weapon_ids: ["shuriken-catapult", "close-combat-weapon"], is_leader_model: false },
|
|
48
|
+
{ name: "Heavy Weapon Platform", min: 1, max: 1, default_weapon_ids: ["bright-lance"], is_leader_model: false },
|
|
49
|
+
],
|
|
50
|
+
"storm-guardians": [
|
|
51
|
+
{ name: "Storm Guardian", min: 10, max: 10, default_weapon_ids: ["shuriken-pistol", "aeldari-power-sword"], is_leader_model: false },
|
|
52
|
+
{ name: "Serpent\u2019s Scale Platform", min: 1, max: 1, default_weapon_ids: ["shuriken-catapult"], is_leader_model: false },
|
|
53
|
+
],
|
|
54
|
+
// Ynnari subfaction units
|
|
55
|
+
"ynnari-incubi": [
|
|
56
|
+
{ name: "Klaivex", min: 1, max: 1, default_weapon_ids: ["demiklaives-single-blade"], is_leader_model: true },
|
|
57
|
+
{ name: "Incubi", min: 4, max: 9, default_weapon_ids: ["klaive"], is_leader_model: false },
|
|
58
|
+
],
|
|
59
|
+
"ynnari-kabalite-warriors": [
|
|
60
|
+
{ name: "Sybarite", profile_name: "Kabalite Warrior", min: 1, max: 1, default_weapon_ids: ["splinter-pistol", "power-weapon"], is_leader_model: true },
|
|
61
|
+
{ name: "Kabalite Warrior", min: 9, max: 9, default_weapon_ids: ["splinter-rifle", "close-combat-weapon"], is_leader_model: false },
|
|
62
|
+
],
|
|
63
|
+
"ynnari-wyches": [
|
|
64
|
+
{ name: "Hekatrix", profile_name: "Wych", min: 1, max: 1, default_weapon_ids: ["splinter-pistol", "power-weapon"], is_leader_model: true },
|
|
65
|
+
{ name: "Wych", min: 9, max: 9, default_weapon_ids: ["splinter-pistol", "hekatarii-blade"], is_leader_model: false },
|
|
66
|
+
],
|
|
67
|
+
"ynnari-reavers": [
|
|
68
|
+
{ name: "Arena Champion", profile_name: "Reaver", min: 1, max: 1, default_weapon_ids: ["splinter-pistol", "bladevanes"], is_leader_model: true },
|
|
69
|
+
{ name: "Reaver", min: 2, max: 5, default_weapon_ids: ["splinter-pistol", "bladevanes"], is_leader_model: false },
|
|
70
|
+
],
|
|
71
|
+
// Harlequin Troupe
|
|
72
|
+
"troupe": [
|
|
73
|
+
{ name: "Lead Player", profile_name: "Player", min: 1, max: 1, default_weapon_ids: ["shuriken-pistol", "harlequins-blade"], is_leader_model: true },
|
|
74
|
+
{ name: "Player", min: 4, max: 11, default_weapon_ids: ["shuriken-pistol", "harlequins-blade"], is_leader_model: false },
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
registerFaction(aeldari);
|
|
79
|
+
export default aeldari;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const agentsOfTheImperium = {
|
|
3
|
+
sourceFactionId: "AoI",
|
|
4
|
+
factionId: "agents-of-the-imperium",
|
|
5
|
+
factionName: "Agents of the Imperium",
|
|
6
|
+
factionAbilityName: "Assigned Agents",
|
|
7
|
+
factionRuleId: "assigned-agents",
|
|
8
|
+
factionKeywords: ["Imperium", "Agents of the Imperium"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
"deathwatch-kill-team": [
|
|
13
|
+
{ name: "Watch Sergeant", min: 1, max: 1, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: true },
|
|
14
|
+
{ name: "Deathwatch Veteran", profile_name: "Deathwatch Veterans", min: 4, max: 9, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
15
|
+
],
|
|
16
|
+
"aquila-kill-team": [
|
|
17
|
+
{ name: "Watch Sergeant", profile_name: "Deathwatch Veteran", min: 1, max: 1, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: true },
|
|
18
|
+
{ name: "Deathwatch Veteran", min: 2, max: 7, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
19
|
+
{ name: "Gravis Veteran", min: 2, max: 2, default_weapon_ids: ["bolt-rifle", "close-combat-weapon"], is_leader_model: false },
|
|
20
|
+
],
|
|
21
|
+
"rogue-trader-entourage": [
|
|
22
|
+
{ name: "Rogue Trader", min: 1, max: 1, default_weapon_ids: ["dartmask", "close-combat-weapon"], is_leader_model: true },
|
|
23
|
+
{ name: "Rejuvenat Adept", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
24
|
+
{ name: "Canid", profile_name: "Rejuvenat Adept", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
25
|
+
{ name: "Lectro-Maester", profile_name: "Rejuvenat Adept", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
26
|
+
],
|
|
27
|
+
"exaction-squad": [
|
|
28
|
+
{ name: "Proctor-Exactant", profile_name: "Cyber-mastiff", min: 1, max: 1, default_weapon_ids: ["arbites-shotpistol", "close-combat-weapon"], is_leader_model: true },
|
|
29
|
+
{ name: "Exaction Vigilant", profile_name: "Cyber-mastiff", min: 9, max: 9, default_weapon_ids: ["arbites-combat-shotgun", "close-combat-weapon"], is_leader_model: false },
|
|
30
|
+
{ name: "Cyber-mastiff", min: 1, max: 1, default_weapon_ids: ["mechanical-bite"], is_leader_model: false },
|
|
31
|
+
],
|
|
32
|
+
"subductor-squad": [
|
|
33
|
+
{ name: "Subductor Proctor", profile_name: "Cyber-mastiff", min: 1, max: 1, default_weapon_ids: ["arbites-shotpistol", "close-combat-weapon"], is_leader_model: true },
|
|
34
|
+
{ name: "Subductor", profile_name: "Cyber-mastiff", min: 9, max: 9, default_weapon_ids: ["arbites-shotpistol", "close-combat-weapon"], is_leader_model: false },
|
|
35
|
+
{ name: "Cyber-mastiff", min: 1, max: 1, default_weapon_ids: ["mechanical-bite"], is_leader_model: false },
|
|
36
|
+
],
|
|
37
|
+
"vigilant-squad": [
|
|
38
|
+
{ name: "Vigilant Proctor", profile_name: "Cyber-mastiff", min: 1, max: 1, default_weapon_ids: ["arbites-shotpistol", "close-combat-weapon"], is_leader_model: true },
|
|
39
|
+
{ name: "Vigilant", profile_name: "Cyber-mastiff", min: 9, max: 9, default_weapon_ids: ["arbites-combat-shotgun", "close-combat-weapon"], is_leader_model: false },
|
|
40
|
+
{ name: "Cyber-mastiff", min: 1, max: 1, default_weapon_ids: ["mechanical-bite"], is_leader_model: false },
|
|
41
|
+
],
|
|
42
|
+
"voidsmen-at-arms": [
|
|
43
|
+
{ name: "Voidmaster", profile_name: "Canid", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
44
|
+
{ name: "Voidsman", profile_name: "Canid", min: 4, max: 4, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
45
|
+
{ name: "Canid", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
46
|
+
],
|
|
47
|
+
"sanctifiers": [
|
|
48
|
+
{ name: "Missionary", profile_name: "Missionary", min: 1, max: 1, default_weapon_ids: ["holy-fire", "close-combat-weapon"], is_leader_model: true },
|
|
49
|
+
{ name: "Miraculist", min: 2, max: 2, default_weapon_ids: ["ministorum-hand-flamer", "close-combat-weapon"], is_leader_model: false },
|
|
50
|
+
{ name: "Salvationist", min: 2, max: 2, default_weapon_ids: ["ministorum-flamer", "close-combat-weapon"], is_leader_model: false },
|
|
51
|
+
{ name: "Death Cult Assassin", min: 2, max: 2, default_weapon_ids: ["death-cult-blades"], is_leader_model: false },
|
|
52
|
+
{ name: "Sanctifier", min: 2, max: 2, default_weapon_ids: ["sanctifier-melee-weapon"], is_leader_model: false },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
registerFaction(agentsOfTheImperium);
|
|
57
|
+
export default agentsOfTheImperium;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const astraMilitarum = {
|
|
3
|
+
sourceFactionId: "AM",
|
|
4
|
+
factionId: "astra-militarum",
|
|
5
|
+
factionName: "Astra Militarum",
|
|
6
|
+
factionAbilityName: "Voice of Command",
|
|
7
|
+
factionRuleId: "voice-of-command",
|
|
8
|
+
factionKeywords: ["Imperium", "Astra Militarum"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
"cadian-shock-troops": [
|
|
13
|
+
{ name: "Cadian Sergeant", profile_name: "Cadian Shock Trooper", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
14
|
+
{ name: "Cadian Shock Trooper", min: 9, max: 19, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
15
|
+
],
|
|
16
|
+
"catachan-jungle-fighters": [
|
|
17
|
+
{ name: "Catachan Sergeant", profile_name: "Catachan Jungle Fighter", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
18
|
+
{ name: "Catachan Jungle Fighter", min: 9, max: 19, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
19
|
+
],
|
|
20
|
+
"death-korps-of-krieg": [
|
|
21
|
+
{ name: "Watchmaster", profile_name: "Death Korps Trooper", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
22
|
+
{ name: "Death Korps Trooper", min: 9, max: 19, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
23
|
+
],
|
|
24
|
+
"kasrkin": [
|
|
25
|
+
{ name: "Kasrkin Sergeant", profile_name: "Kasrkin", min: 1, max: 1, default_weapon_ids: ["hot-shot-laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
26
|
+
{ name: "Kasrkin", min: 9, max: 9, default_weapon_ids: ["hot-shot-lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
27
|
+
],
|
|
28
|
+
"tempestus-scions": [
|
|
29
|
+
{ name: "Tempestor", profile_name: "Tempestus Scion", min: 1, max: 1, default_weapon_ids: ["hot-shot-laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
30
|
+
{ name: "Tempestus Scion", min: 4, max: 9, default_weapon_ids: ["hot-shot-lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
31
|
+
],
|
|
32
|
+
"tempestus-aquilons": [
|
|
33
|
+
{ name: "Tempestor", profile_name: "Tempestus Aquilon", min: 1, max: 1, default_weapon_ids: ["hot-shot-laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
34
|
+
{ name: "Tempestus Aquilon", min: 9, max: 9, default_weapon_ids: ["hot-shot-lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
35
|
+
],
|
|
36
|
+
"death-riders": [
|
|
37
|
+
{ name: "Ridemaster", min: 1, max: 1, default_weapon_ids: ["laspistol", "death-rider-hunting-lance"], is_leader_model: true },
|
|
38
|
+
{ name: "Death Rider", min: 4, max: 9, default_weapon_ids: ["laspistol", "death-rider-hunting-lance"], is_leader_model: false },
|
|
39
|
+
],
|
|
40
|
+
"krieg-combat-engineers": [
|
|
41
|
+
{ name: "Krieg Engineer Watchmaster", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
42
|
+
{ name: "Krieg Combat Engineer", min: 4, max: 9, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
43
|
+
],
|
|
44
|
+
"krieg-heavy-weapons-squad": [
|
|
45
|
+
{ name: "Fire Coordinator", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
46
|
+
{ name: "Heavy Weapons Gunner", min: 3, max: 3, default_weapon_ids: ["heavy-bolter", "close-combat-weapon"], is_leader_model: false },
|
|
47
|
+
],
|
|
48
|
+
// Command squads (multi-model from source)
|
|
49
|
+
"cadian-command-squad": [
|
|
50
|
+
{ name: "Cadian Commander", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
51
|
+
{ name: "Cadian Veteran Guardsman", min: 4, max: 4, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
52
|
+
],
|
|
53
|
+
"catachan-command-squad": [
|
|
54
|
+
{ name: "Catachan Commander", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
55
|
+
{ name: "Veteran Guardsman", min: 4, max: 4, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
56
|
+
],
|
|
57
|
+
"krieg-command-squad": [
|
|
58
|
+
{ name: "Lord Commissar", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
59
|
+
{ name: "Veteran Guardsman", min: 5, max: 5, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
60
|
+
],
|
|
61
|
+
"militarum-tempestus-command-squad": [
|
|
62
|
+
{ name: "Tempestor Prime", min: 1, max: 1, default_weapon_ids: ["hot-shot-laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
63
|
+
{ name: "Tempestus Scion", min: 4, max: 4, default_weapon_ids: ["hot-shot-lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
64
|
+
],
|
|
65
|
+
"gaunts-ghosts": [
|
|
66
|
+
{ name: "Ibram Gaunt", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "power-sword"], is_leader_model: true },
|
|
67
|
+
{ name: "Oan Mkoll", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: false },
|
|
68
|
+
{ name: "Hlaine Larkin", profile_name: "Oan Mkoll", min: 1, max: 1, default_weapon_ids: ["long-las", "close-combat-weapon"], is_leader_model: false },
|
|
69
|
+
{ name: "Elim Rawne", profile_name: "Oan Mkoll", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: false },
|
|
70
|
+
{ name: "Brin Milo", profile_name: "Oan Mkoll", min: 1, max: 1, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
71
|
+
{ name: "Try Again Bragg", profile_name: "Oan Mkoll", min: 1, max: 1, default_weapon_ids: ["autocannon", "close-combat-weapon"], is_leader_model: false },
|
|
72
|
+
],
|
|
73
|
+
"attilan-rough-riders": [
|
|
74
|
+
{ name: "Rough Rider Sergeant", profile_name: "Attilan Rough Rider", min: 1, max: 1, default_weapon_ids: ["laspistol", "hunting-lance"], is_leader_model: true },
|
|
75
|
+
{ name: "Attilan Rough Rider", min: 4, max: 9, default_weapon_ids: ["laspistol", "hunting-lance"], is_leader_model: false },
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
registerFaction(astraMilitarum);
|
|
80
|
+
export default astraMilitarum;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const blackTemplars = {
|
|
3
|
+
sourceFactionId: "SM",
|
|
4
|
+
factionId: "black-templars",
|
|
5
|
+
factionName: "Black Templars",
|
|
6
|
+
factionAbilityName: "Oath of Moment",
|
|
7
|
+
factionRuleId: "templar-vows",
|
|
8
|
+
factionKeywords: ["Imperium", "Adeptus Astartes", "Black Templars"],
|
|
9
|
+
parentFactionId: "adeptus-astartes",
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {},
|
|
12
|
+
skipUnits: true,
|
|
13
|
+
detachmentFilter: ["Wrathful Procession", "Vindication Task Force", "Companions of Vehemence"],
|
|
14
|
+
};
|
|
15
|
+
registerFaction(blackTemplars);
|
|
16
|
+
export default blackTemplars;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const bloodAngels = {
|
|
3
|
+
sourceFactionId: "SM",
|
|
4
|
+
factionId: "blood-angels",
|
|
5
|
+
factionName: "Blood Angels",
|
|
6
|
+
factionAbilityName: "Oath of Moment",
|
|
7
|
+
factionRuleId: "the-red-thirst",
|
|
8
|
+
factionKeywords: ["Imperium", "Adeptus Astartes", "Blood Angels"],
|
|
9
|
+
parentFactionId: "adeptus-astartes",
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {},
|
|
12
|
+
skipUnits: true,
|
|
13
|
+
detachmentFilter: ["Angelic Inheritors", "The Lost Brethren", "The Angelic Host", "Rage-cursed Onslaught"],
|
|
14
|
+
};
|
|
15
|
+
registerFaction(bloodAngels);
|
|
16
|
+
export default bloodAngels;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const chaosDaemons = {
|
|
3
|
+
sourceFactionId: "CD",
|
|
4
|
+
factionId: "chaos-daemons",
|
|
5
|
+
factionName: "Chaos Daemons",
|
|
6
|
+
factionAbilityName: "The Shadow of Chaos",
|
|
7
|
+
factionRuleId: "the-shadow-of-chaos",
|
|
8
|
+
factionKeywords: ["Chaos", "Daemons"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
"bloodletters": [
|
|
13
|
+
{ name: "Bloodreaper", profile_name: "Bloodletter", min: 1, max: 1, default_weapon_ids: ["hellblade"], is_leader_model: true },
|
|
14
|
+
{ name: "Bloodletter", min: 9, max: 9, default_weapon_ids: ["hellblade"], is_leader_model: false },
|
|
15
|
+
],
|
|
16
|
+
"daemonettes": [
|
|
17
|
+
{ name: "Alluress", profile_name: "Daemonette", min: 1, max: 1, default_weapon_ids: ["slashing-claws"], is_leader_model: true },
|
|
18
|
+
{ name: "Daemonette", min: 9, max: 9, default_weapon_ids: ["slashing-claws"], is_leader_model: false },
|
|
19
|
+
],
|
|
20
|
+
"plaguebearers": [
|
|
21
|
+
{ name: "Plagueridden", profile_name: "Plaguebearer", min: 1, max: 1, default_weapon_ids: ["plaguesword"], is_leader_model: true },
|
|
22
|
+
{ name: "Plaguebearer", min: 9, max: 9, default_weapon_ids: ["plaguesword"], is_leader_model: false },
|
|
23
|
+
],
|
|
24
|
+
"blue-horrors": [
|
|
25
|
+
{ name: "Iridescent Horror", profile_name: "Blue Horror", min: 1, max: 1, default_weapon_ids: ["coruscating-flames"], is_leader_model: true },
|
|
26
|
+
{ name: "Blue Horror", min: 9, max: 9, default_weapon_ids: ["coruscating-flames"], is_leader_model: false },
|
|
27
|
+
],
|
|
28
|
+
"pink-horrors": [
|
|
29
|
+
{ name: "Iridescent Horror", profile_name: "Pink Horror", min: 1, max: 1, default_weapon_ids: ["coruscating-flames"], is_leader_model: true },
|
|
30
|
+
{ name: "Pink Horror", min: 8, max: 8, default_weapon_ids: ["coruscating-flames"], is_leader_model: false },
|
|
31
|
+
{ name: "Brimstone Horror", min: 1, max: 1, default_weapon_ids: ["coruscating-flames"], is_leader_model: false },
|
|
32
|
+
],
|
|
33
|
+
"seekers": [
|
|
34
|
+
{ name: "Heartseeker", profile_name: "Seeker", min: 1, max: 1, default_weapon_ids: ["slashing-claws", "lashing-tongues"], is_leader_model: true },
|
|
35
|
+
{ name: "Seeker", min: 4, max: 9, default_weapon_ids: ["slashing-claws", "lashing-tongues"], is_leader_model: false },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
registerFaction(chaosDaemons);
|
|
40
|
+
export default chaosDaemons;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const chaosKnights = {
|
|
3
|
+
sourceFactionId: "QT",
|
|
4
|
+
factionId: "chaos-knights",
|
|
5
|
+
factionName: "Chaos Knights",
|
|
6
|
+
factionAbilityName: "Harbingers of Dread",
|
|
7
|
+
factionRuleId: "harbingers-of-dread",
|
|
8
|
+
factionKeywords: ["Chaos", "Chaos Knights"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {},
|
|
12
|
+
};
|
|
13
|
+
registerFaction(chaosKnights);
|
|
14
|
+
export default chaosKnights;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { registerFaction } from "../faction-config.js";
|
|
2
|
+
const chaosSpaceMarines = {
|
|
3
|
+
sourceFactionId: "CSM",
|
|
4
|
+
factionId: "chaos-space-marines",
|
|
5
|
+
factionName: "Chaos Space Marines",
|
|
6
|
+
factionAbilityName: "Dark Pacts",
|
|
7
|
+
factionRuleId: "dark-pacts",
|
|
8
|
+
factionKeywords: ["Chaos", "Heretic Astartes"],
|
|
9
|
+
parentFactionId: null,
|
|
10
|
+
aliases: [],
|
|
11
|
+
compositionOverrides: {
|
|
12
|
+
"legionaries": [
|
|
13
|
+
{ name: "Aspiring Champion", profile_name: "Legionary", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
14
|
+
{ name: "Legionary", min: 4, max: 9, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
15
|
+
],
|
|
16
|
+
"chosen": [
|
|
17
|
+
{ name: "Chosen Champion", profile_name: "Chosen", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
18
|
+
{ name: "Chosen", min: 4, max: 9, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: false },
|
|
19
|
+
],
|
|
20
|
+
"chaos-terminator-squad": [
|
|
21
|
+
{ name: "Terminator Champion", profile_name: "Chaos Terminator", min: 1, max: 1, default_weapon_ids: ["combi-bolter", "accursed-weapon"], is_leader_model: true },
|
|
22
|
+
{ name: "Chaos Terminator", min: 4, max: 9, default_weapon_ids: ["combi-bolter", "accursed-weapon"], is_leader_model: false },
|
|
23
|
+
],
|
|
24
|
+
"cultist-mob": [
|
|
25
|
+
{ name: "Cultist Champion", profile_name: "Cultist", min: 1, max: 1, default_weapon_ids: ["autopistol", "brutal-assault-weapon"], is_leader_model: true },
|
|
26
|
+
{ name: "Cultist", min: 9, max: 19, default_weapon_ids: ["autogun", "close-combat-weapon"], is_leader_model: false },
|
|
27
|
+
],
|
|
28
|
+
"accursed-cultists": [
|
|
29
|
+
{ name: "Torment", min: 1, max: 3, default_weapon_ids: ["hideous-mutations"], is_leader_model: false },
|
|
30
|
+
{ name: "Mutant", min: 5, max: 13, default_weapon_ids: ["blasphemous-appendages"], is_leader_model: false },
|
|
31
|
+
],
|
|
32
|
+
"havocs": [
|
|
33
|
+
{ name: "Havoc Champion", profile_name: "Havoc", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
34
|
+
{ name: "Havoc", min: 4, max: 4, default_weapon_ids: ["lascannon", "close-combat-weapon"], is_leader_model: false },
|
|
35
|
+
],
|
|
36
|
+
"raptors": [
|
|
37
|
+
{ name: "Raptor Champion", profile_name: "Raptor", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
38
|
+
{ name: "Raptor", min: 4, max: 9, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: false },
|
|
39
|
+
],
|
|
40
|
+
"warp-talons": [
|
|
41
|
+
{ name: "Warp Talon Champion", profile_name: "Warp Talon", min: 1, max: 1, default_weapon_ids: ["warp-talon-claws"], is_leader_model: true },
|
|
42
|
+
{ name: "Warp Talon", min: 4, max: 9, default_weapon_ids: ["warp-talon-claws"], is_leader_model: false },
|
|
43
|
+
],
|
|
44
|
+
"chaos-bikers": [
|
|
45
|
+
{ name: "Biker Champion", profile_name: "Chaos Biker", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
46
|
+
{ name: "Chaos Biker", min: 2, max: 5, default_weapon_ids: ["combi-bolter", "close-combat-weapon"], is_leader_model: false },
|
|
47
|
+
],
|
|
48
|
+
"nemesis-claw": [
|
|
49
|
+
{ name: "Nemesis Champion", profile_name: "Nemesis Claw", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
50
|
+
{ name: "Nemesis Claw", min: 4, max: 9, default_weapon_ids: ["bolt-pistol", "close-combat-weapon"], is_leader_model: false },
|
|
51
|
+
],
|
|
52
|
+
"red-corsairs-raiders": [
|
|
53
|
+
{ name: "Corsair Champion", profile_name: "Red Corsair", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-weapon"], is_leader_model: true },
|
|
54
|
+
{ name: "Red Corsair", min: 4, max: 9, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
55
|
+
],
|
|
56
|
+
"traitor-guardsmen-squad": [
|
|
57
|
+
{ name: "Traitor Sergeant", profile_name: "Traitor Guardsman", min: 1, max: 1, default_weapon_ids: ["laspistol", "close-combat-weapon"], is_leader_model: true },
|
|
58
|
+
{ name: "Traitor Guardsman", min: 9, max: 9, default_weapon_ids: ["lasgun", "close-combat-weapon"], is_leader_model: false },
|
|
59
|
+
],
|
|
60
|
+
"fellgor-beastmen": [
|
|
61
|
+
{ name: "Fellgor Mangler", profile_name: "Fellgor Beastman", min: 1, max: 1, default_weapon_ids: ["autopistol", "close-combat-weapon"], is_leader_model: true },
|
|
62
|
+
{ name: "Fellgor Beastman", min: 9, max: 9, default_weapon_ids: ["autopistol", "close-combat-weapon"], is_leader_model: false },
|
|
63
|
+
],
|
|
64
|
+
"chaos-spawn": [
|
|
65
|
+
{ name: "Chaos Spawn", min: 2, max: 2, default_weapon_ids: ["hideous-mutations"], is_leader_model: false },
|
|
66
|
+
],
|
|
67
|
+
// Character units with companions
|
|
68
|
+
"dark-apostle": [
|
|
69
|
+
{ name: "Dark Apostle", min: 1, max: 1, default_weapon_ids: ["bolt-pistol", "accursed-crozius"], is_leader_model: true },
|
|
70
|
+
{ name: "Dark Disciple", min: 2, max: 2, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
71
|
+
],
|
|
72
|
+
"dark-commune": [
|
|
73
|
+
{ name: "Cult Demagogue", min: 1, max: 1, default_weapon_ids: ["autopistol", "close-combat-weapon"], is_leader_model: true },
|
|
74
|
+
{ name: "Blessed Blade", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
75
|
+
{ name: "Mindwitch", profile_name: "Cult Demagogue", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
76
|
+
{ name: "Iconarch", profile_name: "Cult Demagogue", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
77
|
+
{ name: "Accursed Mutant", profile_name: "Blessed Blade", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
78
|
+
],
|
|
79
|
+
"fabius-bile": [
|
|
80
|
+
{ name: "Fabius Bile", min: 1, max: 1, default_weapon_ids: ["xyclos-needler", "chirurgeon"], is_leader_model: true },
|
|
81
|
+
{ name: "Surgeon Acolyte", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
82
|
+
],
|
|
83
|
+
"masters-of-the-maelstrom": [
|
|
84
|
+
{ name: "Katar Garrix", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: true },
|
|
85
|
+
{ name: "The Enforcer", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
86
|
+
{ name: "Corsair", profile_name: "Katar Garrix", min: 3, max: 3, default_weapon_ids: ["boltgun", "close-combat-weapon"], is_leader_model: false },
|
|
87
|
+
],
|
|
88
|
+
"traitor-enforcer": [
|
|
89
|
+
{ name: "Traitor Enforcer", min: 1, max: 1, default_weapon_ids: ["autopistol", "close-combat-weapon"], is_leader_model: true },
|
|
90
|
+
{ name: "Traitor Ogryn", min: 1, max: 1, default_weapon_ids: ["close-combat-weapon"], is_leader_model: false },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
registerFaction(chaosSpaceMarines);
|
|
95
|
+
export default chaosSpaceMarines;
|