Requires tf2_uber.inc
Code:
// Calls this from a timer, ability or whenever you want to do a healingwave
public HealingWave(client)
{
new skill = War3_GetSkillLevel(client,thisRaceID,SKILL_HEALINGWAVE);
if(skill>0)
{
new Float:dist = HealingWaveDistance[skill];
new HealerTeam = GetClientTeam(client);
new Float:HealerPos[3];
GetClientAbsOrigin(client,HealerPos);
new Float:VecPos[3];
new Float:healed = 0.0;
new Float:difference = 0.0;
// Broadcast the healing ring
new Float:vec[3];
GetClientAbsOrigin(client, vec);
vec[2] += 10;
TE_SetupBeamRingPoint(vec, 10.0, dist, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, Green, 10, 0);
TE_SendToAll();
// Search for teammates around (Don't heal yourself with this)
if(client>0)
{
for(new i=1;i<=MaxClients;i++)
{
if(ValidPlayer(i,true)&&GetClientTeam(i)==HealerTeam&&(i!=client))
{
GetClientAbsOrigin(i,VecPos);
if(GetVectorDistance(HealerPos,VecPos)<=dist)
{
// Heal them, but remember how much we healed them by
difference = float(GetClientHealth(i));
new Float:VictimCurHP = float(GetClientHealth(i));
new Float:VictimMaxHP = float(War3_GetMaxHP(i));
if(VictimCurHP<VictimMaxHP)
{
War3_HealToMaxHP(i,RoundToCeil(VictimMaxHP / 100 * HealingWaveAmount[skill]));
healed = healed + GetClientHealth(i) - difference;
}
}
}
}
if (TF2_GetPlayerClass(client) == TFClass_Medic)
{
// If the player is a medic add a small amount for the HP he recovered with the wave to his uber
new Float:uberlevel = TF2_GetUberLevel(client);
// 0.01 = 1%
new Float:amount = healed / 5000;
if(amount>0.0)
{
if((amount+uberlevel)>1.0)
{
TF2_ExSetUberLevel(client, 1.0);
}
else
{
TF2_ExSetUberLevel(client, amount+uberlevel);
}
}
}
}
}
}
public HealingWave(client)
{
new skill = War3_GetSkillLevel(client,thisRaceID,SKILL_HEALINGWAVE);
if(skill>0)
{
new Float:dist = HealingWaveDistance[skill];
new HealerTeam = GetClientTeam(client);
new Float:HealerPos[3];
GetClientAbsOrigin(client,HealerPos);
new Float:VecPos[3];
new Float:healed = 0.0;
new Float:difference = 0.0;
// Broadcast the healing ring
new Float:vec[3];
GetClientAbsOrigin(client, vec);
vec[2] += 10;
TE_SetupBeamRingPoint(vec, 10.0, dist, g_BeamSprite, g_HaloSprite, 0, 15, 0.5, 5.0, 0.0, Green, 10, 0);
TE_SendToAll();
// Search for teammates around (Don't heal yourself with this)
if(client>0)
{
for(new i=1;i<=MaxClients;i++)
{
if(ValidPlayer(i,true)&&GetClientTeam(i)==HealerTeam&&(i!=client))
{
GetClientAbsOrigin(i,VecPos);
if(GetVectorDistance(HealerPos,VecPos)<=dist)
{
// Heal them, but remember how much we healed them by
difference = float(GetClientHealth(i));
new Float:VictimCurHP = float(GetClientHealth(i));
new Float:VictimMaxHP = float(War3_GetMaxHP(i));
if(VictimCurHP<VictimMaxHP)
{
War3_HealToMaxHP(i,RoundToCeil(VictimMaxHP / 100 * HealingWaveAmount[skill]));
healed = healed + GetClientHealth(i) - difference;
}
}
}
}
if (TF2_GetPlayerClass(client) == TFClass_Medic)
{
// If the player is a medic add a small amount for the HP he recovered with the wave to his uber
new Float:uberlevel = TF2_GetUberLevel(client);
// 0.01 = 1%
new Float:amount = healed / 5000;
if(amount>0.0)
{
if((amount+uberlevel)>1.0)
{
TF2_ExSetUberLevel(client, 1.0);
}
else
{
TF2_ExSetUberLevel(client, amount+uberlevel);
}
}
}
}
}
}





Logged
