On Wed, 9 Aug 1995, Mark Garringer wrote:
>
> Ok, I need some advice here...I got this disarm thing down, finally.
> However, a 1st level char without any skill whatever in disarm will
> always disarm someone...
>
> Here is my code:
>
> percent = number(1, 101); /* 101% is a complete failure */
> prob = GET_SKILL(ch, SKILL_DISARM);
>
> if (percent > prob) {
> act ("You failed to disarm $s.", FALSE, ch, 0, victim, TO_CHAR);
> } else {
> disarm(ch, victim);
> }
> }
>
> Advice? Thanks.
Piece of cake.
"percent" is bounded by [1,101]. I.e. its minimum value is 1.
"prob" is equal to your skill level. Which is 0 if you don't have any.
your test
if (percent < prob)
then fail;
else
succeed.
means, if I roll less than my skill level I fail otherwise I succeed.
WRONG!
if my skill is 100 your giving me a 1% chance <roll of 101> to succeed.
To demonstrate the problem your experiencing with no skill guys...
I have no skill so prob = 0;
I roll the worst possible on percent, percent = 1;
(prob < percent) --> (0 < 1) --> false
then fail; <-- gets skipped, test is false
else
success; <-- here we are.. I have no skill yet I suceed.
Your problem? Invert your test.
(prob > percent) not ( prob < percent )
Incidentally, 101 AND 100 are complete failures because (prob < 101) is
always true as well as (prob < 100). You need (prob <= percent) to get only
101 as a complete failure.
<based on the theory that you can't get more than 100% in any given skill.>
--Paul Cole
--
Shamless Plug -- Forbidden Lands <mud.cyberspace.com 5000>
<http://www.cyberspace.com/flmud>
This archive was generated by hypermail 2b30 : 12/18/00 PST