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 06-11-2012, 02:49 PM
squevis667
Fire Beetle
 
Join Date: Dec 2010
Posts: 18
Default Defensive Proc Rates

As previously discussed here, defensive procs are unaffected by proc rate modifiers http://www.eqemulator.org/forums/showthread.php?t=34722.
This is because of this in attack.cpp:
Code:
for (int i = 0; i < MAX_PROCS; i++) {
               if (MakeRandomInt(0, 100) < MakeRandomInt(0, 20)) {
	            ExecWeaponProc(DefensiveProcs[i].spellID, on);}
          }
I am writing some custom spells that I want to have a 100% proc rate and rewrote the code as follows:
Code:
for (int i = 0; i < MAX_PROCS; i++) {
		switch(DefensiveProcs[i].spellID)
		{
			case 9730:
			case 9733:
			case 9736:
			case 9739:
			case 9742:
				ExecWeaponProc(DefensiveProcs[i].spellID, on);
				break;
			default:
				if (MakeRandomInt(0, 100) < MakeRandomInt(0, 20)) 
				{
					ExecWeaponProc(DefensiveProcs[i].spellID, on);
				}
		}
	}
I even deleted the:
Code:
if (MakeRandomInt(0, 100) < MakeRandomInt(0, 20))
to try to make it proc every time and that still does not work. I am not a C++ programmer. All of my experience is in C#, but the switch should fall through right? Regardless, if I make the default to proc every time, why does it still only proc every so often and not every attack? Is this handled somewhere else in the code or database as well?
Reply With Quote
  #2  
Old 06-11-2012, 05:07 PM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,742
Default

The way you have it written, if TryDefensiveProc is called and passes the checks above the code you posted then for those particular spell IDs it should happen every time.

You should add debugging information to TriggerDefensiveProcs and TryDefensiveProc to log out the various reasons why they would not end up executing the procs. Just glancing at the code, the big thing is that damage must be done in order for them to trigger, and not every swing results in damage.
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 11:25 PM.


 

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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3