换个別的扩展掉落脚本
#============================================================================== # ■ 敌人追加物品掉落 by 老鹰 #------------------------------------------------------------------------------ # - 新增敌人的额外物品掉落,可带触发条件 # - 在敌人栏备注内填入 (可用空格或逗号分隔内部各项)(可重复填入多行) # <ex drop: 物品类型id 物品id 掉落概率分子 掉落概率分母 出现条件> # 物品类型id: 1 - 物品 2 - 武器 3 - 护甲 (此外的值均会导致无效) # 物品id: 对应类型的数据库中物品的id号 # 掉落概率分子、掉落概率分母: 物品的掉落概率为 分子 / 分母 # 出现条件(可选):当字符串被eval后返回的值为真时,允许这个物品掉落 # 注: 可用 s 代表 $game_switches, v 代表 $game_variables # - 举例: # <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 = [] s = $game_switches v = $game_variables 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
#==============================================================================
# ■ 敌人追加物品掉落 by 老鹰
#------------------------------------------------------------------------------
# - 新增敌人的额外物品掉落,可带触发条件
# - 在敌人栏备注内填入 (可用空格或逗号分隔内部各项)(可重复填入多行)
# <ex drop: 物品类型id 物品id 掉落概率分子 掉落概率分母 出现条件>
# 物品类型id: 1 - 物品 2 - 武器 3 - 护甲 (此外的值均会导致无效)
# 物品id: 对应类型的数据库中物品的id号
# 掉落概率分子、掉落概率分母: 物品的掉落概率为 分子 / 分母
# 出现条件(可选):当字符串被eval后返回的值为真时,允许这个物品掉落
# 注: 可用 s 代表 $game_switches, v 代表 $game_variables
# - 举例:
# <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 = []
s = $game_switches
v = $game_variables
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
|