装備セットボーナス
Posted: 2019年4月25日(木) 20:24
「5個中3個装備」とかも可能になるセットボーナスが作成可能となります
↑「ミスリルソード、ミスリルバックラー、ミスリルキャップ、ミスリルブレスト」で、
セットボーナスで更に「魔法力+10、魔法防御+10、運+10」が付いてます
どこかのウィンドウ内にセットボーナス名を描画したい場合は、
みたいにすれば可能です
※注意
もし画像の分の他に「ミスリルソード」を除いた
「ミスリルバックラー、ミスリルキャップ、ミスリルブレスト」
みたいなセットボーナスもID違いで作成した場合は、そちらも適応される仕様となってます






※追記
・2019/05/02 ver1.01
処理内容の改良
↑「ミスリルソード、ミスリルバックラー、ミスリルキャップ、ミスリルブレスト」で、
セットボーナスで更に「魔法力+10、魔法防御+10、運+10」が付いてます
コード: 全て選択
# 装備セットボーナスver1.01
# 制作者:TOMO
#
# 複数の装備の組み合わせで、セットボーナスが付与されます
#
#
# ※注意
# ・「使用するデータベースの取得」で武器と防具以外を使う方は、
# 一番下のparam_plusの方をコメントアウトして下さい
# (@paramsが無い為)
#
# ・同じIDのセットボーナスは、作成は出来ますが付与はされません
# ※更新履歴
# ver1.01
# 処理内容の改良
module TOMO
module EquipBonus
# 装備ボーナスの設定
# [[装備1, 装備2, …], 数] => ID,
Bonus = {
# 武器ID:22,防具ID:24,29,44から4個で、ID:62適応
[["W:22","A:24","A:29","A:44"], 4] => 62,
# 防具ID:34,39,49から2個で、ID:63適応
[["A:34","A:39","A:49"], 2] => 63,
}
#------------------------------------------------------------------------
# ● 使用するデータベースの取得
#------------------------------------------------------------------------
def self.database
$data_weapons # 武器
#~ $data_armors # 防具
end
end
end
class << DataManager
#--------------------------------------------------------------------------
# ● データベースのロード
#--------------------------------------------------------------------------
alias tomo_set_equip_bonus_load_database load_database
def load_database
tomo_set_equip_bonus_load_database
set_equip_bonus
end
#--------------------------------------------------------------------------
# ● 装備ボーナスDBの設定
#--------------------------------------------------------------------------
def set_equip_bonus
$data_equip_bonus = {}
TOMO::EquipBonus::Bonus.each do |key, id|
items = key[0].collect {|text| get_bonus_item(text) }
next if items.include?(nil)
$data_equip_bonus[id] ||= []
$data_equip_bonus[id] << [items, key[1]]
end
end
#--------------------------------------------------------------------------
# ● 装備ボーナス用アイテムの取得
#--------------------------------------------------------------------------
def get_bonus_item(text)
if text.match(/([WA]):(\d+)/i)
case $1.upcase
when "W"; return $data_weapons[$2.to_i]
when "A"; return $data_armors[$2.to_i]
end
end
return nil
end
end
class Game_Actor
attr_accessor :equip_bonus
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias tomo_equip_bonus_setup setup
def setup(actor_id)
@equip_bonus = []
tomo_equip_bonus_setup(actor_id)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias tomo_equip_bonus_refresh refresh
def refresh
tomo_equip_bonus_refresh
refresh_equip_bonus
end
#--------------------------------------------------------------------------
# ● 装備ボーナスのリフレッシュ
#--------------------------------------------------------------------------
def refresh_equip_bonus
@equip_bonus = []
$data_equip_bonus.each {|id, set| set.each {|bonus|
n = equips.uniq.compact.count {|item| bonus[0].include?(item) }
@equip_bonus << id if n >= bonus[1]
}}
end
#--------------------------------------------------------------------------
# ● 装備ボーナスの取得
#--------------------------------------------------------------------------
def equip_bonus
@equip_bonus.collect {|id| id ? TOMO::EquipBonus.database[id] : nil }
end
#--------------------------------------------------------------------------
# ● 特徴を保持する全オブジェクトの配列取得
#--------------------------------------------------------------------------
alias tomo_equip_bonus_feature_objects feature_objects
def feature_objects
tomo_equip_bonus_feature_objects + equip_bonus.compact
end
#--------------------------------------------------------------------------
# ● 通常能力値の加算値取得
#--------------------------------------------------------------------------
alias tomo_equip_bonus_param_plus param_plus
def param_plus(param_id)
v = tomo_equip_bonus_param_plus(param_id)
equip_bonus.compact.inject(v) {|r, item| r += item.params[param_id] }
end
end
コード: 全て選択
$game_actors[4].equip_bonus.each_with_index do |item, i|
draw_item_name(item, 0, line_height * i) if item
end
※注意
もし画像の分の他に「ミスリルソード」を除いた
「ミスリルバックラー、ミスリルキャップ、ミスリルブレスト」
みたいなセットボーナスもID違いで作成した場合は、そちらも適応される仕様となってます






※追記
・2019/05/02 ver1.01
処理内容の改良