CoP: Делаем нормальные медикаменты.
Материал из S.T.A.L.K.E.R. Inside Wiki
Данная мини-статья расскажет вам о том как внести в игру более правильные в плане воздействия медикаменты.
Я полагаю многие играя в компьютерные игры задумались что аптечка(к примеру) на самом деле не должна лечить мгновенно(ну или почти мгновенно, как это сделано в STALKER). Это то мы и исправим, ну и заодно рассмотрим полный список эффектов.
Итак поехали:
Возьмем кусок описания обычной аптечки:
[medkit]:booster $spawn = "food and drugs\medkit" visual = dynamics\devices\dev_aptechka\dev_aptechka_low.ogf inv_name = st_medkit inv_name_short = st_medkit description = st_medkit_descr inv_weight = 0.1 inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 6 inv_grid_y = 14 cost = 250 boost_time = 10.0 boost_health_restore = 0.01 boost_radiation_restore = 0.0 boost_bleeding_restore = 0.005 use_sound = interface\inv_medkit
В самом верху мы видим:
[medkit]:booster = системное имя:системное имя предмета из которого будут браться недостающие строки конфига
Рассмотрим секцию "booster" она по сути содержит пустые конфиги. Прокоментирую основное(параметры которые могут пригодиться).
[booster]:identity_immunities GroupControlSection = spawn_group discovery_dependency = ;$spawn = "food and drugs\booster" $prefetch = 8 class = S_FOOD cform = skeleton visual = dynamics\devices\dev_aptechka\dev_aptechka_low.ogf ; Ссылка на визуал в "stalker\gamedata\meshes" description = default ; Ссылка на описание предмета "gamedata\configs\text\rus" inv_name = default ; Ссылка на имя предмета(Аптечка автомобильная) "gamedata\configs\text\rus" inv_name_short = default ; Ссылка на короткое имя предмета(Апт.Авт.) "gamedata\configs\text\rus" inv_weight = 0.01 ; Вес предмета inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 3 inv_grid_y = 18 cost = 1 ; Стандартная стоимость(конечная зависит от отношения торговца) ; eatable item eat_health = 0 ; Мгновенно даёт определенное количествово здоровья 1 = 100% eat_satiety = 0 ; Мгновенное насыщение 1 = 100% eat_power = 0 ; Мгновенное восстановление силы 1 = 100% eat_max_power = 0 ; Мгновенное увеличение максимальной силы 1 = 100%(Вроде как...) eat_radiation = 0 ; Мгновенное увеличение или уменьшение облученности (1 увеличение)(-1 уменьшение) eat_alcohol = 0 ; Мгновенное увеличение или уменьшение уровня опьянения (1 увеличение)(-1 уменьшение) wounds_heal_perc = 0 ; я так понял что это скорость затягивания ран, но не уверен... eat_portions_num = 1 ; Интересный параметр... Количество порций в упаковке (проверена работоспособность от 1 до 99999) boost_time = 0.0 ; Время действия(распостраняется только на параметры boost_* boost_max_weight = 0.0 ; Увеличение переносимого веса. Уменьшение не работает, как видимо на всех boost_* =( boost_health_restore = 0.0 ; Увеличение скорости восстановления здаровья boost_power_restore = 0.0 ; Увеличение скорости восстановления силы boost_radiation_restore = 0.0 ; Увеличение скорости вывода радиации boost_bleeding_restore = 0.0 ; Увеличение скорости заживления ран ;protection Снижают количество получаемого ХИТА boost_radiation_protection = 0.0 ; Увеличение защиты от радиации boost_telepat_protection = 0.0 ; Увеличение защиты от телепатического воздействия(от контролеров не спасает) boost_chemburn_protection = 0.0 ; Увеличение защиты от химических повреждений ;immunity Увеличивают минимальный уровень воздействия для получения ХИТА boost_burn_immunity = 0.0 ; Увеличение имунитета к огню boost_shock_immunity = 0.0 ; Увеличение имунитета к электрическому току boost_radiation_immunity = 0.0 ; Увеличение имунитета к радиации boost_telepat_immunity = 0.0 ; Увеличение имунитета к пси воздействию boost_chemburn_immunity = 0.0 ; Увеличение имунитета к химическим воздействиям boost_strike_immunity = 0.0 ; Увеличение имунитета к выстрелам boost_wound_immunity = 0.0 ; Увеличение имунитета к ударам boost_explosion_immunity = 0.0 ; Увеличение имунитета к взрывам boost_fire_wound_immunity = 0.0 ; Увеличение имунитета к взрывной волне ;use_sound = characters_voice\multiplayer\team_1\voice_roger_3 ; Звук "gamedata\sounds"
Теория пройдена!!!
Практика
[medkit]:booster ; НЕ ТРОГАЕМ!!! $spawn = "food and drugs\medkit" ; НЕ ТРОГАЕМ!!! visual = dynamics\devices\dev_aptechka\dev_aptechka_low.ogf ; НЕ ТРОГАЕМ!!! inv_name = st_medkit ; НЕ ТРОГАЕМ!!! inv_name_short = st_medkit ; НЕ ТРОГАЕМ!!! description = st_medkit_descr ; НЕ ТРОГАЕМ!!! inv_weight = 0.1 ; По желанию inv_grid_width = 1 ; НЕ ТРОГАЕМ!!! inv_grid_height = 1 ; НЕ ТРОГАЕМ!!! inv_grid_x = 6 ; НЕ ТРОГАЕМ!!! inv_grid_y = 14 ; НЕ ТРОГАЕМ!!! cost = 250 ; По желанию boost_time = 60.0 ; Меняем с 10.0 на 60.0 boost_health_restore = 0.002 ; Меняем с 0.01 на 0.002 boost_radiation_restore = 0.0 ; По желанию boost_bleeding_restore = 0.0 ; По желанию use_sound = interface\inv_medkit ; НЕ ТРОГАЕМ!!!
Итак, мы получили аптечку которая лечит медленно но на протяжение 60 секунд(По сравнению с оригиналом это хоть как то похоже на правду)
Таким же образом можно отредактировать и остальные препараты. Антирад например.
[antirad]:booster $spawn = "food and drugs\antirad" visual = dynamics\devices\dev_antirad\dev_antirad.ogf inv_name = st_antirad inv_name_short = st_antirad description = st_antirad_descr inv_weight = 0.01 inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 18 inv_grid_y = 12 cost = 750 boost_time = 60.0 boost_radiation_restore = 0.01 eat_alcohol = 0.3 use_sound = interface\inv_pills
Я полагаю что опьянение здесь в тему так как вещества такого типа считаются наркотическими.
А зная о ранее неиспользуемых эфектах можно создавать новые, тот же к примеру "Анти-похмелин". В пачке которого будет 10 таблеток:
[drug_analgin]:booster $spawn = "food and drugs\drug_analgin" visual = dynamics\equipments\medical\drug_coagulant.ogf inv_name = st_drug_analgin inv_name_short = st_drug_analgin description = st_drug_analgin_descr inv_weight = 0.01 inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 19 inv_grid_y = 4 cost = 350 boost_time = 5.0 eat_alcohol = -0.1 eat_portions_num = 10 use_sound = interface\inv_pills
Каждая таблетка при такой конфигурации будет снимать 10% опьянения.
Автор: WincentDark69