That's my suspicion. That the one-per-play or similar one-per-planet things set a boolean value somewhere, which is only checked on build or destruction.
- hasX = false when game starts.
- So, you build X, code checks hasX = false, everything is OK, it builds, and then it sets hasX = true
- You acquire X through flip/conquest/whatever, and no code checks the hasX value
- You then destroy the X, and code sets hasX = false
- Repeat #2
Just to validate this, Horemvore - can you not only destroy and rebuild the HypShrink from the planet you flipped, but do the same thing on your original one you built on your own planet?
Two side notes:
I think the fix should be that you CANNOT acquire multiples under any circumstances; it gets quickly VERY overpowered if you can get more than one of the various Hyperion* improvements, particularly the Shinker. So, when you conquest/flip a planet, the code should check if any improvements have the corresponding hasX value set to true in your empire. If they do, then that improvement should be destroyed on the newly-acquired world.
Does anyone know what happens if you lose a world with a Hyperion improvement on it? Can you rebuild it somewhere else, now that you don't own one? I'd vote for being able to do that, IF the prior "one and only one" fix is implemented. Otherwise, I'd vote you can't make one again.