DIFF

ActionDefibrilateBase.c

class ActionDefibrilateBase: ActionContinuousBase
{	
	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{	
		Defibrillator defib;
		Class.CastTo(defib, item);
		
		return CanDefibrillate(defib);
	}

	bool CanDefibrillate(Defibrillator defib)
	{
		if ( defib.IsCharged() ) 
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	void DefibrillateClient(PlayerBase player, Defibrillator defib)
	{
		defib.DischargeClient(player);
	}
	
	void DefibrillateServer(PlayerBase player, Defibrillator defib)
	{	
		if ( defib.IsCharged() ) 
		{
			defib.DischargeServer(player);
			
			
			float regain_energy = defib.GetEnergyNeededToCharge();
			regain_energy = defib.GetEnergyNeededToCharge() - regain_energy;
			
			ItemBase battery;
			
			if (Class.CastTo(battery, defib.GetCompEM().GetEnergySource()))
			{
				battery.GetCompEM().AddEnergy( regain_energy );
			}
			else
			{
				DPrint("ERROR! Defibrillator has no battery! Defibrillator softskill bonus can't be applied!");
			}
		}
	}
};