So I'm working on a game using HeroCloud, and I have a question. There's a character with, say, 5% chance to hit his target critically. How do I accomplish that he actually has 5% chance to do something?
Jump to content
Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.
Posted 09 May 2014 - 11:31 AM
crit_chance = 0.05 if rand_float(0,1) < crit_chance damage *= 1.5For a more "natural" random, you increase the 5% chance by some rate for every failure and reset it when it succeeds:
if rand_float(0,1) < (crit_chance + error) damage *= 1.5 error = 0 else # Increase chance by 6.75% error += crit_chance * 0.0675EDIT: Juliean is correct, I done goofed.
Edited by fastcall22, 09 May 2014 - 12:12 PM.
Posted 09 May 2014 - 11:55 AM
Does this code really do what you expect of it? You are adding crit-chance * 1.0675 to the error everytime, which will increase the chance of success rapidly (100% on the first failure, etc). Didn't you mean
# Increase chance by 6.75% error += crit_chance * 0.0675f;
or something along those lines?
GameDev.net™, the GameDev.net logo, and GDNet™ are trademarks of GameDev.net, LLC.