Go Back   EQEmulator Home > EQEmulator Forums > Support > Spell Support

Spell Support Broken Spells? Want them Fixed? Request it here.

Reply
 
Thread Tools Display Modes
  #1  
Old 10-14-2008, 08:44 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

ProcChance = (ProcChance * ProcBonus / 100); //Multiplier instead of flat bonus

You can't just multiply it by 102 and expect it to work right.
Reply With Quote
  #2  
Old 10-14-2008, 09:53 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Quote:
Originally Posted by KLS View Post
ProcChance = (ProcChance * ProcBonus / 100); //Multiplier instead of flat bonus

You can't just multiply it by 102 and expect it to work right.
You can if you are then dividing by 100. So, it would take the proc chance and make it 102% of what it was before and then add that amount to the proc chance again to be a total of 202% what it previously was. When we are talking about base ProcChance only being around 0.09 max (at level 75 with all stat AAs), adding 0.10 to that will only make it 0.19, which is still less than 20% of 1.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #3  
Old 10-15-2008, 12:20 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

I know but the code posted was just multiplying by 102 in that case there was no / 100. Which was the problem. =p
Reply With Quote
  #4  
Old 10-15-2008, 01:05 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Shouldn't the "/ 100.0f" be dividing the total bonus by 100 already?

Code:
	ProcBonus += float(itembonuses.ProcChance + (spellbonuses.ProcChance / 10) + AABonus) / 100.0f;
So, if you get 35 from items, 102 from the spell bonus, and 25 from AAs, it should be 162, then divide by 100 and ProcBonus should be 1.62 which means that the spell bonus part of that should only be 1.02.

LOL, after looking at it again, I think I see what went wrong. It should have been this instead:

Code:
	ProcBonus += float(itembonuses.ProcChance + (spellbonuses.ProcChance / 10) + AABonus) / 100.0f;
	
	ProcChance = 0.05f + float(mydex) / 9000.0f;
	ProcBonus = (ProcChance * ProcBonus);
	ProcChance += ProcBonus;
	mlog(COMBAT__PROCS, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus);
	return ProcChance;

I had accidentally left the += in here instead of changing it to just = so it will make ProcBonus a percentage of ProcChance to add to ProcChance:
Code:
ProcBonus += (ProcChance * ProcBonus);
By using the +=, anything greater than a 100% ProcBonus would make ProcChance 100%, which is bad! It is supposed to just make it do 100% more damage, or basically the same as multiplying ProcChance by 200%. I will try this out and see how it goes.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 10-15-2008 at 09:08 AM..
Reply With Quote
  #5  
Old 10-15-2008, 02:08 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Yeah yeah code wasn't in front of me for SE_ProcChance so I didn't see exactly what was going on. The code should work the way you posted.
Reply With Quote
  #6  
Old 10-15-2008, 06:00 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I tried it again and it still seemed to proc way too often. I am still not sure what exactly is causing the problem. For now, I just set it to divide the bonuses by 1000 instead of 100 and that actually seems pretty good for proc rates... So, maybe something is factoring in that I am unaware of.

Code:
	ProcBonus += float(itembonuses.ProcChance + (spellbonuses.ProcChance / 10) + AABonus) / 1000.0f;
	
	ProcChance = 0.05f + float(mydex) / 9000.0f;
	ProcBonus *= ProcChance;
	ProcChance += ProcBonus;
	mlog(COMBAT__PROCS, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus);
	return ProcChance;
The highest spell bonus that I am aware of is from that bard song that adds 102%, and the Weapon Affinity AA can only go to 25. The only thing I am not sure about is the itembonuses for ProcChance.

In mob.cpp
Code:
					if(itemtmp->CombatEffects != 0)
						itembonuses.ProcChance += itemtmp->CombatEffects;
mob.h
Code:
	//PoP effects:
	sint16   StrikeThrough;          // PoP: Strike Through %
//	sint16   CombatEffects; //AFAIK: Combat Effects == ProcChance
//	sint16   Shielding;     //AFAIK, Shielding == MeleeMitigation
//	sint16   Avoidance;		//AFAIK: Avoidance == AvoidMeleeChance
//	sint16   Accuracy;      //AFAIK: Accuracy == HitChance

Maybe it is getting multiplied somewhere, but on my server I have it capped at 50.

So, doing the math, I think the max possible base percent increase should be + 177% (50 + 102 + 25). And since the max dex on my server is 380 without buffs, and with max buffs it only goes as high as 471, that is only 0.10 (10%) proc rate. So, adding another 177% on top of that should be about 0.28 (28%) proc rate which is slightly more than 1 in 4 hits. With a warrior dual weilding, that would make it almost once per round. Hmm, so maybe the code is working right and just seems too extreme, lol. I think that could quickly be fixed by adjusting the equation for the base proc rate, because that will heavily effect the total with bonuses since they are all multipliers.

Having 5% proc chance before dex is factored seems a bit high to me. Especially when even without AAs on a server with max level 60, you can get to 255 dex which would be about 8% base ProcRate. So, maybe instead of adding 0.05 (5%) in the equation, we could add 0.02(2%) before Dex gets calculated. That would bring a player with 255 dex and no other bonuses up to a 5% proc rate, which sounds about like Live IIRC. Then, once AAs, Combat Effects and Spell Bonuses get factored in, a player with 255 dex would be lucky to break 10%. And even someone with 471 dex on my server couldn't exceed 20% proc rate with every bonus and stat maxed. I know that is still way too high, but only bards could get that high as far as I know. Everyone else would be more in the 10-12% range even with very nice gear, maxed AAs, and buffs.

I will give this a try and see how it seems. Do any other admins have feedback on if proc rates already seem good in the current code or not? I imagine it is hard to tell for sure until you start factoring in alot of bonuses. We could probably set the dex bonus code to be capped or to scale down after it exceeds 255 dex.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #7  
Old 10-15-2008, 07:53 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I am going to test this out tonight and see if it gets proc rates more in line with what they should be.

Code:
	ProcBonus += float(itembonuses.ProcChance + (spellbonuses.ProcChance / 10) + AABonus) / 100.0f;
	
	ProcChance = float(mydex) / 10000.0f;
	ProcBonus *= ProcChance;
	ProcChance += ProcBonus;
	mlog(COMBAT__PROCS, "Proc chance %.2f (%.2f from bonuses)", ProcChance, ProcBonus);
	return ProcChance;
This will make Dex 100% responsible for calculating proc rate instead of adding an extra base of 5% on top of Dex. For a server with level 60 max, even a character with 255 Dex will still proc 2.55% of the time. Then factor in that dual wielding 2 proc weapons would raise the rate considerably. And adding proc augs to those proc weapons would probably raise it considerably again. And this is before AAs, Spell Bonuses, or Item Bonuses even come into play. Adding all of that stuff in, you would get to very high proc rates quickly.

On live, I think that weapon delay was also factored into proc rates. So, the slower delay you had, the more often you would proc per swing. That is why rampage warriors would get slowed with a high delay weapon before they AE pulled to Rampage. So they would proc nearly every swing. And when using an AE proc and hitting lots of targets at once, you will proc so much and so fast that it kills everything in the AE/Rampage quickly. I think that is something to consider for further expanding the proc rate code.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
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 02:39 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3