actiongagtarget.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. class ActionGagTarget: ActionContinuousBase
  2. {
  3. void ActionGagTarget()
  4. {
  5. m_CallbackClass = ActionCoverHeadTargetCB;
  6. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_COVERHEAD_TARGET;
  7. //m_FullBody = true;
  8. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
  9. m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW;
  10. m_Text = "#gag_person";
  11. }
  12. override void CreateConditionComponents()
  13. {
  14. m_ConditionItem = new CCINonRuined;
  15. m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT);
  16. }
  17. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  18. {
  19. if (item.GetQuantity() > 1)
  20. return false;
  21. PlayerBase targetPlayer;
  22. Class.CastTo(targetPlayer, target.GetObject());
  23. if ( !IsWearingMask(targetPlayer) )
  24. {
  25. ItemBase headgear = ItemBase.Cast(targetPlayer.FindAttachmentBySlotName( "Headgear" ));
  26. if ( headgear )
  27. {
  28. bool headgear_restricted;
  29. headgear_restricted = headgear.ConfigGetBool( "noMask" );
  30. if (headgear_restricted)
  31. {
  32. return false;
  33. }
  34. }
  35. return true;
  36. }
  37. return false;
  38. }
  39. override void OnFinishProgressServer( ActionData action_data )
  40. {
  41. PlayerBase ntarget;
  42. Class.CastTo(ntarget, action_data.m_Target.GetObject());
  43. if (CanReceiveAction(action_data.m_Target))
  44. {
  45. ItemBase m_Gag;
  46. if (Class.CastTo(m_Gag,ntarget.GetInventory().CreateAttachmentEx("MouthRag",InventorySlots.MASK)))
  47. {
  48. m_Gag.SetHealth01("", "", action_data.m_MainItem.GetHealth01("", ""));
  49. action_data.m_MainItem.TransferModifiers(ntarget);
  50. action_data.m_MainItem.Delete();
  51. }
  52. }
  53. }
  54. bool IsWearingMask( PlayerBase player)
  55. {
  56. if ( player.GetInventory().FindAttachment(InventorySlots.MASK) )
  57. {
  58. return true;
  59. }
  60. return false;
  61. }
  62. };