#============================================================================== # ■ VXAce-RGSS3-1 用語辞典-自動更新Plugin [Ver.1.0.2] by Claimh #------------------------------------------------------------------------------ #用語辞典の内容を自動更新するスクリプトです。 #以下のような場合に自動更新が実行されます。 #・アクターが加わったとき #・エネミーを倒したとき #・アイテム、武器、防具入手時 #・スキル習得時 #・クラスチェンジ時 #・クエスト表示ON/開始時(要:クエストシステム) #------------------------------------------------------------------------------ # [設定]の用語設定で設定した用語IDと各IDが一致するようにする必要があります。 # ・アクター : アクターID = 用語ID # ・エネミー : エネミーID = 用語ID # ・アイテム : アイテムID = 用語ID # ・武器 : 武器ID = 用語ID # ・防具 : 防具ID = 用語ID # ・スキル : スキルID = 用語ID # ・クラス : クラスID = 用語ID # ・クエスト : クエストID = 用語ID #============================================================================== module DictAutoUpdate include DictDef A_UP = [] class AutoUpdate #------------------------------------------------------------------------- # ●自動更新設定 # flag : true=自動更新有効 / false=自動更新無効 # category_id : 項目番号(カテゴリID) #------------------------------------------------------------------------- def initialize(flag, category_id) @flag = flag; @category_id = category_id end end #---------------------------------------------------------------------------- # カスタマイズSTART #---------------------------------------------------------------------------- =begin 【設定方法】 A_UP[ATC_XXX] = AutoUpdate.new(自動更新の有無, 項目番号) =end # アクター A_UP[ATC_ACTOR] = AutoUpdate.new(false, 0) # エネミー A_UP[ATC_ENEMY] = AutoUpdate.new(false, 1) # エネミー(アナライズ用) A_UP[ATC_ENEMY_A] = AutoUpdate.new(false, 1) # アイテム A_UP[ATC_ITEM] = AutoUpdate.new(false, 3) # 武器 A_UP[ATC_WEAPON] = AutoUpdate.new(false, 4) # 防具(ALL) A_UP[ATC_ARMOR_ALL] = AutoUpdate.new(false, 5) # 防具(盾のみ) A_UP[ATC_ARMOR_S] = AutoUpdate.new(false, 5) # 防具(頭防具のみ) A_UP[ATC_ARMOR_H] = AutoUpdate.new(false, 5) # 防具(身体防具のみ) A_UP[ATC_ARMOR_C] = AutoUpdate.new(false, 5) # 防具(装飾品のみ) A_UP[ATC_ARMOR_A] = AutoUpdate.new(false, 5) # スキル A_UP[ATC_SKILL] = AutoUpdate.new(false, 2) # クラス A_UP[ATC_CLASS] = AutoUpdate.new(false, 6) # 場所 A_UP[ATC_TOWN] = AutoUpdate.new(false, 7) # クエスト A_UP[ATC_QUEST] = AutoUpdate.new(false, 7) #---------------------------------------------------------------------------- # カスタマイズEND #---------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● 自動更新クラス [本体] #-------------------------------------------------------------------------- class AutoUpdate attr_reader :flag attr_reader :category_id def permit(word_id, show=true) return unless @flag $game_system.dictionary[@category_id][word_id].show_flg = show end def change_info(word_id, info) return unless @flag $game_system.dictionary[@category_id][word_id].info = info end def add_info(word_id, info) return unless @flag $game_system.dictionary[@category_id][word_id].info += info end end #-------------------------------------------------------------------------- # ● 更新情報取得 #-------------------------------------------------------------------------- def self.[](type) return A_UP[type] end #-------------------------------------------------------------------------- # ● 用語辞典の更新 [防具] #-------------------------------------------------------------------------- ATU_ARMORS = [ATC_WEAPON, ATC_ARMOR_S, ATC_ARMOR_H, ATC_ARMOR_C, ATC_ARMOR_A] def self.permit_equips(item) return if item.id == 0 A_UP[ATC_ARMOR_ALL].permit(item.id) if item.etype_id != 0 A_UP[ATU_ARMORS[item.etype_id]].permit(item.id) end #-------------------------------------------------------------------------- # ● 用語辞典の登録更新 [アクター] #-------------------------------------------------------------------------- def self.dict_permit_actor(actor) A_UP[ATC_ACTOR].permit(actor.id) actor.equips.compact.each { |e| permit_equips(e) } actor.skills.compact.each { |s| A_UP[ATC_SKILL].permit(s.id) } A_UP[ATC_CLASS].permit(actor.class_id) end #-------------------------------------------------------------------------- # ● 用語辞典の登録更新 [エネミー] #-------------------------------------------------------------------------- def self.dict_permit_enemy(battler) return if battler.actor? A_UP[ATC_ENEMY].permit(battler.enemy.id) A_UP[ATC_ENEMY_A].permit(battler.enemy.id) end #-------------------------------------------------------------------------- # ● 用語辞典の登録更新 [アイテム/武器/防具] #-------------------------------------------------------------------------- def self.dict_permit_item(item) return if item.nil? or item.id == 0 case item when RPG::EquipItem; permit_equips(item) when RPG::Item; A_UP[ATC_ITEM].permit(item.id) end end #-------------------------------------------------------------------------- # ● ATC_TOWN : リージョンID -> 用語ID変換 #-------------------------------------------------------------------------- def self.conv_region_id(region_id) if defined?(WorldMap) return (region_id * 1000) else p "WorldMapがありません。"; exit end end #-------------------------------------------------------------------------- # ● ATC_TOWN : タウンID -> 用語ID変換 #-------------------------------------------------------------------------- def self.conv_town_id(region_id, town_id) if defined?(WorldMap) return (self.conv_region_id(region_id) + town_id + 1) else p "WorldMapがありません。"; exit end end end class Game_Party < Game_Unit #-------------------------------------------------------------------------- # ● 初期パーティのセットアップ #-------------------------------------------------------------------------- alias setup_starting_members_dict_plugin_update setup_starting_members def setup_starting_members setup_starting_members_dict_plugin_update members.each { |a| DictAutoUpdate.dict_permit_actor(a) } end #-------------------------------------------------------------------------- # ● アクターを加える #-------------------------------------------------------------------------- alias add_actor_dict_plugin_update add_actor def add_actor(actor_id) add_actor_dict_plugin_update(actor_id) DictAutoUpdate.dict_permit_actor($game_actors[actor_id]) end #-------------------------------------------------------------------------- # ● アイテムの増加(減少) # include_equip : 装備品も含める #-------------------------------------------------------------------------- alias gain_item_dict_plugin_update gain_item def gain_item(item, amount, include_equip = false) gain_item_dict_plugin_update(item, amount, include_equip) DictAutoUpdate.dict_permit_item(item) end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● スキルを覚える #-------------------------------------------------------------------------- alias learn_skill_dict_plugin_update learn_skill def learn_skill(skill_id) learn_skill_dict_plugin_update(skill_id) DictAutoUpdate[DictDef::ATC_SKILL].permit(skill_id) end #-------------------------------------------------------------------------- # ● 職業の変更 # keep_exp : 経験値を引き継ぐ #-------------------------------------------------------------------------- alias change_class_dict_plugin_update change_class def change_class(class_id, keep_exp = false) change_class_dict_plugin_update(class_id, keep_exp) DictAutoUpdate[DictDef::ATC_CLASS].permit(class_id) end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● 戦闘不能になる #-------------------------------------------------------------------------- alias die_dict_plugin_update die def die die_dict_plugin_update DictAutoUpdate.dict_permit_enemy(self) if enemy? end #-------------------------------------------------------------------------- # ● ダメージの処理 # 呼び出し前に @result.hp_damage @result.mp_damage @result.hp_drain # @result.mp_drain が設定されていること。 #-------------------------------------------------------------------------- alias execute_damage_dict_plugin_update execute_damage def execute_damage(user) execute_damage_dict_plugin_update(user) DictAutoUpdate.dict_permit_enemy(self) if enemy? and dead? end #-------------------------------------------------------------------------- # ● HP の再生 #-------------------------------------------------------------------------- alias regenerate_hp_dict_plugin_update regenerate_hp def regenerate_hp regenerate_hp_dict_plugin_update DictAutoUpdate.dict_permit_enemy(self) if enemy? and dead? end end if defined?(WorldMap) # ワールドマップと併用時のみ有効 module WorldMap class RegionInfo alias visible_dict visible= def visible=(v) visible_dict(v) id = DictAutoUpdate.conv_region_id(@region_id) DictAutoUpdate[DictDef::ATC_TOWN].permit(id) if v end alias region_info_dict region_info= def region_info=(t) region_info_dict(t) id = DictAutoUpdate.conv_region_id(@region_id) DictAutoUpdate[DictDef::ATC_TOWN].change_info(id, t) end end class TownInfo alias visible_dict visible= def visible=(v) visible_dict(v) id = DictAutoUpdate.conv_town_id(@region_id, @town_id) DictAutoUpdate[DictDef::ATC_TOWN].permit(id) if v end alias town_info_dict town_info= def town_info=(t) town_info_dict(t) id = DictAutoUpdate.conv_town_id(@region_id, @town_id) DictAutoUpdate[DictDef::ATC_TOWN].change_info(id, t) end end end end # WorldMap if defined?(Quest) # クエストシステムと併用時のみ有効 module Quest class QuestData alias visible_dict visible= def visible=(v) visible_dict(v) DictAutoUpdate[DictDef::ATC_QUEST].permit(@id) if v end alias text_dict text= def text=(t) text_dict(t) DictAutoUpdate[DictDef::ATC_QUEST].change_info(@id, t) end alias quest_start_dict quest_start def quest_start quest_start_dict DictAutoUpdate[DictDef::ATC_QUEST].permit(@id) end end end end # Quest