CoP. Эффект разнообразия артефактов
Материал из S.T.A.L.K.E.R. Inside Wiki
Давным давно читал на форуме GSC такое предложение: Сделайте так чтобы артефакты были более уникальны. Тоесть каждая Медуза имела отличия от такой же Медузы.
Честно говоря идея хорошая, я тоже считаю неправильным то что каждая найденая мной Медуза весит пол килограмма выводит 2 условные единицы радиации и стоит 4000 рублей (тут конечно есть разброс цен у торгашей) дети ведь не рождаются с весом ровно 3200 со светлыми волосами и голубыми глазами. Менять можно впринципе любые параметры, но на практике столкнулся с тем что приходится поднимать общую радиоизлучаемость артефактов до минимума равного 5-6 и максисума равного 12-13.
НАЧНЕМ
Вот исправленный конфиг медузы:
[af_medusa]:af_base $spawn = "artefacts\gravitational_1_medusa" class = ARTEFACT ; будет подпрыгивать visual = dynamics\artefacts\af_medusa.ogf description = st_af_medusa_descr inv_name = st_af_medusa_name inv_name_short = st_af_medusa_name inv_weight = 0.5 inv_grid_x = 9 inv_grid_y = 4 cost = 4000 jump_height = .5 ; высота прыжка particles = artefact\af_gravi_idle det_show_particles = artefact\af_gravi_show det_hide_particles = artefact\af_gravi_hide af_rank = 1 lights_enabled = true trail_light_color = 0.4,0.4,0 trail_light_range = 2.0 ;скорости увеличения (уменьшения) health_restore_speed = 0 radiation_restore_speed = -0.003 satiety_restore_speed = 0 power_restore_speed = 0 bleeding_restore_speed = 0 hit_absorbation_sect = af_medusa_absorbation additional_inventory_weight = 0 additional_inventory_weight2 = 0 artefact_activation_seq = af_activation_bold [af_medusa_absorbation] burn_immunity = 0 ;коэффициенты иммунитета strike_immunity = 0 shock_immunity = 0 wound_immunity = 0 radiation_immunity = 0 telepatic_immunity = 0 chemical_burn_immunity = 0 explosion_immunity = 0 fire_wound_immunity = 0
Сразу же после него вписываем что то вроде:
[af_medusa_mini]:af_medusa $spawn = "artefacts\my_addon_af_medusa_mini" inv_weight = 0.3 cost = 3500 radiation_restore_speed = -0.002 ;------------------------------------------------------------------------------------------ [af_medusa_maxi]:af_medusa $spawn = "artefacts\my_addon_af_medusa_maxi" inv_weight = 0.7 cost = 4500 radiation_restore_speed = -0.004 ;------------------------------------------------------------------------------------------ [af_medusa_super]:af_medusa $spawn = "artefacts\my_addon_af_medusa_super" inv_weight = 0.3 cost = 5500 radiation_restore_speed = -0.004
Я в данном случае создал еще три артефакта которые в игре будут полностью похожи на медузу (Название, описание, свойства) С разницей лишь в том что все четыре Медузы будут по разному стоить, имеют разный вес, и по разному выводят радиацию. Далее нам необходимо добавить их в игру.
1) gamedata\configs\misc\devices.ltx
Дописываем по аналогии секции:
af_class_40 = af_medusa_mini af_sound_40_ = detectors\art_beep1 af_freq_40 = 0.05, 2 af_class_41 = af_medusa_maxi af_sound_41_ = detectors\art_beep1 af_freq_41 = 0.05, 2 af_class_42 = af_medusa_super af_sound_42_ = detectors\art_beep1 af_freq_42 = 0.05, 2
К нужному детектору. Не забывая при этом сместить номера последующих секций в следующих детекторах если приписываете на Отклик, Медведь или Велес (detector_simple, detector_advanced, detector_elite)
2) gamedata\configs\ui\ui_detector_artefact.xml
Дописываем по аналогии:
<palette id="af_medusa_mini" width="0.0015" height="0.0015" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_temp_ad3_artefact</texture> </palette> <palette id="af_medusa_maxi" width="0.0015" height="0.0015" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_temp_ad3_artefact</texture> </palette> <palette id="af_medusa_super" width="0.0015" height="0.0015" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_temp_ad3_artefact</texture> </palette>
И
<palette id="af_medusa_mini" width="0.0011" height="0.0011" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_inGame2_Detector_icon_artefact</texture> </palette> <palette id="af_medusa_maxi" width="0.0011" height="0.0011" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_inGame2_Detector_icon_artefact</texture> </palette> <palette id="af_medusa_super" width="0.0011" height="0.0011" stretch="1" alignment="c"> <texture shader="hud\p3d">ui_inGame2_Detector_icon_artefact</texture> </palette>
3) gamedata\configs\scripts\локация\anomaly\аномалия.ltx
Делаем из:
[anomal_zone] layers_count = 1 respawn_tries = 2 max_artefacts = 3 ;applying_force_xz = 200 ;applying_force_y = 200 artefacts = af_medusa start_artefact = af_medusa coeff = 3 artefact_ways = zaton_zanaveska_af_way
Вот это
[anomal_zone] layers_count = 1 respawn_tries = 2 max_artefacts = 3 ;applying_force_xz = 200 ;applying_force_y = 200 artefacts = af_medusa, af_medusa_mini, af_medusa_maxi, af_medusa_super start_artefact = af_medusa_mini coeff = 3, 3, 2, 1 artefact_ways = zaton_zanaveska_af_way
Вот собственно и всё (осталось только добавить в торговлю)
Да как же всё =)
Очень вероятно кто то захочет провернуть такое со всеми артефактами (у меня ушло около 7-8 часов (долго искал БАГ).
Так вот в случае с Медузой мы не использовали секцию иммунитетов которые даёт артефакт: hit_absorbation_sect
К примеру:
hit_absorbation_sect = af_cristall_flower_mini_absorbation
Вот тут есть правило что если мы используем иммунитеты то они должны вписываться вот так:
[af_cristall_flower_mini]:af_cristall_flower $spawn = "artefacts\my_addon_af_cristall_flower_mini" inv_weight = 0.4 cost = 2500 radiation_restore_speed = 0.006 hit_absorbation_sect = af_cristall_flower_mini_absorbation [af_cristall_flower_mini_absorbation] burn_immunity = 0 strike_immunity = 0 shock_immunity = 0 wound_immunity = 0 radiation_immunity = 0 telepatic_immunity = 0.01 chemical_burn_immunity = 0 explosion_immunity = 0 fire_wound_immunity = 0
А не вот так:
[af_cristall_flower_mini]:af_cristall_flower $spawn = "artefacts\my_addon_af_cristall_flower_mini" inv_weight = 0.4 cost = 2500 radiation_restore_speed = 0.006 hit_absorbation_sect = af_cristall_flower_mini_absorbation [af_cristall_flower_mini_absorbation] telepatic_immunity = 0.01
Во втором случае при спавне артефакта игра вылетит с ошибкой типа не найден burn_immunity в af_cristall_flower_mini_absorbation тоесть af_cristall_flower_mini_absorbation должен содержать все иммунитеты даже если их значение ноль.
Хотя впринципе можно создать в файле секцию:
[af_bla_bla_bla_absorbation] burn_immunity = 0 strike_immunity = 0 shock_immunity = 0 wound_immunity = 0 radiation_immunity = 0 telepatic_immunity = 0 chemical_burn_immunity = 0 explosion_immunity = 0 fire_wound_immunity = 0
А все следующие иммунитеты писать вот так:
[af_cristall_flower_mini]:af_cristall_flower $spawn = "artefacts\my_addon_af_cristall_flower_mini" inv_weight = 0.4 cost = 2500 radiation_restore_speed = 0.006 hit_absorbation_sect = af_cristall_flower_mini_absorbation [af_cristall_flower_mini_absorbation]:af_bla_bla_bla_absorbation telepatic_immunity = 0.01
Не пробовал но должно работать =)
В итоге если создать для каждого артефакта 3 можно и больше дублей и добавить их все в аномалии и торговлю то сложится впечатление что каждый конкретный артефакт может быть разным.
--Rekongstor 11:30, 13 января 2011 (UTC) Я смотрю на это и предлагаю сделать кое-что. Ведь есть возможность записи в консоль параметров и в итоге можно сделать для каждого артефакта свой разброс параметров.
--WincentDark69 Можно сделать и разброс, но. К примеру мы используем: Стоимость, Восстановление здоровья, Насышение организма радиацией, Вес. Во первых я не вкурсе как сделать расброс веса. Во вторых если даже прописать расброс цен от 5000 до 25000 то, где при этом будем влияние получившегося артефакта на стоимость (может получится что то типа "суперский арт (Медузу) торговец купит за 5361 а за совершенно бесполезный арт ("Медузу") предложит 23787" к примеру)
Автор: WincentDark69