#============================================================================== # RGSS2_武器攻撃力除外スキル・アイテム # 2011/09/01公開 # C Winter (http://ccwinter.blog.fc2.com/) #============================================================================== module CWinter module Pattern NO_WEAPON_ATTACK = /<武器不使用>/i end end #============================================================================== # ■ RPG::UsableItem #============================================================================== class RPG::UsableItem #-------------------------------------------------------------------------- # ○ 武器不使用かどうかの取得 #-------------------------------------------------------------------------- def no_weapon_attack? if @no_weapon_attack == nil @no_weapon_attack = @note =~ CWinter::Pattern::NO_WEAPON_ATTACK ? true : false end return @no_weapon_attack end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor #-------------------------------------------------------------------------- # ● 武器攻撃力の取得 #-------------------------------------------------------------------------- def base_weapon_atk n = 0 for item in weapons.compact do n += item.atk end return n end end #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy #-------------------------------------------------------------------------- # ● 武器攻撃力の取得 #-------------------------------------------------------------------------- def base_weapon_atk return 0 end end #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 補正後の武器攻撃力の取得 #-------------------------------------------------------------------------- def weapon_atk n = [[base_weapon_atk, 0].max, 999].min for state in states do n *= state.atk_rate / 100.0 end n = [[Integer(n), 0].max, 999].min return n end #-------------------------------------------------------------------------- # ● スキルまたはアイテムによるダメージ計算 # user : スキルまたはアイテムの使用者 # obj : スキルまたはアイテム # 結果は @hp_damage または @mp_damage に代入する。 #-------------------------------------------------------------------------- def make_obj_damage_value(user, obj) damage = obj.base_damage # 基本ダメージを取得 atk = user.atk if obj.no_weapon_attack? atk -= user.weapon_atk end if damage > 0 # ダメージが正の数 damage += atk * 4 * obj.atk_f / 100 # 打撃関係度: 使用者 damage += user.spi * 2 * obj.spi_f / 100 # 精神関係度: 使用者 unless obj.ignore_defense # 防御力無視以外 damage -= self.def * 2 * obj.atk_f / 100 # 打撃関係度: 対象者 damage -= self.spi * 1 * obj.spi_f / 100 # 精神関係度: 対象者 end damage = 0 if damage < 0 # マイナスなら 0 に elsif damage < 0 # ダメージが負の数 damage -= atk * 4 * obj.atk_f / 100 # 打撃関係度: 使用者 damage -= user.spi * 2 * obj.spi_f / 100 # 精神関係度: 使用者 end damage *= elements_max_rate(obj.element_set) # 属性修正 damage /= 100 damage = apply_variance(damage, obj.variance) # 分散 damage = apply_guard(damage) # 防御修正 if obj.damage_to_mp @mp_damage = damage # MP にダメージ else @hp_damage = damage # HP にダメージ end end end