public virtual bool Repair(ServerPlayer a_player)
 {
     m_decayTime = m_def.decayTime;
     if (null != m_sql)
     {
         m_dbBuilding.health = 100;
         m_dbBuilding.flag   = eDbAction.update;
         m_sql.SaveBuilding(m_dbBuilding);
         m_server.SendSpecialEvent(a_player, eSpecialEvent.buildingRepaired);
         return(true);
     }
     return(false);
 }
    public virtual void Init(LidServer a_server, int a_type, int a_ownerPid = 0, int a_health = 100, bool a_isNew = true)
    {
        m_isStatic  = false;
        m_server    = a_server;
        m_type      = a_type;
        m_ownerPid  = a_ownerPid;
        m_def       = Buildings.GetBuildingDef(m_type);
        m_decayTime = m_def.decayTime * (double)((float)a_health / 100f);
        if (!m_def.persistent)
        {
            return;
        }
        Vector3 position    = base.transform.position;
        float   a_x         = position.x * 1.00001f;
        Vector3 position2   = base.transform.position;
        float   a_y         = position2.z * 1.00001f;
        Vector3 eulerAngles = base.transform.rotation.eulerAngles;

        m_dbBuilding = new DatabaseBuilding(a_type, a_x, a_y, eulerAngles.y * 1.00001f, a_ownerPid, a_health);
        m_sql        = m_server.GetSql();
        if (null != m_sql)
        {
            if (a_isNew)
            {
                m_dbBuilding.flag = eDbAction.insert;
                m_sql.SaveBuilding(m_dbBuilding);
            }
            m_nextSqlUpdateTime = Random.Range(100f, 300f);
        }
    }