local allowed_factions = { ["stalker"] = true, ["csky"] = true, ["dolg"] = true, ["ecolog"] = true, ["army"] = true } local doors_ar = { -- bar { pos = { 115.53, 1.52, 64.53 }, gvid = 1673, angle = { 0, 1.57, 1.57 } }, { pos = { 207.43, 2.1, 51.4 }, gvid = 1673, angle = { 1.57, -1.57, 0 } }, { pos = { 104.28, 1.65, 68.55 }, gvid = 1673, angle = { 1.57, 0, 0 } }, } local tp_t = { [32429] = { 32518, 32519, 32427, 32428, 32350, 32351, 32594 }, [32428] = { 32520, 32521, 32429, 32430, 32352, 32353, 32265, 32266 }, [33810] = { 33669, 33811, 34089 }, [33811] = { 33667, 33668, 33809, 33810, 33949, 33950, 34087, 34088 }, [51376] = { 50899, 50900, 50670, 50671 }, [50900] = { 51374, 51375, 51376, 51628, 51629, 51630 }, } local kpop_doors_placed = false function actor_on_first_update() if kpop_doors_placed then return end for idx, t in ipairs(doors_ar) do local pos = vector():set(t.pos[1], t.pos[2], t.pos[3]) local lvid = 2^32-1 local gvid = t.gvid local se_obj = alife_create("the_kpop_door", pos, lvid, gvid) if se_obj then se_obj.angle = vector():set(t.angle[1], t.angle[2], t.angle[3]) local data = utils_stpk.get_physic_data(se_obj) data.custom_data = [[ [collide] ignore_static [logic] cfg = scripts\kpop_door_logic.ltx ]] utils_stpk.set_physic_data(data, se_obj) end end kpop_doors_placed = true end xr_effects.kpop_doors_tp = function(a, b, c) local lvid = db.actor:level_vertex_id() for to, from_ar in pairs(tp_t) do for idx, from in ipairs(from_ar) do if from == lvid and allowed_factions[get_actor_true_community()] then local pos = level.vertex_position(to) db.actor:set_actor_position(pos) local snd = sound_object("device\\wood_small_open") if snd then snd:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1, 1) end return end end end end function save_state(m_data) m_data.kpop_doors_placed = kpop_doors_placed end function load_state(m_data) kpop_doors_placed = m_data.kpop_doors_placed or false end function on_game_start() RegisterScriptCallback("actor_on_first_update", actor_on_first_update) RegisterScriptCallback("save_state", save_state) RegisterScriptCallback("load_state", load_state) end