Quote:
Originally Posted by DeathsSilkyMist
[You must be logged in to view images. Log in or Register.]
You simply aren't reading, which is why you think we don't get it, and why you think your evidence is good.
I posted this earlier:
And I showed the source code for EQEMU in the other thread you made in the tank section (which you also didn't read):
Code:
bool can_stun = false;
int stunbash_chance = 0; // bonus
if (attacker) {
if (skill_used == EQ::skills::SkillBash) {
can_stun = true;
if (attacker->IsClient())
stunbash_chance = attacker->spellbonuses.StunBashChance +
attacker->itembonuses.StunBashChance +
attacker->aabonuses.StunBashChance;
}
else if (skill_used == EQ::skills::SkillKick &&
(attacker->GetLevel() > 55 || attacker->IsNPC()) && GetClass() == WARRIOR) {
can_stun = true;
}
bool is_immune_to_frontal_stun = false;
if (IsBot() || IsClient() || IsMerc()) {
if (
IsPlayerClass(GetClass()) &&
RuleI(Combat, FrontalStunImmunityClasses) & GetPlayerClassBit(GetClass())
) {
is_immune_to_frontal_stun = true;
}
if (
(
IsPlayerRace(GetBaseRace()) &&
RuleI(Combat, FrontalStunImmunityRaces) & GetPlayerRaceBit(GetBaseRace())
) ||
GetBaseRace() == RACE_OGGOK_CITIZEN_93
) {
is_immune_to_frontal_stun = true;
}
} else if (IsNPC()) {
if (
RuleB(Combat, NPCsUseFrontalStunImmunityClasses) &&
IsPlayerClass(GetClass()) &&
RuleI(Combat, FrontalStunImmunityClasses) & GetPlayerClassBit(GetClass())
) {
is_immune_to_frontal_stun = true;
}
if (
RuleB(Combat, NPCsUseFrontalStunImmunityRaces) &&
(
(
IsPlayerRace(GetBaseRace()) &&
RuleI(Combat, FrontalStunImmunityRaces) & GetPlayerRaceBit(GetBaseRace())
) ||
GetBaseRace() == RACE_OGGOK_CITIZEN_93
)
) {
is_immune_to_frontal_stun = true;
}
}
if (
is_immune_to_frontal_stun &&
!attacker->BehindMob(this, attacker->GetX(), attacker->GetY())
) {
can_stun = false;
}
if (GetSpecialAbility(UNSTUNABLE)) {
can_stun = false;
}
}
if (can_stun) {
int bashsave_roll = zone->random.Int(0, 100);
if (bashsave_roll > 98 || bashsave_roll > (55 - stunbash_chance)) {
// did stun -- roll other resists
// SE_FrontalStunResist description says any angle now a days
int stun_resist2 = spellbonuses.FrontalStunResist + itembonuses.FrontalStunResist +
aabonuses.FrontalStunResist;
if (zone->random.Int(1, 100) > stun_resist2) {
// stun resist 2 failed
// time to check SE_StunResist and mod2 stun resist
int stun_resist =
spellbonuses.StunResist + itembonuses.StunResist + aabonuses.StunResist;
if (zone->random.Int(0, 100) >= stun_resist) {
// did stun
// nothing else to check!
Stun(2000); // straight 2 seconds every time
}
else {
// stun resist passed!
if (IsClient())
MessageString(Chat::Stun, SHAKE_OFF_STUN);
}
}
else {
// stun resist 2 passed!
if (IsClient())
MessageString(Chat::Stun, AVOID_STUNNING_BLOW);
}
}
else {
// main stun failed -- extra interrupt roll
if (IsCasting() &&
!EQ::ValueWithin(casting_spell_id, 859, 1023)) // these spells are excluded
// 90% chance >< -- stun immune won't reach this branch though :(
if (zone->random.Int(0, 9) > 1)
InterruptSpell();
}
}
if (spell_id != SPELL_UNKNOWN && !iBuffTic) {
//see if root will break
if (IsRooted() && !FromDamageShield) // neotoyko: only spells cancel root
TryRootFadeByDamage(buffslot, attacker);
}
else if (spell_id == SPELL_UNKNOWN)
{
//increment chances of interrupting
if (IsCasting()) { //shouldnt interrupt on regular spell damage
attacked_count++;
LogCombat("Melee attack while casting. Attack count [{}]", attacked_count);
}
}
I have also shown videos where it shows I would save more HP with FSI preventing a stun than HP regen:
https://youtu.be/igpbLuNe0ls?t=440
https://youtu.be/uEgFcImQ9XU?t=18
You didn't even read https://wiki.project1999.com/Sakuragi%27s_Warrior_Guide correctly. He is saying if a fight lasts 40 seconds and you get stunned for 2 seconds, the 2 seconds of being stunned is 5% of the total 40 seconds. A Warrior only cares about the raw stun time, since that is time they can't swing their weapons. Spell casters lose more time when getting stunned, because you also have to take into account the amount of time it takes to recast a spell. If you get stunned 4 seconds in to casting Malo, you end up wasting a minimum of 6 seconds (2 from stun and 4 from the spell you didn't finish).
If Sakuragi's math is correct:
1. Over 80 seconds a mob would use their secondary attack 10 times.
2. 8/10 of those secondary attacks would be bashes
3. 4/10 of those secondary attacks would hit
4. 2/10 of those bashes would stun
This means 1 stunning bash every 40 seconds, so I assume he thinks the stuns last for 2 seconds. Based on the source code I showed above, that seems correct.
|
So you're saying, it's still 5%
And for that 5% you want me to believe that overcapping on stats, being big all the time, having some of the worse visual icons, is somehow a good trade?
Sorry 5% while being hit, which you only get the maximum amount of value that FSI offers if you're a warrior basically. Anyone else that's not getting hit from the front all the time sees none of the benefit.
I'm going to have to #hardpass. FSI is a noob trap at worst, or a small QOL at best.