#============================================================================== # ■ RGSS3 強化/弱体限界メッセージ Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 強化/弱体付与時、付与限界の場合、効果時間の延長が行えたか否かで # バトルログに表示するメッセージを4種類に分岐させ、視覚的に分かりやすくします。 #------------------------------------------------------------------------------ # ももまるLabs様のXPスタイルバトルと併用する場合 # self.bitmap = Bitmap.new(width * 0.75, height)で検索し # 「 * 0.75」の箇所を削除しておかなければ、全文が表示されない可能性が高いです。 #============================================================================== module Vocab #強化時に効果時間を延長しなかった場合のメッセージを指定。 BAM1 = "%sの%sはもう上がらない!" #弱体時に効果時間を延長しなかった場合のメッセージを指定。 DAM1 = "%sの%sはもう下がらない!" #強化時に効果時間を延長できた場合のメッセージを指定。 BAM2 = "%sの%sはもう上がらない!(効果時間は延長)" #弱体時に効果時間を延長しなかった場合のメッセージを指定。 DAM2 = "%sの%sはもう下がらない!(効果時間は延長)" end class Game_ActionResult attr_accessor :added_buffs_max attr_accessor :added_debuffs_max attr_accessor :added_buffs_overrided #-------------------------------------------------------------------------- # ステータス効果のクリア #-------------------------------------------------------------------------- alias clear_status_effects_max_display clear_status_effects def clear_status_effects #本来の処理を実行。 clear_status_effects_max_display #追加項目の初期化。 @added_buffs_max = [false] * 8 @added_debuffs_max = [false] * 8 @added_buffs_overrided = [-1] * 8 end def added_buffs_max #存在しない場合は初期化。 @added_buffs_max = [false] * 8 if @added_buffs_max == nil #データを返す。 @added_buffs_max end def added_debuffs_max #存在しない場合は初期化。 @added_debuffs_max = [false] * 8 if @added_debuffs_max == nil #データを返す。 @added_debuffs_max end def added_buffs_overrided #存在しない場合は初期化。 @added_buffs_overrided = [0] * 8 if @added_buffs_overrided == nil #データを返す。 @added_buffs_overrided end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 能力強化 #-------------------------------------------------------------------------- alias add_buff_max_display add_buff def add_buff(param_id, turns) #追加項目の編集を行う。 @result.added_buffs_max[param_id] = buff_max?(param_id) @result.added_buffs_overrided[param_id] = 0 unless @result.added_buffs_max[param_id] #本来の処理を実行。 add_buff_max_display(param_id, turns) end #-------------------------------------------------------------------------- # 能力弱体 #-------------------------------------------------------------------------- alias add_debuff_max_display add_debuff def add_debuff(param_id, turns) #追加項目の編集を行う。 @result.added_debuffs_max[param_id] = debuff_max?(param_id) @result.added_buffs_overrided[param_id] = 0 unless @result.added_debuffs_max[param_id] #本来の処理を実行。 add_debuff_max_display(param_id, turns) end #-------------------------------------------------------------------------- # 強化/弱体効果時間上書き #-------------------------------------------------------------------------- alias overwrite_buff_turns_max_display overwrite_buff_turns def overwrite_buff_turns(param_id, turns) #追加項目の編集を行う。 if @buff_turns[param_id].to_i < turns && (@result.added_buffs_overrided[param_id] < 0) @result.added_buffs_overrided[param_id] = @buffs[param_id] > 0 ? 1 : 2 end #本来の処理を実行。 overwrite_buff_turns_max_display(param_id, turns) end end class Window_BattleLog < Window_Selectable #-------------------------------------------------------------------------- # 能力強化/弱体の表示(個別) #-------------------------------------------------------------------------- alias display_buffs_max_display display_buffs def display_buffs(target, buffs, fmt) #強化データを取っておく。 neo_buffs = buffs #強化データ別にデータを処理。 buffs.each_with_index do |param_id, i| #IDが存在しない場合は飛ばす。 next if param_id == nil #上書きデータが0の場合は飛ばす。 next if target.result.added_buffs_overrided[param_id] == 0 #強化データの該当箇所を消去する。 neo_buffs[i] = nil #上書きデータの状態に応じてフォーマットを変更する。 if target.result.added_buffs_max[param_id] fmt = target.result.added_buffs_overrided[param_id] == 1 ? Vocab::BAM2 : Vocab::BAM1 elsif target.result.added_debuffs_max[param_id] fmt = target.result.added_buffs_overrided[param_id] == 2 ? Vocab::DAM2 : Vocab::DAM1 end #文章表示を実行する。 replace_text(sprintf(fmt, target.name, Vocab::param(param_id))) wait end #nilになった物を削除する。 neo_buffs.compact! #本来の処理を実行。 display_buffs_max_display(target, neo_buffs, fmt) end end