actioncoverheadtarget.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. class ActionCoverHeadTargetCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.COVER_HEAD);
  6. }
  7. };
  8. class ActionCoverHeadTarget: ActionContinuousBase
  9. {
  10. void ActionCoverHeadTarget()
  11. {
  12. m_CallbackClass = ActionCoverHeadTargetCB;
  13. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_COVERHEAD_TARGET;
  14. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
  15. //m_Animation = "INJECTEPIPENS";
  16. m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW;
  17. m_Text = "#put_on_targets_head";
  18. }
  19. override void CreateConditionComponents()
  20. {
  21. m_ConditionItem = new CCINonRuined;
  22. m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT);
  23. }
  24. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  25. {
  26. PlayerBase targetPlayer;
  27. Class.CastTo(targetPlayer, target.GetObject());
  28. if ( !IsWearingHeadgear(targetPlayer) )
  29. {
  30. return true;
  31. }
  32. return false;
  33. }
  34. override void OnFinishProgressServer( ActionData action_data )
  35. {
  36. PlayerBase ntarget;
  37. if (Class.CastTo(ntarget, action_data.m_Target.GetObject()) && CanReceiveAction(action_data.m_Target))
  38. {
  39. CoverHeadOfTargetPlayerLambda lambda = new CoverHeadOfTargetPlayerLambda(action_data.m_MainItem, "BurlapSackCover", ntarget);
  40. action_data.m_Player.ServerReplaceItemInHandsWithNewElsewhere(lambda);
  41. }
  42. }
  43. bool IsWearingHeadgear( PlayerBase player)
  44. {
  45. if ( player.GetInventory().FindAttachment(InventorySlots.HEADGEAR) )
  46. {
  47. return true;
  48. }
  49. return false;
  50. }
  51. };
  52. class CoverHeadOfTargetPlayerLambda : TurnItemIntoItemLambda
  53. {
  54. PlayerBase m_TargetPlayer;
  55. void CoverHeadOfTargetPlayerLambda (EntityAI old_item, string new_item_type, PlayerBase player)
  56. {
  57. m_TargetPlayer = player;
  58. InventoryLocation targetAtt = new InventoryLocation;
  59. targetAtt.SetAttachment(m_TargetPlayer, NULL, InventorySlots.HEADGEAR);
  60. OverrideNewLocation(targetAtt);
  61. }
  62. };