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

Grand Fix Spells - фикс, ребаланс магии


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

Вот переедем на ОпенМВ и мвсе-зависимость аукнется. Поначалу уж точно.

Но вообще, конечно, если можно сделать лучше на мвсе, то чобы и нет?

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

  • Ответов 78
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Что даст MWSE:

1 Не будет измененных ячеек;

2 Зато будет глобальный скрипт, работающий все время;

3 Появится возможность влиять на поведение неписей в реальном времени, например подкидывать им ситуационных заклинаний в бою, но это как то не увязывается в базовую концепцию: фикс багов+ребаланс. Это тема для отдельного плагина.

4 ?

 

Уже есть две версии плагина, с введением MWSE будет 4, а еще есть предложение новые вызовы ввести (огрима, скелета-лучника, какого нибудь ксивилаи), куда еще больше версий?

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

Что даст MWSE:

1 Не будет измененных ячеек;

2 Зато будет глобальный скрипт, работающий все время;

3 Появится возможность влиять на поведение неписей в реальном времени, например подкидывать им ситуационных заклинаний в бою, но это как то не увязывается в базовую концепцию: фикс багов+ребаланс. Это тема для отдельного плагина.

4 ?

 

Уже есть две версии плагина, с введением MWSE будет 4, а еще есть предложение новые вызовы ввести (огрима, скелета-лучника, какого нибудь ксивилаи), куда еще больше версий?

1Да

2 Разово сработавший и завершившийся скрипт

3 Сейчас не о том речь, можно остановиться на твоей концепции, если нет желания прописывать поведение скриптами.

4 !

Какие версии, не слышал? Достаточно двух версий с мвсе и без него, откуда 4 взялось?

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

2 Разово сработавший и завершившийся скрипт

 

Видимо я чего то не знаю про mwse, разве можно обращаться к незагруженным неписям из скриптов?

 

Какие версии, не слышал? Достаточно двух версий с мвсе и без него, откуда 4 взялось?

 

Есть две уже. С красивыми спецэффектами и без.

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

Видимо я чего то не знаю про mwse, разве можно обращаться к незагруженным неписям из скриптов?

 

 

 

Есть две уже. С красивыми спецэффектами и без.

В том то и прелесть этой функции, прежде чем тебе написать протестировал. Возможно нельзя обращаться к неписям которых добавляешь скриптом, а к расставленным по миру можно. Ну на счет версий, есть два простых решения, 1 запаковать всё в один архив с ридми и указаниями, 2 как автор можешь определиться в каком единственном виде будет существовать плагин, какая концепция самому тебе больше нравится. Есть ещё третье решение, можно сделать миниинсталятор.
Ссылка на комментарий
Поделиться на другие сайты

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

 

Ха, емае ведь и правда можно, протестировал в оригинале заклинания добавляются даже без mwse. Подводных камней надеюсь нет.

Записал себе в туду лист на версию 1.3 отменить ячейки. Одной этой правки не достаточно для новой версии, к тому же сейчас другим занят.

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

Ха, емае ведь и правда можно, протестировал в оригинале заклинания добавляются даже без mwse. Подводных камней надеюсь нет.

Записал себе в туду лист на версию 1.3 отменить ячейки. Одной этой правки не достаточно для новой версии, к тому же сейчас другим занят.

У меня без mwse не добавлялись. Дело видимо в том посещал ты локацию или нет.
Ссылка на комментарий
Поделиться на другие сайты

Тестирование показало что выдача заклинаний незагруженным неписям в оригинале работает не всегда. К Ранис атрис в Балмору удалось добавить спеллы, а Сирилонве из Вивека нет, хотя мой персонаж побывал и в той и в другой ячейке. Короче движок непонятные выкрутасы выдает. Пока останется ячеичный метод, он по крайней мере надежный.

Возможно это зависит от того разговаривал ли игрок с неписем недавно или нет.

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

Тестирование показало что выдача заклинаний незагруженным неписям в оригинале работает не всегда. К Ранис атрис в Балмору удалось добавить спеллы, а Сирилонве из Вивека нет, хотя мой персонаж побывал и в той и в другой ячейке. Короче движок непонятные выкрутасы выдает. Пока останется ячеичный метод, он по крайней мере надежный.

Возможно это зависит от того разговаривал ли игрок с неписем недавно или нет.

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

Т.е. от содержимого сейва?

 

