Перейти к содержанию

Максимум здоровья в зависимости от характеристик


Рекомендуемые сообщения

Этот плагин устанавливает максимум хп Нереварина в зависимости от базового (то есть не изменённого магией) значения его Выносливости, Силы и Силы Воли. Требует МВСЕ (который входит в состав Фуллрест-репака).

 

Предыдущий плагин на независимый рост хп имел такой скрипт:

 

Begin Tal_StateBasedHP 
 
 
float TCurrentHP 
float TMaxHP 
float TBasicLife 
float TDamage 
float TFortifiedHP 
float TLeveledHP  
short TFirstLevelHPBonus
short TLevel 
short TEndurance
short TStrength
short TDoOnce 
 
 
if ( TDoOnce == 0 )
set TEndurance to ( Player->GetEndurance )
set TStrength to ( Player->GetStrength )
set TDoOnce to 1
endif
 
 
if ( Player->GetHealthGetRatio == 0 ) 
return 
endif
 
 
if ( Player->GetEndurance == TEndurance )
if ( Player->GetStrength == TStrength )
return 
endif 
endif
 
 
if ( Player->GetEffect, sEffectFortifyHealth == 1 )
set TCurrentHP to ( Player->GetHealth )
set TMaxHP to ( TCurrentHP / Player->GetHealthGetRatio ) 
set TLevel to ( Player->GetLevel )
set TLeveledHP to ( TEndurance * 1 )
set TLeveledHP to ( TLeveledHP )
set TFirstLevelHPBonus to ( TStrength / 2 + 10 )
set TBasicLife to ( TLeveledHP + TFirstLevelHPBonus )
set TFortifiedHP to ( TMaxHP - TBasicLife )
set TFortifiedHP to ( TFortifiedHP - Tal_ExtraHP )
set TEndurance to ( Player->GetEndurance ) 
set TStrength to ( Player->GetStrength ) 
set TLevel to ( Player->GetLevel ) 
set TCurrentHP to ( Player->GetHealth ) 
set TMaxHP to ( TCurrentHP / Player->GetHealthGetRatio ) 
set TDamage to ( TCurrentHP - TMaxHP )
set TLeveledHP to ( TEndurance * 1 )
set TLeveledHP to ( TLeveledHP )
set TFirstLevelHPBonus to ( TStrength / 2 + 10 )
set TBasicLife to ( TLeveledHP + TFirstLevelHPBonus )
set TMaxHP to ( TBasicLife + TFortifiedHP + Tal_ExtraHP)
Player->SetHealth, TMaxHP
Player->ModCurrentHealth, TDamage
else  
set TEndurance to ( Player->GetEndurance ) 
set TStrength to ( Player->GetStrength ) 
set TLevel to ( Player->GetLevel ) 
set TCurrentHP to ( Player->GetHealth ) 
set TMaxHP to ( TCurrentHP / Player->GetHealthGetRatio ) 
set TDamage to ( TCurrentHP - TMaxHP ) 
set TLeveledHP to ( TEndurance * 1 )
set TLeveledHP to ( TLeveledHP ) 
set TFirstLevelHPBonus to ( TStrength / 2 + 10 ) 
set TBasicLife to ( TLeveledHP + TFirstLevelHPBonus ) 
set TMaxHP to ( TBasicLife + Tal_ExtraHP) 
Player->SetHealth, TMaxHP 
Player->ModCurrentHealth, TDamage 
endif
 
 
End 

 
 
Да, сразу видны недостатки - хп просто скакало при изменении статов ГГ магией, кроме того скрипт работал постоянно.
 
В новом же плагине применены МВСЕ-функции для нахождения истинного не изменённого магией значания характеристик героя. Кроме того плагин выполнен в форме стартового скрипта, то есть запускает 1 раз при каждой загрузке игры, а затем завершается, не нагружая более систему.
 
Вот сам скрипт:
 
Begin maxhealth
 
long pcRef
float newhp
float endurance
float strength
float willpower
 
if ( Player->GetHealthGetRatio != 1 )
StopScript "maxhealth"
return
endif
 
if ( Player->GetEffect, sEffectFortifyHealth == 1 )
StopScript "maxhealth"
return
endif
 
if ( Player->GetEffect, sEffectDrainHealth == 1 )
StopScript "maxhealth"
return
endif
 
setx pcRef to xGetRef "player"
setx endurance to pcRef->xGetBaseEnd
setx strength to pcRef->xGetBaseStr
setx willpower to pcRef->xGetBaseWil
set newhp to ( endurance + ( strength * 0.5 ) + ( willpower * 0.5 ) )
Player->SetHealth, newhp
 
StopScript "maxhealth"
 
End
 
