Project 1999

Go Back   Project 1999 > Class Discussions > Tanks

Reply
 
Thread Tools Display Modes
  #501  
Old 08-15-2023, 01:02 AM
Toxigen Toxigen is offline
Banned


Join Date: Jan 2021
Posts: 4,776
Default

Quote:
Originally Posted by DeathsSilkyMist [You must be logged in to view images. Log in or Register.]
DPS does have diminishing returns in a lot of scenarios. Let me give you an example I posted earlier:

People enjoy the semi-AFK killing of single static respawn mobs.

https://wiki.project1999.com/Travis_Two_Tone according to the wiki he has 875 HP, and respawns every 6 minutes, 40 seconds.

If you are doing 30 DP, you will kill him in 29.1 seconds. This means it takes 429.1 seconds per respawn and kill. 3600 / 429.1 = ~8.4 kills per hour.

If you are doing 31 DP, you will kill him in 28.2 seconds. This means it takes 428.2 seconds per respawn and kill. 3600 / 428.2 = ~8.4 kills per hour.

You would need to kill him for 53 hours straight to get an extra kill lol. This means no breaks in between. You lose your progress if you stop. Extra DPS is not always increasing kills per hour. The 1 kill per hour estimate I gave earlier is assuming you are going balls to the wall in terms of your killing process.

You are assuming every player is going to be XPing in the most efficient way possible, and thus maximizing their DPS at all times. It is a bit silly to make the claim that this DPS difference is going to be noticeable for most players, who are probably not XPing at maximum efficiency all the time.

Max mana can save your life. I have had situations where I ran out of mana, and needed to use my Blood Ember Greaves as manaless FD. Since Iksars cannot do that, they will find extra mana useful.
jesus fucking christ
Reply With Quote
  #502  
Old 08-15-2023, 01:40 AM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,404
Default

Quote:
Originally Posted by bcbrown [You must be logged in to view images. Log in or Register.]
I looked around and didn't see anything else in the codebase that would account for what I found in the log I examined. Would you expect exactly 20 unique hit values?
Okay, I’ve done some thinking for when I was engaging with the steel warrior… on reflection I believe the 20Di system was introduced with a melee revamp way, way after velious. Sorry!
Reply With Quote
  #503  
Old 08-15-2023, 10:00 AM
Troxx Troxx is offline
Planar Protector

Troxx's Avatar

Join Date: Jun 2014
Location: The sands of DSM’s vagina
Posts: 4,285
Default

Quote:
Originally Posted by Jimjam [You must be logged in to view images. Log in or Register.]
Okay, I’ve done some thinking for when I was engaging with the steel warrior… on reflection I believe the 20Di system was introduced with a melee revamp way, way after velious. Sorry!
I always assumed the DI20 system was in from the start of eq but I could be wrong. The great “ac vs hp” debates didn’t really kick off in a large way until augments were introduced to the game.

