Double Attack change
I think the Client::CheckDoubleAttack() method needs some modifications. Here it is currently:
Code:
bool Client::CheckDoubleAttack(bool AAadd, bool Triple) { Next is the aa bonus *25 is too high. Max double attack skill for a 65 warrior is 255. In the following check if(skill < 300) if a warrior had only 225 skill + all 3 Ferocity AA's, the warrior would never skill up past 225 to max but would always double attack anyway in the random check below that. The magic number 299 is used there. If max skill and max ferocity, the warrior would always double attack. I think with the bonuses you should get real close to always, but not 100%. Rogue and Bards get a discipline that gives the a 10000% bonus so that's the only guarantee I know of. Here's how I've rewritten the mentod. What do you think? Code:
bool Client::CheckDoubleAttack(bool TripleAttack) { |
Quote:
If that's the case, I think we may want to rethink this, especially in the scenario of newer levels. For example, a Monk on a progression server levels up to 50, so their max skill would be 240, so they would start double attacking 100% of the time after 220.8 (so starting at 221) skill. Say the player stops playing & the level cap has been raised to 65 (PoP I think?). They may have 240 skill, but the minimum to double attack 100% of the time (max being 265) is now 243.8 (so have to have 244+). The character hasn't changed, the rules of the server haven't changed, just the max level, but they won't be hitting like before. Granted, in that scenario, it's only a difference of about 9.5%, but that can still be significant. Imo, I think it should be a static value, possibly set as a Rule. If it was set as a rule, would allow us to have a default value, similar to Live (which 300 sounds about right), but if you want to tune it for Progression-type servers, etc, you can. Thoughts? |
AndMetal is right, value should be static, otherwise everytime max cap increses - your char sudenly becomes weaker out of the blue
make sure it will also work beyond lev 80 :D |
heh, right after I posted that I saw the *.92 I used to test and knew it wasn't right.
|
Quote:
Code:
if(chance > MakeRandomInt(0, maxSkill + itembonuses.DoubleAttackChance + aaBonus)) { Code:
int buffs = (spellbonuses.DoubleAttackChance + itembonuses.DoubleAttackChance) * 3; |
two words: diminishing returns
let say with 300 you have 90% chance next +10 gives you +1% next +10 give you +0.5% next +10 give you +0.25% etc or whatever numbers you want to use. BUT at the very end leave soem sort of gap so there is NEVER a 100% chance even if your level is 200 and skill is 1k+ |
so lets work up a calculation. if it should be a static value.. no static % then lets say you can never get more than 95% chance to double attack through bonuses. That means you always have a 5% chance to fail no matter how good you are. So if the best skill value available is a result of maxSkill + aaBonus + itembonuses.DoubleAttackChance then
if(chance > ((maxSkill + aaBonus + itembonuses.DoubleAttackChance)*1.05)) because you could only get 5% less than what is needed for max. Is 95% the right number? |
almost forgot the change needed for client.h
Code:
bool CheckDoubleAttack(bool TripleAttack = false); |
I totally missed the makerandom part
Code:
|
To help with cut/paste:
find client.h line 645 Code:
bool CheckDoubleAttack(bool AAadd = false, bool Triple = false); Code:
bool CheckDoubleAttack(bool tripleAttack = false); Code:
//triple attack: rangers, monks, warriors, berserkers over level 60 Code:
//triple attack: rangers, monks, warriors, berserkers over level 60 Code:
//quad attack, does this belong here?? Code:
//quad attack, does this belong here?? Code:
bool Client::CheckDoubleAttack(bool tripleAttack) { |
Can you move this to Submissions forum Trev, Cave?
|
Done. I'll merge it into SVN so everyone can start testing it out & comment out the old stuff just in case some want to utilize the older code.
|
All times are GMT -4. The time now is 08:44 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.