Данная мини-статья расскажет вам о том как внести в игру более правильные в плане воздействия медикаменты.
Я полагаю многие играя в компьютерные игры задумались что аптечка(к примеру) на самом деле не должна лечить мгновенно(ну или почти мгновенно, как это сделано в 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