Project 1999

Go Back   Project 1999 > Class Discussions > Tanks

Reply
 
Thread Tools Display Modes
  #21  
Old 01-30-2023, 11:30 AM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 6,151
Default

Quote:
Originally Posted by Snaggles [You must be logged in to view images. Log in or Register.]
If you are FD splitting with a SK you might see more use from this. Bash is generally the first skill a npc blows on engage (or one of them, they don’t save skills for the opportune moment). One bash on a knight is meh, 3-4 npcs trying to bash is a fairly high chance of having FD interrupted. Throw in a caster and you have multiple factors to worry about with splitting.

See? Pragmatic point made about FSI actually being beneficial (but not necessary) for a tank in the tank section. Where’s my academy award?
Hehe unfortunately you won't be getting that award. OP is really talking about Shamans. He is bringing a conversation from the Priest forums over to here for some strange reason. I guess he didn't think the discussion was getting enough attention since it was off topic from the thread at hand. It became off topic due to him.

To further expand upon how FSI should work, I have included some code from the EQEMU GitHub within the spoiler below. The important code is marked in bold:

 

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);
			}
		}


As you can see, if you have FSI, the stun and extra interrupt check are bypassed completely. There is no other code in this function that calls the InterruptSpell() function. This means there is no special code to force interrupt a spell after a stun has been resisted via FSI.

Now, people are going to say "P99 has custom code changes that aren't in the EQEMU repository!", and that is true. But P99 is based on this code, and P99 didn't change every single line of code. If you want to claim that spells always get interrupted after FSI prevents a stun, you need to provide evidence to suggest the P99 developers changed this portion of code. Finding a discussion based on FSI where the developers contributed would be a great piece of evidence to suggest they at least looked at this section of code and made a decision about it. I haven't seen that, but I haven't scoured the forums either.

When it comes to Monks/Shadowknights/Warriors, racial Regeneration is a much bigger helper when it comes to soloing. It will significantly reduce your down times. Outside of soloing, it doesn't really do much. Most racials operate this way: you get the best utility from them when soloing, and lose most of their utility outside of that. FSI is specifically very good for Shamans, because it can save you during the pre-slow period of the fight (the first minute or so), where racial Regeneration is just too slow to save you. You will get a total of 80HP in that minute. When fighting mobs that hit for 140+, that isn't even 1 hit saved. Once the mob is slowed, no racial really matters since the fight is under control, barring any extreme exceptions like getting attacked by other mobs or something.
__________________
Last edited by DeathsSilkyMist; 01-30-2023 at 11:36 AM..
Reply With Quote
  #22  
Old 01-30-2023, 11:36 AM
Snaggles Snaggles is offline
Planar Protector


Join Date: Jul 2011
Posts: 2,624
Default

I'm shocked you arent taking my side with FSI but also remember you have a troll SK.

We know where this thread is going. I'll bow out.
Reply With Quote
  #23  
Old 01-30-2023, 11:40 AM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 6,151
Default

Quote:
Originally Posted by Snaggles [You must be logged in to view images. Log in or Register.]
I'm shocked you arent taking my side with FSI but also remember you have a troll SK.

We know where this thread is going. I'll bow out.
I didn't really comment on your explanation specifically, but I can certainly do so.

My stance on Shadowknights has been if you MOSTLY group/raid with your SK, go Ogre. The FSI will help you out more in group situations than regen typically, because you will have a healer. Your example with pulling mobs is also correct, and you are more likely to pull like that in a group.

If you mostly solo, go Troll. FSI isn't going to help you too much in this situation, because you will be fear kiting a large portion of the time anyway, which means you aren't getting stunned. The HP Regeneration is going to reduce your downtime more than getting saved with FSI.
__________________
Reply With Quote
  #24  
Old 01-30-2023, 11:50 AM
Ripqozko Ripqozko is offline
Planar Protector


Join Date: Jul 2018
Posts: 1,819
Default

993
Reply With Quote
  #25  
Old 01-30-2023, 12:46 PM
Crede Crede is offline
Planar Protector


Join Date: Oct 2013
Posts: 1,982
Default

Quote:
Originally Posted by DeathsSilkyMist [You must be logged in to view images. Log in or Register.]
I didn't really comment on your explanation specifically, but I can certainly do so.

