Hardcoded Immunities and Spell Level Limits
Various spell immunities are in the decompiled resist function. This confirms a lot of what was common knowledge but it also provides hard evidence for less understood immunities, such as charm on merchants, so this was a nice thing to find.
Charm Limits
Charm level limits are in the clients. They were hardcoded back then. Not only that but Sony changed the limits on some of these spells over time.
The pre-launch February 1999 client did not have any immunities or limits in it. They were added later.
The next client we have and examined is the March 21 2000 client. (very late pre-K classic era) The limits are in this client, and they are the following:
Charm: 18 (-7)
Befriend Animal: 21 (-3)
Beguile Plants: 24 (-1)
Dominate Undead: 32
Charm Animals: 33
Tunare's Request: 35
Beguile: 37
Solon's Song of the Sirens: 37
Beguild Animals: 43
Cajoling Whispers: 46
Beguile Undead: 46
Allure: 51
Allure of the Wild: 51 (+2)
Cajole Undead: 51
Call of Karana: 51 (-2)
Thrall of Bones: 51 (-2)
Boltran's Agacerie: 51 (-2)
Enslave Death: 51 (-4)
Dictate: 51 (-7)
(The number in parentheses is the difference from Al'Kabor/TAKP's spell data)
This client calculates a level limit for lower level charms using a simple formula. So it appears as though Sony first tried to level limit charm using a formula but later decided to go with individual spell hardcodes for the higher level ones. Said formula is level_spell_was_obtained * 15 / 10, capped at 24. Enslave Death and Dictate are set to 52, then right after that there is a "if higher than 51 make equal to 51" check, which appears to be vestigial. It was gone in the next client we looked at.
Thott mentions that, for a period some time prior to March 2000, charm level caps were spell_level + 10 here:
https://web.archive.org/web/20040301...bard_charm.php
It's noteworthy that Boltran's originally had a cap of level 51. Necro charms also had lower limits. Druid 44 charm had a higher limit and it was nerfed at some point after Kunark. Dictate too was much lower than it ended up being later. This client also included a "Your target is too high of a level for your charm spell" message. (patched in October 28 says notes) You might ask why Boltran's and Call of Karana were useful then because they had the same level limits as the Allures and Boltran's had a shorter duration. The answer is because the Kunark charms had -10 modifiers and shorter cast times.
The March 2000 client also had
charm immunity for city guard NPCs. The spell logic checked for specific race IDs in a switch case. These IDs are: 44, 67, 71, 77, 78, 81, 88, 90, 92, 93, 94, 106, 112, 139. If charm was cast on any NPC of any of these races, the spell automatically resisted. To be clear: charm immunity was added to guards at some point during the classic era, and this March 2000 client is only one of two clients in that era that we were able to obtain and decompile, the other one being before the game even launched, so it was likely added much earlier than March 2000. (perhaps December 99 since a patch note mentions guards gaining 'stats')
The next oldest client I examined was from 4 days post Kunark launch. (April 28 2000) These clients are 5 weeks apart. The differences between these clients include:
- Merchants were made immune to charm. Class was checked for this. (class 15 at the time was merchants)
- Body type 6 (emus call it type 'Extraplanar') was made immune to charm. Not many NPCs have this type. These NPCs include: Efreetis, Fearplane minis, PoSky bosses, planar projections, Yael and a few other things.
- A check was put in that prevents level 38+ bards from charming NPCs that are higher in level than the bard is.
- Enslave Death and Dictate were raised to 52 because the "if < 51, set equal to 51" check was removed.
The following spells were either added to the client or had their limits changed:
Charm: 25
Befriend Animal: 25 (+1)
Beguile Plants: 25
Solon's Bewitching Bravura: 51
Enslave Death: 52 (-3)
Dictate: 52 (-6)
Alluring Whispers: 49
Persuade: 35
The November 29 2000 client, which is the final client before Velious launch a week later, had the same limits as the client from 4 days after Kunark launch.
When did Boltran's limit increase from 51 to 53? A post in this January 30 2001 thread says it was 53:
https://web.archive.org/web/20010212.../052705-4.html
The above charm level limits applied to Kunark and later era zones. In pre-K classic zones (Sky is not included in this), charm was limited to level 51 and under NPCs, meaning Dictate would fail on level 52 NPCs in these zones. Sony had stricter rules for these older zones. That may sound strange but a May 2002 patch note says this: "The Hole now uses Kunark-level Mez/Charm/Taunt rules" and this: "High level NPCs can now be taunted in Cazic Thule". It appears that at Velious launch they increased Boltran's to 53 and Dictate to 58 but limited all charms in classic zones to level 51, and Hole was limited like classic zones until May 2002. (incidentally the old taunt rules were probably that NPCs above level 50 were immune)
The decompiles don't show this pre-K charm limit. I found it in old threads. This Caster's Realm thread is quite explicit about it:
Quote:
Originally Posted by A Player on April 27 2001
OLD WORLD charms (ALL OLD WORLD CHARMS) cap at level 51. This includes the plane of hate, the plane of fear, the hole, etc. Also, all mesmerize spells cap somewhere around 51 - not sure if it's 51 exactly...Maybe more like 53.
New World charms have increased level caps - Boltran's caps at 53 in the new world, while Dictate caps at about 58. The new world includes all of velious and kunark as well as the plane of sky. Don't believe me? Try Dictating your level 55 friend in west commons, and then try it in dreadlands.
|
The thread can be found here:
https://web.archive.org/web/20010430...c&f=9&t=004361
Fear Immunity
The March 2000 client has the fear immunity for level 53+ NPCs in it, so it existed in pre-K classic era.
I found what appear to be checks for the fear immunity discipline in the later clients, and also some other kind of immunity check that I could not decipher. It might be some kind of NPC immunity flag.
Mez Immunity
Giant and dragon mez immunity is found in the Kunark clients. It's missing from the March 21 2000 client (at least the red message for it) but is found in the April 28 client. I think prior to Kunark, the spells landed without giving a resist message but the spells just didn't function. Why I think that is because I found this comment:
Quote:
Originally Posted by Enchanter forum comment March 31 2000
Giants are completely immune to mez series and stuns.....
it will say "they are mezzed" but if you watch them, they are NOT.
|
https://dbsanfte.github.io/eq-archiv...html/2557.html
Specifically what blocks mez is: if the target is stun immune, or has a body type of 4 (giant) or 26 (dragon) or 29 (dragon 2).
The IsStunImmune() function found in the clients needs some explaining. This function is found in all of the clients except the February 1999 one. This function is very small and does the following: checks if the target is a NPC, and checks if the level is above level 52. If both are true then it returns true, else false. Now obviously mobs above level 52 could be stunned and mezed. Why I think the clients have this is because this function is using the pre-K classic era rules as I explained in the charm section above. In pre-K classic, nothing could be mezed or stunned above level 52. This would include the Hole until Luclin (May 2002) when they switched the zone's rules as the patch note stated.
"Enchanters are the only class that can mezz these things, so , thats what the spell is for. You dont have to use it in ANY old world zone ( including hate / fear ) because old world mez rules apply ( anything 53+ cant be mezzed or charmed at all, like in the hole )." (5/18/01)
https://web.archive.org/web/20020114...icID=325.topic
Bard Mez Secondary Resists
At some point during pre-K classic era (August 1999? I can't find a patch note) Sony nerfed bard mez because they considered it too powerful to perma-mez an NPC with a manaless ability. Abashi says this:
"There is no way that we can make a no-mana song as powerful as a mez as good as a spell that uses mana, which is the reason that it was changed to its current state last August or so."
"I think that I've effectively addressed these issues above, but I'll elaborate. The original implementation of the song made it much too powerful considering its lack of a mana control." -- Abashi (09-07-2000)
https://web.archive.org/web/20010303.../011801-2.html
The nerf consisted of a secondary resist roll that wasn't MR based. These secondary resist rolls were found in the clients.
This September 2000 post by a player describes how bard mez resists worked:
"Bard mez songs (Lullaby, Pixie Strike, Twilight) have two resists. The first is your ordinary resist that all songs/spells get. The second resist is something GZ threw in only for bard mez. When a bard tries to mez a mob, three things can happen:
1) The mob succeeds its first resist check and the song doesn't work. Message:
"Mob resisted your <song name>."
2) The mob fails its first resist check, but succeeds its second resist check and the song doesn't work. Message:
"Mob's head nods."
"Mob resists your attempt to mesmerize it."
3) The song is not resisted and works. Message:
"Mob's head nods."" (09-07-2000)
https://web.archive.org/web/20010303.../011801-2.html
The secondary resist check was in the HitBySpell() function in the clients but later moved into the resist check function. Sony moved it because the above post mentions the songs were resulting in a success message even when the secondary resist fails, and moving the check into the primary resist function makes the secondary resist look like a normal resist. Sony moved it not long after that post was written.
There are actually two different secondary resist checks: one for single target mezes and one for AoE mezes. The AoE songs had a harsher secondary resist check. Because Sony failed to mention this, players at the time were reporting that bard mez resists were higher than what Sony was telling them they should be, as players were testing using AoE songs which had a higher resist chance.
The secondary resist chances were the following for single target mez songs:
target level 1-24 = 5%
target level 25-29 = 25%
target level 30-49 = 34%
target level 40-44 = 50%
target level 45+ = 60%
The secondary resist chances were the following for AoE target mez songs:
target level 1-24 = 34%
target level 25-29 = 50%
target level 30-49 = 67%
target level 40-44 = 78%
target level 45+ = 82%
I found three posts from two different players who ran some meticulous resist tests during this era on bard mezes that are worth linking here. In these tests you can clearly see the green con MR floor of 3% and the resist rate on Kelin's cast on level 1 mobs being ~35%.
https://dbsanfte.github.io/eq-archiv...tml/14644.html
https://dbsanfte.github.io/eq-archiv...tml/20040.html
https://dbsanfte.github.io/eq-archiv...tml/13968.html
Those secondary resists were the case until November 15 2000. On that date the patch notes included the following:
Quote:
Originally Posted by Nov 15 2000 Patch Note
– Pixie Strike: Made it less resistible by reducing the secondary resist.
– Song of Twilight: Increased duration. Made less resistible by removing the secondary resist. Allowed it to be cast at any time of day.
|
After that patch the single target mez secondary resists changed to the following:
target level 1-24 = 5%
target level 25-29 = 10%
target level 30-39 = 15%
target level 40-44 = 25%
target level 45-49 = 35%
target level 50+ = 60%
Song of Twilight was hard coded to always win the secondary roll. The AoE mez secondary resists were unchanged.
Kelin's Lucid Lullaby was changed into a single target mez in the big September 4 2002 patch. Presumably the big resist revamp patch is also when they removed the secondary resists on bard mezes. I found comments as late as December 2001 complaining about resists, then after Sept 4 2002 people started mentioning that the resists were better. (Luclin era had less chatter on any given topic)
Also regarding Kelin's: I found two comments remarking about how overpowered this song was in beta, so I think it's possible that Sony gave AoE mez songs a secondary resist before single target mez songs did in what Absor says was August 1999. Neither were found in the February 1999 client however.