class "se_artefact"	(cse_alife_item_artefact)

function se_artefact:__init (section) super (section)
end
--------------------
function se_artefact:get_ini ()
	if not self.ini_initialized then
		self.ini             = self:spawn_ini()
		self.ini_initialized = true

		if self.ini:section_exist("spawner") then
			self.spawner = xr_logic.parse_condlist(nil, "spawner", "cond", self.ini:r_string("spawner", "cond"))
		end
	end
end
--------------------
function se_artefact:can_switch_offline ()
self:get_ini ()
        if self.ini and self.spawner then
       return xr_logic.pick_section_from_condlist(db.actor, self, self.spawner) ~= nil
else
       return cse_alife_item_artefact.can_switch_offline (self) 
        end
end
--------------------
function se_artefact:can_switch_online ()
    self:get_ini ()
    -- обработаем ситуацию, когда актер дал дуба или вообще отсутствует
    if db.actor == nil or db.actor:alive () == false then
return self.online  --просто вернем текущее состояние. 
    end
    
        if self.ini and self.spawner then
       return xr_logic.pick_section_from_condlist(db.actor, self, self.spawner) ~= nil
else
       return self.online  --просто вернем текущее состояние. 
        end

    --printf ("CAN_SWITCH_ONLINE called")
    
    -- если есть родитель, то ничего не ломаем.
    if self.parent_id ~= 65535 then
       return true 
    end   
    
    if self.online == true then --обработаем ситуацию, когда артефакт в онлайне
       --если ночь (или актера нет или он дал дуба, то мы в онлайне и остаемся 
       if utils.electro_art_enabled () == true then 
          return true
       end   
       if level.vertex_position (self.m_level_vertex_id):distance_to (db.actor:position ()) < 50 then
          return true  --если актер слишком близко, то оставляем все как есть
       end
       return false -- актер далеко - в оффлайн.
    else --обработаем ситуацию, когда арефакт в оффлайне
       if utils.electro_art_enabled () == false then --если день, то ничего не делаем
          return false
       end 
       
       if level.vertex_position (self.m_level_vertex_id):distance_to (db.actor:position ()) < 50 then
          return false  --если актер слишком близко, то оставляем все как есть
       end
       return true -- актер далеко - в онлайн.
    end   
end
--------------------
