Вопросы по которым есть ответы:1.увеличить максимальный переносимый вес
2.сделать главного героя бессмертным, бесконечно выносливым
3.изменить длину палочки прицела
4.изменить параметры конкретного оружия
5.изменить параметры конкретного боеприпаса
6.заставить фонарик светить дальше
7.редактировать торговцев, торговлю с обычными сталкерами
8.редактировать костюмы
9.сделать так, чтобы стволы не убирались сами
10.сделать вид от третьего лица
11.редактировать гранаты
12.реализовать качание прицела
13.отключить вспышку выстрела у винтореза, вала, ПБ
14.сделать, чтобы у главного героя было много денег
15."изменить" рост главного героя
16.где лежат конфиги сталкеров и существ Зоны
17.где лежат конфиги артефактов
18.Как научить техника делать все апгрейды?
Как увеличить максимальный переносимый вес?
откройте файл gamedata\configs\creatures\actor.ltx, найдите там строку max_walk_weight =60, это максимальный вес(60кг), в файле gamedata\configs\system.ltx найдите
строку max_weight = 50 (если несёте больше этого веса, то быстро расходуется сила), поменяйте эти значения на желаемые.
Как сделать главного героя бессмертным, бесконечно выносливым?
Параметры, отвечающие за потерю НР находятся в файле gamedata\configs\creatures\actor.ltx, эти строки:
....
satiety_critical = 0.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться
radiation_health_v = 0.004 ;уменьшение здоровья при воздействии радиации
health_hit_part = 1.0 ;процент хита, уходящий на отнимание здоровья
power_hit_part = 0.1 ;процент хита, уходящий на отнимание силы
bleeding_v = 0.002 ;0.0005 ;потеря крови при номинальной ране в секунду
...
сделайте их равными 0.0 и вы бессмертны
...
wound_incarnation_v = 0.0001 ;0.003 ;скорость заживления раны
min_wound_size = 0.0256 ;минимальный размер раны, после которого она считается зажившей
psy_health_v = 0.001 ;скорость восстановления psy-здоровья
...
увеличьте эти параметры в несколько раз
для бесконечной выносливости обнулите эти параметры:
walk_power = 0.00001 ;умешьшение силы за секнду во время ходьбы без учета веса ноши
walk_weight_power = 0.00005; ;умешьшение силы за секнду во время ходьбы с учетом веса ноши, для максимального допустимого веса
для увеличения высоты прыжка, измените этот параметр:
jump_speed = 6
Как изменить длину палочки прицела?
в gamedata\configs\system.ltx отредактировать эти строки:
[hud_cursor]
;все размерv в процентах от длинv экрана
cross_length = 0.015 ;длина "палочки" прицела
min_radius = 0.0 ;минимальнvй радиус прицела (при нулевой дисперсии)
max_radius = 1.0 ;максимальнvй радиус
radius_lerp_speed = 0.08 ;скорость интерполљции положений прицела
cross_color = 0.7,0.7,0.7,0.5 ;цвет прицела
disp_scale = 0.08 ;масштаб прицела (относительно радиан)
Как изменить параметры конкретного оружия?
Параметры стволов заданы в конфигурационных файлах по адресу gamedata\configs\weapons
Возьмем, для примера, конфиг w_g36.ltx. Он делится на разделы:
Первый раздел
Здесь хранится общая информация о оружии - его класс, тип, ссылки на спавн и т.д. Нас интересуют следующие строки:
description = enc_weapons1_wpn-g36 - ссылка на string_id, из которого игра подгружает описание этого оружия.
ef_main_weapon_type = 2 - основной тип, к которому принадлежит оружие
ef_weapon_type = 6 - подтип, к которому принадлежит оружие
Второй раздел
Содержит модификаторы, которые даются к углу зрения/дальности обзора NPC, держащего это оружие в руках:
holder_range_modifier = 1.85 - во сколько раз увеличивается eye_range
holder_fov_modifier = 0.3 - во сколько раз увеличивается eye_fov
Третий раздел
Содержит данные о самом оружии, его некоторых характеристиках:
cost = 18000 - базовая цена (торговцы умножают её на некоторый коэффициент)
weapon_class = assault_rifle - класс оружия (здесь - штурмовая винтовка)
ammo_mag_size = 30 - размер магазина
ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap - типы используемых патронов
grenade_class = ammo_m209 - тип используемых гранат
fire_modes = 1, -1 - режимы ведения огня
hand_dependence = 1 - засивимость о рук (?) - возможно, речь идет о качании ствола
single_handed = 0 - держится ли только в одной руке
slot = 2 - слот в инвентаре
animation_slot = 2 - вид анимации (для пистолета/для винтовки)
inv_name = wpn-g36 - ссылка на имя, отображаемое в инвентаре, тоже берется из string table, как и описание
inv_name_short = wpn-g36 - короткое имя; в данном случае используется то же самое
inv_weight = 3.6 - вес
inv_grid_width = 5 - координаты первого угла иконки по x
inv_grid_height = 2 - координаты первого угла иконки по y
inv_grid_x = 0 - координаты второго угла иконки по x
inv_grid_y = 10 - координаты второго угла иконки по y
Четвертый раздел
В четвертом разделе хранится информация о износе/отдаче оружия. Практически все параметры там снабжены комментариями, поэтому приведу лишь самые интересные:
cam_relax_speed = 5.7 - скорость возврата в исходное положение
cam_dispersion = 0.2 - увеличения угла (в градусах) с каждым выстрелом
fire_dispersion_condition_factor = 5 - увеличение дисперсии в процентах при максимальном износе
misfire_probability = 0.003 - вероятность осечки при максимальном износе
misfire_condition_k = 0.05 - порог (в данном случае - 5%), после которого оружие может заклинивать
condition_shot_dec = 0.0002 - увеличение износа при каждом выстреле
Пятый раздел
Здесь хранится множество параметров, из которых наиболее интересны эти:
PDM_disp_base = 3.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ (Главный Герой) стоит на месте в полный рост;
PDM_disp_vel_factor = 1.3 - множитель, на который умножается базовая дисперсия оружия, когда ГГ крутит оружием или бежит;
PDM_disp_accel_factor = 1.3 - множитель, на который умножается базовая дисперсия оружия, когда ГГ бежит в спринте;
PDM_crouch = 1.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ идет пригнувшись;
PDM_crouch_no_acc = 1.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ стоит на месте, пригнувшись;
hit_power = 0.50, 0.54, 0.57, 0.60 - сила выстрела
hit_impulse = 105 - импульс пули (сила, которую летящая пуля передает жертве, влияет на поведение ragdoll-тела)
hit_type = fire_wound - тип причиняемых повреждений, в данном случае - пулевые ранения (параметр в синглплеере ни на что не влияет)
fire_distance = 600 - максимальная дистанция для выстрела
bullet_speed = 925 - начальная скорость пули
hud = wpn_g36_hud - внешний вид оружия
Шестой раздел
position = -0.026, -0.132, 0.0 - позиция по отношению к игроку (?)
orientation = 0, 0, 0 - направление, в которое смотрит ствол (?)
Седьмой раздел
Содержит описания визуальной стороны оружия и некоторые другие параметры:
startup_ammo = 90 - как нетрудно догадаться, стартовое количество патронов (в синглплеере ни на что не влияет)
visual = weapons\g36\wpn_g36.ogf - модель оружия, используемая NPC, а также игроком при виде от третьего лица
ph_mass = 4 - физическая масса, используемая при расчетах
scope_status = 1 - ситуация со съемным прицелом
silencer_status = 0 - ситуация со съемным глушителем
grenade_launcher_status = 0 - ситуация с подствольным гранатометом
Параметры:
0 - нет, новый прикрепить нельзя
1 - уже есть, несъемный
2 - нет, но можно установить новый
zoom_enabled = true - есть ли зум (прицеливание)
scope_zoom_factor = 33.3 - какой зум дает прицеливание (здесь - 1.8х)
scope_texture = wpn\wpn_crosshair_g36 - текстура прицельной сетки
shell_point = 0.15, 0.0, -0.05 - точка вылета гильз
shell_dir = 0.0, 1.0, 0.0
fire_point = -0.000000,0.062000,0.134000 - точка выстрела
fire_point2 = 0.30, 0.00, 0.05 - точка выстрела (2)
fire_bone = wpn_body
orientation = 0, 0, 0 - направление
position = 0, 0, 0 - позиция
visual = weapons\g36\wpn_g36_hud.ogf - модель, отображаемая у нас в руках
Изменение описаний
Описания оружия хранятся в файле: ...\S.T.A.L.K.E.R\gamedata\config\text\rus\string_table_enc_weapons.xml
В нем хранятся строки с названиями и описаниями, на которые ссылаются конфиги оружия. Например, тот же G36 ссылается сюда:
[...]
<string id="enc_weapons1_wpn-g36">
<text>Штурмовая винтовка немецкого производства, представляющая собой первоклассный образец
современного оружия - лёгкого, надёжного и эргономичного.\n Боеприпасы:\n обычный 5,56x45 мм
SS109,\n бронебойный 5,56x45 мм АР.</text>
[...]
<string id="wpn-g36">
<text>ГП37</text>
[...]Меняя их содержимое, мы меняем описания/названия данного оружия.
Как изменить параметры конкретного боеприпаса?
Параметры амуниции заданы в файле по адресу gamedata\configs\weapons\weapons.ltx
например:
visual = weapons\ammo\ammo_556x45_ss190.ogf - модель коробки с патронами
description = enc_weapons1_ammo_ammo-5.56x45-ss190 - ссылка на string_id, из которого игра подгружает описание этого типа патронов
cost = 320 - стоимость одной коробки
box_size = 30 - количество патронов в одной коробке
inv_name = ammo-5.56x45-ss190 - ссылка на string_id, содержащий имя для инвентаря
inv_name_short = ammo-5.56x45-ss190_s - ссылка на string_id, содержащий краткое имя для инвентаря
inv_weight = 0.33 - вес
inv_grid_width = 2 - координаты первого угла иконки по x
inv_grid_height = 1 - координаты первого угла иконки по y
inv_grid_x = 14 - координаты второго угла иконки по x
inv_grid_y = 11 - координаты второго угла иконки по y
k_dist = 1 - коэффициент дальности, сама дальность - в стволе, тупо расстояние.
k_disp = 2.5 - кучность, завязана с кучностью в стволе
k_hit = 1 - убойность, завязана с убойностью в стволе
k_impulse = 1 - чисто наскока эффектно ногами непись дрыгнет во время кердыка
k_pierce = 1 - коэффициент наскока испорится броня при попадании
impair = 1 - коэффициент износа ствола от пули
buck_shot = 1 - кол-во составляющих в пуле (напр картечь - 4, пуля - 1)
tracer = on - является ли патрон трассирующим (on/off)
wm_size = 0.05 - визуальный размер дырки на стене от пули
Как заставить фонарик светить дальше?
в файле gamedata\configs\models\objects\light_night.ltx увеличьте range-параметры
Подробное описание конфигов:
[torch_definition]
range = 30 ; дистанция в метрах.
range_r2 = 30 ; дистанция в метрах (для динамического освещения).
color = 0.22,0.22,0.22,0.2 ; цвет, из 4 компонентов <r,g,b,a> значением от 0 до 3.
color_r2 = 1.1,1.1,1.1,0.0 ; цвет, из 4 компонентов <r,g,b,a> значением от 0 до 3
(для динамического освещения).
omni_range = 3 ; дистанция освещения от фонариков неписей в метрах.
omni_range_r2 = 3 ; дистанция освещения от фонариков неписей в метрах (для динамического
освещения).
omni_color = 1.0,1.0,1.0,0.1 ; цвет фонариков неписей, из 4 компонентов <r,g,b,a>
значением от 0 до 3.
omni_color_r2 = 1.0,1.0,1.0,0.1 ; цвет фонариков неписей, из 4 компонентов <r,g,b,a>
значением от 0 до 3 (для динамического освещения).
color_animator = empty ; цвет аниматора (empty - аниматор не используется).
spot_texture = internalinternal_light_torch_r2 ; текстура яркой точки (для динамического
освещения).
spot_angle = 45 ; угол освещения в градусах.
glow_texture = glowglow_torch_r2 ; текстура свечения фонарика, когда он направлен в глаза
(обязательный параметр).
glow_radius = 0.3 ; радиус свечения в метрах.
guide_bone = lights_bone ; кость, к направлению которой привязывается фонарик (изменять
строго не рекомендуется).
Как редактировать торговцев, торговлю с обычными сталкерами?
все настройки, связанные с ассортиментом торговцев в игре, находятся в файлах gamedata\configs\misc\trade_***.ltx
для всех остальных сталкеров - gamedata\configs\misc\trade_generic.ltx
Структура файла
Секция [trader_generic_buy]
Эта секция описывает какие товары торговец будет покупать.
Название предмета = минимальная цена покупки, максимальная цена покупки
Например:
wpn_vintorez = 0.5, 0.7Это значит что торговец купит оружие от 50% полной его стоимости до 70%, т.е. если Винторез стоит 1000, то торговец купит его в диапазоне от 500 до
700 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дороже купит
Секция [supplies_start]
Эта секция описывает какие товары у торговца будут вначале.
Название предмета = количество, вероятность появления
Например:
bandage = 5, 1Это значит что у торговеца всегда будут 5 бинтов, с 100 процентной вероятностью появления в магазине.
bandage = 5, 0.6 А тут уже вероятность появления 60%. Т.е. бинты не всегда будут.
Секция [supplies_after_***]
Тоже самое, что в секции [supplies_start], но после выполнения квестов торговца.
Секция [trader_start_sell]
Эта секция описывает за какую цену торговец будет продавать.
Название предмета = минимальная цена продажи, максимальная цена продажиНапример:
wpn_vintorez = 1, 2Это значит что торговец продаст оружие от 100% полной его стоимости до 200%, т.е. если Винторез стоит 1000, то торговец продаст его в диапазоне от
1000 до 2000 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дешевле продаст
Секция [trader_after_***_sell]
Тоже самое, что в секции [trader_start_sell], но после выполнения квестов торговца.
деньги торговцев правятся в character_desc_название локации.xml, например, в character_desc_escape.xml такая строка:
<money min="100000" max="100000" infinitive="1"/> (если infinitive="1" - бесконечные деньги)
Как редактировать костюмы?
Итак, секции с параметрами находятся в файле:
config\misc\outfit.ltx
Рассмотрим, например, параметры классического костюма сталкера.
[stalker_outfit]:outfit_base
; название секции костюма. именно к нему игра будет обращаться. outfit_base -
базовая (наследуемая) секция (изменять строго не рекомендуется).
visual = equipments\stalker_suit ; модель, используемая для сложенного костюма,
лежащего на земле.
actor_visual = actors\hero\stalker_hood.ogf ; модель, используемая для игрока, когда
на нем надет костюм.
inv_name = stalker_outfit_name ; название в инвентаре.
inv_name_short = stalker_outfit_name ; название в инвентаре (в принципе, можно
здесь продублировать значение предыдущего параметра - так чаще всего и делают).
description = stalker_outfit_description ; ссылка на текстовую строку
с описанием.
inv_weight = 5.0 ; вес.
; далее идут параметры иконки в инвентаре.
inv_grid_width = 2
inv_grid_height = 3
inv_grid_x = 6
inv_grid_y = 15
full_icon_name = npc_icon_stalker_outfit ; название иконки.
cost = 15000 ; базовая цена (см. примечание 2).
full_scale_icon = 14,11 ; иконка сталкера в костюме в полный рост (отображается в инвентаре справа).
nightvision_sect = effector_nightvision_bad ; тип ПНВ ("плохой" - зеленый, "хороший" - синий).
; ниже идут параметры защиты владельца от различных типов воздействий,
обеспечиваемые костюмом.
burn_protection = 0.5 ; защита от воздействия огня (костры, аномалия "Жарка" и т.д.).
strike_protection = 0.5 ; защита от ударов (наносятся мутантами, например, псевдогигантом).
shock_protection = 0.5 ; защита от поражения электричеством.
wound_protection = 0.4 ; защита от ранений (наносятся мутантами, например, собаками, кровососами и т.д.).
radiation_protection = 0.5 ; защита от радиации.
telepatic_protection = 0.0 ; защита от пси-воздействия (например, присутствие контроллера серьезно влияет на psy_health).
chemical_burn_protection = 0.5 ; защита от химического воздействия.
explosion_protection = 0.3 ; защита от взрывов/осколков.
fire_wound_protection = 0.3 ; защита от огнестрельного оружия (наиболее важный параметр для большинства костюмов).
power_loss = 0.87
bones_koeff_protection = gilet_antigas_damage
[sect_stalker_outfit_immunities] ; коэффициенты иммунитета самого костюма, то есть - то, насколько сильно он сам подвержен повреждениям от различных типов воздействий. по значениям каждого типа - см. выше.
burn_immunity = 0.03
strike_immunity = 0.01
shock_immunity = 0.03
wound_immunity = 0.015
radiation_immunity = 0.00
telepatic_immunity = 0.00
chemical_burn_immunity = 0.03
explosion_immunity = 0.03
fire_wound_immunity = 0.01
Как сделать так, чтобы стволы не убирались сами?
Изменить эти строки в файле gamedata\scripts\sr_no_weapon.script
function action_no_weapon:zone_enter()
self.state = state_inside
bind_stalker.restore_weapon(self.object:id())
end
function action_no_weapon:zone_leave()
self.state = state_outside
bind_stalker.restore_weapon(self.object:id())
end
Как сделать вид от третьего лица?
В конце файла C:\Documents and Settings\All Users\Documents\STALKER-STCS\user.ltx (путь к папке STALKER-STCS может быть другим) добавить эти строки:
bind cam_1 kF1
bind cam_2 kF2
bind cam_3 kF3
bind cam_4 kF4
Как редактировать гранаты?
Конфиги лежат по адресу gamedata\configs\weapons в файлах w_f1.ltx для Ф1 и w_rgd5.ltx для РГД-5;
важные параметры:
destroy_time = 1800 ; Время детонации 1.8 секунды
blast = 3.0 ; Урон наносимый фугасным воздействием
blast_r = 8 ; радиус фугасного воздействия
blast_impulse = 550 ; Сила удара от фугаса
frags = 300 ; Количество осколков
frags_r = 25 ; Радиус разлета осколков
frag_hit = 3.50; Урон от осколка
frag_hit_impulse = 300 ; Сила удара от осколков
fragment_speed = 500 ; Скорость осколков
Как реализовать качание прицела?
Конфиги, отвечающие за эту особенность, в файле gamedata\configs\misc\effectors.ltx:
[zoom_inertion_effector]
camera_move_epsilon = 0.03 ;разница между двумя векторами направления камера, когда считается что камера двинулась
disp_min = 0.01
speed_min = 0.00001
zoom_aim_disp_k = 1.0 ;коэффициенты соотношения полной дисперсии стрельбы
zoom_aim_speed_k = 0.0025 ;и покачивания прицела
delta_time = 3000 ;время через которое эффектор меняет направление движения (в милисекундах)
Как отключить вспышку выстрела у винтореза, вала, ПБ?
Теперь после выстрела появляется легкая дымка, как при стрельбе с обычным глушителем, для этого в файлах
gamedata\configs\weapons\w_vintorez.ltx, gamedata\configs\weapons\w_val.ltx, gamedata\configs\weapons\w_pb.ltx
изменить параметр
flame_particles = weapons\generic_shoot_00
Как сделать, чтобы у главного героя было много денег?
Деньги правятся в файле gamedata\configs\gameplay\character_desc_general.xml - в самом начале:
<money min="100" max="100" infinitive="0"/>, ставьте, сколько надо, а если вместо infinitive="0" поставить единицу, то у вас будут бесконечные деньги.
Примечание: изменения вступят в силу после начала новой игры.
Как "изменить" рост главного героя?
В файле gamedata\configs\creatures\actor.ltx поменять параметр camera_height_factor = 0.92
Где лежат конфиги сталкеров и существ Зоны?
В файлах gamedatabig\configs\creatures\m_название объекта.ltx
Где лежат конфиги артефактов?
Все артефакты описаны в файле gamedatabig\configs\misc\artefacts.ltx
Добавлено (25.10.2008, 21:19)
---------------------------------------------
Как научить техника делать все апгрейды?
---ЦИТАТА---
- в configs\weapons\ лежат конфиги оружия
- у каждого оружия в основной секции есть параметр upgrades, который содержит все доступные для этого оружия апгрейды.
- второй параметр installed_upgrades содержит все предустановленные апгрейды, в основном на квестовых пушках.
- третий парамет upgrade_scheme - схема установки апгрейдов, иначе говоря ссылка на inventory_upgrade.xml, в котором задано графическое отображение иконок.
на примере ПМ-а смотрим, что
Цитата
upgrades = up_gr_ab_pm, up_gr_cd_pm, up_gr_e_pm, up_gr_f_pm, up_gr_g_pm, up_gr_h_pm
installed_upgrades =
upgrade_scheme = upgrade_scheme_u10a
ищем для начала up_gr_ab_pm. находим этот параметр в configs\weapons\upgrades\w_pm_up.ltx
Цитата
[up_gr_ab_pm]
elements = up_a_pm, up_b_pm
up_a_pm находится в этом же файле, в этой секции сразу видим следующее:
Цитата
scheme_index = 0, 0
effects = up_gr_ac_pm
section = up_sect_a_pm
property = prop_rpm
scheme_index - положение иконки, в данном случае это первый столбик первая строка.
effects - это ссылка на секцию
Цитата
[up_gr_ac_pm]
elements = up_ac_pm
section - это ссылка на секцию в файле w_pm_up.ltx, в котором прописано следующее (пояснений не требует):
Цитата
[up_sect_a_pm]
cost = 120
value = +25
rpm = 50
property - это ссылка на xml-описатель, в данном случае он равен "скорострельность"
смотрим далее:
Цитата
precondition_functor = inventory_upgrades.precondition_functor_a
precondition_parameter = a & b
effect_functor = inventory_upgrades.effect_functor_a
effect_parameter = on_weapon_upgrade_something_here
precondition_functor - это ссылка на ф-ию из inventory_upgrades.script, которая смотрит к какому механику мы приперлись, и в зависимости от его умения разрешает или запрещает проведение апгрейда.
precondition_parameter пока непонятен.
effect_functor - ф-ия отнимания денег за проведенный апгрейд
Цитата
prereq_functor = inventory_upgrades.prereq_functor_a
prereq_tooltip_functor = inventory_upgrades.prereq_tooltip_functor_a
prereq_params = money(1000), item(habar)
name = st_upg_zatvor_rpm
description = st_upg_zatvor_rpm_descr
icon = ui_wp_upgrade_01
prereq_functor - судя по скриптам не используется, также как и ее параметры.
name - название апгрейда
description - описание апгрейда
icon - иконка. все берется из xml файла соттветсвующего выбраному языку.
вернемся в параметру effects. он указывает на нечто с названием up_ac_pm, такую же секцию апгрейда, но уже для параметра "отдача". это апгрейд второго уровня, и он зависит от up_a_pm и up_c_pm.
в итоге имеем, что ключевой точкой является параметр upgrades в файле конкретного ствола.
теперь, что нужно сделать, чтобы имет возможность установить все апгрейды. еще раз взглянем на этот параметр:
Цитата
upgrades = up_gr_ab_pm, up_gr_cd_pm, up_gr_e_pm, up_gr_f_pm, up_gr_g_pm, up_gr_h_pm
так как up_gr_ab_pm ссылается на секцию, в которой прописаны сразу два апгрейда, то игра считает эти апгрейды взаимоисключающими. поэтому нам надо просто разбить этот параметр на две части. вот исправленная строчка:
Цитата
upgrades = up_gr_a_pm, up_gr_b_pm, up_gr_c_pm, up_gr_d_pm, up_gr_e_pm, up_gr_f_pm, up_gr_g_pm, up_gr_h_pm
однако, секций up_gr_a_pm, up_gr_b_pm, up_gr_c_pm, up_gr_d_pm в файле апгрейдов для ствола может и не быть, поэтому заглянем в конец файла w_pm_up.ltx (мы ведь над ПМ-ом изгаляемся), и убедимся, что действительно, секций нет. добавляем:
Цитата
[up_gr_a_pm]
elements = up_a_pm
[up_gr_b_pm]
elements = up_b_pm
[up_gr_c_pm]
elements = up_c_pm
[up_gr_d_pm]
elements = up_d_pm
теперь самое главное. почти у каждого ствола есть несколько заранее модифицированных двойников, и они описаны обычно в конце конфига этого ствола. для ПМ-а это аж 3 секции: wpn_pm_minigame, wpn_pm_up и wpn_pm_9x19. и каждой из них за каким-то прописан параметр upgrades в точности повторящий значение родительского класса. на кой делать наседование и повторять параметры - я не понимаю, но из-за этого придется для каждого модифицированного ствола скопировать этот параметр с разделенными апгрейдами.
а еще лучше закоментировать эту строку, оставив только параметр installed_upgrades.