Problem with Regen.src

Here you can post threads requesting help on the official POL Ultima Online Emulator Core 096.
Note: Core 096 is no longer officially supported.
Post Reply
Damian
New User
Posts: 4
Joined: Sun Sep 30, 2007 1:00 am

Problem with Regen.src

Post by Damian »

Hey,

I've been trying to compile regen.src, found in /pkg/character/regen.src. The following error comes up when I try:

Expected an identifier, got User Function GetStaminaRegenRate instead.
Near: exported function GetStaminaRegenRate(character)
File: C:\EquinoxUO\pkg\character\regen.src, Line 77
Error reading function.
Compilation failed.
Execution aborted due to: Error compiling file

Thing is, I've looked over the whole script and I cannot find anything wrong. It's probably just an oversight on my part, but if anyone has any insight it would be much appreciated.

Thanks :D

The problematic script:

Code: Select all

use uo;

include "include/dotempmods";

program regen()
	return 1;
endprogram

exported function GetLifeRegenRate (character)
	// 1 point per 5 seconds
	// ... is 12 points per minute
	// ... is 1200 hundredths per minute

	//No regen if poisoned
	if (character.poisoned)
		return 0;
	endif

	//NPCs regenerate faster if they have more HP
	if (!character.acctname)
		if (GetAttributeBaseValue (character, "Strength") < 1500)
			return 1200;
		endif
		return (CINT (GetAttributeBaseValue (character, "Strength")/10) * 12);
	endif

	//If they're hungry, don't regenerate HP as fast or at all
	var hunger := CINT (GetObjProperty (character, "hunger"));
	if (!hunger)
		hunger := 0;
	endif

	if (hunger >= 9)
		return 0;
	elseif (hunger >= 7)
		return 600;
	elseif (hunger > 5)
		return 1000;
	endif
	return 1200; 
endfunction

exported function GetLifeMaximumValue(character)
	//Do a stat cap on players
	if (character.acctname)
		if (!character.cmdlevel)
			var maxstr := GetObjProperty (character, "maxstr");
			if (!maxstr)
				maxstr := 75;
			endif
			if (GetAttributeBaseValue (character, "Strength") > maxstr * 10);
				SetAttributeBaseValue (character, "Strength", maxstr*10);
			endif
		endif		
	endif

	//possible bonus MaxHP from spell effects
	if (GetObjProperty (character, "longtermmods"))
		var bonusmaxhp := 0;
		var tempmods := GetObjProperty (character, "longtermmods");
		foreach submod in tempmods
			if (submod[1] == "BonusMaxHP" or submod[1] == "cBonusMaxHP")
				bonusmaxhp := bonusmaxhp + submod[2];
			endif
		endforeach
		if (bonusmaxhp)
			return (GetAttribute (character, "Strength") + bonusmaxhp) * 100;
		endif
	endif

    return GetAttribute (character, "Strength") * 100;

endfunction



exported function GetStaminaRegenRate(character)
	if (character.poisoned)
		return 100;
	endif
	
	//Ignore all this for NPCs
	if (!character.acctname)
		return 1200;
	endif

	//If they're hungry, don't regenerate stamina as fast or at all
	var hunger := CINT (GetObjProperty (character, "hunger"));
	if (!hunger)
		hunger := 0;
	endif
	
	if (hunger >= 9)
		return 100;
	elseif (hunger >= 7)
		return 600;
	endif
	
	//If the last thing they ate was a high food value item, they regenerate stamina faster
	var foodregen := GetObjProperty (character, "#dotempmod_stamina_regen_rate");
	if (!foodregen)
		return 1200;
	endif

	return foodregen;
endfunction



exported function GetStaminaMaximumValue(character)
	//Do a stat cap on players
	if (character.acctname)
		if (!character.cmdlevel)
			var maxdex := GetObjProperty (character, "maxdex");
			if (!maxdex)
				maxdex := 75;
			endif
			if (GetAttributeBaseValue (character, "Dexterity") > maxdex * 10);
				SetAttributeBaseValue (character, "Dexterity", maxdex*10);
			endif
		endif
	endif

	//possible bonus MaxStamina from spell effects
	if (GetObjProperty (character, "longtermmods"))
		var bonusmaxstam := 0;
		var tempmods := GetObjProperty (character, "longtermmods");
		foreach submod in tempmods
			if (submod[1] == "BonusMaxStam" or submod[1] == "cBonusMaxStam")
				bonusmaxstam := bonusmaxstam + submod[2];
			endif
		endforeach
		if (bonusmaxstam)
			return (GetAttribute (character, "Dexterity") + bonusmaxstam) * 100;
		endif
	endif

    return GetAttribute (character, "Dexterity") * 100;
endfunction


exported function GetManaRegenRate(character)
	//No regen if poisoned
	if (character.poisoned)
		return 0;
	endif
		
	//Ignore all this for NPCs
	if (!character.acctname)
		return 1200;
	endif

	//If they're hungry, don't regenerate mana as fast or at all
	var hunger := CINT (GetObjProperty (character, "hunger"));
	if (!hunger)
		hunger := 0;
	endif

	if (hunger >= 9)
		return 0;
	elseif (hunger >= 7)
		return 600;
	elseif (hunger > 5)
		return 1000;
	endif

	return 1200;
endfunction

exported function GetManaMaximumValue(character)
	//Do a stat cap on players
	if (character.acctname)
		if (!character.cmdlevel)
			var maxint := GetObjProperty (character, "maxint");
			if (!maxint)
				maxint := 75;
			endif
			if (GetAttributeBaseValue (character, "Intelligence") > maxint * 10);
				SetAttributeBaseValue (character, "Intelligence", maxint*10);
			endif
		endif
	endif

	//possible bonus MaxMana from spell effects
	if (GetObjProperty (character, "longtermmods"))
		var bonusmaxmana := 0;
		var tempmods := GetObjProperty (character, "longtermmods");
		foreach submod in tempmods
			if (submod[1] == "BonusMaxMana" or submod[1] == "cBonusMaxMana")
				bonusmaxmana := bonusmaxmana + submod[2];
			endif
		endforeach
		if (bonusmaxmana)
			return (GetAttribute (character, "Intelligence") + bonusmaxmana) * 100;
		endif
	endif

    return GetAttribute (character, "Intelligence") * 100;
endfunction

User avatar
OldnGrey
POL Expert
Posts: 657
Joined: Sat Feb 04, 2006 6:26 pm

Post by OldnGrey »

This looks like the World of Dreams regen.src.
Can you please print your vitals.cfg here.
Damian
New User
Posts: 4
Joined: Sun Sep 30, 2007 1:00 am

Post by Damian »

Code: Select all

Vital Life
{
	RegenWhileDead			0
	Alias				Hits
	RegenRateFunction		regen:GetLifeRegenRate
	MaximumFunction		regen:GetLifeMaximumValue
}

Vital Stamina
{
	RegenWhileDead			0
	Alias				Stam
	RegenRateFunction		regen:GetStaminaRegenRate
	MaximumFunction		regen:GetStaminaMaximumValue
}

Vital Mana
{
	RegenWhileDead			0
	RegenRateFunction		regen:GetManaRegenRate
	MaximumFunction		regen:GetManaMaximumValue
}
User avatar
OldnGrey
POL Expert
Posts: 657
Joined: Sat Feb 04, 2006 6:26 pm

Post by OldnGrey »

Nothing appears wrong as far as I can tell from what you've posted.
I assume vitals.cfg is in the same directory as regen.src.
Damian
New User
Posts: 4
Joined: Sun Sep 30, 2007 1:00 am

Post by Damian »

Yup, it is the same directory.

I tried just deleting it, but that just made it worse :P
Damian
New User
Posts: 4
Joined: Sun Sep 30, 2007 1:00 am

Post by Damian »

This has been fixed...

Seems the function was already declared in another include; not sure why. :?
User avatar
OldnGrey
POL Expert
Posts: 657
Joined: Sat Feb 04, 2006 6:26 pm

Post by OldnGrey »

Yeah, I was going to suggest that but it's not often people define vitals functions more than once unless they are mixing together different distros and scriptsets.
Yukiko
Distro Developer
Posts: 2826
Joined: Thu Feb 02, 2006 1:41 pm

Post by Yukiko »

Yes.
Remember that error.
It always means the same thing or atleast in my experience it does.

Gotta wonder about some of those error messages sometimes.
User avatar
The_Visitor
New User
Posts: 9
Joined: Fri Oct 26, 2007 5:29 am

Post by The_Visitor »

I too have some problems with the regen file..

Everytime it try to start up the server it says:
  • "Error loading script pkg/attributes/regen.ecl: Recompile required. Bad version number 8."
^^
MuadDib
Former Developer
Posts: 1091
Joined: Sun Feb 12, 2006 9:50 pm

Post by MuadDib »

The_Visitor wrote:I too have some problems with the regen file..

Everytime it try to start up the server it says:
  • "Error loading script pkg/attributes/regen.ecl: Recompile required. Bad version number 8."
^^
Bad version means you need to recompile all your scripts.
Post Reply