Various Changes; Updated and Added Mods
This commit is contained in:
parent
8abddf23c7
commit
46265b6fcc
|
@ -19,7 +19,7 @@ nexusLastModified=2024-03-14T09:36:54Z
|
|||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
|
|
|
@ -2,8 +2,25 @@
|
|||
modid=0
|
||||
version=
|
||||
newestVersion=
|
||||
category=0
|
||||
category="-1,"
|
||||
installationFile=
|
||||
ignoredVersion=
|
||||
repository=Nexus
|
||||
gameName=stalkeranomaly
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
nexusFileStatus=1
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-26T01:58:36Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
size=0
|
||||
|
|
|
@ -19,7 +19,7 @@ nexusLastModified=2024-03-14T09:13:50Z
|
|||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
slowmo_flag = false
|
||||
drug_flag = false
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("on_key_press", on_key_press)
|
||||
RegisterScriptCallback("actor_on_update", power_drain_check)
|
||||
RegisterScriptCallback("actor_on_before_death", actor_on_before_death)
|
||||
RegisterScriptCallback("on_game_load", on_game_load)
|
||||
RegisterScriptCallback("actor_on_item_use", drug_module)
|
||||
end
|
||||
|
||||
function slowmo_on()
|
||||
local slowmo_snd_on = sound_object("slow-mo\\slowmo_on")
|
||||
slowmo_snd_on:play_at_pos(actor, vector():set(0, 0, 0), 0, sound_object.s2d)
|
||||
level.add_pp_effector("blink.ppe", 2004, false)
|
||||
level.set_pp_effector_factor(2004, 0.2) -- here you can change the brightness of the effect (second value, 0-1)
|
||||
get_console():execute("time_factor 0.5")
|
||||
slowmo_flag = true
|
||||
end
|
||||
|
||||
function slowmo_off()
|
||||
local slowmo_snd_off = sound_object("slow-mo\\slowmo_off")
|
||||
slowmo_snd_off:play_at_pos(actor, vector():set(0, 0, 0), 0, sound_object.s2d)
|
||||
level.add_pp_effector("blink.ppe", 2004, false)
|
||||
level.set_pp_effector_factor(2004, 0.2) -- here you can change the brightness of the effect (second value, 0-1)
|
||||
get_console():execute("time_factor 1")
|
||||
slowmo_flag = false
|
||||
end
|
||||
|
||||
function actor_on_before_death()
|
||||
slowmo_off()
|
||||
end
|
||||
|
||||
function on_game_load()
|
||||
get_console():execute("time_factor 1")
|
||||
end
|
||||
|
||||
function on_key_press(key)
|
||||
if not db.actor:alive() then
|
||||
return
|
||||
end
|
||||
|
||||
-- here you can change slow-mo key
|
||||
if (key == DIK_keys["DIK_V"]) then
|
||||
if not slowmo_flag then
|
||||
slowmo_on()
|
||||
elseif slowmo_flag then
|
||||
slowmo_off()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function power_drain_check()
|
||||
if not drug_flag then
|
||||
if (db.actor.power > 0.1 and slowmo_flag) then
|
||||
db.actor:change_power(-0.004) -- here you can adjust stamina drain
|
||||
elseif (db.actor.power < 0.1 and slowmo_flag) then
|
||||
slowmo_off()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function drug_module(item)
|
||||
local section = item:section()
|
||||
local drug_tbl = {
|
||||
["adrenalin"] = true,
|
||||
["cocaine"] = true
|
||||
}
|
||||
if drug_tbl[section] then
|
||||
CreateTimeEvent(0, "drug_on", 5, drug_on)
|
||||
end
|
||||
end
|
||||
|
||||
function drug_on()
|
||||
xr_effects.play_snd(db.actor, nil, {[1] = "slow-mo\\adrenalin"})
|
||||
CreateTimeEvent(0, "adrenalin_off", 20, drug_off)
|
||||
drug_flag = true
|
||||
slowmo_on()
|
||||
return true
|
||||
end
|
||||
|
||||
function drug_off()
|
||||
slowmo_off()
|
||||
drug_flag = false
|
||||
return true
|
||||
end
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,21 +1,21 @@
|
|||
[General]
|
||||
modid=0
|
||||
version=d2024.2.29.0
|
||||
newestVersion=
|
||||
category="7,"
|
||||
installationFile=A1_Day_Stalkers.zip
|
||||
gameName=stalkeranomaly
|
||||
modid=0
|
||||
version=d2024.3.23.0
|
||||
newestVersion=
|
||||
category="-1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Bullet_Time_v1.0.7z
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-02-29T05:48:11Z
|
||||
nexusLastModified=2024-03-24T03:49:24Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
|
@ -2,8 +2,25 @@
|
|||
modid=0
|
||||
version=
|
||||
newestVersion=
|
||||
category=0
|
||||
category="-1,"
|
||||
installationFile=
|
||||
ignoredVersion=
|
||||
repository=Nexus
|
||||
gameName=stalkeranomaly
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
nexusFileStatus=1
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-26T01:58:36Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
size=0
|
||||
|
|
|
@ -19,7 +19,7 @@ nexusLastModified=2024-03-14T09:13:50Z
|
|||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
;//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
; Day Stalkers (Night Mutants)
|
||||
; ALL CREDIT GOES TO bvcx/xcvb
|
||||
;------------------------------------------------
|
||||
; name your squads however you want
|
||||
; must have lines:
|
||||
; "night_mutant = true"
|
||||
; "faction = *appropiate faction type*"
|
||||
|
||||
;------------------------------------------------
|
||||
;----< Free Stalkers >-----|
|
||||
[day_free_stalkers]:online_offline_group
|
||||
faction = stalker
|
||||
npc_random = sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_2, sim_default_stalker_3, sim_default_stalker_4, sim_default_stalker_mechanic, sim_default_stalker_medic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Bandits >-----|
|
||||
[day_bandits]:online_offline_group
|
||||
faction = bandit
|
||||
npc_random = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_3, sim_default_bandit_4, sim_default_bandit_mechanic, sim_default_bandit_medic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Renegades >-----|
|
||||
[day_renegades]:online_offline_group
|
||||
faction = renegade
|
||||
npc_random = sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_2, sim_default_renegade_3, sim_default_renegade_4, sim_default_renegade_mechanic, sim_default_renegade_medic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Dutyers >-----|
|
||||
[day_dutyers]:online_offline_group
|
||||
faction = dolg
|
||||
npc_random = sim_default_duty_0, sim_default_duty_1, sim_default_duty_2, sim_default_duty_3, sim_default_duty_4, sim_default_dolg_medic, sim_default_dolg_mechanic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Freedomers >-----|
|
||||
[day_freedomers]:online_offline_group
|
||||
faction = freedom
|
||||
npc_random = sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_3, sim_default_freedom_4, sim_default_freedom_medic, sim_default_freedom_mechanic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Mercenaries >-----|
|
||||
[day_mercenaries]:online_offline_group
|
||||
faction = killer
|
||||
npc_random = sim_default_killer_0, sim_default_killer_1, sim_default_killer_2, sim_default_killer_3, sim_default_killer_4, sim_default_killer_medic, sim_default_killer_mechanic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Ecologists >-----|
|
||||
[day_ecologists]:online_offline_group
|
||||
faction = ecolog
|
||||
npc_random = sim_default_ecolog_0, sim_default_ecolog_1, sim_default_ecolog_2, sim_default_ecolog_3, sim_default_ecolog_4, sim_default_ecolog_medic, sim_default_ecolog_mechanic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Military >-----|
|
||||
[day_militants]:online_offline_group
|
||||
faction = army
|
||||
npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_2, sim_default_military_3, sim_default_military_4, sim_default_military_5
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
;----< Clear Sky >-----|
|
||||
[day_clear_sky]:online_offline_group
|
||||
faction = csky
|
||||
npc_random = sim_default_csky_0, sim_default_csky_1, sim_default_csky_2, sim_default_csky_3, sim_default_csky_4, sim_default_csky_medic, sim_default_csky_mechanic
|
||||
npc_in_squad = 1, 3
|
||||
common = true
|
||||
night_mutant = true
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,202 +0,0 @@
|
|||
-- picks a random squad from "squad_descr_day_stalkers.ltx" every "spawn_time_interval" game minutes
|
||||
-- spawns on smart terrains available for stalkers and if current population of smart is 0 or if no default day stalkers are on this smart online
|
||||
-- ALL CREDIT GOES TO bvcx/xcvb
|
||||
|
||||
local spawn_time_interval = 5 -- game minutes
|
||||
local safe_radius = 60 -- no spawn in this player's radius
|
||||
|
||||
local night_start = 6 -- time at which stalkers start to spawn
|
||||
local night_end = 19 -- deletes all stalkers at this time !!!Skipping this time by sleeping will not delete stalkers!!!
|
||||
|
||||
local squads_to_spawn = {}
|
||||
local spawned_stalkers = {}
|
||||
local available_smart_terrains = {}
|
||||
local ctime_to_t = utils_data.CTime_to_table
|
||||
local t_to_ctime = utils_data.CTime_from_table
|
||||
local xspawn_time
|
||||
local debugx = false
|
||||
|
||||
---------------------------------------------------------------------------------------------------
|
||||
local tmr
|
||||
function try_to_spawn()
|
||||
local tg = time_global()
|
||||
if (tmr and tg < tmr) then return end
|
||||
tmr = tg + 30000
|
||||
|
||||
if not is_night() then
|
||||
if is_not_empty(spawned_stalkers) then
|
||||
delete_mutants()
|
||||
empty_table(spawned_stalkers)
|
||||
xspawn_time = nil
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local cur_time = game.get_game_time()
|
||||
if not xspawn_time then
|
||||
xspawn_time = ctime_to_t(cur_time)
|
||||
end
|
||||
|
||||
if cur_time:diffSec(t_to_ctime(xspawn_time)) > (spawn_time_interval * 60) then
|
||||
xspawn_time = ctime_to_t(cur_time)
|
||||
spawn_mutants()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function spawn_mutants()
|
||||
for level_name, t in pairs(available_smart_terrains) do
|
||||
local random_smart_id = t[math.random(1, #t)]
|
||||
spawned_stalkers[level_name] = spawned_stalkers[level_name] or {}
|
||||
|
||||
local simboard_t = SIMBOARD.smarts[random_smart_id]
|
||||
local smart = simboard_t and simboard_t.smrt
|
||||
|
||||
if smart then
|
||||
local smart_squads = simboard_t.squads
|
||||
local smart_cur_pop = simboard_t.population
|
||||
local smart_max_pop = smart.max_population
|
||||
|
||||
-- smart is empty
|
||||
local allow_pop_spawn = smart_cur_pop < smart_max_pop
|
||||
|
||||
pr("----------------------------------------------------")
|
||||
local smart_name = smart:name() or smart:section_name() or "<empty>"
|
||||
pr("1test smart_id: %s || smart_name: %s || max pop: %s || current pop: %s", random_smart_id, smart_name, smart_max_pop, smart_cur_pop)
|
||||
|
||||
-- if at least one night squad is already on this smart
|
||||
local night_squad_on_smart = false
|
||||
for squad_id, _ in pairs(smart_squads) do
|
||||
local sq = alife_object(squad_id)
|
||||
if sq and (sq.player_id == "monster_predatory_night" or sq.player_id == "monster_zombied_night") then
|
||||
pr("squad_id is NIGHT squad: %s", squad_id)
|
||||
night_squad_on_smart = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- spawn squad
|
||||
if allow_pop_spawn and (not night_squad_on_smart) and se_obj_outside_spawn_radius(smart) then
|
||||
local squad_sec = is_not_empty(squads_to_spawn) and squads_to_spawn[math.random(1, #squads_to_spawn)]
|
||||
local squad = squad_sec and SIMBOARD:create_squad(smart, squad_sec)
|
||||
-- save squad id
|
||||
if squad then
|
||||
table.insert(spawned_stalkers[level_name], squad.id)
|
||||
-- test
|
||||
pr("- spawned level: %s || smart: %s || squad_id: %s || sec: %s", level_name, smart_name, squad.id, squad_sec)
|
||||
pr("2test smart_id: %s || current pop: %s", random_smart_id, SIMBOARD.smarts[random_smart_id] and SIMBOARD.smarts[random_smart_id].population)
|
||||
--------------
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function delete_mutants()
|
||||
for level_name, t in pairs(spawned_stalkers) do
|
||||
for idx, squad_id in ipairs(t) do
|
||||
local squad = alife_object(squad_id)
|
||||
if squad then
|
||||
pr("squad id: %s deleted", squad_id)
|
||||
squad:remove_squad()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function server_entity_on_unregister(obj)
|
||||
for level_name, t in pairs(spawned_stalkers) do
|
||||
for idx, squad_id in ipairs(t) do
|
||||
if obj.id == squad_id then
|
||||
pr("removing squad_id: %s from table", squad_id)
|
||||
table.remove(spawned_stalkers[level_name], idx)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------------------------------
|
||||
function save_mutant_smarts()
|
||||
-- save smarts that has props of "sim_avail" = true and "stalker" > 0
|
||||
for i = 1, 65534 do
|
||||
local smart = alife_object(i)
|
||||
if smart and (smart:clsid() == clsid.smart_terrain) and (simulation_objects.available_by_id[smart.id] and simulation_objects.available_by_id[smart.id] == true) and (smart.props["stalker"] and smart.props["stalker"] > 0) then
|
||||
local smart_level_name = get_se_obj_level_name(smart)
|
||||
available_smart_terrains[smart_level_name] = available_smart_terrains[smart_level_name] or {}
|
||||
table.insert(available_smart_terrains[smart_level_name], smart.id)
|
||||
end
|
||||
end
|
||||
|
||||
-- collect and add section names
|
||||
ini_sys:section_for_each(function(sec)
|
||||
local night_mutant = ini_sys:r_bool_ex(sec, "night_mutant")
|
||||
if night_mutant then
|
||||
table.insert(squads_to_spawn, sec)
|
||||
end
|
||||
end)
|
||||
|
||||
-- test
|
||||
for i = 1, #squads_to_spawn do
|
||||
pr("[%s] = %s", i, squads_to_spawn[i])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function se_obj_outside_spawn_radius(se_obj)
|
||||
if not se_obj then
|
||||
return false
|
||||
end
|
||||
|
||||
local on_same_level = simulation_objects.is_on_the_same_level(alife():actor(), se_obj)
|
||||
if not on_same_level then
|
||||
return true
|
||||
end
|
||||
|
||||
local ac_pos = db.actor:position()
|
||||
local se_obj_pos = se_obj.position
|
||||
local outside_radius = ac_pos:distance_to_xz(se_obj_pos) > safe_radius
|
||||
|
||||
return outside_radius
|
||||
end
|
||||
|
||||
function is_night()
|
||||
local cur_hour = level.get_time_hours() + level.get_time_minutes() / 60
|
||||
|
||||
return (cur_hour > night_start) or (cur_hour < night_end)
|
||||
end
|
||||
|
||||
function get_se_obj_level_name(se_obj)
|
||||
local target_level_id = game_graph():vertex(se_obj.m_game_vertex_id):level_id()
|
||||
local target_level_name = alife():level_name(target_level_id)
|
||||
|
||||
return target_level_name
|
||||
end
|
||||
|
||||
function pr(...)
|
||||
if not debugx then return end
|
||||
printf(...)
|
||||
end
|
||||
|
||||
function save_state(m_data)
|
||||
m_data.spawned_stalkers = spawned_stalkers
|
||||
m_data.xspawn_time = xspawn_time
|
||||
end
|
||||
|
||||
function load_state(m_data)
|
||||
xspawn_time = xspawn_time or nil
|
||||
spawned_stalkers = m_data.spawned_stalkers or {}
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------------------------------
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("actor_on_update", try_to_spawn)
|
||||
RegisterScriptCallback("server_entity_on_unregister", server_entity_on_unregister)
|
||||
RegisterScriptCallback("actor_on_first_update", save_mutant_smarts)
|
||||
RegisterScriptCallback("save_state", save_state)
|
||||
RegisterScriptCallback("load_state", load_state)
|
||||
end
|
|
@ -2,8 +2,25 @@
|
|||
modid=0
|
||||
version=
|
||||
newestVersion=
|
||||
category=0
|
||||
category="-1,"
|
||||
installationFile=
|
||||
ignoredVersion=
|
||||
repository=Nexus
|
||||
gameName=stalkeranomaly
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
nexusFileStatus=1
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-26T01:58:36Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
size=0
|
||||
|
|
|
@ -19,7 +19,7 @@ nexusLastModified=2024-03-07T09:27:13Z
|
|||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
|
|
|
@ -19,7 +19,7 @@ nexusLastModified=2024-03-14T09:36:45Z
|
|||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
color=@Variant(\0\0\0\x43\x1\xff\xff\xde\xde\xde\xde\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,31 @@
|
|||
[General]
|
||||
gameName=stalkeranomaly
|
||||
modid=0
|
||||
version=d2024.3.26.0
|
||||
newestVersion=
|
||||
category="-1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=EFT_Footsteps_and_Tinnitsus.7z
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=Opaque Bushes Option Only
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-26T20:51:59Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
size=1
|
||||
1\fileid=0
|
||||
|
||||
[Plugins]
|
||||
BAIN%20Installer\option0=02. (Optional) Opaque Bushes
|
|
@ -0,0 +1,37 @@
|
|||
Extra Level Transitions - Bonus Transitions + Transitions for new maps Promzone, Grimwood & Yushniy
|
||||
|
||||
This is a set of new coordinates for extra transition points using Demonized's transition script (https://www.moddb.com/mods/stalker-anomaly/addons/extra-cordon-darkscape-transition).
|
||||
-> needs be loaded with lower PRIORITY in MO2 than the new extra transitions.
|
||||
|
||||
It adds most of the available routes from the "New routes" mod (https://www.moddb.com/mods/stalker-anomaly/addons/anomaly-new-routes) but using Demonized's transition script.
|
||||
I left out the Radar <-> Jupiter UG route.
|
||||
-> whereas it wont show you conflicts, this mod and the new extra routes are highly incompatible
|
||||
|
||||
Also included is the "Extra level transitions - Rostok to Garbage and Yantar facing fix" mod (https://www.moddb.com/mods/stalker-anomaly/addons/extra-level-transitions-rostok-to-garbage-and-yantar-facing-fix).
|
||||
-> disable in Mo2.
|
||||
|
||||
All extra routes will be available for free and can be used on game start.
|
||||
|
||||
|
||||
MCM is strongly suggested to easily access the remove/update function for the new transitions.
|
||||
|
||||
|
||||
Install: (Mod Organizer2 is suggested)
|
||||
|
||||
- drop included /gamedata folder into Anomaly root folder
|
||||
|
||||
Uninstall:
|
||||
|
||||
- to disable the new transition 1st use the attached MCM menu provided by Demonized to delete the transition
|
||||
- remove files with the name "items_extra_level_transitions_*.ltx" from \gamedata\configs\items\items
|
||||
- remove lc_extra_transitions.script & txr_routes.script from \gamedata\scripts
|
||||
|
||||
*Configuration:
|
||||
|
||||
Each of the new transitions can be disabled by simply commenting it out in the corresponding *.ltx file. You need to do this from outside of the game tho
|
||||
E.g. you don't like the upper transition between Red Forest <-> Dead City then you'd find the "items_extra_level_transitions_deadcity.ltx" and disable (comment out) everything related to !one! transition point. You disable lines by putting a " ; " infront of the line.
|
||||
The transition between Dead City to Red Forest via the sewer pipe is disabled, in case you want to make it go to Red Forest again (like in New Routes mod) you can do this by re-enabling the transition and disabling the transition from Dead city to yantar in the config file for Yantar. The transition zones should be apptly named and easily identifyable.
|
||||
|
||||
|
||||
|
||||
Credits: Demonized, AlphaLion, Cpt. Gunner, GhenTuong, Jurkonov, Qball, Solais, xcvb, TheSmersh
|
|
@ -0,0 +1,80 @@
|
|||
; Bar -> Garbage (one way)
|
||||
[lc_rostok_west_garbage_north]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_rostok_west_garbage_north
|
||||
pos = 56.2870, -0.0015, 122.7513
|
||||
gvid = 1752
|
||||
spot = level_changer_down
|
||||
hint = esc_space_restrictor_to_garbage_descr
|
||||
to_pos = -194.6798, 2.4084, 205.5613
|
||||
dir = 0,30,0 ;; actor facing
|
||||
to_gvid = 869
|
||||
|
||||
|
||||
; Bar <-> Garbage new immmersified shortcut transition
|
||||
[lc_rostok_south_garbage_north]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ;; mandatory field
|
||||
story_id = lc_rostok_south_garbage_north ;; story_id, without it the item wont be added
|
||||
pos = 191.1017, 6.7427, -151.0793 ;; position of item
|
||||
gvid = 1786 ;; Gvid of item
|
||||
spot = level_changer_down ;; texture to use for spot on the map
|
||||
hint = esc_space_restrictor_to_garbage_descr ;; string id for hint description, defined in xml files
|
||||
to_pos = -16.1229,0.4275,260.8406 ;; position where to teleport actor
|
||||
dir = 0,80,0 ;; actor facing, **alternate 'dir = 0,230,0'
|
||||
to_gvid = 865 ;; Gvid where to teleport actor
|
||||
|
||||
[lc_garbage_north_rostok_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_garbage_north_rostok_south
|
||||
pos = -34.3015,3.9882,274.2156
|
||||
gvid = 783
|
||||
spot = level_changer_up
|
||||
hint = space_restrictor_to_bar_desc
|
||||
to_pos = 200.1739, 6.0103, -150.7833
|
||||
dir = 0,95,0
|
||||
to_gvid = 1786
|
||||
|
||||
; ; Truck cemetery <-> Bar removed new levels dont agree
|
||||
; [lc_bar_truck_south]:lc_extra_level_transition_base
|
||||
; lc_extra_level_transition = true
|
||||
; story_id = lc_bar_truck_south
|
||||
; pos = 379.8, 13.4, -144.9
|
||||
; gvid = 1790
|
||||
; spot = level_changer_right
|
||||
; hint = space_restrictor_to_tc_desc
|
||||
; to_pos = -316.351, 15.7484, -165.6453 ;-319.5008, 15.5684, -172.5969
|
||||
; dir = 0.789, -0.587, 0.180
|
||||
; to_gvid = 5262 ;5291
|
||||
|
||||
; [lc_truck_south_bar]:lc_extra_level_transition_base
|
||||
; lc_extra_level_transition = true
|
||||
; story_id = lc_truck_south_bar
|
||||
; pos = -324.4734, 15.8919, -173.9903
|
||||
; gvid = 5291
|
||||
; spot = level_changer_left
|
||||
; hint = space_restrictor_to_bar_desc
|
||||
; to_pos = 373.5, 12.3, -150.4
|
||||
; to_gvid = 1790
|
||||
; trigger_radius = 1.5
|
||||
|
||||
|
||||
; Truck cemetery <-> Bar original suggestion by TheSmersh
|
||||
;[lc_bar_truck_south]:lc_extra_level_transition_base
|
||||
;lc_extra_level_transition = true
|
||||
;story_id = lc_bar_truck_south
|
||||
;pos = 379.8, 13.4, -144.9
|
||||
;gvid = 1790
|
||||
;spot = level_changer_right
|
||||
;hint = space_restrictor_to_tc_desc
|
||||
;to_pos = -318.7, 20.2, -393.9
|
||||
;to_gvid = 5286
|
||||
|
||||
;[lc_truck_south_bar]:lc_extra_level_transition_base
|
||||
;lc_extra_level_transition = true
|
||||
;story_id = lc_truck_south_bar
|
||||
;pos = -325.5, 21.2, -398.1
|
||||
;gvid = 5286
|
||||
;spot = level_changer_left
|
||||
;hint = space_restrictor_to_bar_desc
|
||||
;to_pos = 373.5, 12.3, -150.4
|
||||
;to_gvid = 1790
|
|
@ -0,0 +1,22 @@
|
|||
; CNPP South <-> CNPP North
|
||||
[lc_cnpp_east_cnpp2_east]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ;; mandatory field
|
||||
story_id = lc_cnpp_east_cnpp2_east ;; story_id, without it the item wont be added
|
||||
pos = 1062.1354, -0.0985, -0.0381 ;; position of item
|
||||
gvid = 3223 ;; Gvid of item
|
||||
spot = level_changer_up ;; texture to use for spot on the map
|
||||
hint = gen_space_restrictor_to_aes2_descr ;; string id for hint description, defined in xml files
|
||||
to_pos = 999.8849, -0.0999, 109.8474 ;; position where to teleport actor
|
||||
;dir = 0,80,0 ;; actor facing, **alternate 'dir = 0,230,0'
|
||||
to_gvid = 3445 ;; Gvid where to teleport actor
|
||||
|
||||
[lc_cnpp2_east_cnpp_east]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_cnpp2_east_cnpp1_east
|
||||
pos = 1000.2069, -0.0999, 95.0695
|
||||
gvid = 3445
|
||||
spot = level_changer_down
|
||||
hint = gen_space_restrictor_to_aes2_descr
|
||||
to_pos = 1056.7258, -0.0993, -15.0864
|
||||
dir = 0,90,0
|
||||
to_gvid = 3087
|
|
@ -0,0 +1,62 @@
|
|||
; Dead City <-> Grimwood
|
||||
[lc_dead_city_road_grim_west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_dead_city_road_grim_west
|
||||
pos = 175.71, 2.99, 2.29
|
||||
gvid = 2327
|
||||
spot = level_changer_right
|
||||
text = st_level_changer_descr
|
||||
hint = space_restrictor_to_grim_desc
|
||||
to_pos = -292.03, 7.46, 46.53 ;-294.8082, 7.4105, 46.3330 ;-284.1106, 7.3163, 42.7623
|
||||
dir = 0,60,0
|
||||
to_gvid = 5560
|
||||
|
||||
[lc_grim_west_dead_city_road]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_grim_west_dead_city_road
|
||||
pos = -298.7502, 7.2873, 47.1749 ;-288.6048, 7.2686, 46.0168
|
||||
gvid = 5560
|
||||
spot = level_changer_left
|
||||
text = st_level_changer_descr
|
||||
hint = space_restrictor_to_deadcity_desc
|
||||
to_pos = 165.4732, 2.9781, 4.4394
|
||||
dir = 0,90,0
|
||||
to_gvid = 2327
|
||||
;trigger_radius = 1.5
|
||||
|
||||
|
||||
; Dead City <-> Red Forest
|
||||
[lc_dead_city_west_red_forest west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_dead_city_west_red_forest west
|
||||
pos = 174.9990, -2.6538, -50.3010 ;155.4070, -2.5587, -40.9181
|
||||
gvid = 2390
|
||||
spot = level_changer_up
|
||||
hint = mil_space_restrictor_to_red_1_descr
|
||||
to_pos = -132.8405, -6.1449, -289.3477 ;-156.6639, 0.6579, -312.9990
|
||||
dir = 0,30,0
|
||||
to_gvid = 2792 ;2847
|
||||
;trigger_radius = 1.3
|
||||
|
||||
[lc_red_forest sewer_dead_city_west]:lc_extra_level_transition_base ; on sewer pipe
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_red_forest sewer_dead_city_west
|
||||
pos = -147.0433, -4.1619, -288.1351
|
||||
gvid = 2837
|
||||
spot = level_changer_down
|
||||
hint = space_restrictor_to_deadcity_desc
|
||||
to_pos = 168.1035, -2.6257, -49.6608 ; 154.8109, -2.6685, -28.3135
|
||||
dir = 0,90,0
|
||||
to_gvid = 2390 ; 2204
|
||||
; trigger_radius = 2.0
|
||||
|
||||
; [lc_red_forest west_dead_city_west]:lc_extra_level_transition_base ; door on bridge level
|
||||
; lc_extra_level_transition = true
|
||||
; story_id = lc_red_forest west_dead_city_west
|
||||
; pos = -165.9319, 0.9899, -313.1411
|
||||
; gvid = 2847
|
||||
; spot = level_changer_down
|
||||
; hint = space_restrictor_to_deadcity_desc
|
||||
; to_pos = 154.8109, -2.6685, -28.3135
|
||||
; ;dir = 0,60,0
|
||||
; to_gvid = 2404
|
|
@ -0,0 +1,23 @@
|
|||
; Cordon <-> Darkscape Traintunnel
|
||||
[lc_cordon_east_darkscape_train_tunnel]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_cordon_east_darkscape_train_tunnel
|
||||
pos = 394.1906, 20.1711, 290.3670
|
||||
gvid = 638
|
||||
spot = level_changer_right
|
||||
hint = esc_space_restrictor_to_darkscape_descr
|
||||
to_pos = 349.5786, 20.1163, 285.8858
|
||||
dir = 0,30,0
|
||||
to_gvid = 1398
|
||||
trigger_radius = 1.2
|
||||
|
||||
[lc_darkscape_train_tunnel_cordon_east]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_darkscape_train_tunnel_cordon_east
|
||||
pos = 336.9702, 20.1165, 285.9505
|
||||
gvid = 1407
|
||||
spot = level_changer_left
|
||||
hint = ds_space_restrictor_to_escape_descr
|
||||
to_pos = 382.9006, 20.1699, 283.7180
|
||||
dir = 0,90,0
|
||||
to_gvid = 638
|
|
@ -0,0 +1,50 @@
|
|||
; Military Warehouse <-> Promzone
|
||||
[lc_warehouse_south_promzone_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_warehouse_south_promzone_south
|
||||
pos = -217.1257, 0.7621, -64.3403
|
||||
gvid = 2175
|
||||
spot = level_changer_right
|
||||
hint = st_space_restrictor_to_prom_descr
|
||||
to_pos = -170.8769, -23.7598, -167.3539 ;-171.0050, -21.9115, -172.8518
|
||||
dir = 0.222, -0.238, 0.946 ;0.474, -0.031, 0.880
|
||||
to_gvid = 5429
|
||||
trigger_radius = 1.5
|
||||
|
||||
[lc_promzone_south_warehouse_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_promzone_south_warehouse_south
|
||||
pos = -171.8078, -21.2987, -174.2657
|
||||
gvid = 5429
|
||||
spot = level_changer_left
|
||||
hint = space_restrictor_to_military_desc
|
||||
to_pos = -217.1697, -0.0484, -55.7299 ;-217.5727, 0.4712, -59.8789
|
||||
dir = -0.048, -0.115, 0.992 ;0.142, -0.148, 0.979
|
||||
to_gvid = 2175
|
||||
; trigger_radius = 1.5
|
||||
|
||||
|
||||
; Freedom Tunnel <-> Promzone
|
||||
[lc_warehouse_east_promzone_west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_warehouse_east_promzone_west
|
||||
pos = 105.8052, -13.2056, 50.7543
|
||||
gvid = 2041
|
||||
spot = level_changer_right
|
||||
hint = st_space_restrictor_to_prom_descr
|
||||
to_pos = -432.7729, -28.7318, 69.9320 ;-445.0133, -28.7352, 69.9898
|
||||
dir = 0,30,0
|
||||
to_gvid = 5415
|
||||
;trigger_radius = 3.5
|
||||
|
||||
[lc_promzone_west_warehouse_east]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_promzone_west_warehouse_east
|
||||
pos = -449.4893, -28.8232, 73.1100
|
||||
gvid = 5415
|
||||
spot = level_changer_left
|
||||
hint = space_restrictor_to_military_desc
|
||||
to_pos = 98.8238, -13.2057, 50.8360 ;101.3890, -13.2054, 50.7779
|
||||
dir = 0,90,0
|
||||
to_gvid = 2041
|
||||
;trigger_radius = 0.9
|
|
@ -0,0 +1,60 @@
|
|||
; Wild Territory -> Grimwood
|
||||
[lc_rostok_west_grim_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_rostok_west_grim_south
|
||||
pos = -289.78, 0.09, 192.05
|
||||
gvid = 1958
|
||||
spot = level_changer_up
|
||||
hint = space_restrictor_to_grim_desc
|
||||
to_pos = -49.7924, -5.1809, -194.5892 ;-49.6707, -4.5634, -196.0035 ;-47.9382, -1.1408, -200.4666
|
||||
to_gvid = 5604
|
||||
|
||||
[lc_grim_south_rostok_west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_grim_south_rostok_west
|
||||
pos = -49.7952, -1.4925, -200.5192
|
||||
gvid = 5604
|
||||
spot = level_changer_down
|
||||
hint = space_restrictor_to_rostok_desc
|
||||
to_pos = -283.7832, 0.0969, 192.5535
|
||||
dir = 0,30,0
|
||||
to_gvid = 1849
|
||||
|
||||
|
||||
; Agroprom -> Wild Territory (one way)
|
||||
[lc_agro_north_rostok_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_agro_north_rostok_south
|
||||
pos = 69.3176, 11.3754, 210.5387
|
||||
gvid = 883
|
||||
spot = level_changer_up
|
||||
hint = space_restrictor_to_rostok_desc
|
||||
to_pos = -27.1096, -3.4129, -179.7765
|
||||
;dir = 0,95,0
|
||||
to_gvid = 1953
|
||||
|
||||
|
||||
; Yantar <-> Wild Territory
|
||||
[lc_yantar_north_rostok_west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_yantar_north_rostok_west
|
||||
pos = 163.10, 1.71, 82.70
|
||||
gvid = 2213
|
||||
spot = level_changer_up_right
|
||||
hint = space_restrictor_to_rostok_desc
|
||||
to_pos = -289.9959, 0.0235, 107.0288
|
||||
dir = 0,30,0
|
||||
to_gvid = 1958
|
||||
trigger_radius = 0.9
|
||||
|
||||
[lc_rostok_west_yantar_north]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_rostok_west_yantar_north
|
||||
pos = -292.0420, 0.1472, 106.6506 ;-289.78, 0.09, 192.05
|
||||
gvid = 1958 ;1849
|
||||
spot = level_changer_down_left
|
||||
hint = space_restrictor_to_yantar_desc
|
||||
to_pos = 165.2181, 1.2656, 70.9240
|
||||
dir = 0,90,0
|
||||
to_gvid = 2213
|
||||
trigger_radius = 0.9
|
|
@ -0,0 +1,48 @@
|
|||
; Zaton <-> Jupiter
|
||||
[lc_jupiter_north_zaton_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ;; mandatory field
|
||||
story_id = lc_jupiter_north_zaton_south ;; story_id, without it the item wont be added
|
||||
pos = -340.5847, 3.5741, 415.0195 ;; position of item
|
||||
gvid = 4581 ;; Gvid of item
|
||||
spot = level_changer_up ;; texture to use for spot on the map
|
||||
hint = space_restrictor_to_zaton_desc ;; string id for hint description, defined in xml files
|
||||
to_pos = -275.5266, 38.8298, -476.3330 ;; position where to teleport actor
|
||||
dir = 0,30,0 ;; actor facing, **alternate 'dir = 0,230,0'
|
||||
to_gvid = 4167 ;; Gvid where to teleport actor
|
||||
trigger_radius = 1.5
|
||||
|
||||
[lc_zaton_south_jupiter_north]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_zaton_south_jupiter_north
|
||||
pos = -288.8179, 40.9423, -475.7296
|
||||
gvid = 4167
|
||||
spot = level_changer_down
|
||||
hint = space_restrictor_to_jupiter_desc
|
||||
to_pos = -352.3163, 27.6663, 442.2489
|
||||
dir = 0,60,0 ;; actor facing, **alternate 'dir = 0,230,0'
|
||||
to_gvid = 4822
|
||||
trigger_radius = 2.0
|
||||
|
||||
; Zaton <-> Outskirts questionable very long teleport
|
||||
[lc_zaton_east_outskirts_north]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_zaton_east_outskirts_north
|
||||
pos = 476.7127, 35.0672, 51.0224
|
||||
gvid = 4433
|
||||
spot = level_changer_right
|
||||
hint = space_restrictor_to_cop_pripyat_desc
|
||||
to_pos = -8.0005, -0.3025, 386.8188
|
||||
dir = 0,60,0
|
||||
to_gvid = 5007
|
||||
|
||||
[lc_outskirts_north_zaton_east]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true
|
||||
story_id = lc_outskirts_north_zaton_east
|
||||
pos = -22.1619, -0.5085, 383.1399
|
||||
gvid = 4907
|
||||
spot = level_changer_left
|
||||
hint = space_restrictor_to_zaton_desc
|
||||
to_pos = 462.8077, 35.3672, 47.6661
|
||||
dir = 0,90,0
|
||||
to_gvid = 4433
|
||||
trigger_radius = 1.5
|
|
@ -0,0 +1,245 @@
|
|||
-- UTILS
|
||||
-- Load the defaults
|
||||
local function load_defaults()
|
||||
local t = {}
|
||||
local op = lc_extra_transitions_mcm.op
|
||||
for i, v in ipairs(op.gr) do
|
||||
if v.def ~= nil then
|
||||
t[v.id] = v.def
|
||||
end
|
||||
end
|
||||
return t
|
||||
end
|
||||
local settings = load_defaults()
|
||||
|
||||
local function on_option_change()
|
||||
settings = load_defaults()
|
||||
if ui_mcm then
|
||||
for k, v in pairs(settings) do
|
||||
settings[k] = ui_mcm.get("extra_level_transitions/" .. k)
|
||||
end
|
||||
end
|
||||
end
|
||||
local function str_coords_to_vector(str)
|
||||
local t = str_explode(str, ",")
|
||||
if #t < 3 then
|
||||
error("str_coords_to_vector, missing %s coords", 3 - #t)
|
||||
end
|
||||
return vector():set(tonumber(t[1]), tonumber(t[2]), tonumber(t[3]))
|
||||
end
|
||||
|
||||
-- Transitions
|
||||
lc_pool = (function()
|
||||
local res = {}
|
||||
ini_sys:section_for_each(function(section)
|
||||
if SYS_GetParam(1, section, "lc_extra_level_transition", false) and SYS_GetParam(0, section, "story_id") then
|
||||
local n = ini_sys:section_exist(section) and ini_sys:line_count(section) or 0
|
||||
if (n > 0) then
|
||||
res[section] = {}
|
||||
for i = 0,n-1 do
|
||||
local _,id,val = ini_sys:r_line(section,i,"","")
|
||||
res[section][id] = val
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
return res
|
||||
end)()
|
||||
|
||||
local saved_spots = {}
|
||||
local change_triggered = false
|
||||
|
||||
local function find_save_spot(vid, gid)
|
||||
for k, v in pairs(saved_spots) do
|
||||
if v.vid == vid and
|
||||
v.gid == gid
|
||||
then
|
||||
return v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function xr_conditions.is_actor_inside_lc(actor, npc, p)
|
||||
local lc = actor:id() == AC_ID and npc or actor
|
||||
local d = SYS_GetParam(2, lc:section(), "trigger_radius", 6)
|
||||
d = d * d
|
||||
return npc:position():distance_to_sqr(actor:position()) <= d
|
||||
end
|
||||
|
||||
function actor_on_first_update()
|
||||
on_option_change()
|
||||
if ui_mcm and ui_mcm.get("extra_level_transitions/delete_level_transitions") then
|
||||
ui_mcm.set("extra_level_transitions/delete_level_transitions", false)
|
||||
end
|
||||
|
||||
for sec,v in pairs(lc_pool) do
|
||||
local se = get_story_se_item(sec)
|
||||
local pos = str_coords_to_vector(v.pos)
|
||||
local vid = level.vertex_id(pos)
|
||||
local gid = tonumber(v.gvid)
|
||||
|
||||
if not (se) then
|
||||
se = alife():create(sec,pos,vid,gid)
|
||||
end
|
||||
|
||||
if (se.position:distance_to_sqr(pos) > 0.1) then
|
||||
TeleportObject(se.id,pos,vid,gid)
|
||||
end
|
||||
|
||||
if saved_spots[se.id] and saved_spots[se.id].spot and level.map_has_object_spot(se.id,saved_spots[se.id].spot) ~= 0 then
|
||||
level.map_remove_object_spot(se.id, saved_spots[se.id].spot)
|
||||
end
|
||||
|
||||
if (level.map_has_object_spot(se.id,v.spot) == 0) then
|
||||
level.map_add_object_spot_ser(se.id,v.spot,game.translate_string(v.hint))
|
||||
end
|
||||
saved_spots[se.id] = {
|
||||
spot = v.spot,
|
||||
sec = sec,
|
||||
id = se.id,
|
||||
vid = vid,
|
||||
gid = gid,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
function delete_level_transitions()
|
||||
if ui_mcm and ui_mcm.get("extra_level_transitions/delete_level_transitions") then
|
||||
ui_mcm.set("extra_level_transitions/delete_level_transitions", false)
|
||||
local sim = alife()
|
||||
for i = 1, 65534 do
|
||||
local obj = sim:object(i)
|
||||
if obj then
|
||||
local sec = obj:section_name()
|
||||
if lc_pool[sec] then
|
||||
sim:release(obj)
|
||||
if level.map_has_object_spot(obj.id,saved_spots[obj.id].spot) ~= 0 then
|
||||
level.map_remove_object_spot(obj.id, saved_spots[obj.id].spot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
empty_table(saved_spots)
|
||||
end
|
||||
end
|
||||
|
||||
--global distance calculation
|
||||
function get_travel_cost(se_obj)
|
||||
if not se_obj then return end
|
||||
|
||||
local sim = alife()
|
||||
local actor = db.actor
|
||||
local closest_smart_id
|
||||
for name,smart in pairs( SIMBOARD.smarts_by_names ) do
|
||||
if simulation_objects.is_on_the_same_level(sim:actor(), smart) then
|
||||
local dist = smart.position:distance_to(actor:position())
|
||||
local smrt = SIMBOARD.smarts[smart.id]
|
||||
if (smrt) and (not closest_smart_id or (dist < closest_smart_id[1])) then
|
||||
closest_smart_id = { dist, smart.id }
|
||||
end
|
||||
end
|
||||
end
|
||||
local closest_smart = alife_object(closest_smart_id[2])
|
||||
local dist = math.sqrt(warfare.distance_to_xz_sqr(global_position.from(closest_smart), global_position.from(se_obj)))
|
||||
return dist
|
||||
end
|
||||
|
||||
function is_gvid_on_the_actor_level(gvid)
|
||||
return game_graph():vertex(alife():actor().m_game_vertex_id):level_id() == game_graph():vertex(gvid):level_id()
|
||||
end
|
||||
|
||||
function teleport_actor(actor,obj)
|
||||
local sec = obj and obj:section()
|
||||
local v = sec and lc_pool[sec]
|
||||
|
||||
if (v and v.to_pos and v.to_gvid and not change_triggered) then
|
||||
local pos = str_coords_to_vector(v.to_pos)
|
||||
local dir = v.dir and str_coords_to_vector(v.dir) or VEC_ZERO
|
||||
local vid = level.vertex_id(pos)
|
||||
local gid = tonumber(v.to_gvid)
|
||||
|
||||
if settings.enable_time_advance then
|
||||
-- local saved_spot = find_save_spot(vid, gid)
|
||||
-- local d = saved_spot and get_travel_cost(alife_object(saved_spot.id)) or 1000
|
||||
local d = math.random(800, 1600)
|
||||
local dist = math.floor(d / SYS_GetParam(2, "actor", "walk_accel", 11.5) * random_float(0.75, 1.25))
|
||||
local hours = math.floor(dist / 60)
|
||||
local minutes = dist % 60
|
||||
|
||||
printf("advance time by %s, %s, distance %s, speed %s", hours, minutes, d, dist)
|
||||
level.change_game_time(0, hours, minutes)
|
||||
surge_manager.get_surge_manager().time_forwarded = true
|
||||
psi_storm_manager.get_psi_storm_manager().time_forwarded = true
|
||||
level_weathers.get_weather_manager():forced_weather_change()
|
||||
end
|
||||
|
||||
change_triggered = true
|
||||
|
||||
if v.snd then
|
||||
utils_obj.play_sound(v.snd)
|
||||
end
|
||||
|
||||
if v.on_teleport then
|
||||
local condlist = xr_logic.parse_condlist(obj, obj:section(), "on_teleport", v.on_teleport)
|
||||
xr_logic.pick_section_from_condlist(actor, obj, condlist)
|
||||
end
|
||||
|
||||
if is_gvid_on_the_actor_level(gid) then
|
||||
level.add_pp_effector("sleep_fade.ppe", 1313, false)
|
||||
|
||||
CreateTimeEvent(0,"delay_travel",3,function()
|
||||
db.actor:set_actor_position(pos)
|
||||
db.actor:set_actor_direction((dir.y * 180) / math.pi)
|
||||
change_triggered = false
|
||||
return true
|
||||
end)
|
||||
return
|
||||
end
|
||||
|
||||
ChangeLevel(pos,vid,gid,dir,true)
|
||||
-- level.disable_input()
|
||||
end
|
||||
end
|
||||
|
||||
function handle_nearby_actor(actor, obj)
|
||||
local sec = obj and obj:section()
|
||||
local v = sec and lc_pool[sec]
|
||||
|
||||
if not v then return end
|
||||
if change_triggered then return end
|
||||
|
||||
-- Evaluate precondition before enabling transition
|
||||
if (v.precondition and v.precondition ~= "") then
|
||||
local precond_list = xr_logic.parse_condlist(obj, nil, "precondition", v.precondition)
|
||||
if (precond_list == "false") then
|
||||
return
|
||||
end
|
||||
if (actor and xr_logic.pick_section_from_condlist(actor, obj, precond_list) == "false") then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if v.disable_dialog then
|
||||
teleport_actor(actor, npc)
|
||||
else
|
||||
local dialog = lc_extra_transitions_ui.create_dialog()
|
||||
dialog:SetObj(obj)
|
||||
dialog:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function save_state(m_data)
|
||||
m_data.lc_extra_transitions_saved_spots = saved_spots
|
||||
end
|
||||
|
||||
function load_state(m_data)
|
||||
saved_spots = m_data.lc_extra_transitions_saved_spots or {}
|
||||
end
|
||||
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
|
||||
RegisterScriptCallback("on_option_change", on_option_change)
|
||||
RegisterScriptCallback("on_option_change", delete_level_transitions)
|
||||
RegisterScriptCallback("save_state",save_state)
|
||||
RegisterScriptCallback("load_state",load_state)
|
||||
end
|
|
@ -0,0 +1,23 @@
|
|||
local to_del = {
|
||||
["grim_level_changer_to_cit"] = true,
|
||||
["grim_space_restrictor_to_cit"] = true,
|
||||
["cit_level_changer_to_grim"] = true,
|
||||
["cit_space_restrictor_to_grim"] = true,
|
||||
["mil_level_changer_to_prom"] = true,
|
||||
["mil_space_restrictor_to_prom"] = true,
|
||||
["prom_level_changer_to_military"] = true,
|
||||
["prom_space_restrictor_to_military"] = true,
|
||||
}
|
||||
|
||||
function actor_on_first_update()
|
||||
for i = 1, 65534 do
|
||||
local se_obj = alife_object(i)
|
||||
if se_obj and se_obj.name and se_obj:name() and to_del[se_obj:name()] then
|
||||
alife_release(se_obj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
[General]
|
||||
gameName=stalkeranomaly
|
||||
modid=0
|
||||
version=d2024.3.25.0
|
||||
newestVersion=
|
||||
category="-1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Extra_level_transitions_bonus_transitions.2.zip
|
||||
repository=
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-25T08:52:53Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
size=1
|
||||
1\fileid=0
|
||||
|
||||
[Plugins]
|
||||
BAIN%20Installer\option0=Extra_Transitions_new_maps
|
|
@ -0,0 +1,13 @@
|
|||
[lc_extra_level_transition_base]
|
||||
GroupControlSection = spawn_group
|
||||
$spawn = "physics\object"
|
||||
$prefetch = 8
|
||||
class = O_PHYSIC
|
||||
remove_time = 60
|
||||
visual = dynamics\light\light_signal.ogf
|
||||
fixed_bones = link
|
||||
script_binding = bind_physic_object.init
|
||||
custom_data = scripts\lc_extra_level_transitions.ltx
|
||||
|
||||
; Extra items can be included by naming them items_extra_level_transitions_*
|
||||
; For example,items_extra_level_transitions_cordon.ltx
|
|
@ -0,0 +1,21 @@
|
|||
[lc_cordon_south_darkscape_collapsed_tunnel]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ; mandatory field
|
||||
story_id = lc_cordon_south_darkscape_collapsed_tunnel ; story_id, without it the item wont be added
|
||||
pos = -59,-30,-477 ; position of item
|
||||
gvid = 449 ; Gvid of item
|
||||
spot = level_changer_right ; texture to use for spot on the map
|
||||
hint = esc_space_restrictor_to_darkscape_descr ; string id for hint description, defined in xml files
|
||||
to_pos = 513.7,-1.5,-420.8 ; position where to teleport actor
|
||||
to_gvid = 1119 ; Gvid where to teleport actor
|
||||
; dir = 0,60,0 ;; actor facing
|
||||
; trigger_radius = 1.2 ;; Radius to trigger transition (default is 6)
|
||||
|
||||
[lc_darkscape_collapsed_tunnel_cordon_south]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ; mandatory field
|
||||
story_id = lc_darkscape_collapsed_tunnel_cordon_south
|
||||
pos = 520.17,-1.35,-429.54
|
||||
gvid = 1119
|
||||
spot = level_changer_down
|
||||
hint = ds_space_restrictor_to_escape_descr
|
||||
to_pos = -64,-29,-457
|
||||
to_gvid = 449
|
|
@ -0,0 +1,19 @@
|
|||
[lc_limansk_river_jupiter_bandit_base]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ; mandatory field
|
||||
story_id = lc_limansk_river_jupiter_bandit_base ; story_id, without it the item wont be added
|
||||
pos = 68.83,-7,-15.85 ; position of item
|
||||
gvid = 2440 ; Gvid of item
|
||||
spot = level_changer_up_right ; texture to use for spot on the map
|
||||
hint = space_restrictor_to_jupiter_desc ; string id for hint description, defined in xml files
|
||||
to_pos = -446,0,-345.2 ; position where to teleport actor
|
||||
to_gvid = 4818 ; Gvid where to teleport actor
|
||||
|
||||
[lc_jupiter_bandit_base_limansk_river]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ; mandatory field
|
||||
story_id = lc_jupiter_bandit_base_limansk_river
|
||||
pos = -455.8,0,-345.9
|
||||
gvid = 4818
|
||||
spot = level_changer_down_left
|
||||
hint = space_restrictor_to_limansk_desc
|
||||
to_pos = 60.1,-7,-5.51
|
||||
to_gvid = 2440
|
|
@ -0,0 +1,21 @@
|
|||
; Yantar <-> Dead City
|
||||
[lc_yantar_west_dead_city_west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ;; mandatory field
|
||||
story_id = lc_yantar_west_dead_city_west ;; story_id, without it the item wont be added
|
||||
pos = -219.6,6.7,-48.95 ;; position of item
|
||||
gvid = 2307 ;; Gvid of item
|
||||
spot = level_changer_up ;; texture to use for spot on the map
|
||||
hint = space_restrictor_to_deadcity_desc ;; string id for hint description, defined in xml files
|
||||
to_pos = -226,10.01,-181.52 ;; position where to teleport actor
|
||||
to_gvid = 2318 ;; Gvid where to teleport actor
|
||||
|
||||
[lc_dead_city_west_yantar_west]:lc_extra_level_transition_base
|
||||
lc_extra_level_transition = true ;; mandatory field
|
||||
story_id = lc_yantar_west_dead_city_west ;; story_id, without it the item wont be added
|
||||
pos = -234.17,9.86,-190.01 ;; position of item
|
||||
gvid = 2318 ;; Gvid of item
|
||||
spot = level_changer_down ;; texture to use for spot on the map
|
||||
hint = space_restrictor_to_yantar_desc ;; string id for hint description, defined in xml files
|
||||
to_pos = -222.64,7.48,-62.54 ;; position where to teleport actor
|
||||
dir = 0,60,0 ;; actor facing
|
||||
to_gvid = 2307 ;; Gvid where to teleport actor
|
|
@ -0,0 +1,8 @@
|
|||
[logic]
|
||||
active = ph_idle@idle
|
||||
|
||||
[ph_idle@idle]
|
||||
on_info = {=is_actor_inside_lc} %=script(lc_extra_transitions:handle_nearby_actor)% ph_idle@wait
|
||||
|
||||
[ph_idle@wait]
|
||||
on_timer = 5000| ph_idle@idle
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
|
||||
<string_table>
|
||||
|
||||
<string id="ui_mcm_extra_level_transitions_title">
|
||||
<text>Extra Level Transitions</text>
|
||||
</string>
|
||||
<string id="ui_mcm_menu_extra_level_transitions">
|
||||
<text>Level Transitions</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_enable_time_advance">
|
||||
<text>Enable Time Advance</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_enable_time_advance_desc">
|
||||
<text>Time will be advanced on level transitions</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_delete_level_transitions">
|
||||
<text>Delete Level Transitions</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_delete_level_transitions_desc">
|
||||
<text>Extra level transitions will be deleted from the game. The option is intended for safe removal of the mod</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
|
||||
<string_table>
|
||||
|
||||
<string id="ui_mcm_extra_level_transitions_title">
|
||||
<text>Äîïîëíèòåëüíûå ïåðåõîäû óðîâíåé</text>
|
||||
</string>
|
||||
<string id="ui_mcm_menu_extra_level_transitions">
|
||||
<text>Ïåðåõîäû óðîâíåé</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_enable_time_advance">
|
||||
<text>Âêëþ÷èòü çàòðàòó âðåìåíè</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_enable_time_advance_desc">
|
||||
<text>Ïðè èñïîëüçîâàíèè íîâûõ ïåðåõîäîâ áóäåò òðàòèòüñÿ âðåìÿ íà ïåðåìåùåíèå</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_delete_level_transitions">
|
||||
<text>Óäàëèòü ïåðåõîäû óðîâíåé</text>
|
||||
</string>
|
||||
<string id="ui_mcm_extra_level_transitions_delete_level_transitions_desc">
|
||||
<text>Äîïîëíèòåëüíûå ïåðåõîäû óðîâíåé áóäóò óäàëåíû èç èãðû. Îïöèÿ ïðåäíàçíà÷åíà äëÿ áåçîïàñíîãî óäàëåíèÿ ìîäà</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
|
@ -0,0 +1,245 @@
|
|||
-- UTILS
|
||||
-- Load the defaults
|
||||
local function load_defaults()
|
||||
local t = {}
|
||||
local op = lc_extra_transitions_mcm.op
|
||||
for i, v in ipairs(op.gr) do
|
||||
if v.def ~= nil then
|
||||
t[v.id] = v.def
|
||||
end
|
||||
end
|
||||
return t
|
||||
end
|
||||
local settings = load_defaults()
|
||||
|
||||
local function on_option_change()
|
||||
settings = load_defaults()
|
||||
if ui_mcm then
|
||||
for k, v in pairs(settings) do
|
||||
settings[k] = ui_mcm.get("extra_level_transitions/" .. k)
|
||||
end
|
||||
end
|
||||
end
|
||||
local function str_coords_to_vector(str)
|
||||
local t = str_explode(str, ",")
|
||||
if #t < 3 then
|
||||
error("str_coords_to_vector, missing %s coords", 3 - #t)
|
||||
end
|
||||
return vector():set(tonumber(t[1]), tonumber(t[2]), tonumber(t[3]))
|
||||
end
|
||||
|
||||
-- Transitions
|
||||
lc_pool = (function()
|
||||
local res = {}
|
||||
ini_sys:section_for_each(function(section)
|
||||
if SYS_GetParam(1, section, "lc_extra_level_transition", false) and SYS_GetParam(0, section, "story_id") then
|
||||
local n = ini_sys:section_exist(section) and ini_sys:line_count(section) or 0
|
||||
if (n > 0) then
|
||||
res[section] = {}
|
||||
for i = 0,n-1 do
|
||||
local _,id,val = ini_sys:r_line(section,i,"","")
|
||||
res[section][id] = val
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
return res
|
||||
end)()
|
||||
|
||||
local saved_spots = {}
|
||||
local change_triggered = false
|
||||
|
||||
local function find_save_spot(vid, gid)
|
||||
for k, v in pairs(saved_spots) do
|
||||
if v.vid == vid and
|
||||
v.gid == gid
|
||||
then
|
||||
return v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function xr_conditions.is_actor_inside_lc(actor, npc, p)
|
||||
local lc = actor:id() == AC_ID and npc or actor
|
||||
local d = SYS_GetParam(2, lc:section(), "trigger_radius", 6)
|
||||
d = d * d
|
||||
return npc:position():distance_to_sqr(actor:position()) <= d
|
||||
end
|
||||
|
||||
function actor_on_first_update()
|
||||
on_option_change()
|
||||
if ui_mcm and ui_mcm.get("extra_level_transitions/delete_level_transitions") then
|
||||
ui_mcm.set("extra_level_transitions/delete_level_transitions", false)
|
||||
end
|
||||
|
||||
for sec,v in pairs(lc_pool) do
|
||||
local se = get_story_se_item(sec)
|
||||
local pos = str_coords_to_vector(v.pos)
|
||||
local vid = level.vertex_id(pos)
|
||||
local gid = tonumber(v.gvid)
|
||||
|
||||
if not (se) then
|
||||
se = alife():create(sec,pos,vid,gid)
|
||||
end
|
||||
|
||||
if (se.position:distance_to_sqr(pos) > 0.1) then
|
||||
TeleportObject(se.id,pos,vid,gid)
|
||||
end
|
||||
|
||||
if saved_spots[se.id] and saved_spots[se.id].spot and level.map_has_object_spot(se.id,saved_spots[se.id].spot) ~= 0 then
|
||||
level.map_remove_object_spot(se.id, saved_spots[se.id].spot)
|
||||
end
|
||||
|
||||
if (level.map_has_object_spot(se.id,v.spot) == 0) then
|
||||
level.map_add_object_spot_ser(se.id,v.spot,game.translate_string(v.hint))
|
||||
end
|
||||
saved_spots[se.id] = {
|
||||
spot = v.spot,
|
||||
sec = sec,
|
||||
id = se.id,
|
||||
vid = vid,
|
||||
gid = gid,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
function delete_level_transitions()
|
||||
if ui_mcm and ui_mcm.get("extra_level_transitions/delete_level_transitions") then
|
||||
ui_mcm.set("extra_level_transitions/delete_level_transitions", false)
|
||||
local sim = alife()
|
||||
for i = 1, 65534 do
|
||||
local obj = sim:object(i)
|
||||
if obj then
|
||||
local sec = obj:section_name()
|
||||
if lc_pool[sec] then
|
||||
sim:release(obj)
|
||||
if level.map_has_object_spot(obj.id,saved_spots[obj.id].spot) ~= 0 then
|
||||
level.map_remove_object_spot(obj.id, saved_spots[obj.id].spot)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
empty_table(saved_spots)
|
||||
end
|
||||
end
|
||||
|
||||
--global distance calculation
|
||||
function get_travel_cost(se_obj)
|
||||
if not se_obj then return end
|
||||
|
||||
local sim = alife()
|
||||
local actor = db.actor
|
||||
local closest_smart_id
|
||||
for name,smart in pairs( SIMBOARD.smarts_by_names ) do
|
||||
if simulation_objects.is_on_the_same_level(sim:actor(), smart) then
|
||||
local dist = smart.position:distance_to(actor:position())
|
||||
local smrt = SIMBOARD.smarts[smart.id]
|
||||
if (smrt) and (not closest_smart_id or (dist < closest_smart_id[1])) then
|
||||
closest_smart_id = { dist, smart.id }
|
||||
end
|
||||
end
|
||||
end
|
||||
local closest_smart = alife_object(closest_smart_id[2])
|
||||
local dist = math.sqrt(warfare.distance_to_xz_sqr(global_position.from(closest_smart), global_position.from(se_obj)))
|
||||
return dist
|
||||
end
|
||||
|
||||
function is_gvid_on_the_actor_level(gvid)
|
||||
return game_graph():vertex(alife():actor().m_game_vertex_id):level_id() == game_graph():vertex(gvid):level_id()
|
||||
end
|
||||
|
||||
function teleport_actor(actor,obj)
|
||||
local sec = obj and obj:section()
|
||||
local v = sec and lc_pool[sec]
|
||||
|
||||
if (v and v.to_pos and v.to_gvid and not change_triggered) then
|
||||
local pos = str_coords_to_vector(v.to_pos)
|
||||
local dir = v.dir and str_coords_to_vector(v.dir) or VEC_ZERO
|
||||
local vid = level.vertex_id(pos)
|
||||
local gid = tonumber(v.to_gvid)
|
||||
|
||||
if settings.enable_time_advance then
|
||||
-- local saved_spot = find_save_spot(vid, gid)
|
||||
-- local d = saved_spot and get_travel_cost(alife_object(saved_spot.id)) or 1000
|
||||
local d = math.random(800, 1600)
|
||||
local dist = math.floor(d / SYS_GetParam(2, "actor", "walk_accel", 11.5) * random_float(0.75, 1.25))
|
||||
local hours = math.floor(dist / 60)
|
||||
local minutes = dist % 60
|
||||
|
||||
printf("advance time by %s, %s, distance %s, speed %s", hours, minutes, d, dist)
|
||||
level.change_game_time(0, hours, minutes)
|
||||
surge_manager.get_surge_manager().time_forwarded = true
|
||||
psi_storm_manager.get_psi_storm_manager().time_forwarded = true
|
||||
level_weathers.get_weather_manager():forced_weather_change()
|
||||
end
|
||||
|
||||
change_triggered = true
|
||||
|
||||
if v.snd then
|
||||
utils_obj.play_sound(v.snd)
|
||||
end
|
||||
|
||||
if v.on_teleport then
|
||||
local condlist = xr_logic.parse_condlist(obj, obj:section(), "on_teleport", v.on_teleport)
|
||||
xr_logic.pick_section_from_condlist(actor, obj, condlist)
|
||||
end
|
||||
|
||||
if is_gvid_on_the_actor_level(gid) then
|
||||
level.add_pp_effector("sleep_fade.ppe", 1313, false)
|
||||
|
||||
CreateTimeEvent(0,"delay_travel",3,function()
|
||||
db.actor:set_actor_position(pos)
|
||||
db.actor:set_actor_direction((dir.y * 180) / math.pi)
|
||||
change_triggered = false
|
||||
return true
|
||||
end)
|
||||
return
|
||||
end
|
||||
|
||||
ChangeLevel(pos,vid,gid,dir,true)
|
||||
-- level.disable_input()
|
||||
end
|
||||
end
|
||||
|
||||
function handle_nearby_actor(actor, obj)
|
||||
local sec = obj and obj:section()
|
||||
local v = sec and lc_pool[sec]
|
||||
|
||||
if not v then return end
|
||||
if change_triggered then return end
|
||||
|
||||
-- Evaluate precondition before enabling transition
|
||||
if (v.precondition and v.precondition ~= "") then
|
||||
local precond_list = xr_logic.parse_condlist(obj, nil, "precondition", v.precondition)
|
||||
if (precond_list == "false") then
|
||||
return
|
||||
end
|
||||
if (actor and xr_logic.pick_section_from_condlist(actor, obj, precond_list) == "false") then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if v.disable_dialog then
|
||||
teleport_actor(actor, npc)
|
||||
else
|
||||
local dialog = lc_extra_transitions_ui.create_dialog()
|
||||
dialog:SetObj(obj)
|
||||
dialog:Show()
|
||||
end
|
||||
end
|
||||
|
||||
function save_state(m_data)
|
||||
m_data.lc_extra_transitions_saved_spots = saved_spots
|
||||
end
|
||||
|
||||
function load_state(m_data)
|
||||
saved_spots = m_data.lc_extra_transitions_saved_spots or {}
|
||||
end
|
||||
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
|
||||
RegisterScriptCallback("on_option_change", on_option_change)
|
||||
RegisterScriptCallback("on_option_change", delete_level_transitions)
|
||||
RegisterScriptCallback("save_state",save_state)
|
||||
RegisterScriptCallback("load_state",load_state)
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
op = {
|
||||
id = "extra_level_transitions", sh = true, gr = {
|
||||
{id = "banner", type = "slide", text = "ui_mcm_extra_level_transitions_title", size = {512, 50}, spacing = 20},
|
||||
{id = "enable_time_advance", type = "check", val = 1, def = false},
|
||||
{id = "delete_level_transitions", type = "check", val = 1, def = false},
|
||||
}
|
||||
}
|
||||
|
||||
function on_mcm_load()
|
||||
return op
|
||||
end
|
|
@ -0,0 +1,71 @@
|
|||
-- basic dynamic msg_box
|
||||
-- alundaio
|
||||
|
||||
class "msg_box_ui" (CUIScriptWnd)
|
||||
function msg_box_ui:__init() super()
|
||||
self:SetWndRect(Frect():set(0,0,1024,768))
|
||||
self:SetAutoDelete(true)
|
||||
|
||||
self:InitCallBacks()
|
||||
self:OnMsgCancel()
|
||||
|
||||
self.message_box = CUIMessageBoxEx()
|
||||
self:Register(self.message_box, "msg_box")
|
||||
|
||||
self:InitCallBacks()
|
||||
self:InitControls()
|
||||
end
|
||||
|
||||
function msg_box_ui:Reset()
|
||||
self.obj = nil
|
||||
end
|
||||
|
||||
---@param obj game_object
|
||||
function msg_box_ui:SetObj(obj)
|
||||
-- Track nearby teleport space restrictor
|
||||
self.obj_id = obj:id()
|
||||
|
||||
-- Update text to indicate destination
|
||||
local next_level = game.translate_string(lc_extra_transitions.lc_pool[obj:section()].hint or "")
|
||||
local msg_str = game.translate_string("st_level_changer_descr")
|
||||
local str = strformat(msg_str, next_level)
|
||||
self.message_box:SetText(str)
|
||||
end
|
||||
|
||||
function msg_box_ui:Show()
|
||||
self.message_box:ShowDialog(true)
|
||||
end
|
||||
|
||||
function msg_box_ui:__finalize()
|
||||
end
|
||||
|
||||
function msg_box_ui:InitCallBacks()
|
||||
self:AddCallback("msg_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgOk, self)
|
||||
self:AddCallback("msg_box", ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel, self)
|
||||
self:AddCallback("msg_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgOk, self)
|
||||
self:AddCallback("msg_box", ui_events.MESSAGE_BOX_NO_CLICKED, self.OnMsgCancel, self)
|
||||
end
|
||||
|
||||
function msg_box_ui:OnMsgOk()
|
||||
local obj = level.object_by_id(self.obj_id)
|
||||
if not obj then return end
|
||||
|
||||
lc_extra_transitions.teleport_actor(db.actor, obj)
|
||||
end
|
||||
|
||||
function msg_box_ui:OnMsgCancel()
|
||||
-- Teleport player away from space restrictor?
|
||||
-- Require grabbing some 'reject' position from config
|
||||
-- See ui_sr_teleport.script
|
||||
end
|
||||
|
||||
function msg_box_ui:InitControls()
|
||||
self.message_box:InitMessageBox("message_box_yes_no")
|
||||
end
|
||||
|
||||
function create_dialog()
|
||||
local ui = msg_box_ui()
|
||||
ui:Reset()
|
||||
return ui
|
||||
end
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
[General]
|
||||
gameName=stalkeranomaly
|
||||
modid=0
|
||||
version=d2024.3.13.0
|
||||
version=d2024.3.25.0
|
||||
newestVersion=
|
||||
category="2,"
|
||||
category="-1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Fixed_Vanilla_ModelsTextures.6.7z
|
||||
installationFile=Extra_Level_Transitions.4.zip
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=true
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-13T04:35:35Z
|
||||
nexusLastModified=2024-03-25T08:27:06Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
|
@ -1,441 +0,0 @@
|
|||
___________
|
||||
DESCRIPTION
|
||||
___________
|
||||
Fixed Vanilla Models & Textures. "FV-M&T" for short, "FVM" for shorter and much more memorable.
|
||||
After playing Anomaly for such a time, using no model mods whatsoever, I have noticed that the game, sadly, has so many, many flaws in its models.
|
||||
|
||||
Some examples:
|
||||
* Many textures are missing mipmaps, making some textures look like an edged oversharpened mess.
|
||||
* Some models have smoothing errors, making them look like a complete blocky mess. Especially prevalent on Nosorogs, ExoSEVAs and Protoexos.
|
||||
* Some models have "repeated textures", to fix this I instead kept as such but completely changed the texture.
|
||||
* Almost all factions have a "camo facemask" head variant that is so low quality it belongs in Counter-Strike 1.6 instead.
|
||||
* All Monolith have a "full black camo" that looks like it was overlayed on the whole texture, completely ugly and unfit.
|
||||
* Mercenaries have quite the variety of low-quality (re)textures.
|
||||
* Ecologists could have been better instead of a single color that can make you confuse them for Mercenaries.
|
||||
[For more information, check "DETAILS" below]
|
||||
|
||||
So, with all that in mind, I just got tired and went ahead and fixed almost all of them the best I could.
|
||||
This took more than a year to make, and I do hope all the work done will be worth it for all of you, if it makes you to even at least give it a try despite being completely in favour of "HD Models", I am flattered you'd do so.
|
||||
|
||||
DO NOTE!
|
||||
I do not have any intention to "HDify" anything, this pack was made ONLY to fix issues, be it technical or visual.
|
||||
Knowing this, do not expect a massive visual improvement.
|
||||
It may or may not be more performance heavy, this has not been tested, but it is doubtful that you'll get an extreme FPS drop.
|
||||
(If anything, your FPS will increase thanks to these mipmaps)
|
||||
Also, some models will not be changed simply because they're so low-quality they shouldn't even be in the game. For example...Monolith Patchwork SEVAs, the "Helmet" variants, some LC Suit variants.
|
||||
I recommend you use this mod with "Less Ugly Variety" (LUV) in combination, so you can remove the ugly models like Monolith Patchwork SEVAs.
|
||||
___________
|
||||
INSTALLATION
|
||||
___________
|
||||
|
||||
Simply extract the "gamedata" folder into your STALKER Anomaly directory.
|
||||
|
||||
New game is not required, since this is meant to be only a Models & Texture changer.
|
||||
You can also install and uninstall anytime, but please be careful with the addons.
|
||||
___________
|
||||
OPTIONS/ADDONS INFORMATION
|
||||
___________
|
||||
|
||||
- "Alternative Ecomercs". Changes how the Ecomercs are in FVM to use a more subtle, but still visibly highlited, yellow.
|
||||
- "Armored SEVA" Ecomerc now uses a blue-&-yellow SEVA suit, with a black-&-yellow backpack and better emblem that has Ecologist orange background color. This will make him easily identifiable at a distance.
|
||||
- "Twilight" Ecomerc now uses SEVA/PS5 armor for the torso, while preserving the pouches in the belly and the oxygen tanks are fixed. Also has a blue-and-yellow color scheme, with orange on its highlights.
|
||||
- "LC Suit" Ecomerc now has many yellow color scheme details, a better emblem and orange visors.
|
||||
- UNISG Overhaul. Completely redoes UNISG visual style, including camo and colour.
|
||||
The main colour shall now be light gray, with a very bright Green and Red highlight.
|
||||
- SIN Overhaul. Completely redoes SIN.
|
||||
Makes them have a much more "mutant" and "cultist" look like it should have.
|
||||
- 'Wind of Freedom' Variants. Adds more variants for Wind of Freedom, up to 6.
|
||||
- SEVA Glass Variety. Adds various different types of SEVA Glass to SEVA armors instead of being just one single blueish tint.
|
||||
In other words, Duty will use a beautiful golden tint, Loners will be a Greenish tint with some Orange and Monolith will use a bizarre Pinkish with Teal.
|
||||
___________
|
||||
COMPATIBILITY
|
||||
___________
|
||||
|
||||
The mod will conflict with anything that changes the models and textures.
|
||||
Popular mods such as "Dux's Innumerable Character Kit" and "Armor Balance Collection" are compatible by default. Besides, they use a lot of materials from FVM.
|
||||
Not compatible with "HD Models" because they're both completely unrelated.
|
||||
___________
|
||||
DETAILS
|
||||
___________
|
||||
|
||||
_____UNIQUE_____
|
||||
|
||||
* All Unique faces (Such as Trapper, Beard, Strelok, Nitro, Cardan and so on) now use the original CoP textures, which are much better, have proper skin tone and none of those ugly repainted beards.
|
||||
* Ecologist character "Tokarev" was using a SSP suit despite being inside the bunker all day and a face texture that didn't fit the UV. It now uses "Sokolov"'s face and the Scientist Suit.
|
||||
* Freedom character "Leshiy" was using a face texture that was a combination of over 7 materials, had smoothing errors and used an "old" texture for the suit. He now looks exactly like in Clear Sky, but with the "Sentinel of Freedom" armor.
|
||||
* Freedom character "Screw" was just Loki. Now uses his own model, which is a "Wind of Freedom" with a face that resembles Bes from ShoC.
|
||||
* Neutral character, part of Strelok's group, "Rogue", is now The Ultimate Badass (May Bill Paxton rest guns blazing):
|
||||
- Uses the bulky CS-3a helmet
|
||||
- Arms & Torso (Armor) is a SKAT, his top favourite armor, since he prefers something conventional over an Exoskeleton (Don't get mad, darlings).
|
||||
- Carries many pouches for ammo, repair kits and the like. (From CS-3b)
|
||||
- Has a good ol' protective ballistic kilt, the Scottish would be proud. (From CS-3b)
|
||||
- Quite the bulky trousers with extra-bulky metal plated leg armor. (From CS-3a and CS-3b)
|
||||
* Neutral character, "Doctor", has been fixed:
|
||||
- Eye colour changed from a bright blue to a dark brown, fitting his cutscene in ShoC.
|
||||
- Fixed the Normal Map, now uses a much better one made by Argus.
|
||||
- Smoothing errors on the model fixed.
|
||||
* Monolith character, Eidolon, has been overhauled:
|
||||
- Now has a custom pattern for the glass that gives him a more sinister cultist look to it. (Don't want to spoil too much)
|
||||
---Said glass also uses its own specular map, making the blood look bloody and the paint not have any "shine" to it.
|
||||
-Now uses a custom armor texture, which is a complete Urban Camo pattern and uses Carapace (white) armor pads instead of the default metal.
|
||||
-Fixed the model mesh itself, such as...Smoothing errors, visible voids, discrepancy and broken bones.
|
||||
|
||||
_____TEXTURES_____
|
||||
-ALL-
|
||||
* SEVA Glass was a badly compressed 128x128 texture taken from Build 1964. It has been completely redone, at 256x256, with a proper normal & specular map, picking the good from Build 1964, ShoC and CoP.
|
||||
[The same treatment is given to the SPP and ExoSEVA glass, using a blue-tinted variant]
|
||||
* "Specnaz Glass" has been overhauled, it is now at 512x512, has a proper "semi-bubbly" normal map and stronger shiny specular.
|
||||
* "Glasses", the ones Skinflint and some other rare characters use, has been overhauled to fix all that complete blackness and give it transparency (for the cubemaps), its own normal map and a nice specular.
|
||||
* The STS Suit, also known as X-18 Suit, didn't have a proper normal map. I have manually painted one.
|
||||
* Two face variants that had green masks were missing their normal maps. This has been fixed.
|
||||
* All modern Russian gasmasks (such as those on the SKAT-9M) had broken visors. This has been fixed, back to the original orange tinted one.
|
||||
* Most if not all SEVAs (Loner, Merc, Freedom) backpacks had bad textures, broken normal maps or no mipmaps. This has been fixed.
|
||||
* Proto-Exos' Skeleton had a terrible bumpmap, an original from ShoC has been restored.
|
||||
* GP-5 Mask has bad compression errors, no normal map and no mipmaps. It has been given all.
|
||||
* "Digital Black&Orange Camo" face has been replaced with good ol' classic ShoC green-cloth face. Also known as "The Green Stalker".
|
||||
* All "Exoskeletons" had a somewhat flat Specular Map. It has been improved, metal now shines like metal.
|
||||
* All "Trenchcoat" variants, especially including bandits, had a flat normal map. It now uses Argus' and mine. Also includes much better specular, with realistic shading for the eyes and leathery and wet appearance for the coat.
|
||||
|
||||
-ZOMBIFIED-
|
||||
* One face variant was just a "painted on" balaclava based on the Balaclava's face. This has been replaced with a proper Zombified face.
|
||||
* One face variant was just a "painted on" balaclava based on the Green Stalker's face. This has been replaced with a proper Zombified face.
|
||||
* "Ecologist Zombies" now use their own unique texture, in a way, it's exactly the same as the Ecologist SPPs but much more visibly dirtier, rusty, unkempt, broken and so on.
|
||||
|
||||
-LONER-
|
||||
* "Loner Trenchcoat" had missing Normal Maps. This has been fixed.
|
||||
* "Rookie Jacket" Normal Map was a bit broken, especially on the Specular Map. This has been fixed.
|
||||
* One of "Rookie Jacket" variants, "Camo", was nothing more than a darkened and camo-all-overlayed texture. It has been replaced with a proper bright camo, including pants and dark misc parts.
|
||||
* One of "Rookie Jacket" variants, a green-toned type, had some consistency issues. This has been fixed.
|
||||
* One of "Rookie Jacket" variants, just a plain forest camo, has been redone with a blue leather jacket that has some "edgy" urban camo parts to it and greenish pants.
|
||||
* One of "Rookie Jacket" variants, which was just "Freedom Rookie" camo but desaturated, has been replaced with the classic "White Urban" from ShoC.
|
||||
* "Sunrise Suit" had no Mipmaps, this has been fixed.
|
||||
* "Sunrise Suit Variant 2", Salamander, had part of his shoulders fixed and his gastank redone.
|
||||
* "Sunrise Suit Variant 3", Graphite, had part of his shoulders fixed and his pads redone to be a static colour instead of camo.
|
||||
* "Sunrise Suit Variant 4", Drought, has been overhauled: It now uses a dark torso with green highlights, pads are dark green and clothing has better camo more fit for a dry swamp.
|
||||
* "Sunrise Suit Variant 5", Tigerstripe, had part of his shoulders fixed.
|
||||
* "Sunrise Suit Variant 6", Autumn, has been overhauled: Uses a completely different camo, more fit for Autumn/Fall, shoulderpads fixed and other enhancements.
|
||||
* "Wastelander" had the leatherpads changed to brown, added some more black decor to it and fixed the shoulders. Also was missing normal map, restored.
|
||||
* Original "Exoskeleton", with original colours has been restored.
|
||||
|
||||
-BANDIT-
|
||||
* "Bandit Sunrise" has been overhauled, to be an actual Sunrise instead of an STS suit. It is made to appear like a rough craftsmanship and scavenged unpainted equipment.
|
||||
* "Bandit Ecoguard" suit has been overhauled, it is now a combination of the STS pants, Wind of Freedom Belt and the rest a customized type of the Ecoguard outfit, using darker uglier colours and a specific brownish woodland camo.
|
||||
* "Bandit Jacket" Normal Map was a bit broken, especially on the Specular Map. This has been fixed.
|
||||
* "Bandit SEVA" Variant 1 is now a proper looted Loner SEVA, combined with looted parts of the Loner Sunrise and Ecologist Guard suit. Also uses its own normal map and specular.
|
||||
* "Bandit SEVA" Variant 2 is now a Bandit LC with the SEVA backpack and helmet, this gives it a more proper "Looted" and "Ballistics Improved" appearance.
|
||||
* One of "Bandit Rookie" variants, red&black letterman jacket, has been replaced with an intricate Red&Black Leather Jacket.
|
||||
* All variants of the "Bandit Rookie" were using the wrong normal map, it now uses the proper one.
|
||||
* The original "Bandit Trenchcoat" somehow had a SEAMLESS METAL hood texture and mipmaps broken. This has all been fixed by using the original CoP texture instead.
|
||||
* One of the Bandit/Looted LC Suits was just a darker version of the original. It is now a "palette swap", where the clothing is black and the armor is brown instead.
|
||||
* Bandit Exoskeletons have been overhauled, as well as given their proper .thm files so they have a normal map.
|
||||
|
||||
-CLEAR SKY-
|
||||
* All Clear Sky textures were at 1024x1024, they have been restored to 2048x2048 with less compression artifacts. In detail:
|
||||
- CS-1a was using a camo clothmask and badly-made metal spaulders, now it's back to the default blue-gray and green leather spaulders
|
||||
- CS-1b had a variant that used an unfit and badly made "Digital Camo" as well as its normal maps were broken.
|
||||
Normal maps are fixed, original restored and the other variant is now an intricate one with green pants.
|
||||
- CS-2 was desaturated and added a green filter, with some bad artifacting on the glass. This has been fixed.
|
||||
- CS-3a had an incredibly desaturated look, especially on the armor. Original color has been restored.
|
||||
- CS-3b had a variant that used an unfit and badly made "Digital Camo".
|
||||
Original restored and the other variant is now the same but with black pants.
|
||||
* Clear Sky "Sunrise" has been overhauled, fixing the issues it had such as no mipmaps, bad texture clipping, broken pants and camo. It now uses proper camo, almost fitting CS-1a itself, has black pants and fixed pouches.
|
||||
* New Clear Sky "Sunrise" variant that uses "STS" torso and camo hood.
|
||||
* Clear Sky "Exosuit" had no mipmaps, now it does.
|
||||
* Clear Sky "Exolight" had no mipmaps, no normal map and was identical to the Exosuit anyway. Now it has black torso instead of camo and uses mipmaps & normal map.
|
||||
* Clear Sky "SKAT" completely overhauled, it now uses a much better texture, with better camo, set mipmaps and a proper normal map.
|
||||
* "Clear Sky SEVA" Variant 1, the STS, was using an improper normal map. This has been fixed.
|
||||
* "Clear Sky SEVA" Variant 2, the one 4x2 Bumps torso, was using an improper normal map. This has been fixed.
|
||||
* "Clear Sky SEVA" Variant 3, the PS5m-lookalike, was using a wrong normal map. This has been fixed.
|
||||
|
||||
-DUTY-
|
||||
* One Duty face variant had missing normal maps. Restored.
|
||||
* Duty's PS5-M was using an unfit normal map. This has been fixed thanks to "Dynamic".
|
||||
* One of the Duty SEVA variants, the Pathfinder, had some minor issues and imperfections, it has been redone to fit a "Hunter" scheme better.
|
||||
* One of the Duty SEVA variants, the "Scientific Guard", had some minor issues and imperfections, it has been redone to have better color composition.
|
||||
* One "Duty SKAT" variant was using a 512x512 texture instead of 1024x1024. It's now back to 1024x1024. Also changed it to be a SKAT-9 (Plates).
|
||||
* "SKAT Commander" was not too impressive, it has been redone to look amazing and unique, fit for an actual Frontlines Captain.
|
||||
* Second Variant of Duty's PS5-M had some minor errors such as metal being painted red, missing some color and slightly broken shoulders. This has been fixed.
|
||||
* Maskless PZD Dutyers were using the wrong normal map for their armor, now it uses the proper one.
|
||||
|
||||
-FREEDOM-
|
||||
X [OPTIONAL] Freedom now has about 6 more "Wind of Freedom" variants, making up to 8.
|
||||
All Variants have different wear and two kinds of armor textures for some diversity.
|
||||
* "Wind of Freedom" had no proper normal map. I have manually painted one.
|
||||
* One variant of the "Wind of Freedom" was using a texture that was a mishmash of the CS-3b, it now uses the original from SHoC again, but with changes such as blueish dark gray on details and some clothing and orange on metals.
|
||||
* One of the "Sentinel of Freedom" variants, the one that uses an STS torso, had a bad mismatched normal map. This has been fixed.
|
||||
* One of the "Guardian of Freedom" variants had a texture with no mipmaps, this has been fixed.
|
||||
* Freedom SKAT has been completely overhauled, it is now a somewhat-flashy SKAT-9 & SKAT-9m combo, meaning it uses Plates and Gasmask respectively, with green flecktarn camo and blue&orange details. Also has functioning mipmaps, normal map and specular map.
|
||||
|
||||
-MERCENARY-
|
||||
* [UNUSED IN-GAME BUT AVAILABLE IN-FILES] "SEVA/LC Combo Merc" were using very flat textures, it has now been edited to have minor details to further indicate they're part of the Mercs.
|
||||
* "Merc/LC Suit" was using a different version that looked weird, with badly-painted pants and erroneous contrast on the armor, as well as missing mipmaps. The Original has been restored.
|
||||
* "Sunrise Merc" was missing mipmaps and had wrong textures for the gastanks, this has been fixed.
|
||||
* One of the "Sunrise Merc" variants was just the same but heavily darkened. It is now the Merc Sunrise with more decorational highlights. Also used the wrong normal map, fixed.
|
||||
* One of the Mercenary suits was an ugly "desert camo" that didn't fit in The Zone at all. It is now a blue urban camo.
|
||||
* One of the Mercenary suits was some kind of "variety salad" camo that didn't fit The Zone at all. It is now an intricate Hunter-like suit.
|
||||
* "SEVA Merc" was using a texture with some wonky contrast and missing mipmaps. The Original has been restored.
|
||||
* "Merc SKAT" has been overhauled, it now uses Merc Blue and has green highlights. Fits with the remodel.
|
||||
* One of the "SEVAs" were using a wrong normal map, this has been fixed.
|
||||
* One of the "Merc/LC Suit" variants, "Green", had the patches green itself that resembled Freedom's. It has been fixed back to Mercenary Blue, also added some further blue decorations to make sure he's easily spot as a Mercenary.
|
||||
* One of the "Merc/LC Suit" variants, which uses a slate-gray desert camouflage, now uses another camouflage fit for Urban combat and only on the jumpsuit.
|
||||
* One of the "Exos" variants, "Green Camo", was badly made and had green eyes and patches. This has been redone to be much better.
|
||||
* "Proto-Exo Merc" was using a texture from the Ecologists. It now uses one from the Mercs.
|
||||
* All the "Exo" variants (ExoSEVA, Exosuit, Radsuit, etc) were using an unfit bright forest camo. The Original has been restored.
|
||||
Also they had transparent eyes for some reason, unlike the others, this has been synchronized.
|
||||
|
||||
-MILITARY-
|
||||
* SKAT-9 and SKAT-9M have been completely overhauled, with a much more improved normal map, new specular map and texture fixes.
|
||||
* SKAT-9 Tinted Visors have been restored, previously they were transparent.
|
||||
* Military SEVA has been overhauled to fit in with the overhauled model itself.
|
||||
* Military Exoskeleton (and in turn, ExoSEVA) had a texture with no mipmaps and wasn't even using a normal map. This has been fixed.
|
||||
* Military Exolight had a texture with no mipmaps and wasn't even using a normal map. This has been fixed.
|
||||
(NOTE: This is also the "Woodland Exosuit", so it fixes more than just the Military Exolight)
|
||||
* Soldiers & Spetsnaz had a lower-res texture with no mipmaps, this has been fixed.
|
||||
|
||||
-ECOLOGIST-
|
||||
* All SPP suits have been improved:
|
||||
- All now use a proper Normal Map made by Argus.
|
||||
- All variants now have a better contrast for the highlighting parts (on the legs).
|
||||
- Specular completely changed to make it so the suit is reflective, especially the highlights. This is similar to what the construction workers use.
|
||||
- Blue variant has been changed to a more Ecologist fit type, which is more a mix of Cyan & Blue. Also has torso bumps.
|
||||
- Brown variant is now a much darker dirt-brown color, without torso bumps.
|
||||
- Red variant is a much more "fancy" type of the SPP, with black torso bumps and brass decorations.
|
||||
- Yellow variant is a more mundane type of yellow.
|
||||
- White variant is the same, but also has darker misc items to help with contrast.
|
||||
* Ecologist Proto-Exo had no normal map, now it does. This is thanks to "Dynamic".
|
||||
* All "Ecomercs" had boring details, just some black or a lighter shade of blue and the Ecologist symbol, they have been revamped:
|
||||
- "Armored SEVA" Ecomerc now uses a blue-&-orange SEVA suit, with an orange backpack and better emblem. This will make him easily identifiable at a distance.
|
||||
- "Twilight" Ecomerc now uses SEVA/PS5 armor for the torso, while preserving the pouches in the belly and the oxygen tanks are fixed. Also has a blue-and-orange color scheme.
|
||||
- "LC Suit" Ecomerc now has many orange color scheme details, a better emblem and orange visors.
|
||||
* Variant 1 of the Ecoguard has been changed, it now has black shoulderplates and better, unique kneeplates. Also uses its own normal map.
|
||||
* Variant 2 of the Ecoguard has broken shoulders, this has been fixed, as well as given orange tint to decorations to make him be spotted better. (It was easy to confuse him for a mercenary)
|
||||
* Variant 3 of the Ecoguard has broken shoulders, this has been fixed.
|
||||
* "SEVA Ecoguard" has broken shoulders, this has been fixed.
|
||||
* "Orange Guard" Ecologists were using the wrong normal map, this has been fixed.
|
||||
* Restored original "Scientist" suit, the one in Anomaly used an Ecologist patch for no reason. Also improved the normal map.
|
||||
|
||||
-MONOLITH-
|
||||
* The weird digital camo that was applied over the whole texture and was badly compressed and saved with no mipmaps has been removed, now it uses the original Monolith armor textures instead.
|
||||
* Monolith SEVA Variant 2 has been revamped, it's now a more intricate "Loner" SEVA that uses Monolith colors & urban camo.
|
||||
* All "Old/ShoC" models were using wrong normal maps, new one was made from scratch for all.
|
||||
* All "Old/ShoC" models now have 3 texture varieties; default camo, no camo green jumpsuit from Builds and Monolith Sunrise suit.
|
||||
* All "New/CoP" models now have 3 texture varieties: default camo, Monolith Sunrise and Monolith PS5.
|
||||
* One of the "face" model variants now have a different, better face and use Monolith Sunrise suit.
|
||||
* One of the variants had a duplicate texture, it now uses a "Duty PS5M" recolored to be using Monolith Colors & Urban Camo.
|
||||
* The default gasmasks were somehow colored green, this has been reverted back to light gray.
|
||||
* "Monolith Exosuit" was using a terrible texture that looked like a mix of Army Suit and Exosuit, this has been fixed now.
|
||||
* "Monolith SKAT" has been completely overhauled, also has mipmaps and a proper normal map.
|
||||
* "Monolith ExoSEVA" was missing a normal map, this has been fixed.
|
||||
|
||||
-RENEGADES-
|
||||
* "Renegade Exoskeleton" Variant 1 was broken and had missing normal map & mipmaps. It has been redone to resemble a Neutral Exoskeleton that has been looted.
|
||||
* "Renegade Exoskeleton" Variant 2 has been redone to resemble a Looted Freedom & Duty Exoskeleton.
|
||||
* "Renegade SEVA" has been redone to resemble a combination of looted Neutral SEVA & Monolith SEVA, taken from corpses and made patchworks.
|
||||
|
||||
-SIN-
|
||||
Sin has been REDONE, for the full experience though make sure you install the "Sin Overhaul" addon. All textures may now use the new Sin Camo, which is some sort of flesh being torn apart to reveal a dark purple skin, fit for a Demon. The pattern is also meant to look like emission waves, fitting Sin even more.
|
||||
* All Sin faces that had "red strips" have been decolorized and darkened.
|
||||
* Sin Stalker Variant 1 is still a PS5, but this time with its own Dark Purple color.
|
||||
* Sin Stalker Variant 2 is now a Sunrise instead, with the new standardized Camo and scheme fitting its "Dark Stalker" aspect.
|
||||
* Sin Stalker Variant 3 is now an STS suit, to indicate it is taken or traded from Monolith, completely darkened and made fit for its fainted Red color.
|
||||
* "Sin Proto-Exo" now shares texture with the first variant.
|
||||
[SIN OVERHAUL]
|
||||
* "Sin Proto-Exo" is now The Iron Spirit, a combination of parts of the Exoskeleton. Makes it resemble a proper cultist.
|
||||
* "Sin Armored Trenchcoat" variants all now have better trenchcoat texture with Sin-appropriate camo, high-quality concealed armors and other additions like Sin-modified gasmasks.
|
||||
|
||||
-UNISG-
|
||||
* Some UNISG variants were missing normal maps, this has been fixed.
|
||||
* Some UNISG variants were using the zombie face, they now use a light-skinned bright-eyed one instead.
|
||||
* One Exoskeleton variant was missing mipmaps, this has been fixed.
|
||||
[UNISG OVERHAUL]
|
||||
* All suits (especially LC) now have a more consistent camo that should indicate their rank:
|
||||
- Variant 1 is "Trooper", a Gray&Red spot-type camo.
|
||||
- Variant 2 is "Officer/Recon", same as the "Trooper" but with Light Mint as the main color instead of Gray.
|
||||
- Variant 3 is "Commander/Specops", which is tiger-stripes with the borders red and the inside green, main colour simply being dark gray.
|
||||
* Exoskeletons now have their unique style:
|
||||
- First Variant is a "Trooper" type that uses a slightly worn Carapace type of armor and the whole armour is camouflaged, with subtle details.
|
||||
- Second Variant is a "Commander/Specops" type with better carapace armor and highlighted details.
|
||||
- Both variants have their own type of gasmask.
|
||||
- Both variants uses a unique Normal Map & Specular Map.
|
||||
* "LC SEVA" suits have their unique style:
|
||||
- First variant is a complete SEVA suit with UNISG colours and subtle "Officer/Recon" camo, as well as brass decorations.
|
||||
- Second variant is a complete ISRIT jumpsuit with UNISG colours and more Carbon Fibre.
|
||||
- Second variant uses its own normal map & specular map.
|
||||
* "Proto-Exo" has been overhauled, it is now a combination of the "UNISG SEVA" and parts of the Exoskeleton itself, slimmed down heavily.
|
||||
|
||||
_____MODELS_____
|
||||
Smoothing errors fixed, shading and smoothing improved on:
|
||||
-ALL-
|
||||
All NBCs completely overhauled, it is now meant to look like a true, makeshift NBC. Comes as a variety of either Primitive which uses GP5 or Modern which uses M40 gasmask, Bandits & Loners have unique variants that are a combination of Trenchcoat & Rookie Jacket.
|
||||
* Primitive is the classic one that uses the GP-5, has no visible "naked" parts.
|
||||
* Modern uses the XM-40 gas mask, with dual canisters as well as bigger than usual, has no visible "naked" parts.
|
||||
* Bandits use a variant of the "Primitive" type that is cloaked by a Semi-Trenchcoat.
|
||||
* Loner has a variety of everything; Primitive, Modern, Rookie and even one Trenchcoat GP5.
|
||||
* Sin, if using "Sin Overhaul" itself, will have masked actual half-Mutants for NBCs.
|
||||
|
||||
* Most Sunrise had "puffy round" gastanks, this has been fixed. (It was actually caused by a texture)
|
||||
* SEVAs
|
||||
* Exoskeletons
|
||||
* Exolights
|
||||
* Proto-Exo
|
||||
* ExoSEVAs [Also, all ExoSEVAs had bad glass shape and broken oxygen tanks, both fixed.]
|
||||
* Nosorogs [Also, all Nosorogs had broken bones, where the legs and arms would go upwards instead of downwards. Now it is fixed.]
|
||||
|
||||
-ZOMBIFIED-
|
||||
* "Ecozombies" [Also, now have broken glass, the glass is also different for each zombie.]
|
||||
|
||||
-LONERS-
|
||||
* "Hybrid SEVA" (which is actually factionless just like the Loner SEVA itself) had a massive overhaul that makes it look like a proper patchwork of the SEVA with the torso replaced to be better against ballistic damage.
|
||||
* "Wastelander" overhauled, it is now a combination of the Sunrise and parts of CS-3b; helmet, kneepads and elbowpads
|
||||
* "Nomad" overhauled, still resembles the original but uses STALKER assets, it's a combination of the Sunrise and CS-2 with much bigger pouches.
|
||||
* All "Rookies" and their variants.
|
||||
* All "Sunrise Suits" and their variants.
|
||||
[The "Merc" gasmask variant also had his oxygen tanks changed to a backpack]
|
||||
|
||||
-BANDITS-
|
||||
* Some Trenchcoat variants now use a "fat" variant that may or may not have a looted gasmask.
|
||||
* "Looted SKAT" overhauled, in the sense that it is an actual "Looted SKAT" now, where the clothes are ditched but the armour kept.
|
||||
* "Armored Trenchcoats" are now properly using a variety of armors inside their trenchcoats.
|
||||
* All "Rookie Bandits" and their variants.
|
||||
* All Looted Merc/LC Suits.
|
||||
|
||||
-CLEAR SKY-
|
||||
* Clear Sky Rookies
|
||||
* Clear Sky Sunrise [CS-2b]
|
||||
* CS-1a
|
||||
[One new variant that uses CS-2 gasmask]
|
||||
* CS-1b
|
||||
[One new variant that uses CS-2 gasmask]
|
||||
[One new variant that is a mix of CS-2 legs and CS-3b arms]
|
||||
* CS-2
|
||||
[New variant that is the same but "Open-Face"]
|
||||
[New variant that makes him look like a scavenger, with a backpack and parts of the CS-1a including Pauldrons]
|
||||
* CS-3a
|
||||
[New variant that is the same but without the gasmask, revealing a face]
|
||||
[New variant that is a mix of CS-3a itself, CS-1a and CS-2, looking much more armored and equipped]
|
||||
* CS-3b
|
||||
* SKAT-9 & SKAT-9M
|
||||
|
||||
-DUTY-
|
||||
* All "PS5m" variants.
|
||||
* All "Duty with Face" variants.
|
||||
* Colonel Petrenko.
|
||||
* General Voronin.
|
||||
|
||||
-FREEDOM-
|
||||
* Wind of Freedom
|
||||
* Sentinel of Freedom
|
||||
* Guardian of Freedom
|
||||
|
||||
-MERCENARY-
|
||||
* "Merc SKAT" overhauled, it is now a combination of the LC Torso & Gasmask with the SKAT limbs.
|
||||
* "Twilight" Suits
|
||||
* Merc/LC Suits
|
||||
|
||||
-MILITARY-
|
||||
* "Military SEVA" is now a combination of the SEVA & SKAT, still clearly visible that it is indeed a SEVA.
|
||||
* "Balaclava Soldiers" now use the proper head mesh.
|
||||
* All "Soldiers with Bandanas"
|
||||
* All "Soldiers with Berets"
|
||||
* SKAT-9 & SKAT-9M
|
||||
* Berill-5 and Berill-5M
|
||||
|
||||
-ECOLOGIST-
|
||||
* All "SPP" variants
|
||||
* "Proto-Exo" had some minor overhaul, specifically proper metallic armpads. (Credits to Dynamic for these pads)
|
||||
* "Armored SEVA" Ecomerc
|
||||
* "Twilight" Ecomerc [Also removed pointless oxygen hose]
|
||||
* "LC Suit" Ecomerc
|
||||
|
||||
-MONOLITH-
|
||||
* All GP5 models
|
||||
* All "Old/ShoC" models
|
||||
* All "Face" models
|
||||
* SKAT is now a SKAT-9 (Plates, Mask) instead of a SKAT-9M (Pouches, Gasmask)
|
||||
|
||||
-RENEGADES-
|
||||
* Looted LC Suits
|
||||
* "Renegade Hoodie" had a major overhaul, now uses only original materials instead of Killing Floor. (Credits to "nestantart" for original model & texture)
|
||||
|
||||
-SIN-
|
||||
* All "Stalker" Variants.
|
||||
* All "LC Suits"
|
||||
* All "Trenchcoat" Variants.
|
||||
* "Sin NBCs" are now actually unique by making them look like half-mutants.
|
||||
|
||||
-UNISG-
|
||||
* Nosorog was the "Fake Altyn" variant, it is now back to the Metro Helmet variant.
|
||||
* LC Suits
|
||||
* STS Suits
|
||||
|
||||
-MISC-
|
||||
Various World Models were using Unique, but Duplicate, textures. This made no sense, they now use the correct default shared textures all.
|
||||
___________
|
||||
LORE
|
||||
___________
|
||||
|
||||
Just in case you are either curious, worried or skeptical about something, I have put some "Lore Reasons"
|
||||
|
||||
"Broken Glass" for Ecozombies reasoning:
|
||||
Apart of the broken glass itself simply being impressive, the SPP is a suit made for hazardous operations, and since it is indeed made by the Ecologists in the Zone (or with knowledge of it), Psy protection is a must.
|
||||
So, considering that, how is it that "full zombies" are going around with these suits? They should all be dead, it makes no sense, especially with how the subject is ONLY zombified, not a full zombie.
|
||||
Also, do notice how in no other STALKER game there are things such as "SEVA Zombies", or even zombies with helmets (Save for one Beril from ShoC), it gives you an idea that zombies remove any headgear to be, perhaps, more in tune with the "zombification" itself.
|
||||
So in order to make at least *some* sense, the glass is broken to give the idea that this is how they lost their sanity and became zombies.
|
||||
|
||||
"Sin Overhaul" Reasoning & Lore:
|
||||
I always wanted to consider Sin as a Cultist type of faction but with some will of their own still; instead of simply brainwashing people to join their cause, they spread the word around to convince them that The Zone is alive and sacred instead.
|
||||
They're not fools, they know they have very little members and may continue so, so instead of using Pawns as cannon-fodder, they equip them with their own armours taken from other factions, all dark to try to avoid being noticed. Hence the "Dark Stalker" lore.
|
||||
While highly aggressive, they shouldn't be territorial except to their own territory and what they consider sacred; The Zone itself, which includes the Nuclear Plant and especially the Generators.
|
||||
So, they mostly prefer being left alone, but don't mind sending missionaries to get more members. Despite having Pawns, they still treat them with some respect and not as just meat, unlike Monolith itself.
|
||||
And in terms of their relationship with Monolith, Sin should be the new de facto bosses of "Monolith" instead, the ones who are actually pulling the strings now.
|
||||
|
||||
"UNISG Overhaul" Reasoning & Lore:
|
||||
UNISG, by default, uses a ridiculous camo which may be a "temporal" solution to GSC's attempt at making ISG, then UNISG and then finally scrapping it (yet some very vague references are left out in Call of Pripyat's quest regarding a drone)
|
||||
Instead of going for something more subtle, I've decided to keep the ridiculous aspect but also not go way to far, it's not a literal clown camo, it's a camo that MAY work, similar to the Clear Sky camo.
|
||||
For that reason, they have those kind of camos instead.
|
||||
|
||||
"Ecologist Mercenary" Lore:
|
||||
* They are Mercenaries, of course, paid by and affiliated to the Ecologists.
|
||||
* Their job is not only to be the bodyguard, backup and sometimes guinea pig, but also the first one and hopefully only to get shot, or mauled by a mutant.
|
||||
* So they generally get paid more than if they weren't working for the ecologists and should get much more advanced inventory, hence you see stuff like the Merc Twilight armor but with a PS5/SEVA torso armor instead (This one is also better for mutant attacks, anyway).
|
||||
* All these emblems and new paint scheme is mostly done by request from the Ecologists, but also by the thinking of some Mercs (Not all mercies are dummies, you know?): Considering the Ecologists had quite the problems with mercs themselves, especially Wolfhound's team, even if somewhat neutral these days and Wolfhound is gone, they don't want to run any more risk, hence this color scheme.
|
||||
* The very flashy orange is exactly for that reason; to be seen by others, especially Hunters, so not to be shoot by them.
|
||||
But if that's a hostile human, that's fine, since as mentioned before they have to be the ones to be shot first, not the more important eggheads they are babysitting for.
|
||||
|
||||
"Monolith are SKAT-9 instead of SKAT-9M" Lore:
|
||||
[SPOILER!]
|
||||
If you have played the classic STALKER series, especially "Shadow of Chernobyl", then you will know that during the Siege of CNPP, the Military also took role and they sent their best, including "Military STALKERs", who wore the SKAT-9 armours. Back then there was no SKAT-9M, despite it appearing in "Clear Sky" which is the pre-sequel.
|
||||
But whatever the case, in my view, I consider SKAT-9 to be an "older" variant of the SKAT itself, but still as good, only being just a bit bad for radiation and weight carry.
|
||||
So for that reason, I think it would make sense that Monolith would have A LOT of re-acquired SKAT-9s and not SKAT-9Ms.
|
||||
|
||||
"Military SEVA" Reasoning:
|
||||
I had some people get confused as to why the Military would use SEVAs.
|
||||
I believe the reason is very simple though: SEVA is a versatile suit made to be a jack-of-all-trades when it comes to zone exploration, where it sacrifices a bit of elemental resistance to add some to ballistics protection.
|
||||
For the Military, it may not be as important, but I expect SEVAs to be carried by Military STALKERs more often than not, so, it does make sense they'd use a combination of some SKAT parts with the SEVA.
|
||||
___________
|
||||
FEEDBACK/CONTACT
|
||||
___________
|
||||
|
||||
For suggestions, it would be best if you first explain what should be done, and then why. Providing other information, such as screenshots, sources and the like is highly encouraged.
|
||||
For bug reporting, it would be best if you provide a screenshot and if you can, the name of the object in question that has issues. This can be done with the Debug Menu, simply press F7 in-game while aiming at a model, then "Get Info" and screenshot that.
|
||||
Also, explaining the issue in detail would be nice, if you know how, for example...It uses the wrong normal map, normal map is broken, specular is too high, texture is compressed badly, it has missing mipmaps, etc...
|
||||
|
||||
___________
|
||||
COPYRIGHT/LICENSE
|
||||
___________
|
||||
|
||||
You are allowed to use this mod on other STALKER games (This includes the original series and major mods like Dead Air) AS LONG AS you provide credit to the original author, Blackgrowl, and you put a link to the original mod itself.
|
||||
Taking textures from it is only allowed if you explicitly state that you are using FVM, put a link and credit the author (Blackgrowl), nothing else needs to be done. Putting it on other mods, even if it's the whole pack (modpack), follows the same rule as stated before.
|
||||
There is a very high chance that "conflicts" will happen, in which case, simply tell the client to acquire and load FVM last so FVM textures are used. FVM will always be inherently the latest, as long as you don't change the texture names.
|
||||
You are absolutely not allowed to get any monetary or commercial gain from this. Besides, that breaks GSC's license, so you'd be facing a whole company instead.
|
||||
___________
|
||||
CREDITS
|
||||
___________
|
||||
|
||||
Lots of Credits go to "Argus", one of the "Photorealistic Zone" developers, for he made properly baked Normal Maps, which this mod uses.
|
||||
Credits go to "nestantart" for the original "Clear Sky Hoodie" model, which is used for Renegades.
|
||||
Credits go to "Dynamic" for some of her model-enhancing work provided.
|
||||
Credits go to "Rolan" for making the Exoskeleton texture, which I have taken some parts of.
|
||||
I would like to give thanks to "LVutner" for help provided, he was able to make my Workflow much faster, easier and efficient.
|
||||
I would like to give thanks to "SD" for help provided, giving good technical information.
|
||||
I would like to give thanks to "Jerkonov", "Dux Fortis", "Asnen", "Gwub", "Cr3pis", "Shen" and "Thundervision" for the feedback given.
|
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_dolg/stalker_dolg1a.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_dolg/stalker_dolg1a.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_dolg/stalker_dolg1d.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_dolg/stalker_dolg1d.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_dolg/stalker_dolg_1.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_dolg/stalker_dolg_1.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_freedom/stalker_free0a.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_freedom/stalker_free0a.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_freedom/stalker_freedom3a.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_freedom/stalker_freedom3a.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_freedom/stalker_freedom_3.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_freedom/stalker_freedom_3.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_01.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_01.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_02.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_02.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_03.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_03.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_04.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_04.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_05.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1a_face_05.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_06.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_06.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_07.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_07.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_08.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_08.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_09.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_09.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_10.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_1b_face_10.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_4.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_greh/stalker_greh_4.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_1a_sci.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_1a_sci.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_1b_sci.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_1b_sci.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_1c_sci.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_1c_sci.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_proto.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_proto.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_scientific.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_isg/stalker_isg_scientific.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_monolith/stalker_monolith_1.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_monolith/stalker_monolith_1.ogf (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_nebo/stalker_nebo_seva_1.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_nebo/stalker_nebo_seva_1.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_nebo/stalker_nebo_seva_2.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_nebo/stalker_nebo_seva_2.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_neutral/stalker_neutral2b_old.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_neutral/stalker_neutral2b_old.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_neutral/stalker_neutral_nauchni2.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_neutral/stalker_neutral_nauchni2.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_neutral/stalker_neutral_nauchniy.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_neutral/stalker_neutral_nauchniy.ogf (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_renegade/stalker_renegade_4a.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_renegade/stalker_renegade_4a.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_soldier/stalker_soldier_2.ogf (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/meshes/actors/stalker_soldier/stalker_soldier_2.ogf (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_face_mask_06.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_face_mask_06.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_monoold1_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_monoold1_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_mtalker.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_mtalker.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_dolg_4_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_dolg_4_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_freedom_1_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_freedom_1_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_isg_exoskeleton.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_isg_exoskeleton.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_monolith_1.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_monolith_1.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_monolith_1_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_monolith_1_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_monolith_2_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_monolith_2_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_neboseva1_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_neboseva1_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_renegde_3_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_renegde_3_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_soldier4a_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_soldier4a_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_soldier_4_bump#.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_soldier_4_bump#.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_soldier_4_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_soldier_4_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_specnaz_1.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_specnaz_1.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_specnaz_us_bump.dds (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/act_stalker_specnaz_us_bump.dds (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/isg/act_stalker_isg_sci_2.thm (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/isg/act_stalker_isg_sci_2.thm (Stored with Git LFS)
Binary file not shown.
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/isg/act_stalker_isg_sci_3.thm (Stored with Git LFS)
BIN
mods/Fixed Vanilla Models & Textures/gamedata/textures/act/isg/act_stalker_isg_sci_3.thm (Stored with Git LFS)
Binary file not shown.
|
@ -0,0 +1,19 @@
|
|||
<?xml version='1.0' encoding="windows-1251"?>
|
||||
<xml>
|
||||
#include "gameplay\character_desc_general_*.xml"
|
||||
|
||||
;#include "gameplay\character_desc_general_actor.xml"
|
||||
;#include "gameplay\character_desc_general_army.xml"
|
||||
;#include "gameplay\character_desc_general_bandit.xml"
|
||||
;#include "gameplay\character_desc_general_csky.xml"
|
||||
;#include "gameplay\character_desc_general_dolg.xml"
|
||||
;#include "gameplay\character_desc_general_ecolog.xml"
|
||||
;#include "gameplay\character_desc_general_freedom.xml"
|
||||
;#include "gameplay\character_desc_general_greh.xml"
|
||||
;#include "gameplay\character_desc_general_isg.xml"
|
||||
;#include "gameplay\character_desc_general_killer.xml"
|
||||
;#include "gameplay\character_desc_general_monolith.xml"
|
||||
;#include "gameplay\character_desc_general_renegade.xml"
|
||||
;#include "gameplay\character_desc_general_stalker.xml"
|
||||
;#include "gameplay\character_desc_general_zombied.xml"
|
||||
</xml>
|
|
@ -0,0 +1,41 @@
|
|||
<specific_character id="sim_default_freedom_0_default_15" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_freedom_0.xml"
|
||||
<icon>ui_inGame2_Freedom_1</icon>
|
||||
<snd_config>characters_voice\human\freedom_1\</snd_config>
|
||||
<visual>actors\stalker_freedom\stalker_freedom_1a</visual>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="sim_default_freedom_0_default_16" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_freedom_0.xml"
|
||||
<icon>ui_inGame2_Freedom_1</icon>
|
||||
<snd_config>characters_voice\human\freedom_1\</snd_config>
|
||||
<visual>actors\stalker_freedom\stalker_freedom_1a_backpack</visual>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="sim_default_freedom_0_default_17" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_freedom_0.xml"
|
||||
<icon>ui_inGame2_Freedom_1</icon>
|
||||
<snd_config>characters_voice\human\freedom_3\</snd_config>
|
||||
<visual>actors\stalker_freedom\stalker_freedom_1a_mask</visual>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="sim_default_freedom_0_default_18" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_freedom_0.xml"
|
||||
<icon>ui_inGame2_Freedom_1</icon>
|
||||
<snd_config>characters_voice\human\freedom_1\</snd_config>
|
||||
<visual>actors\stalker_freedom\stalker_freedom_1b</visual>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="sim_default_freedom_0_default_19" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_freedom_0.xml"
|
||||
<icon>ui_inGame2_Freedom_1</icon>
|
||||
<snd_config>characters_voice\human\freedom_1\</snd_config>
|
||||
<visual>actors\stalker_freedom\stalker_freedom_1b_backpack</visual>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="sim_default_freedom_0_default_20" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_freedom_0.xml"
|
||||
<icon>ui_inGame2_Freedom_1</icon>
|
||||
<snd_config>characters_voice\human\freedom_3\</snd_config>
|
||||
<visual>actors\stalker_freedom\stalker_freedom_1b_mask</visual>
|
||||
</specific_character>
|
BIN
mods/Fixed Vanilla Models and Textures/gamedata/meshes/actors/stalker_bandit/light_bandit.ogf (Stored with Git LFS)
Normal file
BIN
mods/Fixed Vanilla Models and Textures/gamedata/meshes/actors/stalker_bandit/light_bandit.ogf (Stored with Git LFS)
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue