I need some help from someone with an OSI account. I'm getting conflicting information on the bandage timer delays. UOGuide specifies the time it takes to heal yourself with bandages in this formula:

8 - (Dexterity - 80) / 20

Which means at 100 dex the timer would be 7 seconds. It also says the timer cap is 8 seconds no matter what.

The current ServUO formula is

5.0 + (0.5 * (120 - dex) / 10))

Which means 100 dex = 6 second timer. There's also a "TODO" after it saying the algorithm needs to be verified -- which made me think it wasn't exact/up-to-date.

However the UO.com wiki (which shows no forumlas) says at 100 dex self heal time is 6 seconds and 2 seconds for others. I think the entry for that wiki is submitted by a player also however, so it can't be 100% guaranteed.

Can someone with an OSI account do some simple testing with this? I would do it myself with a trial account but my starting character's dex would be too low and be at the 8 second cap so that wouldn't help me figure out which formula it is.
 
So I remembered about the test center on EA servers and made a trial account myself to verify the formula. Strangely enough, the UOGuide formula is wrong. The ServUO formula is much closer to what actual heal timers are on OSI -- at 100 dex I was getting consistently very close to 6 seconds. I used both the built-in Razor bandage timer which showed 6 seconds(doesn't show milliseconds) and my own stopwatch which was showing about 6.2 (user reflexes account for the .2 im guessing). 120 dex was ~5 seconds. Both coincide with the current ServUO formula.

As for the "heal others" timer, I'm not exactly sure what Math.Sin means in the context of the ServUO formula:

seconds = 3.2 - (Math.Sin((double)dex / 130) * 2.5)

Can someone elaborate on exactly what Math.Sin is doing with the numbers?
 
It's doing a trigonometric function. Trigonometry: Sin, Cosine, Tangent
Based on right angle triangle

sin(θ) = Opposite / Hypotenuse used when the adjacent angle is unknown.

This may create another decimal place. using double precision
I've also read about a hyperbolic sine function which may be a better method.

I use some trig at work, but my knowledge is limited in using Math functions in C#.
 
Last edited:
I remember someone trying to mess with this on runuo in bandage.cs to get bandage timer to 6 seconds, not sure if it was successful either.
You might search there.
 
Yeah I figured it was trig sin, but I just really wasn't sure why it was being used for that formula. Either way, the formula isn't right -- it's making healing others way too fast. Should be about 2 seconds @ 100 dex, and that formula has it at ~1.46 seconds. At 125 dex you're real close to 1 second heals with that formula and that makes crosshealing much too overpowered. I'll have to search and see what I can find and if I can't find anything I guess I'll come up with a formula that emulates OSI as closely as I can.
 
Back