ActionTriggerRemotely.c
class ActionTriggerRemotely : ActionSingleUseBase
{
void ActionTriggerRemotely()
{
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PRESS_TRIGGER;
m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PRESS_TRIGGER;
m_Text = "#STR_Detonate";
}
override void CreateConditionComponents()
{
m_ConditionTarget = new CCTNone();
m_ConditionItem = new CCINonRuined();
}
override bool HasProgress()
{
return true;
}
override bool HasTarget()
{
return false;
}
override bool HasProneException()
{
return true;
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
RemoteDetonatorTrigger rdt = RemoteDetonatorTrigger.Cast(item);
if (rdt && rdt.IsConnected())
{
ExplosivesBase controlledDevice = ExplosivesBase.Cast(rdt.GetControlledDevice());
if (controlledDevice && controlledDevice.GetPairDevice() != item)
{
rdt.UpdateLED(ERemoteDetonatorLEDState.OFF);
return false;
}
if (controlledDevice && !controlledDevice.IsRuined() && controlledDevice.GetArmed())
{
if (vector.DistanceSq(player.GetPosition(), controlledDevice.GetPosition()) <= Math.SqrFloat(UAMaxDistances.EXPLOSIVE_REMOTE_ACTIVATION))
{
rdt.UpdateLED(ERemoteDetonatorLEDState.LIT);
return true;
}
}
}
rdt.UpdateLED(ERemoteDetonatorLEDState.OFF);
return false;
}
override void OnExecuteServer(ActionData action_data)
{
super.OnExecuteServer(action_data);
RemoteDetonatorTrigger rdt = RemoteDetonatorTrigger.Cast(action_data.m_MainItem);
if (rdt && rdt.IsConnected())
{
ItemBase controlledDevice = ItemBase.Cast(rdt.GetControlledDevice());
if (controlledDevice && !controlledDevice.IsRuined())
{
controlledDevice.OnActivatedByItem(action_data.m_MainItem);
action_data.m_MainItem.SetAnimationPhase("trigger", 1);
action_data.m_MainItem.SetAnimationPhase("lever", 1);
}
}
}
}