I have an update to this thread as I've done extensive research on the original resist system over the last year, and some of the findings apply to modern EQ. See my new thread about it, which has charm root and lull information in it.
A summary of discoveries that are relevant to this thread:
- Blind is confirmed to use a 5 MR floor with a 75% preliminary roll.
- Fear is confirmed to use a 75% preliminary roll but the 5 MR floor on it was removed at some point. (perhaps Sept 4 2002)
- Lulls also use a 75% preliminary roll. The fade early chance is a tick save resistance check.
- EQ's original spell resist system (pre-Sept 2002) had several qualities that made all of these spells much less effective.
- Charisma did reduce charm tick save MR in classic.
I did some parsing recently of fear and blind spells. The results were conclusive:
Code:
EQLive2024 Level 50 Enchanter vs Test Fifty (50-20=30 MR) casting Invoke Fear; 7 tick fear = 42/43+ seconds
Landed fears: 8021; max duration: 8 ticks; avg duration: 5.7 ticks (71.25%); max fears: 4562 (56.88% / 56.06%)
Resists: 1392 (14.79%)
min duration: 0s; max duration: 50s; avg duration: 34s (68.60%)
Simulating 1000000 casts at 30 resist value; caster level 50 target level 50; Floor: 5; Preliminary roll: 75
Initial Effective resist value: 30; tick effective value: 22; spell duration ticks: 7
full resists: 154040 (15.40%); lands: 845960 (84.60%); avg duration ticks: 5.47 (68.38%); max duration roots: 450965 (53.31%)
longest root: 8 ticks
---
EQLive2024 Level 46 Enchanter vs Test Fifty (50+8=58 MR) casting Chase the Moon; 6 tick fear = 36/37+ seconds
Landed fears: 5255; max duration: 7 ticks; avg duration: 3.6 ticks (51.43%); max fears: 1591 (30.28% / 29.08%)
Resists: 2221 (29.71%)
Simulating 1000000 casts at 50 resist value; caster level 46 target level 50; Floor: 5; Preliminary roll: 75
Initial Effective resist value: 58; tick effective value: 50; spell duration ticks: 6
full resists: 294203 (29.42%); lands: 705797 (70.58%); avg duration ticks: 3.56 (50.86%); max duration roots: 199165 (28.22%)
---
EQLive2024 Level 60 Cleric vs Test Sixty Five (50+12 = 62 MR) casting Blinding Luminance; 4 tick blind = 24/25+ seconds
Landed fears: 13658; max duration: 5 ticks; avg duration: 3.0 ticks (60.00%); max fears: 6220 (45.54% / 43.39%)
Resists: 6024 (30.61%)
Simulating 1000000 casts at 50 resist value; caster level 60 target level 65; Floor: 5; Preliminary roll: 75
Initial Effective resist value: 62; tick effective value: 50; spell duration ticks: 4
full resists: 313655 (31.37%); lands: 686345 (68.63%); avg duration ticks: 2.93 (58.60%); max duration roots: 295125 (43.00%)
---
EQLive2025 Level 60 Cleric vs Test Ten (25-40 = 0 MR) casting Blinding Luminance; 4 tick blind = 24/25+ seconds
Landed fears: 355; max duration: 5 ticks; avg duration: 4.3 ticks (86.00%); max fears: 327 (92.11% / 89.86% )
min duration: 0s; max duration: 31s; avg duration: 26s (84.84%)
Simulating 1000000 casts at 25 resist value; caster level 60 target level 10; Floor: 5; Preliminary roll: 75
Initial Effective resist value: -15; tick effective value: 5; spell duration ticks: 4
full resists: 0 (0.00%); lands: 1000000 (100.00%); avg duration ticks: 4.28 (85.60%); max duration roots: 913287 (91.33%)
longest root: 5 ticks
---
EQLive2024 Level 65 Enchanter vs Test Ten (25-40 = 0 MR) casting Invoke Fear; 8 tick fear = 48/49+ seconds (AAs/focii extend it 1 tick)
Landed fears: 1158; max duration: 9 ticks; avg duration: 8.7 ticks (96.67%); max fears: 1158 (100.00%)
min duration: 48s; max duration: 56s; avg duration: 52s (93.39%)
Since these spells all work the same, the root simulator script can be used for all of them. I also made a log parser for fears and blinds. The results match +4 caster level on tick saves with a 5 MR floor, except in the case of Fear the floor is gone. Note that, on Live, the spell durations will end up 0-7 seconds longer than the spell is set to be, because the amount of remaining time left in the server's current tick when the spell lands doesn't count as one of the spell's duration ticks. For my simulator I just added a 50% chance to add a tick on casts to account for this.
It was recently discovered that the oldest EQ clients (in classic and Kunark) had most of the server-side resist logic in them from the period. We've decompiled these and made discoveries from it. I found the lull tick save roll in them, but the other tick save rolls were not found. This is how I know the lull tick saves are 75% +4 caster level like the others. For example, a white con had a 2% chance to fade early in my tests, and a white con would have a lull MR of 15 in modern EQ when the spell lands. But for tick saves we add 4 to caster level, so the MR becomes 15-8=7. That's a 3.5% resist chance, now multiply by the preliminary roll: 0.75 = 2.625% chance to fade every tick.
The original resist system had two big things about it that made these spells worse. One is that the resist roll used to be 0-99 instead of 1-200, meaning the tick save floor of 5 resulted in twice as many resists. (actually a bit more than 2x)
The original resist system also had a level difference floor that could not be debuffed under, and this floor was often 10 if the NPC was anywhere near the player's level. This floor applied to tick saves. The consequence of this floor combined with the 0-99 roll is that tick saves broke the spells four times as frequently as they do in modern EQ for NPCs near the player's level prior to September 2002.
Lulls in classic EQ did not have that 15 MR override. Instead they had a floor that went up the higher level the target was. This tiered floor was very unforgiving and lulls in classic EQ were pretty much unusable. NPCs level 50 and higher were outright immune to lull before September 2002.
The classic resist logic clearly shows charisma modifying charm tick save MR. This was seemingly removed on Sept 4 2002.
See my other thread for details about the classic resist system. It also has some mem blur details that apply to modern EQ.