Follow-up Comment #1, bug #19176 (project freeciv):

> Perhaps self-root_req'd techs should just be immune to being 
> lost in this way?
Split this out to bug #22161, keeping this one for the general case:

> (I suspect that techs with non-self root_reqs cause trouble 
> too; I don't see anything stopping you losing a tech that's a 
> root_req for another tech, and that will probably upset lots 
> of code.)
To put it another way: root_reqs try to establish an invariant that at all
times players must possess root_req(tech) to possess tech, and tech loss
drives a bus through that invariant.


Tech loss through negative bulbs. This picks a random tech
(pick_random_tech_researched()), so can with a bit of calculation avoid techs
which are root_reqs for others.

techlost_donor (which is peculiar in many ways) is more problematic, since
it's about a specific technology. If we enforce the invariant that root_reqs
can never be lost, then donor can avoid possibility of forgetting techs by
only giving away those which something else depends on. That might actually be
OK in gameplay terms -- only giving away your latest technology is risky to

I think it's OK to hard-code this immunity. Ruleset authors who don't want it
can not use root_reqs.
(Otherwise, we have to ensure that the game engine always copes with not
having root_reqs.)


Reply to this item at:


  Message sent via/by Gna!

Freeciv-dev mailing list

Reply via email to