import {
ACTION_GROUP_BUNDLE,
ADVISORY,
Mod,
ModifierBuilder,
ProgressionTreeBuilder,
ProgressionTreeNodeBuilder,
COLLECTION,
EFFECT,
YIELD,
AGE
} from "civ7-modding-tools";
const mod = new Mod({
id: 'my-civics-mod',
version: '1.0',
});
// Step 1: Create first civic node
const tribalUnity = new ProgressionTreeNodeBuilder({
actionGroupBundle: ACTION_GROUP_BUNDLE.AGE_ANTIQUITY,
progressionTreeNode: {
progressionTreeNodeType: 'NODE_CIVICS_TRIBAL_UNITY',
},
progressionTreeAdvisories: [ADVISORY.CLASS_CULTURE],
localizations: [{
name: 'Tribal Unity'
}]
});
// Step 2: Create first node modifier
const unityModifier = new ModifierBuilder({
modifier: {
collection: COLLECTION.OWNER,
effect: EFFECT.PLAYER_ADJUST_CONSTRUCTIBLE_YIELD,
arguments: [
{ name: 'Tag', value: 'CULTURE' },
{ name: 'YieldType', value: 'YIELD_CULTURE' },
{ name: 'Amount', value: 5 },
],
},
localizations: [{
description: '+5 Culture from cultural buildings and improvements'
}]
});
// Step 3: Create second civic node
const warCouncil = new ProgressionTreeNodeBuilder({
actionGroupBundle: ACTION_GROUP_BUNDLE.AGE_ANTIQUITY,
progressionTreeNode: {
progressionTreeNodeType: 'NODE_CIVICS_WAR_COUNCIL',
},
progressionTreeAdvisories: [ADVISORY.CLASS_MILITARY],
localizations: [{
name: 'War Council'
}]
});
// Step 4: Create second node modifier
const warCouncilModifier = new ModifierBuilder({
modifier: {
collection: COLLECTION.OWNER,
effect: EFFECT.PLAYER_ADJUST_CONSTRUCTIBLE_YIELD,
arguments: [
{ name: 'Tag', value: 'MILITARY' },
{ name: 'YieldType', value: 'YIELD_PRODUCTION' },
{ name: 'Amount', value: 10 },
],
},
localizations: [{
description: '+10 Production from military buildings'
}]
});
// Step 5: Bind modifiers to nodes
tribalUnity.bind([unityModifier]);
warCouncil.bind([warCouncilModifier]);
// Step 6: Create the progression tree
const dacianCivics = new ProgressionTreeBuilder({
actionGroupBundle: ACTION_GROUP_BUNDLE.AGE_ANTIQUITY,
progressionTree: {
progressionTreeType: `TREE_CIVICS_DACIA`,
ageType: AGE.ANTIQUITY
},
// Define prerequisites (War Council requires Tribal Unity)
progressionTreePrereqs: [{
node: warCouncil.progressionTreeNode.progressionTreeNodeType,
prereqNode: tribalUnity.progressionTreeNode.progressionTreeNodeType
}],
localizations: [{
name: 'Dacian Traditions'
}]
});
// Step 7: Bind nodes to tree
dacianCivics.bind([tribalUnity, warCouncil]);
// Step 8: Add everything to mod
mod.add([dacianCivics, tribalUnity, warCouncil]);
// Build the mod
mod.build('./dist');