Для того чтобы хп перерасчиталось, нужно выполнение следующих условий на момент загрузки сейва:
1) Герой должен быть полностью здоров.
2) На героя не должны влиять эффекты повышения или понижения максимального запаса здоровья (снимите шмотки, зачаренные на постэффект + к максимуму хп, если такие имеются)
 
Формула: Здоровье = Выносливость + Сила/2 + Воля/2
 
То есть на максимуме всех статов у Нереварина будет 200 хп.

MaxHp.esp

Изменено пользователем Dagot_Prolaps
Ссылка на комментарий
Поделиться на другие сайты

 
То есть на максимуме всех статов у Нереварина будет 200 хп.

 

 

Это все конечно гуд. Но у меня есть несколько мааааленьких вопросов.

 

На форуме проскакивала уже шутка - ребаланс на ФР стал мемом. Я все понимаю, красивые формулы, красивые программы (я про мвсе). Но вот я простой русский Ваня, который решил поиграть в Морр. Как ТС считает, если я погляжу на эту формулу - я сразу начну писаться от счастья и побегу закачивать этот плаг?

 

Ок, можно сказать что выложено не для Вани (ну на форуме, не в базе. А чисто для разработчиков). Тогда второй вопрос - регулируя ОДНУ сторону медали - т.е. здоровье героя - можем ли мы добиться баланса (а баланс - это ИНТЕРЕСНОЕ прохождение, не слишком легко но и не по 100500 раз перезагружая игру чтоб пройти дальше) БЕЗ ИЗМЕНЕНИЯ здоровья неписей? Вот моя левая пятка почему то уверена что нет. 

 

Ну это так, небольшое брюзжание. 

И маленький совет напоследок - Дагот, ты сделал норм програмку с ЧИМ - модом - ну и развивай ее дальше. Что ты в каждую свою тему МФР вплетаешь? Пусть Эл чешется сам, а ты чешись по своему. Не надо бодаться, надо делать нашу любимую игру еще лучше. 

 

ПыСы. Это мнение автора поста, выражает только его мнение и надежду, что Дагот сделает еще много хороших и интересных вещей

Изменено пользователем Vladii
Ссылка на комментарий
Поделиться на другие сайты

Плагин для разработчиков. Менять строчку с формулой и перекомпилировать скрипт в MWEdit.

 

Баланса конечно же тут мало, потому что 200 хп от одних статов - слишком жирно. В ЧИМ-моде лишь 100.

 

_____

кстати, если игрок краб и хочет поиграть с ЧИМ-модом, но не желает оставаться на сотке хп, то этот плагин, установленный поверх, решит проблему. Правда, перки на бонусы к хп будут аннулированы. 

Изменено пользователем Dagot_Prolaps
Ссылка на комментарий
Поделиться на другие сайты

 

 

_____

кстати, если игрок краб и хочет поиграть с ЧИМ-модом, но не желает оставаться на сотке хп

 

То для него надо разбить ЧИМ мод по частям с выбором скачанного коннекта и он будет просто визжать от восторга. Но работа 2-3 часов по небольшой переделки это же так влом.

Ссылка на комментарий
Поделиться на другие сайты

 

 

if ( Player->GetEffect, sEffectFortifyHealth == 1 )

 

Любой эффект с "чувством" увеличения чего-либо (навыка, магии т.д.) не работает. Об этом кстати упоминается в MSFD.

Ссылка на комментарий
Поделиться на другие сайты

Я как раз и взял эту функцию из МФСД, нафига было расписывать, если она не работает? Кстати, та же функция применена и в вышеприведённом скрипте под спойлером.

Изменено пользователем Dagot_Prolaps
Ссылка на комментарий
Поделиться на другие сайты

Я как раз и взял эту функцию из МФСД, нафига было расписывать, если она не работает? Кстати, та же функция применена и в вышеприведённом скрипте под спойлером.

 

Посмотри с гугл-переводчиком, если на английском затрудняешься, вот этот мануал, найдешь замену той команде - https://media.readthedocs.org/pdf/mwse/stable/mwse.pdf

Ссылка на комментарий
Поделиться на другие сайты

Ну как тебе сказать, я только что протестил загрузку сейва и с эффектом повышения здоровья и с эффектом понижения - фильтр работает. Всё ещё не понимаю, что ты имел в виду про "эффект не работает".

Ссылка на комментарий
Поделиться на другие сайты

Ну как тебе сказать, я только что протестил загрузку сейва и с эффектом повышения здоровья и с эффектом понижения - фильтр работает. Всё ещё не понимаю, что ты имел в виду про "эффект не работает".

Смотри, верить или нет - решать тебе. Лично сталкивался с тем, что данная команда просто отказывает где-то в середине игры, возможно связано с ростом характеристик, не знаю. Увеличение же навыка не работает от слова вообще даже при старте.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...