RMXP脚本解析(二十四):Game_Troop

目录

Game_Troop类代码解析


Game_Troop类代码解析

#==============================================================================

# ■ Game_Troop

#------------------------------------------------------------------------------

#  处理队伍的类。本类的实例请参考 $game_troop

# 

#==============================================================================

class Game_Troop

    #--------------------------------------------------------------------------

    # ● 初始化对像

    #--------------------------------------------------------------------------

    def initialize

      # 建立敌人序列

      @enemies = []

    end

    #--------------------------------------------------------------------------

    # ● 获取敌人

    #--------------------------------------------------------------------------

    def enemies

      return @enemies

    end

    #--------------------------------------------------------------------------

    # ● 设置

    #     troop_id : 敌人 ID

    #--------------------------------------------------------------------------

    def setup(troop_id)

      # 由敌人序列的设置来确定队伍的设置

      @enemies = []

      troop = $data_troops[troop_id] ##troop_id就是数据库敌人页的id

      for i in 0...troop.members.size ##循环每个单独的敌人

        enemy = $data_enemies[troop.members[i].enemy_id] ##获取敌人的id

        if enemy != nil

          @enemies.push(Game_Enemy.new(troop_id, i)) ##生成敌人

        end

      end

    end

    #--------------------------------------------------------------------------

    # ● 对像敌人的随机确定

    #     hp0 : 限制 HP 0 的敌人

    #--------------------------------------------------------------------------

    def random_target_enemy(hp0 = false) ##初始设置里不能选择hp为0的敌人

      # 初始化轮流

      roulette = []

      # 循环

      for enemy in @enemies

        # 条件符合的情况下

        if (not hp0 and enemy.exist?) or (hp0 and enemy.hp0?)

          # 添加敌人到轮流

          roulette.push(enemy)

        end

      end

      # 轮流尺寸为 0 的情况下

      if roulette.size == 0

        return nil

      end

      # 转轮盘赌,决定敌人

      return roulette[rand(roulette.size)]

    end

    #--------------------------------------------------------------------------

    # ● 对像敌人的随机确定 (HP 0)

    #--------------------------------------------------------------------------

    def random_target_enemy_hp0

      return random_target_enemy(true) ##上面这个函数在hp0=true的情况

    end

    #--------------------------------------------------------------------------

    # ● 对像角色的顺序确定

    #     enemy_index : 敌人索引

    #--------------------------------------------------------------------------

    def smooth_target_enemy(enemy_index)

      # 获取敌人

      enemy = @enemies[enemy_index]

      # 敌人存在的场合

      if enemy != nil and enemy.exist?

        return enemy

      end

      # 循环 ##如果指定的敌人不存在,就选择敌人队列里的第一个存在的敌人

      for enemy in @enemies

        # 敌人存在的场合

        if enemy.exist?

          return enemy

        end

      end

    end

  end

猜你喜欢

转载自blog.csdn.net/qq_34013974/article/details/122316524
今日推荐