とりあえずできたよ
https://xn--rssu31gj1g.jp/?page=nobu_mod_the_snmod_methodref_on_battle_damaged
↑の例(3)を応用して「攻撃や突撃といったコマンド攻撃を受けた場合のみ必ず兵士数がゼロになる」という処理にした
ただし、これだと鉄砲や大砲などの遠距離攻撃でも一撃死なので籠城側が強くなりすぎるかも
自分で好きなように調整してください

// 最初の「using namespace System;」の次に追加
static int iAttackMethodID = -1;

void カスタム::On_攻撃方法決定時《戦争画面》(int 主体武将番号, int 客体武将番号, 攻撃方法決定時パラメタ型 パラメタ) {
iAttackMethodID = パラメタ.攻撃方法番号;
}

void カスタム::On_被ダメージ時(int 武将番号, int ダメージ兵数) {
int iDamagedBushouID = 武将番号 -1;
if (0 <= iDamagedBushouID && iDamagedBushouID < 最大数::武将情報::配列数) {
// 必要のない攻撃方法を削除して調整
if ((iAttackMethodID == 攻撃方法::攻撃) || (iAttackMethodID == 攻撃方法::一斉攻撃) || (iAttackMethodID == 攻撃方法::突撃) || (iAttackMethodID == 攻撃方法::鉄砲) || (iAttackMethodID == 攻撃方法::大砲) || (iAttackMethodID == 攻撃方法::弓)) {
if (p武将情報[iDamagedBushouID].兵数 > 0) {
p武将情報[iDamagedBushouID].兵数 = 0;
}
}
}
iAttackMethodID = -1;
}

void カスタム::On_戦争終了() {
iAttackMethodID = -1;
}