Summary: Avoid selecting RMM_RELAXED roads when they are less
Submitted by: persia
Submitted on: Sun 31 Mar 2013 09:42:26 AM GMT
Priority: 5 - Normal
Assigned to: None
Discussion Lock: Any
Depending on the order of road_type_iterate, it is possible for the move cost
in tile_move_cost_ptrs() to select 2*relaxed-road-cost in preference to
1*other-road-cost. If the RMM_RELAXED road has a move_cost of 2 and the other
road has a move_cost of 3, this is suboptimal.
A test example is to define "Mountain Track" as a move_cost=3 road that may
only be built on mountains, and "River" as a move_cost=2 road that operates
This is trivally fixed by verifying road_cost > proad->move_cost*2 in the
RMM_RELAXED case, but when making this change, there were some other things
about tile_move_cost_ptrs() that seemed worth adjusting while I was there, as
1) Don't check nativity of t2 with two different calls, but rather reuse the
cached boolean "native" when testing for slow_invasions
2) Don't recalculate the class of the unit twice (once in
unit_type_class(unit_type(punit)) and once with unit_class(punit)) when
setting local cache variables: instead use pclass directly to determine
3) Don't track separately "cost" and "road_cost" values, when there is only
interest in roads that provide benefits (which also allows dropping the MAX()
test at the end of the function)
4) Don't bother checking for a positive road_cost value when preinitialising
with the base terrain movement cost.
For rulesets where all RMM_RELAXED roads have move_cost of 1, or where all
roads have move_cost < 3, this patch should have no effect whatsoever.
Date: Sun 31 Mar 2013 09:42:26 AM GMT Name:
avoid-selecting-bad-relaxed-road.patch Size: 4kB By: persia
Reply to this item at:
Message sent via/by Gna!
Freeciv-dev mailing list