[Freeciv-Dev] [bug #19176] Tech loss vs root_req
Update of bug #19176 (project freeciv): Status: Ready For Test = Fixed Open/Closed:Open = Closed ___ 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
[Freeciv-Dev] [bug #19176] Tech loss vs root_req
Update of bug #19176 (project freeciv): Status:None = Ready For Test Assigned to:None = jtn Planned Release: = 2.5.0, 2.6.0 ___ Follow-up Comment #2: I think it's OK to hard-code this immunity. Attached patch does so. (file #21155) ___ Additional Item Attachment: File name: trunk-S2_5-techloss-rootreq.patch Size:2 KB ___ 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
[Freeciv-Dev] [bug #19176] Tech loss vs root_req
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
[Freeciv-Dev] [bug #19176] Tech loss vs root_req
Update of bug #19176 (project freeciv): Depends on: = bugs #22161 ___ 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
[Freeciv-Dev] [bug #19176] Tech loss vs root_req
URL: http://gna.org/bugs/?19176 Summary: Tech loss vs root_req Project: Freeciv Submitted by: jtn Submitted on: Mon Dec 12 02:14:16 2011 Category: None Severity: 3 - Normal Priority: 5 - Normal Status: None Assigned to: None Originator Email: Open/Closed: Open Release: Discussion Lock: Any Operating System: None Planned Release: ___ Details: A long time ago (bug #16855 comment 13 http://gna.org/bugs/?16855#comment13), Matthias noted that a feature of the multiplayer ruleset is problematic if tech upkeep is enabled. There's a self-root_req'd tech called Theory of Evolution which is granted by Lua script when Darwin's Voyage is first built -- this is intended to stop repeatedly gaining the free advances the script also gives you at that point. Notwithstanding that that's broken currently (bug #18394), and regardless of whether that's a good way to achieve that end, this raises a general question -- if self-root_req'd techs, which must be granted by special means (init_tech or Lua), are lost through lack of tech_upkeep, there may be no way to get them back, and there's no way to defend against this -- the lost tech is chosen randomly. Perhaps self-root_req'd techs should just be immune to being lost in this way? (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.) ___ 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