#============================================================================== # ★ Secret_Equip ver1.0 by USK #------------------------------------------------------------------------------ # ・通常の装備とは別にプレイヤーには見えない形で防具カテゴリの装備を着脱します。 # ・職業を変えずにキャラクターのパワーアップしたりするのを想定しています。 #============================================================================== =begin イベントコマンドのスクリプトで add_secret_equip((アクターID),(防具ID),(重複フラグ)) と記入すると、アクターIDで指定したアクターに防具IDで指定した防具を装備します。 この装備は通常の装備とは違いステータスに表示されず、装備効果だけが反映されます。 remove_secret_equip((アクターID),(防具ID),(重複フラグ)) と記入すると、アクターIDで指定したアクターの防具IDで指定した防具を外します。 add_secret_equipの重複フラグがtrueのとき同じ防具を重複して装備することを許可し、 falseのとき許可しません。 remove_secret_equipのの重複フラグをtrueにすると同じ防具すべてを外し、falseにする と1つだけ外します。 重複フラグの記入を省略するとtrueとして判定されます。 * add_secret_equip(1,1) と add_secret_equip(1,1,true) は同じ アクターIDに 0 を入れるとパーティメンバー全員に効果があります。 アクターIDに負の数を入れるとパーティーの(アクターIDの絶対値)番目のアクターに 効果があります。 * add_secret_equip(-1,1,false)とするとパーティ先頭のアクターに効果 remove_secret_equipの防具IDを 0 にすると対象アクターの装備している装備すべてを 外します。 このスクリプトの効果は確認しづらいので、テストプレイ時、コンソールの表示にチェ ックを入れると上記のイベントスクリプトを使用したとき装備されているものを確認 できるようにしてあります。 =end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor #-------------------------------------------------------------------------- # ● セットアップ #-------------------------------------------------------------------------- alias :secret_setup :setup def setup(actor_id) @secret_equips = [] secret_setup(actor_id) end #-------------------------------------------------------------------------- # ● 通常能力値の加算値取得 #-------------------------------------------------------------------------- alias :secret_param_plus :param_plus def param_plus(param_id) secret_param_plus(param_id) + secret_equips.inject(super) {|r, item| r += item.params[param_id] } end #-------------------------------------------------------------------------- # ● 特徴を保持する全オブジェクトの配列取得 #-------------------------------------------------------------------------- alias :secret_feature_objects :feature_objects def feature_objects secret_feature_objects + secret_equips end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def secret_equips @secret_equips.collect{|id| $data_armors[id]} end #-------------------------------------------------------------------------- # ● 防具オブジェクトの配列取得 #-------------------------------------------------------------------------- alias :secret_armors :armors def armors if caller[0].include?("command_111") secret_armors + secret_equips else secret_armors end end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def add_secret_equip(id, dup = true) if dup || !@secret_equips.include?(id) @secret_equips << id @secret_equips.sort! refresh_secret_equip end end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def remove_secret_equip(id = 0, dup = true) if id == 0 @secret_equips.clear elsif dup @secret_equips.delete(id) elsif i = @secret_equips.rindex(id) @secret_equips.delete_at(i) end refresh_secret_equip end if $TEST #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def refresh_secret_equip refresh text = "---------------------------------------------------------------\n" text += "★" + actor.name + "\n" secret_equips.each{|item| text += "・" + item.name + "\n"} print text + "\n" end else #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def refresh_secret_equip refresh end end end #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def add_secret_equip(actor_id, item_id, dup = true) if actor_id == 0 $game_party.members.each{|actor| actor.add_secret_equip(item_id, dup)} elsif actor_id > 0 $game_actors[actor_id].add_secret_equip(item_id, dup) else $game_party.all_members[-(1 + actor_id)].add_secret_equip(item_id, dup) end end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def remove_secret_equip(actor_id, item_id, dup = true) if actor_id == 0 $game_party.members.each{|actor| actor.remove_secret_equip(item_id, dup)} elsif actor_id > 0 $game_actors[actor_id].remove_secret_equip(item_id, dup) else $game_party.all_members[-(1 + actor_id)].remove_secret_equip(item_id, dup) end end end