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. Cases: 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 you. 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: <http://gna.org/bugs/?19176> _______________________________________________ Message sent via/by Gna! http://gna.org/ _______________________________________________ Freeciv-dev mailing list Freeciv-dev@gna.org https://mail.gna.org/listinfo/freeciv-dev