Да, возможно в сейве хранится список неписей с которым игрок разговаривал или список посещенных локаций. Но через какое то время этот список очищается и неписи становятся недоступны для команд добавления спеллов.

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

  • 5 месяцев спустя...

Я давно гоняю магическую систему Моровинда и выявил две проблемы:

1) Линейная зависимость между стоимостью заклинания и его силой. Допустим закл за 50 маны наносит 50 урона, а закл за 100 маны наносит 100 урона. Проблема в том что с увеличением стоимости заклинания уменьшается вероятность успешного каста. Так первый закл может быть со 100% а второй с 50% вероятностью.

Из этого следует что дорогие заклинания у которых вероятность каста менее 100% вообще бессмысленно кастовать. В любом случае выгоднее скастовать дважды более слабое заклинание чем полагаться на вероятность. Таким образом целый пласт дорогих заклинаний оказывается бесполезным. В большей мере это относится к школе разрушения.

Движок не позволяет переделать линейную зависимость в степенную.

2) С ростом навыка увеличивается вероятность успешного каста, но когда она достигает 100% дальнейшее увеличение навыка бессмысленно. У посредственного мага сила воли около 60 и докачав магический навык хотя бы до 57 он уже получит возможность кастовать заклинания со стоимостью 30 со 100% вероятностью. Дальше прокачивать навык нет смысла ибо практически все самые полезные заклинания в игре стоят меньше 30 маны.

 

Динамическое восстановление маны ничего не меняет.

Решение вроде бы есть:

1) После каждого каста восстанавливать некий процент затрачиваемой маны, причем чем дороже заклинание тем больше маны возвращается. Получается что линейная зависимость как бы превратилась в степенную и очень дорогие заклинания будет выгодно кастовать.

2) Величина восстанавливаемой маны должна зависеть от навыка, чем выше навык, тем больше маны восстановиться, таким образом появится смысл качать навык до 100.

 

Или все норм и вообще идеальная система?

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

Или все норм и вообще идеальная система?

 

Не идеальная, конечно. И ты уже привёл аргументы, почему. В защиту же мощных спеллов могу сказать, что слабыми заковырять противника часто не получается - каст в Морде долгий. И снаряды летят небыстро. Пока кастуешь три слабых заклинания - битва превращается в рукопашную. Отступаешь задом, огребаешь, тебе сбивают каст, огребаешь снова, умираешь. С мощными спеллами такого нет - через 1-2 каста противник отправляется к предкам. Не говоря уже о противниках магах и лучниках, которые от фаерболов уворачиваются.

 

Я уже не вспомню деталей, но, играя через разрушение, выбирал спеллы помощнее (пусть и более жручие). Иначе схватка с группой не самых сильных противников заканчивалась плохо - мне портили шкуру раньше, чем я их разбирал. Потому что неписи двигались быстрее, чем игрок колдовал.

 

С ребалансом скорости полёта заклинаний и возможностью каста без рук такой фигни, конечно, не было бы. А то и другое нынче популярно (и, в общем, достаточно разумно).

Решение вроде бы есть:

 

Решение интересное. И, если динамическая регенерация в Морре позволяет восстанавливать ману между боями, то подобный подход позволит скиллованному магу вести более долгую битву.

 

Если смысл в прокачке пропадает около 30 маны за спелл и 60 уровня навыка, тогда где-то отсюда и можно начинать ощутимый прогресс по возврату маны.

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

Доделал плагин с новой локацией. Ссылка в шапке.

 

Все в куче и в одной теме бесит.

 

Тестил увеличение скорости полета магии (еще когда ребаланс переделывал), от этого иногда багуются эффекты, бывает в руках взрываются заклинания или за ландшафт зацепляются там где не должны. Короче увеличенная скорость полета спецеффектов нестабильна.

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

Тестил увеличение скорости полета магии (еще когда ребаланс переделывал), от этого иногда багуются эффекты, бывает в руках взрываются заклинания или за ландшафт зацепляются там где не должны. Короче увеличенная скорость полета спецеффектов нестабильна.

 

0_0 Какое-то время играл с ускорителем (кажется, от ТиДжея) - ничего подобного не наблюдал.

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

Я давно гоняю магическую систему Моровинда и выявил две проблемы:

1) Линейная зависимость между стоимостью заклинания и его силой. Допустим закл за 50 маны наносит 50 урона, а закл за 100 маны наносит 100 урона. Проблема в том что с увеличением стоимости заклинания уменьшается вероятность успешного каста. Так первый закл может быть со 100% а второй с 50% вероятностью.

Из этого следует что дорогие заклинания у которых вероятность каста менее 100% вообще бессмысленно кастовать. В любом случае выгоднее скастовать дважды более слабое заклинание чем полагаться на вероятность. Таким образом целый пласт дорогих заклинаний оказывается бесполезным. В большей мере это относится к школе разрушения.

Движок не позволяет переделать линейную зависимость в степенную.

2) С ростом навыка увеличивается вероятность успешного каста, но когда она достигает 100% дальнейшее увеличение навыка бессмысленно. У посредственного мага сила воли около 60 и докачав магический навык хотя бы до 57 он уже получит возможность кастовать заклинания со стоимостью 30 со 100% вероятностью. Дальше прокачивать навык нет смысла ибо практически все самые полезные заклинания в игре стоят меньше 30 маны.

 

Динамическое восстановление маны ничего не меняет.

Решение вроде бы есть:

1) После каждого каста восстанавливать некий процент затрачиваемой маны, причем чем дороже заклинание тем больше маны возвращается. Получается что линейная зависимость как бы превратилась в степенную и очень дорогие заклинания будет выгодно кастовать.

2) Величина восстанавливаемой маны должна зависеть от навыка, чем выше навык, тем больше маны восстановиться, таким образом появится смысл качать навык до 100.

 

Или все норм и вообще идеальная система?

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

 

0_0 Какое-то время играл с ускорителем (кажется, от ТиДжея) - ничего подобного не наблюдал.

да ничего подобного и нет, там есть косяки с размерами снарядов. 

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

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

 

А как еще яснее написать?

 

да ничего подобного и нет, там есть косяки с размерами снарядов. 

 

Нет, баги с не долетающими до цели спецэффектами точно есть, проявляются редко если увеличить скорость спецэффектов в разы и создать заклинания с разными эффектами.

Можно поподробней про косяки с размерами?

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

Тестил увеличение скорости полета магии (еще когда ребаланс переделывал), от этого иногда багуются эффекты, бывает в руках взрываются заклинания или за ландшафт зацепляются там где не должны. Короче увеличенная скорость полета спецеффектов нестабильна.

Я тоже всегда играю с измененным GMST "fTargetSpellMaxSpeed", увеличенным в 4 раза - проблем не заметил. Только скорость увеличивается. Противники даже упреждение делают соответственно изменившейся скорости.

 

 

1) После каждого каста восстанавливать некий процент затрачиваемой маны, причем чем дороже заклинание тем больше маны возвращается. Получается что линейная зависимость как бы превратилась в степенную и очень дорогие заклинания будет выгодно кастовать.

Я играл с таким решением, и мне очень понравилось :thumbup: Тем более, что в ванильном Морре использование маны не сбалансировано - магу нужно с собой постоянно таскать патронташ с 50 бутылками восстановления магии, что очень тупенько воспринимается...

Оно, кстати, с плагином и логичнее выходит - более опытный маг возвращает более высокий % маны (чем выше навык школы, тем выше % возврата). И тогда опытному магу действительно имеет смысл жахать дорогими заклинаниями, а не мишурой :)

 

p.s. В комментариях советуют еще вот это, но я его не тестировал.

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

Я тоже всегда играю с измененным GMST "fTargetSpellMaxSpeed", увеличенным в 4 раза - проблем не заметил. Только скорость увеличивается. Противники даже упреждение делают соответственно изменившейся скорости.

 

 

А я скорость самих спецэффектов увеличивал (speed X), а про эту не знал :смайлик-стыд:.

 

 

Я играл с таким решением, и мне очень понравилось :thumbup:

 

Уже все изобретено, и как я не заметил.

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

  • 3 недели спустя...

Сделал на досуге версию Grand Fix Scroll (без новых свитков) со значками MagicMarker.

 

Если тебе не сложно, прикрепи также эту версию к своему плагину в базе Fullrest.

grand-fix-scrolls_(MagicMarker_Icons).rar

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

Хорошая штука, добавлю.

Плагин давно пора обновить, но я как вспомню что там ридми писать надо, ай...

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

Хорошая штука, добавлю.

Плагин давно пора обновить, но я как вспомню что там ридми писать надо, ай...

:pardon:

Ну, на самом деле выполненный плагин важнее, чем ReadMe, но нужно хотя бы кратко написать, что ж ты там задумал :)

 

Ну и существующее ReadMe, на самом деле, не особо требует переделки.

 

 

В общем, лучше найди в себе силы ;)

 

p.s. Кстати, пока руками добавлял иконки MagicMarker, заметил, что перевод некоторых свитков оставлен без изменений - насколько я помню, был и Свиток Лигстеп, и Свиток Едящего Мозги или как-то так )) Я там внес небольшие правки перевода из того же MagicMarker ScrollEdition, исправив уже упомянутые свитки на Свиток Длинного Шага и Свиток Поедателя Разума соответственно.

 

Еще была идея Убрать Вот Таким Образом Написанные Названия Свитков, но потом решил, что уже привыкли к такому написанию в оригинале.

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

  • 2 месяца спустя...

 

Добрый!

 

Закл "Хождение по воде (Длительное)" - почему-то на цель, не на себя. Это так задумано?

 

Это баг. Исправлю в следующей версии.

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

Ларкин наверное никс-гончую съел на этом деле) Можешь доходчиво расписать механику этой самой автораздавалки заклинаний?

 

NPC spells  

baseActor.spells = vector()
baseMagicka = fNPCbaseMagickaMult * baseActor.intelligence

spellSchools
= { Alteration, Conjuration, Destruction, Illusion, Mysticism, Restoration }
schoolCaps = {} # could be an array indexed by school enum

for each school in spellSchools:
schoolCaps[school] = { count : 0,
limit : iAutoSpell{school}Max,
reachedLimit : iAutoSpell{school}Max <= 0,
minCost : INT_MAX,
weakestSpell : none }

for each spell in the game: # note: iteration order is important, see comments
if spell.isMarkedDeleted: continue
if spell.castingType != spell: continue
if not spell.isAutoCalculate: continue

if baseMagicka < iAutoSpellTimesCanCast * spell.cost: continue
if spell is in baseActor.race.racialSpells: continue

failedAttrSkillCheck = false
for each effect in spell:
if (effect.baseEffect.flags & TARGET_SKILL) and baseActor.skills[effect.targetSkill] < iAutoSpellAttSkillMin:
failedAttrSkillCheck = true
break
if (effect.baseEffect.flags & TARGET_ATTR) and baseActor.attribute[effect.targetAttr] < iAutoSpellAttSkillMin:
failedAttrSkillCheck = true
break
if failedAttrSkillCheck: continue

school, _ = calcWeakestSchool(spell, actor)
cap = schoolCaps[school]

if cap.reachedLimit and spell.cost <= cap.minCost: continue
if calcBaseCastChance(baseActor, spell, school) < fAutoSpellChance: continue

baseActor.spells.add(spell)

if cap.reachedLimit:
baseActor.spells.remove(cap.weakestSpell)
cap.weakestSpell = baseActor.spells.findMinCostSpell() # note: not school specific
cap.minCost = cap.weakestSpell.cost
else:
cap.count += 1
if cap.count == cap.limit:
cap.reachedLimit = true

if spell.cost < cap.minCost:
cap.weakestSpell = spell
cap
.minCost = spell.cost

 

Comments  

Auto-calculated spells are selected at initial loading time. baseActor refers to the actor with attributes as loaded or auto-calculated, without any kind of spell effects (i.e. abilities) applied.

Due to poor design, iteration order is critical to the algorithm's behaviour. The list of all spells in the game must be in the same order as loaded from the files. NPC spells are held in a vector, which the findMinCostSpell function scans linearly; during the scan, if there is another spell that matches the lowest cost, it keeps the first one found.

Note that when a spell school is past its limit, the weakest spell is removed, and a new weakest spell is selected. This may not be a spell from the same school as the limit. While this is undesired behaviour, fixing it is likely to cause a major difference from vanilla spell selection, which will not have been play tested. It's not recommend to fix this part at the moment.

 

 

 

Как добавлять конкретные спеллы в автораздавалку? Как их оттуда убирать?

Измени коэфы стоимости эффектов - и всё полетит к скампам?

И что станет с автораздачей, если ГМСТ множителя маны неписей изменить с 2 на 3?

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

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

Вы сможете оставить комментарий после входа в



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

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