actioncheckpulsetarget.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. class ActionCheckPulseTargetCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.CHECK_PULSE);
  6. }
  7. };
  8. class ActionCheckPulseTarget: ActionContinuousBase
  9. {
  10. const int TARGET_IRREGULAR_PULSE_BIT = 1 << 31;
  11. void ActionCheckPulseTarget()
  12. {
  13. m_CallbackClass = ActionCheckPulseTargetCB;
  14. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CHECKPULSE;
  15. m_FullBody = true;
  16. m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
  17. m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
  18. m_Text = "#check_pulse_target";
  19. }
  20. static string GetPulseMessage(EPulseType pulse_type, int blood_level)
  21. {
  22. //builds string table keys:
  23. //pulse_strong
  24. //pulse_decent
  25. //pulse_moderate
  26. //pulse_weak
  27. //pulse_faint
  28. //pulse_strong_irregular
  29. //pulse_decent_irregular
  30. //pulse_moderate_irregular
  31. //pulse_weak_irregular
  32. //pulse_faint_irregular
  33. string blood_msg = "strong";
  34. string pulse_msg = "";
  35. if(pulse_type == EPulseType.IRREGULAR)
  36. {
  37. pulse_msg = "_irregular";
  38. }
  39. if( blood_level == EStatLevels.HIGH )
  40. {
  41. blood_msg = "decent";
  42. }
  43. if( blood_level == EStatLevels.MEDIUM )
  44. {
  45. blood_msg = "moderate";
  46. }
  47. if( blood_level == EStatLevels.LOW )
  48. {
  49. blood_msg = "weak";
  50. }
  51. if( blood_level == EStatLevels.CRITICAL )
  52. {
  53. blood_msg = "faint";
  54. }
  55. //string message = blood_msg + " " + pulse_msg + " pulse";
  56. string message = "#"+ "pulse_" + blood_msg + pulse_msg;
  57. return message;
  58. }
  59. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  60. {
  61. PlayerBase ntarget = PlayerBase.Cast( target.GetObject() );
  62. if( ntarget && ntarget.IsAlive())
  63. {
  64. return true;
  65. }
  66. return false;
  67. }
  68. override typename GetInputType()
  69. {
  70. return ContinuousInteractActionInput;
  71. }
  72. override void CreateConditionComponents()
  73. {
  74. m_ConditionItem = new CCINone;
  75. m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT);
  76. }
  77. override void OnFinishProgressServer( ActionData action_data )
  78. {
  79. PlayerBase target_player = PlayerBase.Cast(action_data.m_Target.GetObject());
  80. if (target_player)
  81. {
  82. PlayerBase player = action_data.m_Player;
  83. CachedObjectsParams.PARAM1_INT.param1 = target_player.GetStatLevelBlood();
  84. bool pulse_type = target_player.GetPulseType();
  85. if (pulse_type == EPulseType.IRREGULAR)
  86. CachedObjectsParams.PARAM1_INT.param1 = CachedObjectsParams.PARAM1_INT.param1 | (1 << TARGET_IRREGULAR_PULSE_BIT);
  87. GetGame().RPCSingleParam( player ,ERPCs.RPC_CHECK_PULSE, CachedObjectsParams.PARAM1_INT, true, player.GetIdentity() );
  88. }
  89. }
  90. override void OnFinishProgressClient( ActionData action_data )
  91. {
  92. PlayerBase ntarget = PlayerBase.Cast( action_data.m_Target.GetObject() );
  93. if(ntarget)
  94. {
  95. action_data.m_Player.m_CheckPulseLastTarget = ntarget;
  96. }
  97. }
  98. };