# ttp://www.saiin.net/~marry/data/enchat.lzh # スクリプト中で(中略)と書いてある部分は元のスクリプトが残っている部分 class Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- # (中略) # ↓2004/07/22追加。エンチャット用 / Kazuki Enju attr_accessor :enchat_element_set # エンチャット用の属性セット attr_accessor :enchat_turns # エンチャットの残り有効ターン数 attr_accessor :enchat_name # エンチャットの名前 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # (中略) # ↓2004/07/22追加。エンチャット用 / Kazuki Enju @enchat_element_set = [] @enchat_turns = 0 @enchat_name = "" end #-------------------------------------------------------------------------- # ● 通常攻撃の効果適用 # attacker : 攻撃者 (バトラー) #-------------------------------------------------------------------------- def attack_effect(attacker) # (中略) # 属性修正 # 2004/07/22修正。エンチャット用 Kazuki Enju if attacker.is_enchat == true self.damage *= elements_correct(attacker.get_enchat) else self.damage *= elements_correct(attacker.element_set) end # ここまでエンチャット用 # (中略) end # ↓2004/07/22追加。エンチャット用 / Kazuki Enju #-------------------------------------------------------------------------- # ● エンチャットの設定 # skill : スキル #-------------------------------------------------------------------------- def set_enchat(skill) @enchat_element_set = skill.element_set @enchat_turns = skill.power @enchat_name = skill.name.dup @enchat_name[/エンチャット/] = "" end #-------------------------------------------------------------------------- # ● エンチャットの解除 #-------------------------------------------------------------------------- def remove_enchat @enchat_element_set = [] @enchat_turns = 0 @enchat_name = "" end #-------------------------------------------------------------------------- # ● エンチャットの取得 #-------------------------------------------------------------------------- def get_enchat return (@enchat_element_set) end #-------------------------------------------------------------------------- # ●エンチャットのターン数を減算 #-------------------------------------------------------------------------- def dec_enchat if @enchat_turns > 0 @enchat_turns -= 1 end end #-------------------------------------------------------------------------- # ●エンチャットが有効か無効かのチェック #-------------------------------------------------------------------------- def is_enchat return @enchat_turns == 0 ? false : true end #-------------------------------------------------------------------------- # ● エンチャットの名前を返す #-------------------------------------------------------------------------- def get_enchat_name str_turns = (@enchat_turns < 0) ? "∞" : @enchat_turns.to_s return "[" + @enchat_name + ":" + str_turns + "]" end #-------------------------------------------------------------------------- # ● エンチャットの効果適用 2004/07/23 / Kazuki Enju # user : スキルの使用者 (バトラー) # skill : スキル #-------------------------------------------------------------------------- def enchat_effect(user, skill) # クリティカルフラグをクリア self.critical = false # スキルの効果範囲が HP 1 以上の味方で、自分の HP が 0、 # またはスキルの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合 if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1) # メソッド終了 return false end # 有効フラグをクリア effective = false # コモンイベント ID が有効の場合は有効フラグをセット effective |= skill.common_event_id > 0 # 第一命中判定 hit = skill.hit if skill.atk_f > 0 hit *= user.hit / 100 end hit_result = (rand(100) < hit) # 不確実なスキルの場合は有効フラグをセット effective |= hit < 100 # 命中の場合 if hit_result == true # エンチャッティング self.set_enchat(skill) # ステート変化 @state_changed = false effective |= states_plus(skill.plus_state_set) effective |= states_minus(skill.minus_state_set) # ダメージにSuccessを設定 self.damage = "Success" else self.damage = "Miss" end # 戦闘中でない場合 unless $game_temp.in_battle # ダメージに nil を設定 self.damage = nil end # メソッド終了 return effective end end class Scene_Battle #-------------------------------------------------------------------------- # ● メインフェーズ開始 #-------------------------------------------------------------------------- def start_phase4 # (中略) # 2004/07/22追加。エンチャット用 / Kazuki Enju for i in 0...$game_party.actors.size $game_party.actors[i].dec_enchat # エンチャットのターン数を減算 end # (中略) end #-------------------------------------------------------------------------- # ● スキルアクション 結果作成 #-------------------------------------------------------------------------- def make_skill_action_result # (中略) # 2004/07/23追加。エンチャット用 / Kazuki Enju ary_enchat = @skill.name.scan(/\A.*エンチャット.*\Z/) if ary_enchat == [] b_enchat = false else b_enchat = true end # (中略) # スキルの効果を適用 # 2004/07/23追加。エンチャット用 / Kazuki Enju if b_enchat == false # エンチャットでない時 for target in @target_battlers target.skill_effect(@active_battler, @skill) end else # エンチャットの時 for target in @target_battlers target.enchat_effect(@active_battler, @skill) end end # エンチャット用ここまで end end