JudgesAIConditional.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using BehaviorDesigner.Runtime.Tasks;
  3. public class JudgesAIConditional
  4. {
  5. [TaskCategory("Enemy/Judges")]
  6. [TaskDescription("判断攻击类型")]
  7. public class AttackTypeJudge : Conditional
  8. {
  9. public override void OnAwake()
  10. {
  11. this.action = base.GetComponent<JudgesAction>();
  12. }
  13. public override TaskStatus OnUpdate()
  14. {
  15. if (this.action.attackType == this.type)
  16. {
  17. return TaskStatus.Success;
  18. }
  19. return TaskStatus.Failure;
  20. }
  21. public JudgesAction.AttackType type;
  22. private JudgesAction action;
  23. }
  24. [TaskCategory("Enemy/Judges")]
  25. [TaskDescription("判断怪物在最终阶段")]
  26. public class JudgesPhaseJudge : Conditional
  27. {
  28. public override void OnAwake()
  29. {
  30. this.hurt = base.GetComponent<JudgesHurt>();
  31. }
  32. public override TaskStatus OnUpdate()
  33. {
  34. if (this.hurt.currentPhase == 4)
  35. {
  36. return TaskStatus.Success;
  37. }
  38. return TaskStatus.Failure;
  39. }
  40. private JudgesHurt hurt;
  41. }
  42. [TaskCategory("Enemy/Judges")]
  43. [TaskDescription("召唤判定")]
  44. public class SummonJudge : Conditional
  45. {
  46. private int success
  47. {
  48. get
  49. {
  50. return (R.GameData.Difficulty > 1) ? 30 : 40;
  51. }
  52. }
  53. public override void OnAwake()
  54. {
  55. this.action = base.GetComponent<JudgesAction>();
  56. }
  57. public override TaskStatus OnUpdate()
  58. {
  59. if (this.action.summonRate > (float)this.success)
  60. {
  61. return TaskStatus.Success;
  62. }
  63. return TaskStatus.Failure;
  64. }
  65. private JudgesAction action;
  66. }
  67. }