Follow-up Comment #7, bug #21992 (project freeciv):
Sorry to catch this so late: the attached patch doesn't solve the problem I
intended to report, although it does improve things to some degree with the
existing rulesets (so there's no point reverting it).
More specifically, it is possible to use PRESENT=FALSE as a means to allow
semi-disjunction: given a set of values in a range, using FALSE for all the
unacceptable values (making any acceptable values inherently true), so that
one may have more than one acceptable value. This is semantically distinct
from the use to indicate that something is obsolete or redundant.
The right solution (which belongs in another patch) is to evaluate the effect
for the improvement, and determine if another improvement provides that effect
in such a way that this improvement isn't useful.
To put this another way, we shouldn't impose semantic meaning on the notation
n the ruleset (present=FALSE), but rather analyze the improvement to determine
if it is redundant.
An example of how the current patch might go wrong: imagine an improvement
that provides +1 happiness if there are less than 4 units in the city: with
this patch, that would be marked redundant for overpopulated cities (and sold
with "Sell All Redundant", whereas an nreqs-based implementation would use
present=FALSE to indicate the effect shouldn't work, so that the nreqs weren't
triggered (as the improvement becomes useful again as soon as there are fewer
units in the city).
Reply to this item at:
Message sent via/by Gna!
Freeciv-dev mailing list