From b7b6c4b6687b9c47fc0916f065496eb6d80115a5 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Sun, 7 Feb 2021 12:52:35 +0100 Subject: [PATCH] https://bugs.eressea.de/view.php?id=2723 Meermenschen konnten nicht aus fahrenden Schiffen springen. --- scripts/tests/e2/movement.lua | 36 +++++++++++++++++++++++++++++++++++ src/move.c | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/scripts/tests/e2/movement.lua b/scripts/tests/e2/movement.lua index 77fec46ee..d83728b6e 100644 --- a/scripts/tests/e2/movement.lua +++ b/scripts/tests/e2/movement.lua @@ -182,3 +182,39 @@ function test_move_to_same_region_leaves_building() assert_equal(r1, u.region) assert_nil(u.building) end + +function test_aquarians_can_swim() + local r1 = region.create(0, 0, "plain") + local r2 = region.create(1, 0, "ocean") + local r3 = region.create(2, 0, "ocean") + local f = faction.create("aquarian") + local u1 = unit.create(f, r2, 1) + local u2 = unit.create(f, r2, 1) + local sh = ship.create(r2, 'boat') + u1.ship = sh + u1:set_skill('sailing', 2) + u1:add_order("NACH O") + u2.ship = sh + u2.name = 'Zolgrim' + u2:add_order("NACH W") + process_orders() + assert_equal(r1, u2.region) + assert_equal(r3, u1.region) +end + +function test_looping_ship() + local r1 = region.create(0, 0, "plain") + local r2 = region.create(1, 0, "ocean") + local f = faction.create("aquarian") + local u1 = unit.create(f, r1, 1) + u1.ship = ship.create(r1, 'boat') + local u2 = unit.create(f, r1, 1) + u2.ship = ship.create(r1, 'boat') + u1:set_skill('sailing', 2) + u1:add_order("NACH O W") + u2:set_skill('sailing', 2) + u2:add_order("NACH O") + process_orders() + assert_equal(r1, u1.region) + assert_equal(r2, u2.region) +end diff --git a/src/move.c b/src/move.c index d1088b2b1..4cf3b7301 100644 --- a/src/move.c +++ b/src/move.c @@ -2421,7 +2421,7 @@ void move_units(void) while (*up) { unit* u = *up; up = &u->next; - if (!u->ship) { + if (!u->ship || ship_owner(u->ship) != u) { keyword_t kword = getkeyword(u->thisorder); if (kword == K_ROUTE || kword == K_MOVE) {