actionbuildstonecircle.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. class ActionBuildStoneCircleCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime( UATimeSpent.DEFAULT_CONSTRUCT );
  6. }
  7. }
  8. class ActionBuildStoneCircle: ActionContinuousBase
  9. {
  10. void ActionBuildStoneCircle()
  11. {
  12. m_CallbackClass = ActionBuildStoneCircleCB;
  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 = "#build_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 true;
  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.CanBuildStoneCircle() )
  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.CanBuildStoneCircle() )
  50. {
  51. ItemBase attached_item = ItemBase.Cast( fireplace_target.GetAttachmentByType( fireplace_target.ATTACHMENT_STONES ) );
  52. /*InventoryLocation inventory_location = new InventoryLocation;
  53. attached_item.GetInventory().GetCurrentInventoryLocation( inventory_location );
  54. fireplace_target.GetInventory().SetSlotLock( inventory_location.GetSlot(), true );*/
  55. //set oven state
  56. fireplace_target.SetStoneCircleState( true );
  57. // extend lifetime
  58. fireplace_target.SetLifetimeMax( FireplaceBase.LIFETIME_FIREPLACE_STONE_CIRCLE );
  59. }
  60. }
  61. }