Page 1 of 1

Problem with Regen.src

Posted: Sun Sep 30, 2007 2:17 am
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


Posted: Sun Sep 30, 2007 3:15 am
by OldnGrey
This looks like the World of Dreams regen.src.
Can you please print your vitals.cfg here.

Posted: Sun Sep 30, 2007 3:32 am
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
}

Posted: Sun Sep 30, 2007 6:58 am
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.

Posted: Sun Sep 30, 2007 1:25 pm
by Damian
Yup, it is the same directory.

I tried just deleting it, but that just made it worse :P

Posted: Sun Sep 30, 2007 6:05 pm
by Damian
This has been fixed...

Seems the function was already declared in another include; not sure why. :?

Posted: Sun Sep 30, 2007 6:31 pm
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.

Posted: Mon Oct 01, 2007 9:27 pm
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.

Posted: Fri Oct 26, 2007 6:33 am
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."
^^

Posted: Fri Oct 26, 2007 11:29 am
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.