Дисбаланс ёкарныйбабай. Сравнение Фортресса с ОФФ.

 
1 2 3 4 5 6
+
-
edit
 

MetAleX

клан PACCBET
Темка про дамаг даггеров: L2Blah - L2Guru
MetAleX & Almalexia & Lia - забросил Server: Hindemith  

Murkt

Pythoneer

наконец-то есть полные формулы :) Для полного счастья не хватает только параметров Vicious Stance.
[team Їжачки - сумні падлюки]  
+
-
edit
 

MetAleX

клан PACCBET
Нарисовал татушку +4str/-4con. Оверлорд 49 лвл (бонус 1.38). Патака пушки - 210 (топЦ дуалы +4)

Как я понимаю, на патаку влияет только Weapon mastery 18 и дает +28.3

в ПЛ - 31 str, 30 con, 1944 hp, 1435 cp, 393 patak (364.7; str bonus 1.26)
http://alex.ability.ru/p/Shot00734.jpg

голый - 27 str, 31 con, 1955 hp, 1444 cp, 347 patak (318.7; str bonus 1.10)
http://alex.ability.ru/p/Shot00735.jpg

тату - 31 str, 27 con, 1793 hp, 1314 cp, 393 patak (364.7, +14.4%)
http://alex.ability.ru/p/Shot00736.jpg

тату и PL - 35 str, 26 con, 1743 hp, 1274 cp, 452 patak (423.7, +33%/+16%; str bonus 1.46)
http://alex.ability.ru/p/Shot00737.jpg

str bonus в скобках - исходя из формулы патаки чара как патаки оружия * лвл бонус * str bonus, полная ерунда.

в SF формула str бонуса тоже вида x^(str - y), явно не верно, ибо +4 str должен давать одинаковый бонус.
хотя к истине близко - 1 str примерно и дает 3.6% бонуса... 318.7*1.0368=422.9, очень близко, в рамках погрешности.
MetAleX & Almalexia & Lia - забросил Server: Hindemith  
+
-
edit
 

MetAleX

клан PACCBET
Муркт, а ты разобрался со статсами? У меня по-прежнему ничего не получается :(

Для одного чара вроде все более-менее, Weapon mastery прибавляет к патаке столько, сколько написано в приме, lvl bonus очень похож на 1+(lvl-11)/100, тату на str меняет патаку на 3.6%

Но. Если попробовать перетащить те же статсы на другого чара, получается ерунда.

Если гному 40 лвл дать в руки те же дуалы с патакой 210, то в результате должно получиться:

423.7 - базовая патака орка 49 лвл без mastery,
умножаем на 1.0364 ибо у гнома str 39, а у орка с тату и в ПЛ - 35,
делим на 1.38 (лвл бонус для 49), умножаем на 1.29 (лвл бонус для 40),
мастери на дуалы у гнома нет, есть нубский Weap. Mastery 3 который дает +4.5 к патаке.
в результате таких простых вычислений получается, что у гнома 40 лвл с дуалами должна быть патака ~460

в реале же патака 344. получается что мистики на 33% сильнее файтеров. это так и есть, или я чего-то не учел?
MetAleX & Almalexia & Lia - забросил Server: Hindemith  

Murkt

Pythoneer

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

210 дуалы * 1.29 лвл бонус * 1.18 бонус из примы + 4.5 = 324.

Плюс известно, что бонус на силу в С2 был повышен (но не в 3 же раза). Значит ты чего-то забыл отнять/поделить от оверлордовского мастери. Или же эти 33%.


Насчёт 33% - у меня нет никакой возможности проверить. Сделать можно просто - сравнять значение силы у воина (светлый эльф) и у мистика (орка). Причём, делать это нужно только на первом уровне, чтоб никакие скиллы не мешали (кроме пассивных). Кстати, глянь себе в пассивные скиллы - может там чего-то найдёшь? :)
[team Їжачки - сумні падлюки]  
+
-
edit
 