For those that are interested, ac won by a landslide in those eras. It didn’t stop the debate from raging for YEARS on the warrior and sk forums. The debates were nasty. I think I logged hundreds of hours parsing fights defensively to help settle the debate. It was possible, with sufficient ac to completely eliminate DI20 incoming hits even on standard length boss fights. The hp centric tank (warriors especially) had a few thousand more hp but the ac centric tank would receive 45-50% of incoming hits for minimum damage (vs 32-37% for the hp tank and like 0.001% or less hits for max vs 2-5% max hits for the hp focused tank … against raid bosses.

On trivial expansions old raid targets and all group content I would regularly never see a DI over 16 (4 highest hits completely eliminated). So yeah a few thousand more hp to hopefully survive being one rounded vs making it statistically nearly impossible to receive one of those tank killing max rounds to begin with. Healers clearly preferred the latter.

So yeah I am assuming we still follow a DI 1-20 model here … but not certain. It may not have been introduced until PoP/LDoN/GoD era. It was definitely in by Omens of War and epic 1.5/2.0 - that’s when all those fancy 90hp + whatever augs started appearing on minor raid mobs. I always went for the 20-25-30 ac augments.
__________________
Quote:
Originally Posted by DeathsSilkyMist View Post
There is no fail message for FD.
https://www.project1999.com/forums/s...43&postcount=2



.
Last edited by Troxx; 08-15-2023 at 10:03 AM..
Reply With Quote
  #504  
Old 08-15-2023, 10:11 AM
Troxx Troxx is offline
Planar Protector

Troxx's Avatar

Join Date: Jun 2014
Location: The sands of DSM’s vagina
Posts: 4,285
Default

Oooo I did find my old magelo though!

I sold it when the level cap was 80 for thousands of dollars. It doesn’t look like the buyer (who moved him to bertoxx) ever changed a piece of his gear. (Not sure on augments)

https://eq.magelo.com/profile/1274599

Not sure why the magelo is showing his ac as low as it is. I want to say I had the second or third highest serverwide warrior ac at the time.
__________________
Quote:
Originally Posted by DeathsSilkyMist View Post
There is no fail message for FD.
https://www.project1999.com/forums/s...43&postcount=2



.
Reply With Quote
  #505  
Old 08-15-2023, 11:19 AM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 7,897
Default

Quote:
Originally Posted by Troxx [You must be logged in to view images. Log in or Register.]
I always assumed the DI20 system was in from the start of eq but I could be wrong. The great “ac vs hp” debates didn’t really kick off in a large way until augments were introduced to the game.

For those that are interested, ac won by a landslide in those eras. It didn’t stop the debate from raging for YEARS on the warrior and sk forums. The debates were nasty. I think I logged hundreds of hours parsing fights defensively to help settle the debate. It was possible, with sufficient ac to completely eliminate DI20 incoming hits even on standard length boss fights. The hp centric tank (warriors especially) had a few thousand more hp but the ac centric tank would receive 45-50% of incoming hits for minimum damage (vs 32-37% for the hp tank and like 0.001% or less hits for max vs 2-5% max hits for the hp focused tank … against raid bosses.

On trivial expansions old raid targets and all group content I would regularly never see a DI over 16 (4 highest hits completely eliminated). So yeah a few thousand more hp to hopefully survive being one rounded vs making it statistically nearly impossible to receive one of those tank killing max rounds to begin with. Healers clearly preferred the latter.

So yeah I am assuming we still follow a DI 1-20 model here … but not certain. It may not have been introduced until PoP/LDoN/GoD era. It was definitely in by Omens of War and epic 1.5/2.0 - that’s when all those fancy 90hp + whatever augs started appearing on minor raid mobs. I always went for the 20-25-30 ac augments.
Interesting! When I was playing live I didn't do anything like this. It is really cool to see you spent a lot of time parsing on live.

It's only on P99 I started looking into how P99 specifically worked. In the EQEMU code, they are also using a D20:

Quote:
// this assumes "this" is the defender
// this returns between 0.1 to 2.0
double Mob::RollD20(int offense, int mitigation)
{
static double mods[] = {
0.1, 0.2, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 0.9, 1.0,
1.1, 1.2, 1.3, 1.4, 1.5,
1.6, 1.7, 1.8, 1.9, 2.0
};

if (IsOfClientBotMerc() && IsSitting()) {
return mods[19];
}

auto atk_roll = zone->random.Roll0(offense + 5);
auto def_roll = zone->random.Roll0(mitigation + 5);

int avg = (offense + mitigation + 10) / 2;
int index = std::max(0, (atk_roll - def_roll) + (avg / 2));

index = EQ::Clamp((index * 20) / avg, 0, 19);

return mods[index];
}

void Mob::MeleeMitigation(Mob *attacker, DamageHitInfo &hit, ExtraAttackOptions *opts)
{

...

auto roll = RollD20(hit.offense, mitigation);

// +0.5 for rounding, min to 1 dmg
hit.damage_done = std::max(static_cast<int>(roll * static_cast<double>(hit.base_damage) + 0.5), 1);
}
I looked at some parses, and for mobs at least it looks like the D20 system described in the code above is still in place. Someone can look through their logs and see if any mobs have more than 20 unique damage values.

Here are the hit values from Mentrax Mountainbone and Eldak Howlingbear against my SK. Both are level 50 and the same stats as far as I am aware:

 

hits YOU for 32
hits YOU for 37
hits YOU for 43
hits YOU for 49
hits YOU for 54
hits YOU for 60
hits YOU for 66
hits YOU for 71
hits YOU for 77
hits YOU for 83
hits YOU for 88
hits YOU for 94
hits YOU for 100
hits YOU for 105
hits YOU for 111
hits YOU for 117
hits YOU for 122
hits YOU for 128
hits YOU for 134
hits YOU for 140


For players, you can hit for more than 20 unique damage values. When fighting Mentrax Mountainbone I got these values. There were some more probably, but I don't need to find them all:

 

39
52
55
64
71
72
79
83
99
103
112
115
119
120
121
122
123
126
141
148
154
157
191
208
212
223


Based on a quick glance at the code, I believe the extra damage values players can get is coming from the ApplyDamageTable() function.

After the D20 is rolled and multiplied against your damage, the ApplyDamageTable() function is called next, and does an additional modification to your damage done based on a percentage.

In the ApplyDamageTable() function there is this return statement:

Quote:
if (!IsClient()&& !IsBot()) {
return;
}
This means the extra modification is only applied to players, which lines up so far.
Last edited by DeathsSilkyMist; 08-15-2023 at 11:25 AM..
Reply With Quote
  #506  
Old 08-15-2023, 11:20 AM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,404
Default

Maybe they changed displayed AC to show ‘real’ ac accounting for caps?

Edit(in reply to why Troxx’s displayed AC is so low)
Reply With Quote
  #507  
Old 08-15-2023, 11:26 AM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,404
Default

Great code you found.

Shouldn’t the presence of 2 rolls (roll for attack and roll for defence) create a normal distribution (like how rolling 2d6 creates a bell curve where 2 and 12 are 1/36 each, 3 and 11 are 3/36 going up to the most common result, 7 which is 6/36)?

The question is why aren’t hits amounts on mr turtle looking very normally distributed? Each fight he has like 100 hits for 1 specific hit value and the many (more than 19) other hit values tend to only occur a couple of times??

Edit: Interestingly mr turtle himself only hit for one value (like 30 times per fight).
Reply With Quote
  #508  
Old 08-15-2023, 11:35 AM
Toxigen Toxigen is offline
Banned


Join Date: Jan 2021
Posts: 4,776
Default

50 pages on starting stats for an iksar sk

never ceases to amaze
Reply With Quote
  #509  
Old 08-15-2023, 12:55 PM
Lune Lune is offline
Banned


Join Date: Mar 2013
Posts: 3,354
Default

Quote:
Originally Posted by Jimjam [You must be logged in to view images. Log in or Register.]
Great code you found.

Shouldn’t the presence of 2 rolls (roll for attack and roll for defence) create a normal distribution (like how rolling 2d6 creates a bell curve where 2 and 12 are 1/36 each, 3 and 11 are 3/36 going up to the most common result, 7 which is 6/36)?

The question is why aren’t hits amounts on mr turtle looking very normally distributed? Each fight he has like 100 hits for 1 specific hit value and the many (more than 19) other hit values tend to only occur a couple of times??

Edit: Interestingly mr turtle himself only hit for one value (like 30 times per fight).
Yes, 2d10 with the formula:

int index = std::max(0, (atk_roll - def_roll) + (avg / 2))

is going to be normally distributed. However, rounding all the outputs up is going to skew it slightly rightward. Also skewed higher than the expected cluster around 10 with 2d10 by the addition of avg/2 to roll difference. Evidence:

[You must be logged in to view images. Log in or Register.]

I believe the reason Mr. Turtle isn't normally distributed is because of this:

auto atk_roll = zone->random.Roll0(offense + 5);
auto def_roll = zone->random.Roll0(mitigation + 5);

int avg = (offense + mitigation + 10) / 2;

The modifiers on your hits are overwhelming the modifiers on his defense, producing consistently high outputs. The fact that mitigation is added to offense tells me the calculation for mitigation might result in a negative value or it is modified in some other way before final result.
Last edited by Lune; 08-15-2023 at 01:11 PM..
Reply With Quote
  #510  
Old 08-15-2023, 01:05 PM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,404
Default

So what are the reasons for the extra values above the enormous spike (on mr turtle)? Is there a further random element to damage? Like a random bonus damage which is only sometimes added? I remember reading about such a thing in the past but can’t find much specific … just ‘internet wisdom’
Last edited by Jimjam; 08-15-2023 at 01:12 PM..
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 08:45 AM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.