actionnextcombinationlockdialontarget.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. class ActionNextCombinationLockDialOnTarget: ActionInteractBase
  2. {
  3. void ActionNextCombinationLockDialOnTarget()
  4. {
  5. m_Text = "#next_combination_lock_dial";
  6. }
  7. override void CreateConditionComponents()
  8. {
  9. m_ConditionItem = new CCINone;
  10. m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
  11. }
  12. override bool IsInstant()
  13. {
  14. return true;
  15. }
  16. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  17. {
  18. if (!target.GetObject())
  19. return false;
  20. CombinationLock lock = CombinationLock.Cast( target.GetObject() );
  21. if ( lock && lock.GetHierarchyParent() && Fence.Cast(lock.GetHierarchyParent()) )
  22. {
  23. ConstructionActionData construction_action_data = player.GetConstructionActionData();
  24. construction_action_data.SetCombinationLock( lock );
  25. return true;
  26. }
  27. return false;
  28. }
  29. override void Start( ActionData action_data )
  30. {
  31. super.Start( action_data );
  32. //set next dial
  33. ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
  34. CombinationLock combination_lock = construction_action_data.GetCombinationLock();
  35. if ( combination_lock )
  36. {
  37. combination_lock.SetNextDial();
  38. }
  39. }
  40. }