MetAleX

клан PACCBET
дуал мастери шаманам не дают, проверил :) в пассивках висит PL set - я уже писал что сетовый бонус как иконка висит в списке пассивных скилов.

сравнять силу на 1 лвл... а как? :) тату +4/-4 до 2 профы рисовать вроде как нельзя... разве что на одного одеть ПЛ, на другого хэви дум :)

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

формула бонуса силы у меня выходит примерно такая:

STR bonus = 1.036 ^ (STR - 32.5)

для гнумки получается: 210 дуалы * 1.036^(39-32.5) сила * 1.29 лвл + 4 мастери = 344.9

для 49 ОЛ без тату: 210 дуалы * 1.036^(27-32.5) str * 1.38 lvl * 1.33 добавка +28.3 мастери = 345.6;
если взять 4/3 а не 1.33 то 346.4; если 1.34 то 347.9

для ОЛ 49 с тату и в ПЛ: 210 * 1.036^(35-32.5) * 1.38 * 1.34 + 28.3 = 452.5

в общем все довольно близко к правде.

для самой первой картинки в топе: 120 * 1.036^(14-32.5) * 1.62 * 1.34 + [бонус weapon mastery] = 135.4+бонус
бонуса для weapon mastery 40 в приме, естественно, нет. в фортрессе он 85.7 что дает 221.1 :( не совпало :(

чтобы патака стала 210, STR bonus для 14 должен быть 0.48... в SF формула 1.036^(STR-34.92) - близко... но не стыкуется с моими данными.
MetAleX & Almalexia & Lia - забросил Server: Hindemith  
+
-
edit
 

MetAleX

клан PACCBET
блин, точно для файтеров и мистиков все по-разному считается :(

для мистиков очень похожа вот такая формула:

INT bonus = 1.02^(INT-27.5)

а у файтеров он меньше... на 7-8% или матака на 15%. для файтеров по сути работает формула SF:

1.02^(INT - 31.375)
MetAleX & Almalexia & Lia - забросил Server: Hindemith  
+
-
edit
 

MetAleX

клан PACCBET
по поводу уворотов - при разнице в 25 шанс удара где-то 1/6.

проверялось на СР и ОЛ, у СР 106 evasion, у OL 81 accuracy. в среднем было по 5 промахов на 1 удар.
MetAleX & Almalexia & Lia - забросил Server: Hindemith  
+
-
edit
 

ebayer

новичок
Вот что имеем на официалке
Голый персонаж, Человек: скиллы ни наодном уровне не изучались
1 level Off
P.atk = 4 (none) 6 (squire sword) 5 (dagger)
P.def = 72 (none) +1 (squire shirt) +1 (squire pants) --->Overall=76
Accuracy = 33
Critical = 33 (none) 88 (squire sword) 132 (dagger)
Atk.speed = 330 (none) 416 (squire sword) 476 (dagger)
M.atk = 3 (none) 2 (squire sword) 2 (dagger)
M.def = 47 (none)
Evasion = 33 (none)
Speed = 126
Casting speed = 213

Вот что имеем на Яве
1 level Java
P.atk = 4 (none) 6 (squire sword) 5 (dagger)
P.def = 64 (none) +30 (squire shirt p.def=33 ) +18 (squire pants p.def=20) --->Overall=112
Accuracy = 33
Critical = 0 (none) 88 (squire sword) 132 (dagger)
Atk.speed = 363 (none) 416 (squire sword) 476 (dagger)
M.atk = 1 (none) 2 (squire sword) 2 (dagger)
M.def = 47 (none)
Evasion = 33 (none)
Speed = 124
Casting speed = 213


Немного прокачались


3 level Off
P.atk = 4 (none) 6 (squire sword) 5 (dagger)
P.def = 74 (none) +2 (squire shirt) +2 (squire pants) = 78
Accuracy = 33
Critical = 36 (none) 88 (squire sword) 132 (dagger)
Atk.speed = 330 (none) 416 (squire sword) 476 (dagger)
M.atk = 3 (none) 2 (squire sword) 2 (dagger)
M.def = 48 (none)
Evasion = 36 (none)
Speed = 126
Casting speed = 213

3 level Java
P.atk = 4 (none) 6 (squire sword) 5 (dagger)
P.def = 66 (none) +30 (squire shirt) +18 (squire pants) = 115
Accuracy = 35 (none)
Critical = 0 (none) 88 (squire sword) 132 (dagger)
Atk.speed = 363 (none) 416 (squire sword) 476 (dagger)
M.atk = 1 (none) 2 (squire sword) 2 (dagger)
M.def = 48 (none)
Evasion = 35 (none)
Speed = 124
Casting speed = 213


Еще немного прокачаемся


7 level Off
P.atk =??? (none) 6 (squire sword) 5 (dagger) 8 (bone dagger) 18 (short bow)
P.def =??? (none) +2 (squire shirt) +2 (squire pants) +9 (leather pants) = 87
Accuracy = 36 (39)
Critical = 33 (none) 88 (squire sword) 132 (dagger)
Atk.speed = 330 (none) 416 (squire sword) 476 (dagger)
M.atk = 3 (none) 3 (squire sword) 3 (dagger) 3 (bone dagger) 3 (short sword)
M.def = 50 (none) (apprentice ring) + (apprentice ring) + (apprentice necklace) = 66
Evasion = 39 (none)
Speed = 126
Casting speed = 213

7 level Java
P.atk =??? (none) 6 (squire sword) 5 (dagger) 8 (bone dagger) 18 (short bow)
P.def =??? (none) +2 (squire shirt) +2 (squire pants) +9 (leather pants) = 126
Accuracy = 36 (39)
Critical = 0 (none) 88 (squire sword) 132 (dagger)
Atk.speed = 363 (none) 416 (squire sword) 476 (dagger)
M.atk = 3 (none) 3 (squire sword) 3 (dagger) 3 (bone dagger) 3 (short sword)
M.def = 50 (none) + (apprentice ring) + (apprentice ring) + (apprentice necklace) = 94
Evasion = 39 (none)
Speed = 124
Casting speed = 213


КРАСНЫМ помечены расхождения ОФФ || ЯВА


Господа, неприятен тот факт, что никому это неинтересно, приходится подгонять параметры мобов в БД,
пропорционально дамагу. Или, попробовать подкорректировать формулы, собственно сейчас этим и занимаюсь.
Мне нужен саппорт, со стороны знатоков Явы.
netsfl2jgameservermodelactorstat <---- там есть файл CharStat.java, Я в нем не нашел формулы расчета P.def
Если, конечно, это оно и есть


но в комментарии этого кода написано


/** Return the PDef (base+modifier) of the L2Character. */

Вообще ничего непонимаю...

Буду рад любой поддержке.


public int getPDef(L2Character target) { return (int)calcStat(Stats.POWER_DEFENCE, (getActiveChar().isRaid()) ? getActiveChar().getTemplate().basePDef * Config.RAID_DEFENCE_MULTIPLIER : getActiveChar().getTemplate().basePDef, target, null); }
 
+
-
edit
 

Mirosya

разработчик OpenWorlds
Господа, неприятен тот факт, что никому это неинтересно, приходится подгонять параметры мобов в БД,
пропорционально дамагу. Или, попробовать подкорректировать формулы, собственно сейчас этим и занимаюсь.
Мне нужен саппорт, со стороны знатоков Явы.
netsfl2jgameservermodelactorstat <---- там есть файл CharStat.java, Я в нем не нашел формулы расчета P.def
Если, конечно, это оно и есть
 

Расчеты по базовым модификаторам статов зашиты в gameserver/skill/Formulas.java как в sf так и в Fortress.
Посмотри к примеру на FuncPAtkMod/FuncMAtkMod - там собственно и идет расчет калькулятора -
например текущий Patk персонажа (basePatkForTHisCLass + patkWeapon) * STAT_MODifier * level_bonus

ПС Характеристики монстров на самом деле тоже должны считатся по формулам ибо все они как правило зависят только от уровня монстра(для pdef/mdef есть готовые формулы)
ПС2 мне все это жутко интересно - но катастрофически нет времени на данный момент
ПС3 постараюсь оказать любую консулдьтацию по исходному коду :)
 
+
-
edit
 
+
-
edit
 

ebayer

новичок
Переглядел Formulas.java вдоль и поперек, но
FuncPDefMod
ненашел,
FuncMDefMod
нашел.
Такое ощущение что Pdef из "воздуха" берется..

P.S. кстати откуда присваиваются знацения переменным как: STRbonus, DEXbonus, MENbonus,...,STATbonus;
detlevelbonus;
weapon hitbonus;
Откуда берется LevelMod?
double lvlMod = env._player.getLevelMod();

Заранее спасибо
 
+
-
edit
 

Mirosya

разработчик OpenWorlds
Откуда берется LevelMod?
double lvlMod = env._player.getLevelMod();
 

L2PcInstance.java
public double getLevelMod()
{
return (100.0 - 11 + getLevel()) / 100.0;
}
 
+
-
edit
 

Mirosya

разработчик OpenWorlds
P.S. кстати откуда присваиваются знацения переменным как: STRbonus, DEXbonus, MENbonus,...,STATbonus;
 

private static final double[] STRCompute = new double[]{1.036, 34.920}; //{1.016, 28.515}; for C1
private static final double[] INTCompute = new double[]{1.020, 31.375}; //{1.020, 31.375}; for C1
private static final double[] DEXCompute = new double[]{1.009, 19.360}; //{1.009, 19.360}; for C1
private static final double[] WITCompute = new double[]{1.050, 20.000}; //{1.050, 20.000}; for C1
private static final double[] CONCompute = new double[]{1.015, 12.488}; //{1.015, 12.488}; for C1
private static final double[] MENCompute = new double[]{1.010, -0.060}; //{1.015, 12.488}; for C1

public static int MAX_STAT_VALUE = 100;

protected static final double[] WITbonus = new double[MAX_STAT_VALUE];
protected static final double[] MENbonus = new double[MAX_STAT_VALUE];
protected static final double[] INTbonus = new double[MAX_STAT_VALUE];
protected static final double[] STRbonus = new double[MAX_STAT_VALUE];
protected static final double[] DEXbonus = new double[MAX_STAT_VALUE];
protected static final double[] CONbonus = new double[MAX_STAT_VALUE];

static
{
for (int i=0; i < STRbonus.length; i++)
STRbonus[i] = math.floor(math.pow(STRCompute[0], i - STRCompute[1]) *100 +.5d) /100;
for (int i=0; i < INTbonus.length; i++)
INTbonus[i] = math.floor(math.pow(INTCompute[0], i - INTCompute[1]) *100 +.5d) /100;
for (int i=0; i < DEXbonus.length; i++)
DEXbonus[i] = math.floor(math.pow(DEXCompute[0], i - DEXCompute[1]) *100 +.5d) /100;
for (int i=0; i < WITbonus.length; i++)
WITbonus[i] = math.floor(math.pow(WITCompute[0], i - WITCompute[1]) *100 +.5d) /100;
for (int i=0; i < CONbonus.length; i++)
CONbonus[i] = math.floor(math.pow(CONCompute[0], i - CONCompute[1]) *100 +.5d) /100;
for (int i=0; i < MENbonus.length; i++)
MENbonus[i] = math.floor(math.pow(MENCompute[0], i - MENCompute[1]) *100 +.5d) /100;
}

После вышеизложенных махинаций - например для MEN=42 получаем модификатор из массива MENbonus[42]
 
+
-
edit
 

ebayer

новичок
А для DEX=30;
DEXbonus=11?
Если не трудно, подскажи где искать - так меньше вопросов буду задавать.

кстати это что значит?
code text
  1. private static final double[] MENpolynomRuben = new double[]{
  2.                 +6.5556050620594200E-13,
  3.                 -1.8638224683763800E-10,
  4.                 +2.0018163622572800E-08,
  5.                 -7.2108375368351700E-07,
  6.                 +6.3289304637999400E-05,
  7.                 +1.0029266341299700E-02,
  8.                 -1.0175136814796200E-03 + 1
  9.         };

 
+
-
edit
 

Mirosya

разработчик OpenWorlds
А для DEX=30;
DEXbonus=11?
Если не трудно, подскажи где искать - так меньше вопросов буду задавать.

кстати это что значит?
code text
  1. private static final double[] MENpolynomRuben = new double[]{
  2.                 +6.5556050620594200E-13,
  3.                 -1.8638224683763800E-10,
  4.                 +2.0018163622572800E-08,
  5.                 -7.2108375368351700E-07,
  6.                 +6.3289304637999400E-05,
  7.                 +1.0029266341299700E-02,
  8.                 -1.0175136814796200E-03 + 1
  9.         };
 

MENpolynomRuben это из старой сф-овской модели - тот кусок что я привел - это кусок из новой модели - практически основная часть для готовой программы расчета бонусов. Я себе сделал такое чудо специально для пересчета бонусов - думаю не составит труда такое же намалеватб с красивым интерфейсом на каком-нибудь Дельфи ;D

ПС
DEX[20]=1.01
DEX[21]=1.01
DEX[22]=1.02
DEX[23]=1.03
DEX[24]=1.04
DEX[25]=1.05
DEX[26]=1.06
DEX[27]=1.07
DEX[28]=1.08
DEX[29]=1.09
DEX[30]=1.1
DEX[31]=1.11
DEX[32]=1.12
DEX[33]=1.13
DEX[34]=1.14
DEX[35]=1.15
DEX[36]=1.16
DEX[37]=1.17
DEX[38]=1.18
DEX[39]=1.19
DEX[40]=1.2
DEX[41]=1.21
DEX[42]=1.22
DEX[43]=1.24
DEX[44]=1.25
DEX[45]=1.26
DEX[46]=1.27
DEX[47]=1.28

 
+
-
edit
 

ebayer

новичок
Извиняюсь за глупый вопрос, нот я не совсем понял как идет расчет DEX по формуле

|
private static final double[] DEXCompute = new double[]{1.009, 19.360}; //{1.009, 19.360}; for C1 |

|
|
for (int i=0; i < DEXbonus.length; i++) |
DEXbonus = math.floor(math.pow(DEXCompute[0], i - DEXCompute[1]) *100 +.5d) /100; |
|

|
нашел описание "pow"
DEXCompute [0] -> 1.009
в степени (30-19,360) -> 10,640
"floor" - округление в менбшую степень
Тогда что такое .5d?
 
Это сообщение редактировалось 28.06.2006 в 10:14

Murkt

Pythoneer

.5d - это 0.5 в типе double.

Вообще-то, мы тут не про конкретный код разговариваем, да? Не надо спихивать всё в одну тему.
[team Їжачки - сумні падлюки]  
+
-
edit
 

ebayer

новичок
Тогда все понятно, вот параметры Скорости человека по умолчанию
При MOVE_SPEED = 115
SPEED=124

Вот формула
Speed = (Class Base Speed*DEX Modifier)+Armor Bonus+Passives+Buffs
по ней Speed= (115*1.1) = 126.5 --> округляем в меньшую сторону = 126
а вот то что считается в Formulas.java
code text
  1. ...
  2. private static final double[] DEXCompute = new double[]{1.009, 19.360};
  3.  
  4. ...
  5. for (int i=0; i < DEXbonus.length; i++)
  6.                         DEXbonus[i] = math.floor(math.pow(DEXCompute[0], i - DEXCompute[1]) *100 +.5d) /100;
  7.  
  8. ...
  9.  
  10. static class FuncMoveSpeed extends Func
  11.         {
  12.                 static final FuncMoveSpeed _fms_instance = new FuncMoveSpeed();
  13.                 static Func getInstance() {
  14.                         return _fms_instance;
  15.                 }
  16.                 private FuncMoveSpeed()
  17.                 {
  18.                         super(Stats.RUN_SPEED, 0x30, null);
  19.                 }
  20.                 public void calc(Env env)
  21.                 {
  22.                         L2PcInstance p = (L2PcInstance)env._player;
  23.                         env.value *= DEXbonus[p.getDEX()];
  24.                 }
  25.         }
 

Murkt

Pythoneer

ну значет просто DEXbonus неправильный.
[team Їжачки - сумні падлюки]  
+
-
edit
 

MetAleX

клан PACCBET
А по поводу шанса блокировки удара щитом есть идеи? На оффе он явно выше, плюс - есть excellent shield block.

И хейт у танков, по ощущениям, на оффе сильнее.
MetAleX & Almalexia & Lia - забросил Server: Hindemith  

Murkt

Pythoneer

С шансами в основном творицца полная фигня, как то:

- шанс прохождения скилла (есть идея, но нет реализации)
- шанс блока щитом - идей нет. Очень быстро можно уйти за 100%, или надо повышать первичный шанс и понижать эффекты скиллов
- шанс сбить каст
- ну и всякое другое :)
[team Їжачки - сумні падлюки]  
+
-
edit
 

MetAleX

клан PACCBET
Кстати, обнаружил еще одну вещь, в чем обделили оверлордов в фортрессе.

На оффе, как я понимаю, норма CP у всех классов либо 50% либо 80% от хп, без учета пассивки Boost HP.

Так вот, у ОЛ, в отличии от шамана и его брата-варка, норма КП - 80% а не 50%.

У варсмита, кстати, тоже CP - 80% от хп. У BD - 50% (как и у большинства магов и других саппортов).

Например, у ОЛ 54 лвл с -5 con 2067 хп и 1494 кп. Пассивка дает +200 хп, остается 1867, умножаем на 0.8, получится 1493.6 - с точностью до округления правильно.

В фортрессе точно не уверен, но CP примерно половина, что не есть правильно.

(это я пытался разобраться с формулами хп/кп/мп, нашел табличку lvlupgain, но как-то все там сложно)
MetAleX & Almalexia & Lia - забросил Server: Hindemith  
+
-
edit
 

Innersun

новичок
И хейт у танков, по ощущениям, на оффе сильнее.
 


Если хайт сравнить с оффом, то на форте он можно сказать не работает :)

http://slil.ru/22895936 - вот небольшой реплей с оффа, в котором видно, что 1 шиллен кнайт держит (агрессией) рейда 75лвл Iopsa, а остальные (около 10 человек) его бьют.
 
Это сообщение редактировалось 04.07.2006 в 13:32
AD Реклама Google — средство выживания форумов :)

Murkt

Pythoneer

хейт на фортрессе (#28): 655 678 702 752 777...
хейт на прожекте (#28): 653, 676, 700, 750, 775...

1) ни в одних patch notes от NCSoft не было ничего насчёт усиления хейта
2) ни на одном форуме ни в одной теме не было "о, хейт стал работать сильнее"

Один человек и на фортрессе вполне может держать агрессией босса. Только его надо постоянно речаржить, танк должен спамить скилл, и должен быть обкастован на предмет скорости каста.
[team Їжачки - сумні падлюки]  
1 2 3 4 5 6

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru