Project 1999

Go Back   Project 1999 > General Community > Off Topic

Closed Thread
 
Thread Tools Display Modes
  #1  
Old 08-05-2023, 11:26 AM
Homesteaded Homesteaded is offline
Planar Protector

Homesteaded's Avatar

Join Date: Jul 2021
Location: In God's Grace
Posts: 1,146
Default

They posted today that NPC bash rate is 100%, will be fixed.
  #2  
Old 08-05-2023, 11:35 AM
Insomnia Insomnia is offline
Aviak


Join Date: Feb 2015
Posts: 71
Default

Can we please get this server rolling soon lol. Been longing for this for years
__________________
Laven Crackbringer | Level 56 High Elf Enchanter of Tunare |Blue|
Tyrenell Stormrage | Level 58 Human Druid of Tunare |Blue|
Nazaruul | Level 55 Dark Elf Necromancer of Innoruuk |Green|
  #3  
Old 08-05-2023, 04:01 PM
Secrets Secrets is offline
VIP / Contributor

Secrets's Avatar

Join Date: Oct 2009
Posts: 1,354
Default

Quote:
Originally Posted by Homesteaded [You must be logged in to view images. Log in or Register.]
They posted today that NPC bash rate is 100%, will be fixed.
Not 100%. It's not a bug.

Here's the formula. It matches logs Torven has (and actually, Torven was the one who wrote this formula)

Code:
   // this is precise for the vast majority of NPCs
    // at some point around level 61, base stun chance goes from 45 to 40.  not sure why
    int stun_chance = 45;
    int defenderLevel = defender->GetLevel();
    int levelDiff = GetLevel() - defenderLevel;

    if (GetLevel() > 60)
        stun_chance = 40;

    if (levelDiff < 0)
    {
        stun_chance -= levelDiff * levelDiff / 2;
    }
    else
    {
        stun_chance += levelDiff * levelDiff / 2;
    }
    if (stun_chance < 2)
        stun_chance = 2;

    if (defender->IsNPC() && defenderLevel > RuleI(Spells, BaseImmunityLevel))
        stun_chance = 0;

    if (stun_chance && zone->random.Roll(stun_chance))
    {
        Log(Logs::Detail, Logs::Combat, "Stun passed, checking resists. Was %d chance.", stun_chance);

        int stun_resist = 0;

        if (defender->IsClient())
        {
            stun_resist = defender->aabonuses.StunResist;                        // Stalwart Endurance AA
        }

        if (defender->GetBaseRace() == OGRE && !BehindMob(defender, GetX(), GetY()))        // should this work if the ogre is illusioned?
        {
            Log(Logs::Detail, Logs::Combat, "Frontal stun resisted because, Ogre.");
        }
        else
        {
            if (stun_resist && zone->random.Roll(stun_resist))
            {
                defender->Message_StringID(MT_DefaultText, AVOID_STUN);
                Log(Logs::Detail, Logs::Combat, "Stun Resisted. %d chance.", stun_resist);
            }
            else
            {
                Log(Logs::Detail, Logs::Combat, "Stunned. %d resist chance.", stun_resist);
                defender->Stun(2000, this);    // bash/kick stun is always 2 seconds
            }
        }
    }
    else
    {
        Log(Logs::Detail, Logs::Combat, "Stun failed. %d chance.", stun_chance);

        // This is a crude approximation of interrupt chance based on old EQ log parses
        int interruptChance = 100;

        if (IsNPC() && !IsPet())
        {
            if (GetLevel() < defenderLevel)
                interruptChance = 80;        // Daybreak recently confirmed this 80% chance
        }
        else if (defender->IsNPC())
        {
            int levelDiff = GetLevel() - defenderLevel;

            interruptChance += levelDiff * 10;

            if (defenderLevel > 65 && interruptChance > 0)
                interruptChance = 2;
            else if (defenderLevel > 55)
                interruptChance /= 2;
            else if (defenderLevel > 50)
                interruptChance = 3 * interruptChance / 4;
        }

        Log(Logs::Detail, Logs::Combat, "Non-stunning bash/kick interrupt roll: chance = %i", interruptChance);

        if (zone->random.Roll(interruptChance))
        {
            if (IsValidSpell(defender->casting_spell_id) && !spells[defender->casting_spell_id].uninterruptable)
            {
                Log(Logs::Detail, Logs::Combat, "Non-stunning bash/kick successfully interrupted spell");
                defender->InterruptSpell(SPELL_UNKNOWN, true);
            }
        }
    }
And here's the flee stun code. This was taken again from various logs, and additionally happens on Live:

Code:
// 3 second flee stun check.  NPCs can stun players who are running away from them.  10% chance on hit
    if (spell_id == SPELL_UNKNOWN && damage > 0 && other && other->IsNPC() && !other->IsPet() && other->GetLevel() > 4 && EQ::skills::IsMeleeWeaponSkill(attack_skill))
    {
        if (animation > 0 && zone->random.Roll(10) && other->BehindMob(this, other->GetX(), other->GetY()))
        {
            int stun_resist = aabonuses.StunResist;

            if (!stun_resist || zone->random.Roll(100 - stun_resist))
            {
                if (CombatRange(other, 0.0f, false, true)) {
                    Log(Logs::Detail, Logs::Combat, "3 second flee stun sucessful");
                    Stun(3000, other);
                }
            }
            else
            {
                Log(Logs::Detail, Logs::Combat, "Stun Resisted. %d chance.", stun_resist);
                Message_StringID(MT_DefaultText, AVOID_STUN);
            }
        }
    }
__________________
Engineer of Things and Stuff, Wearer of Many Hats

“Knowing yourself is the beginning of all wisdom.” — Aristotle
  #4  
Old 08-05-2023, 04:10 PM
Naethyn Naethyn is offline
Planar Protector

Naethyn's Avatar

Join Date: Feb 2015
Posts: 1,209
Default

Love the open source proofs. A new age of classic everquest is coming.
__________________
  #5  
Old 08-05-2023, 05:40 PM
Sadre Spinegnawer Sadre Spinegnawer is offline
Planar Protector

Sadre Spinegnawer's Avatar

Join Date: Dec 2012
Posts: 1,745
Default

Quote:
Originally Posted by Naethyn [You must be logged in to view images. Log in or Register.]
Love the open source proofs. A new age of classic everquest is coming.
[You must be logged in to view images. Log in or Register.]
__________________
go go go
  #6  
Old 08-05-2023, 04:48 PM
Torven Torven is offline
Kobold


Join Date: Nov 2010
Posts: 153
Default

He has the defense skill of a level 2 at level 16. Of course he's not going to tank well.

Defense being hard to raise if you neglect it is a very, very well known phenomenon and is entirely accurate. Our skill-up difficulty values are pulled from the client. If you don't keep up with raising the skill then it becomes very hard to raise because it can only raise on a successful miss. If the skill is near zero then mobs will almost never miss you if your skill is super low and you keep leveling. The math on avoidance is precise.

In fact I always tell new players that they absolutely need to tank level 1 mobs to max defensive skill once they hit level 4 otherwise they'll outpace their skill and won't be able to raise it without arena visits. On severs with experience bonuses you'll notice this more because you out-level your skillup rate. Quarm has the 20% bonus on at least.

Incidentally the cast time on the level 16 nuke is 2.5 seconds and NPC attack delays at low levels is 3 seconds.
  #7  
Old 10-04-2023, 11:44 PM
Seducio Seducio is offline
Banned


Join Date: Mar 2011
Posts: 1,343
Default

Quote:
Originally Posted by Torven [You must be logged in to view images. Log in or Register.]
Defense being hard to raise if you neglect it is a very, very well known phenomenon and is entirely accurate. Our skill-up difficulty values are pulled from the client. If you don't keep up with raising the skill then it becomes very hard to raise because it can only raise on a successful miss. If the skill is near zero then mobs will almost never miss you if your skill is super low and you keep leveling. The math on avoidance is precise.

In fact I always tell new players that they absolutely need to tank level 1 mobs to max defensive skill once they hit level 4 otherwise they'll outpace their skill and won't be able to raise it without arena visits.
Here is a great tip for new players on the PQ server from dedicated TAKP dev Torven that shares underlying Defense skill up code.

-Make sure to work on Defense skill early.
-Upon death at level 9 you spawn at bind point with full gear and no exp loss.
-Upon death at level 10 you spawn without gear but still no exp loss.
-Upon death at level 11 you spawn without gear and begin to lose exp upon death.

Plan accordingly and get those Defense skill points early prior to level 9 and level 10 so you don't end up with a high level character with very low Defense skill.
  #8  
Old 10-07-2023, 01:26 PM
Meneldor Meneldor is offline
Banned


Join Date: Oct 2023
Posts: 45
Default

Quote:
Originally Posted by Seducio [You must be logged in to view images. Log in or Register.]
Here is a great tip for new players on the PQ server from dedicated TAKP dev Torven that shares underlying Defense skill up code.

-Make sure to work on Defense skill early.
-Upon death at level 9 you spawn at bind point with full gear and no exp loss.
-Upon death at level 10 you spawn without gear but still no exp loss.
-Upon death at level 11 you spawn without gear and begin to lose exp upon death.

Plan accordingly and get those Defense skill points early prior to level 9 and level 10 so you don't end up with a high level character with very low Defense skill.

Defense skills faster at lvl 4 if you have a full set of cloth armor. A full set costs 2.5p. Defense skills on successfully mitigation ac rolls. If you have nothing but the 2ac newbie shirt, that 2 AC is the only thing generating successful mitigation checks.

I parsed this about 20 times during beta. If you want to skill defense, get suited up in cloth.
  #9  
Old 10-07-2023, 01:32 PM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,896
Default

Quote:
Originally Posted by Meneldor [You must be logged in to view images. Log in or Register.]
Defense skills faster at lvl 4 if you have a full set of cloth armor. A full set costs 2.5p. Defense skills on successfully mitigation ac rolls. If you have nothing but the 2ac newbie shirt, that 2 AC is the only thing generating successful mitigation checks.

I parsed this about 20 times during beta. If you want to skill defense, get suited up in cloth.
This makes sense, I started a half elf warrior in qeynos (not bertox) so had no newbie and therefore had no worn AC and didn't get any defence sill ups for 3 hours (ie until I had looted some cloth armour to wear).
  #10  
Old 10-07-2023, 11:07 PM
Lune Lune is offline
Banned


Join Date: Mar 2013
Posts: 3,314
Default

Quote:
Originally Posted by Meneldor [You must be logged in to view images. Log in or Register.]
Defense skills faster at lvl 4 if you have a full set of cloth armor. A full set costs 2.5p. Defense skills on successfully mitigation ac rolls. If you have nothing but the 2ac newbie shirt, that 2 AC is the only thing generating successful mitigation checks.

I parsed this about 20 times during beta. If you want to skill defense, get suited up in cloth.
Wonder if it worked this way on live. Would explain why my naked rallos zek character with bagged gear never got any skillups
Closed Thread


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 07:52 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 - 2026, Jelsoft Enterprises Ltd.