diff --git a/src/Episode3/CardSpecial.cc b/src/Episode3/CardSpecial.cc index f97244cc..8c899e39 100644 --- a/src/Episode3/CardSpecial.cc +++ b/src/Episode3/CardSpecial.cc @@ -3564,7 +3564,7 @@ void CardSpecial::check_for_defense_interference( } auto ally_hes = this->server()->ruler_server->get_hand_and_equip_state_for_client_id(target_ally_client_id); - if (!ally_hes || !ally_hes->is_cpu_player) { + if (!ally_hes || (!(this->server()->behavior_flags & BehaviorFlag::ALLOW_NON_COM_INTERFERENCE) && !ally_hes->is_cpu_player)) { return; } @@ -4558,7 +4558,7 @@ void CardSpecial::check_for_attack_interference(shared_ptr unknown_p2) { } auto ally_hes = this->server()->ruler_server->get_hand_and_equip_state_for_client_id(ally_client_id); - if (!ally_hes || !ally_hes->is_cpu_player) { + if (!ally_hes || (!(this->server()->behavior_flags & BehaviorFlag::ALLOW_NON_COM_INTERFERENCE) && !ally_hes->is_cpu_player)) { return; } diff --git a/src/Episode3/DataIndexes.hh b/src/Episode3/DataIndexes.hh index 2c1492c1..8ae77720 100644 --- a/src/Episode3/DataIndexes.hh +++ b/src/Episode3/DataIndexes.hh @@ -36,6 +36,7 @@ enum BehaviorFlag : uint32_t { ENABLE_RECORDING = 0x00000040, DISABLE_MASKING = 0x00000080, DISABLE_INTERFERENCE = 0x00000100, + ALLOW_NON_COM_INTERFERENCE = 0x00000200, }; enum class StatSwapType : uint8_t { diff --git a/system/config.example.json b/system/config.example.json index 6f3cf089..92e311c2 100644 --- a/system/config.example.json +++ b/system/config.example.json @@ -307,6 +307,7 @@ // 0x0080 => Disable command masking during battles // 0x0100 => Disable interference (COMs randomly coming to each other's // rescue) + // 0x0200 => Allow interference even when neither player is a COM "Episode3BehaviorFlags": 0x0002, // Episode 3 EX result values. This allows you to set the amount of EX players diff --git a/system/ep3/card-definitions.mnr b/system/ep3/card-definitions.mnr index 80fc0bc6..ea54f9df 100644 Binary files a/system/ep3/card-definitions.mnr and b/system/ep3/card-definitions.mnr differ