Downgraded controller being restored to original level with one single upgrade tick



  • The controller in this E18N8 has not been worked on for the past few days, and was about 500 ticks away from being unclaimed (it's at level 1). One of my creeps accidentally worked on it for a few ticks, and now the controller is back to level 4 (what it was before all the downgrades).



  • I'm not 100% sure, but I think I also noticed this behaviour.



  • HI! If the controller had an unfinished progress by this moment, this is not a bug but an intended behaviour. The progress is saved after the level downgrade, hence it might be enough for a single run of upgrageController to upgrade the level back.



  • Why is this intended behavior? As it stands now, for example, if your controller is just about to hit RCL7 and gets downgraded you're in much better shape than if your controller had just passed RCL7.

    Example:
    Controller is RCL6 w/ 3.5m (out of 3.6m) progress towards RCL7
    -> Downgrade to RCL5 w/ 3.5m (out of 1.2m -- 291%) progress towards RCL7
    -> upgradeController() once
    -> Upgrade to RCL6 w/ 2.3m progress towards RCL7

    Next example:
    Controller is RCL7 w/ 100k progress towards RCL8
    -> Downgrade to RCL6 w/ 100k progress towards RCL7
    -> upradeController()
    -> Still RCL6 w/ only 100k progress

    Obviously we should be avoiding controller downgrades, but the current mechanics are a little weird. Perhaps progress should be scaled down to match the lower RCL. So in the first example, you were 97% of the way to RCL7. When it gets downgraded you could then be 97% of the way to RCL6, or 1.1m.