public new JObject Save(JObject jsonObject)
        {
            jsonObject.Add("bv", BuilderVillage);
            jsonObject.Add("lvl", UpgradeLevel);
            if (IsGearing)
            {
                jsonObject.Add("gearing", IsGearing);
                jsonObject.Add("const_t", Timer.GetRemainingSeconds(Level.Avatar.LastTick));
                jsonObject.Add("const_t_end", Timer.EndTime);
            }

            if (IsConstructing)
            {
                jsonObject.Add("const_t", Timer.GetRemainingSeconds(Level.Avatar.LastTick));
                jsonObject.Add("const_t_end", Timer.EndTime);
            }
            if (IsBoosted)
            {
                jsonObject.Add("boost_t", BoostTimer.GetRemainingSeconds(Level.Avatar.LastTick));
                jsonObject.Add("boost_t_end", BoostTimer.EndTime);
            }
            if (Locked)
            {
                jsonObject.Add("locked", true);
            }

            base.Save(jsonObject);
            return(jsonObject);
        }
        public override void Tick()
        {
            base.Tick();

            if (IsConstructing)
            {
                if (Timer.GetRemainingSeconds(Level.Avatar.LastTick) <= 0)
                {
                    FinishConstruction();
                }
            }
            if (IsBoosted)
            {
                if (BoostTimer.GetRemainingSeconds(Level.Avatar.LastTick) <= 0)
                {
                    IsBoosted = false;
                }
            }

            if (IsGearing)
            {
                if (Timer.GetRemainingSeconds(Level.Avatar.LastTick) <= 0)
                {
                    FinishConstruction();
                }
            }
        }