actiondismantlestonecircle.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. class ActionDismantleStoneCircleCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime( UATimeSpent.DEFAULT_DECONSTRUCT );
  6. }
  7. }
  8. class ActionDismantleStoneCircle: ActionContinuousBase
  9. {
  10. void ActionDismantleStoneCircle()
  11. {
  12. m_CallbackClass = ActionDismantleStoneCircleCB;
  13. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
  14. m_FullBody = true;
  15. m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
  16. m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
  17. m_Text = "#dismantle_stonecircle";
  18. }
  19. override void CreateConditionComponents()
  20. {
  21. m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
  22. m_ConditionItem = new CCINotPresent;
  23. }
  24. override typename GetInputType()
  25. {
  26. return ContinuousInteractActionInput;
  27. }
  28. /*override bool HasProgress()
  29. {
  30. return false;
  31. }*/
  32. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  33. {
  34. Object target_object = target.GetObject();
  35. if ( target_object && target_object.IsFireplace() )
  36. {
  37. FireplaceBase fireplace_target = FireplaceBase.Cast( target_object );
  38. if ( fireplace_target.IsBaseFireplace() && fireplace_target.CanDismantleStoneCircle() )
  39. {
  40. return true;
  41. }
  42. }
  43. return false;
  44. }
  45. override void OnFinishProgressServer( ActionData action_data )
  46. {
  47. Object target_object = action_data.m_Target.GetObject();
  48. FireplaceBase fireplace_target = FireplaceBase.Cast( target_object );
  49. if ( fireplace_target.CanDismantleStoneCircle() )
  50. {
  51. ItemBase attached_item = ItemBase.Cast( fireplace_target.GetAttachmentByType( fireplace_target.ATTACHMENT_STONES ) );
  52. //set oven state
  53. fireplace_target.SetStoneCircleState( false );
  54. // extend lifetime (but back to default of CE)
  55. fireplace_target.SetLifetimeMax( 10800 );
  56. }
  57. }
  58. }