MoltresRider

Untitled

Apr 8th, 2023
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.82 KB | None | 0 0
  1. #==============================================================================
  2. # ■ Game_Unit
  3. #------------------------------------------------------------------------------
  4. #  ユニットを扱うクラスです。このクラスは Game_Party クラスと Game_Troop クラ
  5. # スのスーパークラスとして使用されます。
  6. #==============================================================================
  7.  
  8. class Game_Unit
  9. #--------------------------------------------------------------------------
  10. # ● 公開インスタンス変数
  11. #--------------------------------------------------------------------------
  12. attr_reader :in_battle # 戦闘中フラグ
  13. #--------------------------------------------------------------------------
  14. # ● オブジェクト初期化
  15. #--------------------------------------------------------------------------
  16. def initialize
  17. @in_battle = false
  18. end
  19. #--------------------------------------------------------------------------
  20. # ● メンバーの取得
  21. #--------------------------------------------------------------------------
  22. def members
  23. return []
  24. end
  25. #--------------------------------------------------------------------------
  26. # ● 生存しているメンバーの配列取得
  27. #--------------------------------------------------------------------------
  28. def alive_members
  29. members.select {|member| member.alive? }
  30. end
  31. #--------------------------------------------------------------------------
  32. # ● 戦闘不能のメンバーの配列取得
  33. #--------------------------------------------------------------------------
  34. def dead_members
  35. members.select {|member| member.dead? }
  36. end
  37. #--------------------------------------------------------------------------
  38. # ● 行動可能なメンバーの配列取得
  39. #--------------------------------------------------------------------------
  40. def movable_members
  41. members.select {|member| member.movable? }
  42. end
  43. #--------------------------------------------------------------------------
  44. # ● 全員の戦闘行動クリア
  45. #--------------------------------------------------------------------------
  46. def clear_actions
  47. members.each {|member| member.clear_actions }
  48. end
  49. #--------------------------------------------------------------------------
  50. # ● 敏捷性の平均値を計算
  51. #--------------------------------------------------------------------------
  52. def agi
  53. return 1 if members.size == 0
  54. members.inject(0) {|r, member| r += member.agi } / members.size
  55. end
  56. #--------------------------------------------------------------------------
  57. # ● 狙われ率の合計を計算
  58. #--------------------------------------------------------------------------
  59. def tgr_sum
  60. alive_members.inject(0) {|r, member| r + member.tgr }
  61. end
  62. #--------------------------------------------------------------------------
  63. # ● ターゲットのランダムな決定
  64. #--------------------------------------------------------------------------
  65. def random_target
  66. tgr_rand = rand * tgr_sum
  67. alive_members.each do |member|
  68. tgr_rand -= member.tgr
  69. return member if tgr_rand < 0
  70. end
  71. alive_members[0]
  72. end
  73. #--------------------------------------------------------------------------
  74. # ● ターゲットのランダムな決定(戦闘不能)
  75. #--------------------------------------------------------------------------
  76. def random_dead_target
  77. dead_members.empty? ? nil : dead_members[rand(dead_members.size)]
  78. end
  79. #--------------------------------------------------------------------------
  80. # ● ターゲットのスムーズな決定
  81. #--------------------------------------------------------------------------
  82. def smooth_target(index)
  83. member = members[index]
  84. (member && member.alive?) ? member : alive_members[0]
  85. end
  86. #--------------------------------------------------------------------------
  87. # ● ターゲットのスムーズな決定(戦闘不能)
  88. #--------------------------------------------------------------------------
  89. def smooth_dead_target(index)
  90. member = members[index]
  91. (member && member.dead?) ? member : dead_members[0]
  92. end
  93. #--------------------------------------------------------------------------
  94. # ● 行動結果のクリア
  95. #--------------------------------------------------------------------------
  96. def clear_results
  97. members.select {|member| member.result.clear }
  98. end
  99. #--------------------------------------------------------------------------
  100. # ● 戦闘開始処理
  101. #--------------------------------------------------------------------------
  102. def on_battle_start
  103. members.each {|member| member.on_battle_start }
  104. @in_battle = true
  105. end
  106. #--------------------------------------------------------------------------
  107. # ● 戦闘終了処理
  108. #--------------------------------------------------------------------------
  109. def on_battle_end
  110. @in_battle = false
  111. members.each {|member| member.on_battle_end }
  112. end
  113. #--------------------------------------------------------------------------
  114. # ● 戦闘行動の作成
  115. #--------------------------------------------------------------------------
  116. def make_actions
  117. members.each {|member| member.make_actions }
  118. end
  119. #--------------------------------------------------------------------------
  120. # ● 全滅判定
  121. #--------------------------------------------------------------------------
  122. def all_dead?
  123. alive_members.empty?
  124. end
  125. #--------------------------------------------------------------------------
  126. # ● 身代わりバトラーの取得
  127. #--------------------------------------------------------------------------
  128. def substitute_battler
  129. members.find {|member| member.substitute? }
  130. end
  131. end
  132.  
Add Comment
Please, Sign In to add comment