My stance on Shadowknights has been if you MOSTLY group/raid with your SK, go Ogre. The FSI will help you out more in group situations than regen typically, because you will have a healer. Your example with pulling mobs is also correct, and you are more likely to pull like that in a group.

If you mostly solo, go Troll. FSI isn't going to help you too much in this situation, because you will be fear kiting a large portion of the time anyway, which means you aren't getting stunned. The HP Regeneration is going to reduce your downtime more than getting saved with FSI.
I would agree with this. I have met a few raiding SKs who regretted not being ogres, so that is something to keep in mind. For soloing unfortunately Sks get shitty bind wound & are left with the velious bp for downtime healing which is really slow so regen becomes a bigger deal.
Reply With Quote
  #26  
Old 01-30-2023, 12:53 PM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 6,151
Default

Quote:
Originally Posted by Crede [You must be logged in to view images. Log in or Register.]
I would agree with this. I have met a few raiding SKs who regretted not being ogres, so that is something to keep in mind. For soloing unfortunately Sks get shitty bind wound & are left with the velious bp for downtime healing which is really slow so regen becomes a bigger deal.
Exactly. Being able to heal 440 HP/Min instead of 360 HP/Min while spamming Velious BP is roughly a 20% increase in healing per minute. You will also be regenerating while chasing feared mobs via fear kiting, so that is up to an extra 80 HP/Min while not spamming Velious BP.
__________________
Reply With Quote
  #27  
Old 01-30-2023, 12:55 PM
Danth Danth is offline
Planar Protector


Join Date: Oct 2009
Posts: 3,271
Default

Don't know what I'm supposed to be pulling where bash resist is going to routinely matter. I've split Khelkor's room, Protectors of Zek, Reets/Juggernauts, Necropolis rats, Velk castle golems, Hateplane, etc. Bash just isn't a big deal. When the subject has come up in the past the pro-ogre proponents kept moving the goalposts to higher- and higher-end areas like Veeshan's Peak. The worst places for pulling are Kedge and Siren's because of the underwater, and that's because of movement from being hit interrupting spells, not because of bash.

--Bash resist is nice on a soloist shaman since shamans spend a lot of time casting slow-cast spells. Still isn't required, but at least there it saves some nuisance. Prior to the shaman obtaining the torpor spell regeneration is pretty much flat-out better for what should be obvious reasons.

--Supposedly, parsing years ago suggested the ogre racial is worth a couple per cent higher threat generation for a warrior. It also means a warrior can move backwards while being hit without being stopped now and then.

Among the three ogre classes, bash resist is never worth more than a slight advantage. To the min-maxer who wants that slight advantage, it makes for what is probably the best overall group/raid warrior, the best soloist high-level shaman, and maybe the best raid-puller shadowknight. In most other cases other racials (notably regeneration) tend to perform better. In all cases the bash immunity is a quality of life feature, never a necessity, and mostly beneficial to players who get really annoyed at being bashed. If the occasional interrupt or stun bugs you and ruins your fun, make an ogre. Otherwise, have fun on something else; they'll all get the same jobs done throughout the game.

Danth
Reply With Quote
  #28  
Old 01-30-2023, 02:32 PM
Encroaching Death Encroaching Death is offline
Banned


Join Date: Sep 2022
Posts: 3,249
Default

Regen is stupiod
Reply With Quote
  #29  
Old 01-30-2023, 02:39 PM
Keebz Keebz is offline
Fire Giant


Join Date: Jul 2010
Posts: 784
Default

FSI isn't really useful for FD splitting. For it to really provide value, you'd have to have multiple high level mobs beating on you and be positioned in a corner to prevent push and have their bashes actually land during your 1-second death peace, which is pretty contrived.

FSI is useful for moving raid targets around while tanking, which for SK is a pretty limited set of mobs that all die quickly (Fear Golems, Draco, maybe VP dragons). Much more useful on Warrior, though less so with ToV being rooted these days.

Ogre is a great race, and FSI is occasionally handy, but not the be all end all.
Reply With Quote
  #30  
Old 01-30-2023, 02:39 PM
bobjonesp99 bobjonesp99 is offline
Sarnak


Join Date: Apr 2021
Posts: 226
Default

i main a gnome warrior and id never change that to be a big ugly ogre.

that said, you cant drink wort/bark pots when youre stunned.

reducing your chances of being stunned is pretty valuable as a raid tank.
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 10:53 PM.


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 - 2024, Jelsoft Enterprises Ltd.