diff --git a/src/creature_states_combt.c b/src/creature_states_combt.c index 54746833c2..232e65031b 100644 --- a/src/creature_states_combt.c +++ b/src/creature_states_combt.c @@ -3010,10 +3010,22 @@ TbBool creature_start_combat_with_trap_if_available(struct Thing* creatng, struc { return false; } - if (!combat_enemy_exists(creatng,traptng) || !(creature_can_navigate_to(creatng, &traptng->mappos, NavRtF_Default))) + if (!combat_enemy_exists(creatng,traptng)) { return false; } + struct CreatureControl* cctrl = creature_control_get_from_thing(creatng); + if (cctrl->combat.battle_enemy_idx == traptng->index) + { + return false; + } + if (!creature_can_navigate_to(creatng, &traptng->mappos, NavRtF_Default)) + { + if (!creature_has_ranged_weapon(creatng)) + return false; + if (!creature_can_see_combat_path(creatng, traptng, get_combat_distance(creatng, traptng))) + return false; + } return set_creature_object_combat(creatng, traptng); }