class ActionFillCoolantCB : ActionContinuousBaseCB { private const float TIME_TO_REPEAT = 0.075; override void CreateActionComponent() { m_ActionData.m_ActionComponent = new CAContinuousFillCoolant( UAQuantityConsumed.FUEL, TIME_TO_REPEAT ); } }; class ActionFillCoolant: ActionContinuousBase { const string RADIATOR_SELECTION_NAME = "radiator"; void ActionFillCoolant() { m_CallbackClass = ActionFillCoolantCB; 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 = "#refill_car"; } override void CreateConditionComponents() { m_ConditionItem = new CCINonRuined; m_ConditionTarget = new CCTParent(10); } override bool IsUsingProxies() { return true; } override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item ) { if (!target) return false; if (item.GetQuantity() <= 0) return false; if (item.GetLiquidType() != LIQUID_WATER) return false; if (item.GetIsFrozen()) { return false; } Car car = Car.Cast( target.GetParent() ); if (!car) return false; if (car.GetFluidFraction( CarFluid.COOLANT ) >= 0.95) return false; array selections = new array; target.GetObject().GetActionComponentNameList(target.GetComponentIndex(), selections); CarScript carS = CarScript.Cast(car); if (carS) { EntityAI radiator = null; EntityAI carAI; if (CastTo(carAI, car)) { radiator = carAI.GetInventory().FindAttachment(InventorySlots.GetSlotIdFromString("CarRadiator")); if (radiator && !radiator.IsRuined()) { for (int s = 0; s < selections.Count(); s++) { if (selections[s] == carS.GetActionCompNameCoolant()) { float dist = vector.Distance( carS.GetCoolantPtcPosWS(), player.GetPosition() ); if (dist < carS.GetActionDistanceCoolant()) return true; } } } } } return false; } };