=begin ●ノーダメージで戦闘に勝利したときのみドロップアイテムver1.0----(c)光の軌想曲  すべての敵モンスターにおいて、ノーダメージでバトルに勝利しないと  「ドロップアイテム2」を落とさなくします。  ○使用方法  導入するだけで効果を発揮します。  ボス敵など、この機能をオフにしたいときは  スイッチ[IGNORE_NODMG_ID]をオンにしておけば、  ノーダメージでなくても「ドロップアイテム2」を入手できます。  【ノーダメージの定義】   このスクリプトでは、敵からアクターのHPにダメージがなかった時を   ノーダメージとしています。   したがって、ステート変化やMPダメージを受けた場合や、   混乱やスキルの効果などでアクターからアクターにダメージがあっても   ノーダメージ状態に影響はありません。  ○競合の可能性  ドロップアイテムを弄る他の素材と競合する可能性があります。  Game_troopに再定義あり。  Game_battler,Scene_battleをエイリアス。  ○更新履歴  10/ 5/17 ver1.0公開 =end #---------------------------------------------------------------------------- # ↓カスタマイズポイント module MAZ # この機能を無効にするスイッチID IGNORE_NODMG_ID = 50 end # ↑カスタマイズポイントおわり #---------------------------------------------------------------------------- #============================================================================== # ■ Game_Troop #------------------------------------------------------------------------------ #  敵グループおよび戦闘に関するデータを扱うクラスです。バトルイベントの処理も # 行います。このクラスのインスタンスは $game_troop で参照されます。 #============================================================================== class Game_Troop < Game_Unit attr_accessor :nodmg_success #ノーダメージ中フラグ #-------------------------------------------------------------------------- # ● オブジェクト初期化(追加定義) #-------------------------------------------------------------------------- alias nodmg_drop_initialize initialize def initialize nodmg_drop_initialize #元の処理 @nodmg_success = false end #-------------------------------------------------------------------------- # ● ドロップアイテムの配列作成(再定義) #-------------------------------------------------------------------------- def make_drop_items drop_items = [] for enemy in dead_members for di in [enemy.drop_item1, enemy.drop_item2] next if di == enemy.drop_item2 && $game_troop.nodmg_success == false && $game_switches[MAZ::IGNORE_NODMG_ID] == false next if di.kind == 0 next if rand(di.denominator) != 0 if di.kind == 1 drop_items.push($data_items[di.item_id]) elsif di.kind == 2 drop_items.push($data_weapons[di.weapon_id]) elsif di.kind == 3 drop_items.push($data_armors[di.armor_id]) end end end return drop_items end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 通常攻撃の効果適用(追加定義) # attacker : 攻撃者 #-------------------------------------------------------------------------- alias nodmg_drop_attack_effect attack_effect def attack_effect(attacker) # 元の処理 nodmg_drop_attack_effect(attacker) unless @missed || @evaded || @hp_damage <= 0 # 攻撃者が敵で、対象がアクターならノーダメージ失敗 if self.is_a?(Game_Actor) unless attacker.is_a?(Game_Actor) $game_troop.nodmg_success = false end end end end #-------------------------------------------------------------------------- # ● スキルの効果適用(追加定義) # user : スキルの使用者 # skill : スキル #-------------------------------------------------------------------------- alias nodmg_drop_skill_effect skill_effect def skill_effect(user, skill) # 元の処理 nodmg_drop_skill_effect(user, skill) unless @missed || @evaded || (skill.physical_attack and @hp_damage == 0) # 攻撃者が敵で、対象がアクターならノーダメージ失敗 if self.is_a?(Game_Actor) unless user.is_a?(Game_Actor) $game_troop.nodmg_success = false end end end end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 開始処理(追加定義) #-------------------------------------------------------------------------- alias nodmg_drop_start start def start # 元の処理 nodmg_drop_start $game_troop.nodmg_success = true end end