Quebrando Itens No RMXP
Publicado em 6 de novembro de 2012.Este é um script para o RPG Maker XP que permite adicionar uma probabilidade de um equipamento quebrar no momento do ataque ou, no caso de uma armadura, quebrar no momento do dano. Caso o item seja quebrado, o jogador o perde.
O script foi desenvolvido pelo KGC, e suas mensagens já estão em português!
Utilização
Crie um atributo no Banco de Bados (na aba de Sistema) chamado “Quebrar”. Ao lado deste atributo, deve-se definir à porcentagem de chance para que isto ocorra. Por exemplo:
Quebrar50%
O equipamento que tivereste atributo terá 50% de chance de quebrar.
Para instalar o script, basta copiar o código abaixo acima do Main:
#################################################################
######################## Modulo KGC #############################
#################################################################
#Script necessário para usar alguns outros scripts do KGC #######
#################################################################
$game_special_elements = {}
$imported = {}
$data_states = load_data("Data/States.rxdata")
$data_system = load_data("Data/System.rxdata")
#################################################################
############################# KGC ###############################
#################################################################
# Adiciona a % de chance de seu equipamento quebrar (Inutilizar)
#Crie um atributo chamado "Quebrar" no banco de dados.
#
#Para definir a porcentagem de chance para a arma quebrar você deve
#nomear o atributo desta forma.
#--------------------
#Quebrar10%
#--------------------
# No caso a probabilidade do equipamento quebrar é de 10%.
#É necessário atribuir esse atributo Quebrar10% ao equipamento
#desejado.
#################################################################
$imported["EquipmentBreak"] = true
$game_special_elements["equipment_break"] = /Quebrar(\d+)(%|%)/
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
class Game_Actor < Game_Battler
attr_accessor :weapon_broken
attr_accessor :armor_broken
alias setup_KGC_EquipmentBreak setup
def setup(actor_id)
setup_KGC_EquipmentBreak(actor_id)
@weapon_broken, @armor_broken = false, false
end
def break_equipment(type)
case type
when 0
if $imported["EquipExtension"] && self.two_swords?
weapons = []
for i in 0...self.ts_number
next if self.weapon_id(i) == 0
weapons << $data_weapons[self.weapon_id(i)]
end
else
return if self.weapon_id == 0
weapons = [$data_weapons[self.weapon_id]]
end
for weapon in weapons
for element in weapon.element_set.compact
if $game_special_elements["equipment_break"] =~
$data_system.elements[element]
prob = $1.to_i
break
end
end
if prob != nil && rand(100) < prob
broken_weapon = weapon.id
equip(0, 0)
$game_party.lose_weapon(broken_weapon, 1)
@weapon_broken = true
end
end
when 1
st = $imported["EquipExtension"] && self.two_swords? ? self.ts_number : 1
ed = $imported["EquipExtension"] ? self.equip_type.size : 5
for i in st...ed
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]
for element in armor.guard_element_set.compact
if $game_special_elements["equipment_break"] =~
$data_system.elements[element]
prob = $1.to_i
break
end
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
end
class Scene_Battle
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
actor.damage = "Arma Destruída" if actor.damage == nil
actor.damage_pop = true
@broken = true
end
if actor.armor_broken
actor.damage = "Armadura Destruída" 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("Equipamento Destruído", 1)
Audio.se_play("Audio/SE/097-Attack09", 80, 50)
@wait_count = 20
end
end
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
endInformações adicionais
- Categoria: Programação XP
- Tag: RPG Maker XP
- Adicionado por: LichKing
- Acessos: 76
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!
