#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/???????? ? KGC_EquipmentBreak?
#_/----------------------------------------------------------------------------
#_/????????????????????
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$imported = {} if $imported == nil
$imported["EquipmentBreak"] = true
if $game_special_elements == nil
$game_special_elements = {}
$data_system = load_data("Data/System.rxdata")
end
# ????????
$game_special_elements["equipment_break"] = /????(\d+)(%|?)/
#==============================================================================
# ? Game_Battler (???? 3)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias attack_effect_KGC_EquipmentBreak attack_effect
def attack_effect(attacker)
# ???????
result = attack_effect_KGC_EquipmentBreak(attacker)
if result && self.damage.is_a?(Numeric)
# ??????
attacker.break_equipment(0) if attacker.is_a?(Game_Actor)
# ??????
self.break_equipment(1) if self.is_a?(Game_Actor)
end
return result
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
alias skill_effect_KGC_EquipmentBreak skill_effect
def skill_effect(user, skill)
# ???????
result = skill_effect_KGC_EquipmentBreak(user, skill)
# ????????????????
if result && skill.atk_f > 0 && self.damage.is_a?(Numeric)
# ??????
user.break_equipment(0) if user.is_a?(Game_Actor)
# ??????
self.break_equipment(1) if self.is_a?(Game_Actor)
end
return result
end
end
#???????????????????????????????????????
#==============================================================================
# ? Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :weapon_broken # ???????
attr_accessor :armor_broken # ???????
#--------------------------------------------------------------------------
# ? ??????
# actor_id : ???? ID
#--------------------------------------------------------------------------
alias setup_KGC_EquipmentBreak setup
def setup(actor_id)
# ???????
setup_KGC_EquipmentBreak(actor_id)
@weapon_broken, @armor_broken = false, false
end
#--------------------------------------------------------------------------
# ? ???????
# type : ???????(0:?? 1:??)
#--------------------------------------------------------------------------
def break_equipment(type)
srand
case type
when 0 # ?????
# ???????????
if $imported["EquipExtension"] && self.two_swords?
weapons = []
self.ts_number.times { |i|
next if self.weapon_id(i) == 0
weapons << $data_weapons[self.weapon_id(i)]
}
else
return if self.weapon_id == 0
weapons = [$data_weapons[self.weapon_id]]
end
# ????
weapons.each { |weapon|
prob = 0
weapon.element_set.compact.each { |element|
if $game_special_elements["equipment_break"] =~ $data_system.elements[element]
prob = $1.to_i
break
end
}
if prob != nil && rand(100) < prob
# ???????ID???
broken_weapon = weapon.id
# ?????
equip(0, 0)
# ??????????
$game_party.lose_weapon(broken_weapon, 1)
# ????????
@weapon_broken = true
end
}
when 1 # ?????
st = $imported["EquipExtension"] && self.two_swords? ? self.ts_number : 1
ed = $imported["EquipExtension"] ? self.equip_type.size : 5
(st...ed).each { |i|
armor_id = $imported["EquipExtension"] ? self.armor_id[i] : eval("@armor#{i}_id")
# ?????????????????
next if armor_id == nil || armor_id == 0
# ???????????
armor = $data_armors[armor_id]
# ????
prob = 0
armor.guard_element_set.compact.each { |element|
if $game_special_elements["equipment_break"] =~ $data_system.elements[element]
prob = $1.to_i
break
end
}
if prob != nil && rand(100) < prob
# ?????
equip(i, 0)
# ??????????
$game_party.lose_armor(armor_id, 1)
# ????????
@armor_broken = true
prob = nil
end
}
end
end
end
#???????????????????????????????????????
#==============================================================================
# ? Scene_Battle (???? 4)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ? ?????? (??????? ???? 5 : ??????)
#--------------------------------------------------------------------------
alias update_phase4_step5_KGC_EquipmentBreak update_phase4_step5
def update_phase4_step5
# ???????
update_phase4_step5_KGC_EquipmentBreak
# ??????
for actor in $game_party.actors
next if actor == nil
# ?????????????
if actor.weapon_broken
# ????? "Weapon Broken" ???
actor.damage = "Weapon Broken" if actor.damage == nil
actor.damage_pop = true
# ?????????
@broken = true
end
# ?????????????
if actor.armor_broken
# ????? "Armor Broken" ???
actor.damage = "Armor Broken" if actor.damage == nil
actor.damage_pop = true
# ?????????
@broken = true
end
# ??????
actor.weapon_broken = false
actor.armor_broken = false
end
# ???????????
if @broken
# ???????????
@help_window.set_text("?????????", 1)
# ?? SE ???
Audio.se_play("Audio/SE/097-Attack09", 80, 50)
# ???????????
@wait_count = 20
end
end
#--------------------------------------------------------------------------
# ? ?????? (??????? ???? 6 : ??????)
#--------------------------------------------------------------------------
alias update_phase4_step6_KGC_EquipmentBreak update_phase4_step6
def update_phase4_step6
# ???????
update_phase4_step6_KGC_EquipmentBreak
# ???????????
if @broken
# ???????????
@help_window.visible = false
# ????????
@broken = false
end
end
end
Should be something like what you want.
Give credit to KGC