Strange Life value [Coregina RC3]

Report core bugs regarding the Ultima Online Emulator Core release (version 097). You can attach your Core Dump. One bug per post.
Locked
Developer Silver
Apprentice Poster
Posts: 58
Joined: Sun Feb 05, 2006 1:34 pm

Strange Life value [Coregina RC3]

Post by Developer Silver »

A really strange bug (?) happens in our live shard with latest 097 Linux core: sometimes Life and MaxLife of NPCs gets very high without a reason... so high that on next reboot POL can't start saying Life is out of value for that NPC... :?

Running RecalcVitals() on NPC, reset MaxLife to right value.

Here's our GetLifeMaximumValue function:

Code: Select all

exported function GetLifeMaximumValue(who)
	var pf := GetObjProperty(who, "PF");
	if(pf)
		return pf * 100;
	else
		return 10000;			// default: 100
	endif
endfunction
In latest error happening we saw: cprop PF was 4, Life was something about 1.900.000.000 and MaxLife was 79548 :shock:

Even if we can debug our scripts to search for a point where Life could be wrongly set too high, MaxLife cannot be set by script... so I think there's a problem in core... :sad:

Any idea?

P.S.: could this this the cause of our often SaveWorldState error
OWHorus
Grandmaster Poster
Posts: 106
Joined: Sat Feb 04, 2006 1:24 pm

Post by OWHorus »

Hello,

we have a similar function for this and no problems at all.

I would recommend you change your script to:

Code: Select all

var pf := CInt(GetObjProperty(who. "PF"));
The CInt() will ensure that you always have a valid integer, and when the CProp is missing, it will return 0, so the 'if' below will work too.

OWHorus[/code]
Developer Silver
Apprentice Poster
Posts: 58
Joined: Sun Feb 05, 2006 1:34 pm

Post by Developer Silver »

Mmmmh.. the else case should run if variable is 0 or an error... CInt() is useless... :?
Locked