|  | 
| 复制代码#==============================================================================
# ■ 敌人追加物品掉落  by 老鹰
#------------------------------------------------------------------------------
#  - 新增敌人的额外物品掉落,可带触发条件
#   - 在敌人栏备注内填入 (可用空格或逗号分隔内部各项)(可重复填入多行)
#     <ex drop: 物品类型id 物品id 掉落概率分子 掉落概率分母 出现条件>
#       物品类型id: 1 - 物品  2 - 武器  3 - 护甲 (此外的值均会导致无效)
#       物品id: 对应类型的数据库中物品的id号
#       掉落概率分子、掉落概率分母: 物品的掉落概率为 分子 / 分母
#       出现条件(可选):当字符串被eval后返回的值为真时,允许这个物品掉落
#   - 举例:
#      <ex drop: 1 1 1 2> 
#         - 以 1/2的概率 追加掉落 1号物品
#      <ex drop: 2,10,2,5,$game_switches[1]> 
#         - 当1号开关开启时,以 2/5的概率 追加掉落 10号武器
#      <ex drop: 3 1,1 1,$game_variables[1] > 5> 
#         - 当1号变量大于5时,一定 追加掉落 1号护甲
#   - 实质:在战斗结束统计敌人掉落时,追加读取敌人数据库的note栏并追加掉落
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 生成物品数组
  #--------------------------------------------------------------------------
  alias eagle_ex_drop_make_drop_items make_drop_items
  def make_drop_items
    array = eagle_ex_drop_make_drop_items
    array += make_extra_drop_items
    return array
  end
  #--------------------------------------------------------------------------
  # ● 生成额外物品数组
  #--------------------------------------------------------------------------
  def make_extra_drop_items
    array = []
    enemy.note.split(/[\r\n]+/).each do |line|
      case line
      when /<ex drop:[ ,]*(\d+)[ ,]*(\d+)[ ,]*(\d+)[ ,]*(\d+)[ ,]*(.*)>/
        cond = $5.to_s
        next if (cond != "" && eval(cond) == false)
        item_kind = $1.to_i; item_id = $2.to_i
        prob = $3.to_i * 1.0 / $4.to_i * drop_item_rate
        array.push(item_object(item_kind, item_id)) if rand < prob
      end
    end
    return array
  end
end
 | 
 评分
查看全部评分
 |