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.