effect · cancel_purchase_contract
Definition
- Supported scope:
PURCHASE_CONTRACT - Supported target:
none
Description
Cancels the scoped purchase contract.
Example:
contract = {cancel_purchase_contract = yes}
cancel_purchase_contractPURCHASE_CONTRACTnoneCancels the scoped purchase contract.
Example:
contract = {cancel_purchase_contract = yes}
实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。
当玩家或 AI 的某个采购合同因触发条件不再满足(例如买方阵营改变、资源协议破裂)时,可在 contract 遍历块中调用此 effect 强制终止该合同。常见于"动态贸易管理"类 mod,用来在特定事件发生后清除旧合同、避免合同僵尸化堆积。
# 在某事件的 immediate 块中取消买方所有合同示例
country_event = {
id = my_trade_mod.1
immediate = {
# 遍历该国参与的采购合同
every_purchase_contract = {
limit = {
buyer = { tag = ENG }
}
cancel_purchase_contract = yes
}
}
}
[buyer](/wiki/trigger/buyer) — 用于在执行前判断合同的买方是否为目标国家,防止误取消其他国家的合同。[seller](/wiki/trigger/seller) — 配合卖方身份筛选,确保只取消与特定供应国签订的合同。[contract_contains_equipment](/wiki/trigger/contract_contains_equipment) — 先检查合同所含装备类型,仅对包含特定装备的合同执行取消,实现精细化控制。[deal_completion](/wiki/trigger/deal_completion) — 在合同已完成交割的条件下跳过取消,避免对已结束合同重复操作引发逻辑错误。PURCHASE_CONTRACT scope 下调用(通常通过 every_purchase_contract / random_purchase_contract 等进入),直接写在 country scope 下会导致脚本报错或静默失效,新手最容易忘记先切换 scope。limit 过滤导致批量误删:在遍历所有合同时若不搭配 buyer/seller/contract_contains_equipment 等 trigger 做限制,会将该国所有采购合同一次性取消,产生意料之外的游戏状态破坏。