Форум TeamX
   Home   Members  
Pages: [1] |   Go Down
 
Author Topic: Отравление  (Read 1403 times)
Akkella
Пользователь
Posts: 137


Отравление
« on: 08 September 2009, 15:44:31 »

Есть ли возможность как-то увеличить неудобства от отравления?

Слишком оно быстро и безболезненно проходит.

Вариант увеличить понижение НР за промежуток времени. А промежуток времени сделать больше.

Конечно можно сделать и скриптово, но выходит криво.
В map_update_p_proc, например. Но достаточно ГГ уйти с карты и он приходит на новую (через денек-другой) уже здоровенький с полным НР.
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Отравление
« Reply #1 on: 08 September 2009, 17:38:29 »

Глобальные скрипты из sfall не помогут?
Akkella
Пользователь
Posts: 137


Re: Отравление
« Reply #2 on: 09 September 2009, 08:02:56 »

Пробовал.

Опять криво...

Пока нашел такой вариант:
1 При выходе с карты проверяется уровень отравления ГГ и запоминается в глобальную переменную.
2 При входе на карту уровень отравления ГГ считаем по формуле:
(Уровень отравления(нач) - Санитар/10)*кол-во часов/4/Выносливость + уровень отравления начальный. Брать процент от сопротивления ядам.
Сюда еще добавляется эффект движка.

Это означает, что ГГ в пути поддерживает организм, а в городе или на эскаунтерах занят немного другим (если не лечит яд).

3 В городе и эскаунтерах процесс идет за счет движка...


Пока единственный серьезный минус - это в случае отдыха ГГ на карте, но и тут это можно отслеживать в map_update_p_proc.

Как пример:
Имеем ГГ с выносливостью 5, Санитаром 30 и уровнем отравления 25 и сопротивления ядам 25%.
ГГ уходит с карты и выходит на эскаунтер через два дня.
Получаем:
(25 -30/10)*48/4/5 + 25 = 77
77*(100-25)/100 =57

Получаем уровень отравления 57 (организм регресирует).
Часть яда можно вывести Доктором (я его немного изменил), при условии, что навык тагг. (специалист).
Выводить пивом (-10, например) с потерей Восприятия (а то оно бесполезно).
Или противоядием.
Если отравление небольшое, а Санитар высокий, яд сам выйдет.

Код простейший:
procedure map_exit_p_proc
begin
 set_global_var(900, get_poison(dude_obj));
 set_global_var(901, game_time);
end

procedure map_enter_p_proc
  if global_var(900)>0 then
  begin
  LVar0 := (game_time-global_var(901))/36000;
  LVar1 := (global_var(900)-has_skill(dude_obj, 6)/10)*LVar0/4/get_critter_stat(dude_obj, 2)+global_var(900);
  poison(dude_obj, LVar1-get_critter_stat(dude_obj, 36));
  end
end

global_var(900) - уровень отравления ГГ на момент выхода с карты.
global_var(901) - время на момент выходя с карты.




Однако, хотелось бы сделать исправления в движке, если будет такая возможность.

« Last Edit: 11 September 2009, 09:28:42 by Akkella »
Pages: [1] |   Go Up