An easier but extremely hacky way of doing this is by setting the datablock health to a high level, and then appropriately deducting/upping the player's health to the desired health level.
//////////////////////////////////
// hacky way of changing health //
//////////////////////////////////
echo("This add-on will overwrite RP Core Player");
datablock PlayerData(RP_Player : PlayerStandardArmor)
{
minJetEnergy = ($RP::pref::canJet) ? $RP::pref::minJetEnergy : 0;
jetEnergyDrain = ($RP::pref::canJet) ? $RP::pref::jetEnergyDrain : 0;
canJet = ($RP::pref::canJet) ? 1 : 0;
maxHealth = 100000; //OPed health level, but it'll be deducted to a level-appropriate health
maxTools = $RP::pref::user::amountTools;
maxWeapons = $RP::pref::user::amountTools;
uiName = "RP Player";
rechargeRate = 0.25;
showEnergyBar = true;
isMage = true;
};
///////////////////////////////////
// torque overrides a la package //
///////////////////////////////////
package RP_Powers_Overrides
{
function gameConnection::SpawnPlayer(%client)
{
%level = RPDB.get(%client.getSaveKey(), "powerlvl");
if(isObject(%client.player)) //angus ghost
%client.player.delete();
parent::SpawnPlayer(%client);
//%client.player.sethealth(90 + (%level * 10));
%client.player.health = 90 + (%level * 10) - %this.getDamageLevel(); //debug crap in case torquescript disbehaves
}
function ProjectileData::damage(%this,%obj,%col,%fade,%pos,%normal)
{
if(%this.directDamage <= 0)
return;
%level = RPDB.get(%obj.client.getSaveKey(), "powerlvl");
%directDamage = %this.directDamage + (%level-- * (%this.directDamage / 10));
parent::damage(%this,%obj,%col,%fade,%pos,%normal);
}
function ProjectileData::radiusDamage(%this, %obj, %col, %distanceFactor, %pos, %damageAmt)
{
%level = RPDB.get(%obj.client.getSaveKey(), "powerlvl");
%DamageAmt2 = %damageAmt + (%level-- * (%damageAmt / 10));
parent::radiusDamage(%this, %obj, %col, %distanceFactor, %pos, %damageAmt2);
}
};
RPRegPackage(RP_Powers_Overrides);