From c2ea427f798d36d263a1168c8a32cfa4e6fec471 Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Sun, 26 Feb 2017 12:10:54 +0800 Subject: [PATCH] Don't teleport to original segment if boss won't fit Unless there are no other segments. Fixes issue #329. --- similar/main/ai.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/similar/main/ai.cpp b/similar/main/ai.cpp index c3df30600..2662db00f 100644 --- a/similar/main/ai.cpp +++ b/similar/main/ai.cpp @@ -2050,10 +2050,13 @@ static void init_boss_segments(vobjptridx_t boss_objnum, boss_special_segment_ar tail = 0; seg_queue[head++] = original_boss_seg; - a.emplace_back(original_boss_seg); + if ((!size_check) || boss_fits_in_seg(boss_objp, vsegptridx(original_boss_seg))) + { + a.emplace_back(original_boss_seg); #if DXX_USE_EDITOR - Selected_segs.emplace_back(original_boss_seg); - #endif + Selected_segs.emplace_back(original_boss_seg); +#endif + } visited_segment_bitarray_t visited; @@ -2109,8 +2112,10 @@ static void init_boss_segments(vobjptridx_t boss_objnum, boss_special_segment_ar boss_objp->pos = original_boss_pos; obj_relink(boss_objp, vsegptridx(original_boss_seg)); + // Last resort - add original seg even if boss doesn't fit in it + if (a.empty()) + a.emplace_back(original_boss_seg); } - } // --------------------------------------------------------------------------------------------------------------------