actiondisinfectself.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. class ActionDisinfectSelfCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DEFAULT);
  6. }
  7. };
  8. class ActionDisinfectBase: ActionContinuousBase
  9. {
  10. void Apply( ActionData action_data )
  11. {
  12. ItemBase item = action_data.m_MainItem;
  13. item.AddQuantity(-item.GetDisinfectQuantity());
  14. }
  15. }
  16. class ActionDisinfectSelf: ActionDisinfectBase
  17. {
  18. float m_GramsConsumedPerUse;//left for legacy reasons
  19. void ActionDisinfectSelf()
  20. {
  21. m_CallbackClass = ActionDisinfectSelfCB;
  22. m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
  23. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_STITCHUPSELF;
  24. m_FullBody = true;
  25. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
  26. m_Text = "#disinfect_self";
  27. }
  28. override void CreateConditionComponents()
  29. {
  30. m_ConditionItem = new CCINonRuined;
  31. m_ConditionTarget = new CCTSelf;
  32. }
  33. override bool HasTarget()
  34. {
  35. return false;
  36. }
  37. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  38. {
  39. return (player.IsBleeding() || (player.m_SyncedModifiers & eModifierSyncIDs.MODIFIER_SYNC_WOUND_INFECT_1) || (player.m_SyncedModifiers & eModifierSyncIDs.MODIFIER_SYNC_WOUND_INFECT_2));
  40. }
  41. override void OnFinishProgressServer( ActionData action_data )
  42. {
  43. if( action_data.m_Player.GetModifiersManager().IsModifierActive(eModifiers.MDF_DISINFECTION))//effectively resets the timer
  44. {
  45. action_data.m_Player.GetModifiersManager().DeactivateModifier( eModifiers.MDF_DISINFECTION );
  46. }
  47. action_data.m_Player.GetModifiersManager().ActivateModifier( eModifiers.MDF_DISINFECTION );
  48. Apply(action_data);
  49. }
  50. };