DIFF

ActionFillFuel.c

class ActionFillFuelCB : ActionContinuousBaseCB
{
	private const float TIME_TO_REPEAT = 0.5;

	override void CreateActionComponent()
	{
		m_ActionData.m_ActionComponent = new CAContinuousFillFuel( UAQuantityConsumed.FUEL, TIME_TO_REPEAT );
	}
};

class ActionFillFuel: ActionContinuousBase
{
	const string FUEL_SELECTION_NAME = "refill";
	
	void ActionFillFuel()
	{
		m_CallbackClass = ActionFillFuelCB;
		m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_EMPTY_VESSEL;
		m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
		m_FullBody = true;
		m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
		m_LockTargetOnUse = false;
		m_Text = "#refuel";
	}

	override void CreateConditionComponents()  
	{
		m_ConditionItem = new CCINonRuined;//CCINotRuinedAndEmpty?
		m_ConditionTarget = new CCTNone;
	}

	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
		if ( !target || !IsTransport(target) )
			return false;

		if ( item.GetQuantity() <= 0 )
			return false;

		if ( item.GetLiquidType() != LIQUID_GASOLINE )
			return false;

		if (target.GetObject().IsDamageDestroyed())
			return false;
		
		Car car = Car.Cast(target.GetObject());
		Boat boat = Boat.Cast(target.GetObject());
		if (car)
		{
			if (car.GetFluidFraction( CarFluid.FUEL ) >= 0.98)
				return false;
		}
		else if (boat)
		{
			if ( boat.GetFluidFraction( BoatFluid.FUEL ) >= 0.98 )
				return false;
		}
		else 
			return false;

		array<string> selections = new array<string>;
		target.GetObject().GetActionComponentNameList(target.GetComponentIndex(), selections);

		Transport vehicle = Transport.Cast(target.GetObject());
		
		if ( vehicle )
		{
			for (int s = 0; s < selections.Count(); s++)
			{
				if ( selections[s] == vehicle.GetActionCompNameFuel() )
				{
					float dist = vector.DistanceSq( vehicle.GetRefillPointPosWS(), player.GetPosition() );

					if ( dist < vehicle.GetActionDistanceFuel() * vehicle.GetActionDistanceFuel() )
						return true;
				}
			}
		}

		return false;
	}
};