Files
core2026/tools/compare-command-constraints.compat.json

145 lines
5.3 KiB
JSON

{
"rules": [
{
"id": "reqNationValue(gennum)>=N -> reqNationGeneralCount(N)",
"noteTemplate": "gennum >= {min}",
"php": {
"name": "reqNationValue",
"equals": [
{ "index": 0, "value": "gennum", "transform": "field" },
{ "index": 2, "value": ">=", "transform": "comp" }
],
"numberBinds": [{ "index": 3, "bind": "min" }]
},
"ts": {
"name": "reqNationGeneralCount",
"numberBinds": [{ "index": 0, "bind": "min" }]
}
},
{
"id": "reqGeneralValue(officer_level==12) -> beLord/beMonarch",
"noteTemplate": "officer_level == 12",
"php": {
"name": "reqGeneralValue",
"equals": [
{ "index": 0, "value": "officer_level", "transform": "field" },
{ "index": 2, "value": "==", "transform": "comp" }
],
"numberEquals": [{ "index": 3, "value": 12 }]
},
"ts": {
"nameAny": ["beLord", "beMonarch"]
}
},
{
"id": "reqGeneralValue(officer_level!=12) -> notLord",
"noteTemplate": "officer_level != 12",
"php": {
"name": "reqGeneralValue",
"equals": [
{ "index": 0, "value": "officer_level", "transform": "field" },
{ "index": 2, "value": "!=", "transform": "comp" }
],
"numberEquals": [{ "index": 3, "value": 12 }]
},
"ts": {
"name": "notLord"
}
},
{
"id": "reqGeneralValue(nation==0) -> beNeutral",
"noteTemplate": "nation == 0",
"php": {
"name": "reqGeneralValue",
"equals": [
{ "index": 0, "valueAny": ["nation", "nation_id"], "transform": "field" },
{ "index": 2, "value": "==", "transform": "comp" }
],
"numberEquals": [{ "index": 3, "value": 0 }]
},
"ts": {
"name": "beNeutral"
}
},
{
"id": "reqGeneralValue(nation!=0) -> notBeNeutral",
"noteTemplate": "nation != 0",
"php": {
"name": "reqGeneralValue",
"equals": [
{ "index": 0, "valueAny": ["nation", "nation_id"], "transform": "field" },
{ "index": 2, "value": "!=", "transform": "comp" }
],
"numberEquals": [{ "index": 3, "value": 0 }]
},
"ts": {
"name": "notBeNeutral"
}
},
{
"id": "reqDestNationValue(nation==destGeneral.nation) -> destGeneralBelongsToDestNation",
"noteTemplate": "destination general belongs to destination nation",
"php": {
"name": "reqDestNationValue",
"equals": [
{ "index": 0, "value": "nation", "transform": "field" },
{ "index": 2, "value": "==", "transform": "comp" }
]
},
"ts": {
"name": "destGeneralBelongsToDestNation"
}
}
],
"oneSidedRules": [
{
"id": "npc-active destination loaded by legacy argTest",
"command": "General/che_NPC능동",
"kind": "full",
"side": "ts",
"name": "existsDestCity",
"note": "legacy argTest loads and rejects a missing destination; core exposes the equivalent constraint"
},
{
"id": "recruit-accept self target checked outside legacy constraint array",
"command": "General/che_등용수락",
"kind": "full",
"side": "ts",
"name": "differentDestGeneral",
"note": "legacy argTest rejects self before building constraints"
},
{
"id": "abdication self target checked outside legacy constraint array",
"command": "General/che_선양",
"kind": "full",
"side": "ts",
"name": "differentDestGeneral",
"note": "legacy argTest rejects self before building constraints"
},
{
"id": "gift self target checked outside legacy constraint array",
"command": "General/che_증여",
"kind": "full",
"side": "ts",
"name": "alwaysFail",
"note": "legacy argTest rejects self before building constraints"
},
{
"id": "assignment self target becomes legacy dynamic AlwaysFail",
"command": "Nation/che_발령",
"kind": "full",
"side": "php",
"name": "alwaysFail",
"note": "core preserves the legacy completed-false action in resolve-time handling"
},
{
"id": "troop-kick self target becomes legacy dynamic AlwaysFail",
"command": "Nation/che_부대탈퇴지시",
"kind": "full",
"side": "php",
"name": "alwaysFail",
"note": "core preserves the legacy completed-false action in resolve-time handling"
}
]
}