Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #33  
Old 03-03-2014, 09:12 AM
wtbmacestun
Fire Beetle
 
Join Date: Mar 2010
Posts: 16
Default

wtbmacestun = cowboy6534 ... just cant remember the pw to log into that account atm... anyway if anyone wants it I have the code we used on kegz server. I posted it in another thread but felt i would elaborate more in my own thread.

So basically when I started out on this little adventure to fix ac kegz didnt really have any interest until i found where in the code the actual problem was. The first implementation of it was what i posted here which did not work. The one that ended up working was kegz idea and it worked great.

First what I found was that in this section of code no matter what happened before this section dmg was static to min and max. None of the previous code influence the dmg being done, or rather, mitigation wasnt being applied from a characters AC.

Code:
 if(RuleB(Combat, UseIntervalAC)) {			
			//int8 leveldif = ((other->GetLevel()) - (this->GetLevel())); // //AC Damage Reduction Level Diff - Kegz @ EpicEmu.com
			damage = ((max_dmg+eleBane) - (otherac * acdiv/100.0f)); //AC Damage Reduction - Kegz @ EpicEmu.com
		}
		else {
			//float acdiv2 = 0.25;
			//int otherac = other->GetAC();
			//damage = ((max_dmg+eleBane) - (otherac * acdiv2/100.0f));
			damage = ((max_dmg+eleBane) - (otherac * acdiv/100.0f));
		}		

		//check if we're hitting above our max or below it.
		if((min_dmg+eleBane) != 0 && damage < (min_dmg+eleBane)) {
			mlog(COMBAT__DAMAGE, "Damage (%d) is below min (%d). Setting to min.", damage, (min_dmg+eleBane));
		    //damage = (min_dmg+eleBane);
			damage = ((min_dmg+eleBane) - (otherac * acdiv/100.0f));
		}
		if((max_dmg+eleBane) != 0 && damage > (max_dmg+eleBane)) {
			mlog(COMBAT__DAMAGE, "Damage (%d) is above max (%d). Setting to max.", damage, (max_dmg+eleBane));
		    //damage = (max_dmg+eleBane);
			damage = ((max_dmg+eleBane) - (otherac * acdiv/100.0f));
		}
If you look at whats commented out, youll see the normal ac code. What kegz added was the acdiv/100.0f . now in the other forum post I made, I had stated that I thought he had acdiv set to 20 and actually he had it set to 2. So basically 2% of your ac reduces the dmg you are being hit by. The way its coded is to take it off of the min and max. That is where all the parses that showed an actual difference came from. And actually the last time I had talked to him he said he had turned it up a bit but never told me what he set it to. Shortly after that he shutdown epicemu. But before doing so he gave me the code and then decided to post it on the epicemu github. When he originally tested the code he used velious gear as part of a parse but it was in a zone and level range where that much ac would never be possible so it was on the low side. I would assume 2.5 to 3.5 is where it ended up but youll need to test that out yourself.

If this never makes it in the main build it would have truly have been a waste for us to fix this. Seeing as he shut is server down and I am not in the position to run one myself atm. Although I am still constantly thinking about how to fix things on the server that isnt there any more.... As far as I know my monk weight fix still isnt implemented which is sad... Also all the hate that I received when I first brought this up made me not want to share with this community for a long time... But now that his project is gone and I have nothing to work towards again I thought I would share here.

I have a few ideas on how to bring back the Iksar ac bonus that was removed from live a long time ago. Which can be made into a database option for servers that want it and servers that dont. The ac fix should not be made an option though. Its gone on long enough that AC has been broken. If you have any questions let me know.
Reply With Quote
 


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 08:51 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