Im not trying to duplicate the formulas verant uses, I am creating my own, but I would gladly make an alternative if people were not satisfied...
|
I think it's great so far. Little bits and pieces will get tweaked along the way. I was toying with the idea of trying to come up with a 'configurable' combat system, so that pertinent combat parameters were stored in a database table giving the indivudual admins the ability to customize combat values on the fly without having to recompile source. Have to track down all the configurable values and come up with some kind of table struct, but dont know if anyone would really care about that degree of customization to their server.
|
I do remember hearing something about the number being a composite of two factors, but I had forgotten about that. I believe defense is that way also. One number effects the chance of being hit and the other how much damage you take. Too bad they decided to join the two numbers.
Image, (This isn't a question. It's a comment since you are not taking questions about your formual :D ) float attacker = ((this->GetLevel()/2) * ((this->GetDEX()/6)+this->GetSTR()+atkbonus+this->pp.skills[skillinuse])); float defender = (other->GetLevel()/2) * (other->GetAC()+(pp.skills[DEFENSE]/2)+other->GetINT()+other->GetAGI()); float hitsuccess = (attacker / defender); There is no point to dividing the level by 2. You can take that out or make it divide by 100 and the resulting hitsuccess number will still be the same. I like where you are going with this. I put some sample numbers to it and like the results. I keep thinking that Dex should have a bigger role, but I'm not sure why. |
I just wanted to stick level in there to make your level somewhat useful, but the level does have a big part, it takes the second part of the equation and multiplies it by half of your level, its very important in the formula :) and as for dex, Verant never used it, im happy its there, even if its divided by 6 :)
|
I understand why level is there. It's just that the "/2" part isn't necessary.
If you pull that out, like below, the result for hitsuccess will be exactly the same. It affects the individual numbers, but when you divide them by each other the net result is the same. float attacker = this->GetLevel() * (this->GetDEX()/6)+this->GetSTR()+atkbonus+this->pp.skills[skillinuse]); float defender = other->GetLevel()* (other->GetAC()+(pp.skills[DEFENSE]/2)+other->GetINT()+other->GetAGI()); float hitsuccess = (attacker / defender); |
Ah ok I see your point... dunno why I did that... (might have been testing other numbers on dividing, *shrug*)
|
All times are GMT -4. The time now is 10:42 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.