ActionPullOutPlug.c
class ActionPullOutPlug : ActionInteractBase
{
void ActionPullOutPlug()
{
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_INTERACTONCE;
m_Text = "#pull_out_plug";
}
override bool DisplayTargetInActionText()
{
return true;
}
override string GetTargetName(PlayerBase player, ActionTarget target)
{
ItemBase targetItem = ItemBase.Cast(target.GetObject());
if (targetItem && targetItem.HasEnergyManager())
{
string selection = targetItem.GetActionComponentName(target.GetComponentIndex());
if (targetItem.GetCompEM() && targetItem.GetCompEM().GetPlugOwner(selection))
return targetItem.GetCompEM().GetPlugOwner(selection).GetDisplayName();
}
return super.GetTargetName(player, target);
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
EntityAI targetEntity = EntityAI.Cast(target.GetObject());
if (targetEntity.HasEnergyManager())
{
string selection = targetEntity.GetActionComponentName(target.GetComponentIndex());
if (g_Game.IsServer())
return targetEntity.GetCompEM().GetPlugOwner(selection) != null;
else
return targetEntity.GetCompEM().IsSelectionAPlug(selection);
}
return false;
}
override void OnExecuteServer(ActionData action_data)
{
Object targetObject = action_data.m_Target.GetObject();
if (targetObject)
{
EntityAI targetEntity = EntityAI.Cast(targetObject);
string selection = targetObject.GetActionComponentName(action_data.m_Target.GetComponentIndex());
EntityAI device = EntityAI.Cast(targetEntity.GetCompEM().GetPlugOwner(selection));
if (device)
device.GetCompEM().UnplugThis();
// Disable Advanced Placement
if (action_data.m_Player.IsPlacingServer())
action_data.m_Player.PlacingCancelServer();
}
}
}