Posting Freak
Posts: 4,302
Threads: 256
Joined: 2008-07
Gender: Male
Level: 251
2009-06-29, 10:53 PM
(This post was last modified: 2009-06-30, 01:15 AM by Russt.)
An attempt to find a concrete formula for the damage any monster can deal, given a character and its defense.
(Greyed fields are without screenshot or assumed values; if no attack is specified, touch damage assumed. Presented in no particular order)
| Damage | Source | Character Level | Job Class | STR | DEF/MDEF | Contributor |
|---|
| 6 | Blue Snail | 5 | Beginner | 22 | 0 | LightningZLazer | | 16 | Blue Snail | 144 | Bishop | 4 | 0 | LightningZLazer | | 12 | Blue Snail | 35 | Cleric | 4 | 0 | Russt | | 25 | Blue Snail | 118 | Hermit | 10 | 0 | Stereo | | 62 | Electrophant | 64 | I/L Wizard | 4 | 191 | Paracelsus | | 67 | Electrophant | 64 | I/L Wizard | 4 | 191 | Paracelsus | | 645 | Electrophant - attack1 | 64 | I/L Wizard | 4 | 191 | Paracelsus | | 681 | Electrophant - attack1 | 64 | I/L Wizard | 4 | 191 | Paracelsus | | 3 | Green Snail | 136 | Buccaneer | 670 | 30 | D3ath | | 6 | Blue Snail | 136 | Buccaneer | 670 | 30 | D3ath | | 8 | Red Snail | 136 | Buccaneer | 670 | 30 | D3ath | | 24 | Green Snail | 136 | Buccaneer | 670 | 0 | D3ath | | 26 | Blue Snail | 136 | Buccaneer | 670 | 0 | D3ath | | 30 | Red Snail | 136 | Buccaneer | 670 | 0 | D3ath | | 1485 | Bain | 200 | Warrior | 0 | 0 | Stereo | | 1566 | Bain | 200 | Warrior | 0 | 0 | Stereo | | 1519 | Bain | 200 | Warrior | 2000 | 0 | Stereo | | 1604 | Bain | 200 | Warrior | 2000 | 0 | Stereo | | 1569 | Bain | 200 | Warrior | 5000 | 0 | Stereo | | 1658 | Bain | 200 | Warrior | 5000 | 0 | Stereo | | 1453 | Bain | 200 | Beginner | 0 | 0 | Stereo | | 1535 | Bain | 200 | Beginner | 0 | 0 | Stereo | | 1454 | Bain | 200 | Beginner | 2000 | 0 | Stereo | | 1537 | Bain | 200 | Beginner | 2000 | 0 | Stereo | | 118 | Croco | 65 | Page | 257 | 299 | Loose | | 131 | Croco | 65 | Page | 257 | 299 | Loose | | 89 | Croco | 65 | Page | 257 | 339 | Loose | | 102 | Croco | 65 | Page | 257 | 339 | Loose | | 74 | Croco | 65 | Page | 258 | 363 | Loose | | 86 | Croco | 65 | Page | 258 | 363 | Loose | | 45 | Croco | 65 | Page | 258 | 403 | Loose | | 57 | Croco | 65 | Page | 258 | 403 | Loose | | 146 | Dyle (Attack Up) | 65 | Page | 258 | 363 | Loose | | 162 | Dyle (Attack Up) | 65 | Page | 258 | 363 | Loose | | 110 | Dyle (Attack Up) | 65 | Page | 258 | 403 | Loose | | 130 | Dyle (Attack Up) | 65 | Page | 258 | 403 | Loose |
If you'd like to contribute, all you have to do is post a screenshot showing yourself taking damage from any monster, and your stat screen ( required, or at the very least state your DEF; without it is worthless). They don't have to be in the same pic as long as they're the same stats.
If you really want to be useful, try and get a range. One pic each for the lowest and highest damages you see from the same thing. But it's not strictly required.
Also, if you've already collected some data (Fiel?  ), I'll take it. Accompanying screenshots would be nice but I won't require it, however if two data points appear to contradict each other and only one of them has a screenshot... you know which one I'll throw away.
--
I've already imported what's been posted in http://www.southperry.net/forums/showthread.php?t=11013 that thread, if no one objects (though I don't see why one would).
If there are other such threads, point me to them.
Posting Freak
Posts: 8,478
Threads: 128
Joined: 2008-07
Gender: Neuter
Country Flag: canada
IGN: Oooh
Server: Bera
Job: Empress
Farm: Stereo
2009-06-29, 11:53 PM
(This post was last modified: 2009-06-30, 12:05 AM by Stereo.)
I did some tests that would be difficult to replicate in Global but add useful datapoints...
All with 0 w.def.
Bain vs. lv.200 Warrior (0 str) (White Knight iirc, I didn't write it down though)
1485-1566
Bain vs. lv.200 Warrior (2000 str)
1519-1604
Bain vs. lv.200 Warrior (5000 str)
1569-1658
Bain vs. lv.200 Beginner (0 str)
1453-1535
Bain vs. lv.200 Beginner (2000 str)
1454-1537
I'll get my Paladin to snails soon to take a SS there.
Posting Freak
Posts: 5,248
Threads: 347
Joined: 2008-07
Gender: Male
Sexual Orientation: Lesbian
| Damage | Source | Character Level | Job Class | STR | DEF/MDEF | Contributor |
|---|
| 118 | Croco | 65 | Page | 257 | 299 | Loose | | 131 | Croco | 65 | Page | 257 | 299 | Loose | | 89 | Croco | 65 | Page | 257 | 339 | Loose | | 102 | Croco | 65 | Page | 257 | 339 | Loose | | 74 | Croco | 65 | Page | 258 | 363 | Loose | | 86 | Croco | 65 | Page | 258 | 363 | Loose | | 45 | Croco | 65 | Page | 258 | 403 | Loose | | 57 | Croco | 65 | Page | 258 | 403 | Loose | | 146 | Dyle (Attack Up) | 65 | Page | 258 | 363 | Loose | | 162 | Dyle (Attack Up) | 65 | Page | 258 | 363 | Loose | | 110 | Dyle (Attack Up) | 65 | Page | 258 | 403 | Loose | | 130 | Dyle (Attack Up) | 65 | Page | 258 | 403 | Loose |
Didn't include Threaten in the table above.
I'll post my other characters with 0 Weapon Defense on Snails later.
Test Mushroom
Posts: 10,045
Threads: 1,506
Joined: 2008-06
Gender: Male
Sexual Orientation: Straight
Country Flag: usa
IGN: GuavaCowboy
Server: Zenith
Level: 10x
Job: Jett
Guild: L>
A few things that might make this a lot easier:
- Edit Base.wz to set StandardPDD values to 0
- According to my research, all stats have some effect one way or another on damage received.
Test Mushroom
Posts: 10,045
Threads: 1,506
Joined: 2008-06
Gender: Male
Sexual Orientation: Straight
Country Flag: usa
IGN: GuavaCowboy
Server: Zenith
Level: 10x
Job: Jett
Guild: L>
Apologize for the double post, but I've found these things to be true though some research I just did.
1. The player level has an impact on the amount of damage received.
2. The player level is involved in a multiplier of some sort, but is not a multiplier over the entire equation
Posting Freak
Posts: 950
Threads: 65
Joined: 2009-05
Gender: Transgender - F2M
Sexual Orientation: Bi
Country Flag: israel
IGN: ....|_|0|_|
Server: |_|_|0|
Job: .....|0|0|0|
Ive been doing some researches of my own, and i must say that im extremely close to it. From what I have now, i can see that its an extremely complicated forumula, and its something in the style of:
...many other calculations... (level*multiplier + str*multiplier + int*multiplier + dex*multiplier + luk*multiplier)... more calculations...
The only thing im missing is how are the multipliers generated. They are obviously not static because most of them are things like 2.123785135468.
I'm hoping to finish and have a formula by today's evening, but it will possibly take another day depending on how complicated generating the multipliers is.
On my level 1 equipless beginner with 429 str, 429 int, 50 dex, 50 luk, versus a green mushroom, it was something like (not exact, i have some things missing):
variable1 = dex * 0.25 + luk *0.2871941235 + str*0.4 + int * 0.111111111
if (some weird var i dont understand, possibly level < 15)
variable1 = variable1 * 0.00125
variable2 = level * 0.0018 + variable1 + 0.28
0-StandardPDD * 1.3 (i have no idea what to do with this line, i cant understand my own handwriting  )
damage = variable 2 - (some other variable (possibly def) * variable2 * 0.01)
however this always produced a static damage of about 61, not a min-max range. so i assume one of these "multipliers" was actually a randomized value.
aaannnndddd... im back to debugging.
Account not Activated
Posts: 284
Threads: 46
Joined: 2008-07
Gender: Male
Sexual Orientation: Straight
Country Flag: singapore
Note that the formula IS in the client.. if we had a very good debugger..
Member
Posts: 110
Threads: 11
Joined: 2008-07
2009-07-08, 08:53 AM
(This post was last modified: 2009-07-09, 10:22 AM by D3ath.)
Some more info:
| Damage Range | Source | Character Level | Job Class | Str | Dex | Int | Luk | DEF/MDEF | Contributor |
|---|
| 167 ~ 175 | Flyeye | 144 | Buccaneer | 716 | 47 | 12 | 12 | 0 | D3ath | | 159 ~ 167 | Flyeye | 144 | Buccaneer | 716 | 63 | 12 | 12 | 10 | D3ath | | 9 ~ 17 | Flyeye | 144 | Buccaneer | 736 | 80 | 27 | 27 | 200 | D3ath |
A pattern I found is that the range for each one was 8, so maybe the weapon attack could affect the damage range.
Posting Freak
Posts: 7,905
Threads: 472
Joined: 2008-07
D3ath Wrote:Some more info:
| Damage Range | Source | Character Level | Job Class | Str | Dex | Int | Luk | DEF/MDEF | Contributor |
|---|
| 167 ~ 175 | Flyeye | 144 | Buccaneer | 716 | 47 | 12 | 12 | 0 | D3ath | | 159 ~ 167 | Flyeye | 144 | Buccaneer | 716 | 63 | 12 | 12 | [B]0 | D3ath[/B] | | 9 ~ 17 | Flyeye | 144 | Buccaneer | 736 | 80 | 27 | 27 | [B]0 | D3ath[/B] |
A pattern I found is that the range for each one was 8, so maybe the weapon attack could affect the damage range.
Forgot Zhelm and PAC def/mdef.
Posting Freak
Posts: 950
Threads: 65
Joined: 2009-05
Gender: Transgender - F2M
Sexual Orientation: Bi
Country Flag: israel
IGN: ....|_|0|_|
Server: |_|_|0|
Job: .....|0|0|0|
2009-07-08, 09:39 AM
(This post was last modified: 2009-07-08, 11:42 AM by Kortestanov.)
AngelSL Wrote:Note that the formula IS in the client.. if we had a very good debugger.. of course the formula is in the client, and of course im using a debugger. how do you think i got all the data?
Member
Posts: 110
Threads: 11
Joined: 2008-07
MasPan Wrote:Forgot Zhelm and PAC def/mdef.
Oh right, forgot to change it. Don't have info on here (On PSP)
Posting Freak
Posts: 950
Threads: 65
Joined: 2009-05
Gender: Transgender - F2M
Sexual Orientation: Bi
Country Flag: israel
IGN: ....|_|0|_|
Server: |_|_|0|
Job: .....|0|0|0|
Okay guys, im almost finished! below is a beta algorithm I made in c# that calculated the damage recieved based on the character's level, standardPDD,def,str,int,luk,dex and a random value. note that the formula, as I said, is very complicated, and is being splitted into many paths. so for this to succeed, your character's def must be lower than the standardPDD for it.
I tested it on a level 10 beginner with 429 str 50 dex 400 int 57 luk and 7 def. It's recommended to do the same because as i said its still only a first version and there might be some bugs here and there. Ill post it in a new topic along with explanations and non-programmed formulas when im finished with it.
Code: using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace defense
{
class Program
{
static int Main(string[] args)
{
int def = 7;
int level = 10;
int StandardPDD = 19; //can be found in Base.wz. it's 19 for a lvl 10 beginner
int str = 429;
int inte = 400; //lol i cant make a variable called "int" =\
int dex = 50;
int luk = 57;
int arg6 = 82; //monster's weapon att
uint arg3 = 0xBB6CABC0; //randomization value
int local3 = 0;
int local5 = 0;
int arg5 = 0;
float local6 = arg6;
float local4 = local6 * (float)0.85;
float local8 = local6 * (float)0.8;
//float temp2 = local8;
//float temp = local4 - local8;
//int eax = arg3 / 0x989680;
local8 = (((((local4 - local8) * (arg3 % 0x989680)) / 10000000) + local8) * local6) / 100; //or in other words, local8 = ((((((watt * 0.85) - (watt * 0.8)) * (random % 0x989680)) / 10000000) + (watt * 0.8)) * watt) / 100
arg6 = def;
if (arg6 > 0x7df)
arg6 = 0x7df; //apperantly max defense possible is 0x7df (2015)...
int value = 0; //one of these values i have no idea what they mean
int local1 = 0; //i have no idea what is that one too... seems like its always 0
if (local1 == 1)
{
//some different formula here, will extract it if i see a case when local1 != 0
}
else
{
local3 = str;
local5 = dex;
local1 = inte;
arg5 = luk;
arg5 = (int)((arg5 * 0.25) + (local5 * 0.2857142857142857) + (local3 * 0.4) + (local1 * 0.1111111111111111));
}
int arg1 = 15; //lolwut? i have no idea what is it again.
if (def >= StandardPDD)
{
//some different formula here, will extract it later
}
else
{
if (level < arg1)
{
local6 = (float)(arg5 * 0.00125);
int edi = def - StandardPDD;
float temp = (float)(((level * 0.001818181818181818 + local6 + 0.28) * edi * 1.3) + ((local6 + 0.28) * def));
float FinalDamage = local8 - temp;
return (int)FinalDamage;
}
else
{
//more annoying formulas...
}
}
return 0;
}
}
}
Posting Freak
Posts: 3,213
Threads: 466
Joined: 2008-07
Why in the world would the formula be like that? Are you serious that the formula works like that in-game? O.o
(Uh. How am I going to get a character with those stats without hacking or having a pserver?)
Posting Freak
Posts: 950
Threads: 65
Joined: 2009-05
Gender: Transgender - F2M
Sexual Orientation: Bi
Country Flag: israel
IGN: ....|_|0|_|
Server: |_|_|0|
Job: .....|0|0|0|
2009-07-08, 11:32 AM
(This post was last modified: 2009-07-08, 11:38 AM by Kortestanov.)
Devil's Sunrise Wrote:Why in the world would the formula be like that? Are you serious that the formula works like that in-game? O.o
(Uh. How am I going to get a character with those stats without hacking or having a pserver?) No, the formula is MUCH, MUCH more complicated (as i commented in the source, there are scenarios that have completely different formulas, for example if def > standardpdd). You want me to post the ripped assembler code here? I think it's beyond the max post size.
EDIT: lol, its 5 times bigger than the max post size.
Posting Freak
Posts: 7,488
Threads: 76
Joined: 2008-07
Gender: Male
Sexual Orientation: Straight
Country Flag: North_Carolina
IGN: I don't play MS
You'd think with such a complicated formula they would have made defense more useful
"We've perfected the defense formula! It is balanced and will now react to even the most subtle change in stats!"
"Great. So how much damage should we make Pink Bean do?"
Posting Freak
Posts: 950
Threads: 65
Joined: 2009-05
Gender: Transgender - F2M
Sexual Orientation: Bi
Country Flag: israel
IGN: ....|_|0|_|
Server: |_|_|0|
Job: .....|0|0|0|
Dusk Wrote:You'd think with such a complicated formula they would have made defense more useful 
"We've perfected the defense formula! It is balanced and will now react to even the most subtle change in stats!"
"Great. So how much damage should we make Pink Bean do?"
Actually if you look at the formula, stats barely do anything at all. and as suspected, str is the most "critical" stat, followed by dex, then luk in an extremely small difference, and int. int is about 4 times less than str.
Posting Freak
Posts: 8,478
Threads: 128
Joined: 2008-07
Gender: Neuter
Country Flag: canada
IGN: Oooh
Server: Bera
Job: Empress
Farm: Stereo
Kortestanov Wrote:No, the formula is MUCH, MUCH more complicated (as i commented in the source, there are scenarios that have completely different formulas, for example if def > standardpdd). You want me to post the ripped assembler code here? I think it's beyond the max post size.
EDIT: lol, its 5 times bigger than the max post size.
Does it include the avoidability/miss formula in that? I think it would be useful to at least get a ballpark figure for that, right now the only thing people know is "more avoid = more misses".
Test Mushroom
Posts: 10,045
Threads: 1,506
Joined: 2008-06
Gender: Male
Sexual Orientation: Straight
Country Flag: usa
IGN: GuavaCowboy
Server: Zenith
Level: 10x
Job: Jett
Guild: L>
Stereo Wrote:Does it include the avoidability/miss formula in that? I think it would be useful to at least get a ballpark figure for that, right now the only thing people know is "more avoid = more misses".
There's another fact - No matter how much avoid you have, a 100% miss rate is not possible.
Posting Freak
Posts: 950
Threads: 65
Joined: 2009-05
Gender: Transgender - F2M
Sexual Orientation: Bi
Country Flag: israel
IGN: ....|_|0|_|
Server: |_|_|0|
Job: .....|0|0|0|
Stereo Wrote:Does it include the avoidability/miss formula in that? I think it would be useful to at least get a ballpark figure for that, right now the only thing people know is "more avoid = more misses". Yes, it does. I'm almost finished with creating a damage simulator (will probably finish in the next 10 mins and take an hour to test it) and then ill go for the miss formula.
Junior Member
Posts: 31
Threads: 0
Joined: 2009-01
couldn't you post all of the code by enveloping it in the 'code' code? or maybe set it up as a spoiler?
|