Вот наконец достал я своими загребущими ручонками и до этого файла. Всё началось с желания поправить 2 постоянно раздражавших меня заклинания (Quench Life и Disintegrate), а вылилось в полночи проверок различных спеллов с различными параметрами. Думаю здесь подвести небольшой итог своих наблюдений, а также спросить совета по нескольким затруднениям. Начну, наверное, с вышеназванных спеллов - Quench Life мне всегда казался слишком уж слабым для своего уровня, а Disintegrate наоборот - слишком сильным.
Вот, собственно, как выглядит Quench Life:
{3950}{AoE: Tgt_None, [begin]AoE: Tgt_Obj_T_Critter | Tgt_Obj_No_Self | Tgt_Obj_No_ST_Critter_Dead | Tgt_Obj_No_ST_Critter_Undead | Tgt_Obj_No_ST_Critter_Mechanical, [Callback]AoE: Tgt_Object}
{3951}{Cost: 50, Resist: (stat_constitution @ -5), Info: aggressive}
{3954}{AI_Offensive: 17}
{3955}{[begin], Type: EyeCandy, 2, Add, Play: Callback}
{3956}{[begin], Type: ObjFlag, obj_f_critter_flags, OCF_PARALYZED, FLAG_ON}
{3957}{[Callback], Type: ObjFlag, obj_f_critter_flags, OCF_PARALYZED, FLAG_OFF}
//-3958--[Callback], Type: Damage, Dmg_Flags: Full | Death, Dmg_Flags: Scaled-
{3958}{[Callback], Type: Damage, DmgType: Dmg_Normal, Dmg: 50-100, Dmg_Flags: Scaled}
Сейчас хочу сделать небольшое отступление. Если кто не знает - практически на каждое атакующее заклинание в игре целью может быть прокинут спасбросок, дабы уменьшить или вообще нивелировать вредные эффекты заклинания. Успех или неудача спасброска зависит от какой-либо характеристики цели (в основном это телосложение, но в каждом описании спелла характеристика, отвечающая за него, указывается отдельно). Вернемся к примеру выше: как видно из строчки Resist: (stat_constitution @ -5) за это заклинание отвечает характеристика "Телосложение" (constitution), но проверятся она будет уменьшенная на 5, так что, например, на перса с телосложением 15 Quench Life будет действовать, словно у него оно 10.
Так для чего же нужны спасброски? Я пока нашёл только, что если в заклинании чётко прописано количество урона, которое оно нанесёт (а оно прописано почти во всех), то удачный спасбросок цели уменьшает этот урон наполовину. Т.е. если, теоретически, атаковать вышеописанным Quench Life-ом перса с телосложением 25 (25-5=20), то ему всегда будет наноситься только половинный урон.
Ну ладно, пока хватит теории (да и сказать по делу мне пока больше нечего ), перейдём к практике. Я просто опишу, что же я изменил для себя в двух упомянутых выше заклинаниях, чтобы их немного сбалансировать. Может, кому-нибудь будет интересно.
1. Quench Life
Здесь всё просто - я только раскомментил готовую, но закомменченную почему-то разработчиками строку, и получил устраивающий меня результат.
{3950}{AoE: Tgt_None, [begin]AoE: Tgt_Obj_T_Critter | Tgt_Obj_No_Self | Tgt_Obj_No_ST_Critter_Dead | Tgt_Obj_No_ST_Critter_Undead | Tgt_Obj_No_ST_Critter_Mechanical, [Callback]AoE: Tgt_Object}
{3951}{Cost: 50, Resist: (stat_constitution @ -5), Info: aggressive}
{3954}{AI_Offensive: 17}
{3955}{[begin], Type: EyeCandy, 2, Add, Play: Callback}
{3956}{[begin], Type: ObjFlag, obj_f_critter_flags, OCF_PARALYZED, FLAG_ON}
{3957}{[Callback], Type: ObjFlag, obj_f_critter_flags, OCF_PARALYZED, FLAG_OFF}
{3958}{[Callback], Type: Damage, Dmg_Flags: Full | Death, Dmg_Flags: Scaled}
{3959}{[Callback], Type: Damage, DmgType: Dmg_Normal, Dmg: 50-100, Dmg_Flags: Scaled}
Здесь есть интересный момент - если спасбросок цели неудачен, то ей, как и положено, на строчке 3958 просто снесёт все жизни (Dmg_Flags: Full | Death), и она, соответственно, помрёт. Но если же бросок удачен, то дамаг от строчки 3958 (не знаю как ещё сказать, надеюсь, и так понятно) просто аннулируется, а не снижается вдвое. Для этого нам и нужна следующая строка, чтобы даже при удачном спасброске нанести хоть какой-то урон (урон там будет 25-50, ведь мы дойдём до неё только если спасбросок удачен). Воот, с Погашением Жизни разобрались, перейдём ко второму пункту, а именно...
2. Disintegrate
Для начала покажу, что было:
{2700}{AoE: Tgt_Object | Tgt_Obj_No_Self | Tgt_Obj_No_T_PC | Tgt_Obj_No_T_Wall | Tgt_Obj_No_Invulnerable} // Missile
{2701}{Cost: 50, Resist: (stat_constitution @ -5), Info: aggressive}
{2702}{Missile: 0}
{2704}{AI_Offensive: 20}
{2705}{[begin], Type: Damage, DmgType: Dmg_Electrical, Dmg: 30000-30000}
{2706}{[begin], Type: EyeCandy, 2, Add, Play: Callback | Destroy}
{2707}{[Callback], Type: ObjFlag, obj_f_flags, OF_DONTDRAW, FLAG_ON}
а теперь как я это изменил:
{2700}{AoE: Tgt_Object | Tgt_Obj_No_Self | Tgt_Obj_No_T_PC | Tgt_Obj_No_T_Wall | Tgt_Obj_No_Invulnerable} // Missile
{2701}{Cost: 50, Resist: (stat_constitution @ -5), Info: aggressive}
{2702}{Missile: 0}
{2704}{AI_Offensive: 20}
{2705}{[begin], Type: EyeCandy, 2, Add, Play: Callback}
{2706}{[Callback], Type: Destroy, Tgt_Object}
{2707}{[Callback], Type: Damage, DmgType: Dmg_Electrical, Dmg: 100-200, Dmg_Flags: Scaled}
Здесь я сделал по аналогии с Погашением Жизни. Наконец-то у народа Арканума появилась возможность выжить после Дезинтеграции! Опять же, если спасбросок неудачен - привыкай к новой жизни в качестве разрозненных молекул. Если удачен - наносится урон 50-100 (помним про уполовинивание), по-моему, тоже неплохо. Только тут различие с оригиналом в том, что у меня урон наносится не сразу по соприкосновении шаровой молнии с целью, а по прошествии анимации (EyeCandy 2, я так понимаю). Для пошагового боя без разницы, а вот в реалтайме могут быть... неудобства. И да, кстати, теперь Дезинтеграцией не поразбиваешь лихо сундуки - они будут, кхм, "дезинтегрироваться" вместе со всем содержимым.
Фуух, вроде пока всё. Кстати, урон для этих двух заклинаний (при успешных спасбросках), я ещё не окончательно подобрал. Хотелось бы послушать мнения других людей, на тему как бы всё это получше сбалансировать.
P.S. Да, чуть не забыл, Dmg_Flags: Scaled означает, что будет выбираться не просто случайный урон в заданном диапазоне, а то, что он будет зависеть от МА кастера: например, при максимальной МА ВСЕГДА будет наноситься максимальный урон из заданного диапазона. Да, а совета по некоторым затруднениям, про которые я писал в начале поста, я, наверное, спрошу позже. И так уже вроде нормальную простыню накатал. Надеюсь, кому-нибудь было интересно почитать эту писанину.
Edited:
Вот нашёл ошибку у себя в реализации спелла Дезинтеграции - при проваленном спасброске (цель уничтожается сразу) кастер не получает опыта за убийство. Как исправить пока не знаю.
И ещё, на тему затруднений. Вот спелл Disarm:
{1000}{AoE: Tgt_None, [begin]AoE: Tgt_Obj_T_Critter | Tgt_Obj_No_ST_Critter_Dead | Tgt_Obj_No_Self}
{1001}{Cost: 5, Resist: (stat_dexterity @ 0), Info: aggressive}
{1004}{AI_Offensive: 1}
{1005}{[begin], Type: Damage, DmgType: Dmg_Normal, Dmg: 0, Dmg_Flags: Weap_Dropped}
{1006}{[begin], Type: EyeCandy, 2, Add}
Я не знаю, как точно планировали разработчики, но сейчас это заклинание всегда выбивает оружие, вне зависимиости от результата спасброска. Спасбросок здесь только уменьшает урон наполовину (хотя урон и так обозначен как 0) и никоим образом не мешает выбиванию оружия. Хотелось бы сделать так, чтобы у ловкого перса оружие было выбить труднее, т. е. чтобы спасбросок на ловкость действовал нормально. Пока не получается...