#####################################################################
=begin
#####################################################################
############################ KGC_Steal ##############################
#####################################################################
Cada habilidade que possuir o atributo Roubar, será ativada
a habilidade roubo, que pode ser item, arma, armadura, dinheiro, etc...
#####################################################################

-> Bug do Stack level too deep causado pelo ALIAS corrigido por Atoa

#####################################################################
Para usar este Script você precisa do Modulo KGC
Crie um novo script abaixo do Scene_Debug e cole este script

$game_special_elements = {}
$imported = {}
$data_states = load_data("Data/States.rxdata")
$data_system = load_data("Data/System.rxdata")

Todos Scrips KCG devem estar abaixo do Modulo

#####################################################################

1 - Crie um atributo chamado Roubar no database (na aba de sistema, 
no mesmo lugar onde se cria os elementos)
2 - Na janela de habilidades coloque o atributo Roubar na
habilidade que ira roubar os item.
O Poder da Habilidade define a chance de sucesso.
Deixe a Força F. maior que zero para que a habilidade seja 
considerada fisica, ou deixe zero para que a habilidade seja 
considerada mágica

Importante: você deve definir o Alvo da habilidade como
"Inimigo" ou "Todos Inimigos" se não poderá ocasionar erros.

3 - Vá até a janela dos inimigos, e quando for nomear o nome de
seu inimigo faça como nos exemplos abaixo.

##################################
Fantasma_/i2_/g1300_/W5
##################################
Você tem chance de roubar os seguintes itens do Inimigo Fantasma
I2 = Poção Mágica(ID2 do database de itens)
g1300 = 1300 de dinheiro
W5 = a arma Laça de Bronze(ID5 do database de armas)

##################################
Basilisco_/i1_/a2
##################################
Você tem chance de roubar os seguintes itens do Inimigo Basilisco
I1 = Poção(ID1 do database de itens)
I2 = Escudo de Ferro(ID2 do database de Armaduras)

# Cada letra tem uma função e o numero é a posição do ID do Database
# I = ITEM
# W = Armas
# A = Armaduras,escudos,acessorios, etc.
# G = Dinheiro
Você pode adicionar quantos itens quiser na combinação 
que você quiser, não existe um limite pré definido.
Você pode adicionar comandos repetidos assim o inimigo terá
mais de uma unidade do mesmo item

#####################################################################

Editando os Textos
Você pode editar as mensagens que aparecem quando se usa a skill
de roubo logo aqui abaixo
Não remova as mensagesn {Gold} e {item}, pois são elas que 
mostram o nome do item/quantidade de dinheiro roubados

Não se esqueça de editar as mensagens de Erro.
Use o ctlr + F e busque por "Errou!" e troque todas as mensagens
que estiverem assim para a mensagem de erro que você usa no seu 
jogo por exemplo de "Errou!" para "Miss"
#####################################################################
=end

module KGC
STEAL_SUCCESS_DMG = "Steal"
STEAL_EMPTY_MSG = "ว่างเปล่าไม่มีมีอะไร"
STEAL_FAIL_MSG = "ล้มเหลวที่จะขโมย"
STEAL_GOLD_MSG = "ขโมยเงิน {Gold} !!"
STEAL_ITEM_MSG = "ขโมย {item} !!"
end


$imported["Steal"] = true

$game_special_elements["roubo"] = $data_system.elements.index("Roubar")

#==============================================================================
# ■ RPG::Enemy
#==============================================================================

class RPG::Enemy
alias name_KGC_Steal name
def name
return name_KGC_Steal.split(/_/)[0]
end
#--------------------------------------------------------------------------
def steal_items
data = @name.split(/_/)
data.delete_at(0)
items = []
for i in 0...data.size
items[i] = data[i].split(/\/([ABGIW])(\d+)?/i)
items[i].delete_at(0)
items[i][1] = items[i][1].to_i
end
return items
end
#--------------------------------------------------------------------------
def name
return @name.gsub(/\_.*/) {""}
end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================

class Game_Battler
alias skill_effect_KGC_Steal skill_effect
def skill_effect(user, skill)
return false if skill.element_set.include?($game_special_elements["roubo"])
return skill_effect_KGC_Steal(user, skill)
end
#--------------------------------------------------------------------------
def steal_effect(user, skill)
self.critical = false
if ((skill.scope == 3 || skill.scope == 4) && self.hp == 0) ||
((skill.scope == 5 || skill.scope == 6) && self.hp >= 1)
return false
end
steal_item = nil
if self.states.include?($game_state_invincible) &&
(skill.scope == 1 || skill.scope == 2)
hit_result = false
else
hit_result = (rand(100) < skill.hit)
end
if hit_result
steal_prob = skill.power * user.dex / self.agi / 100.0
steal_prob *= elements_correct(skill.element_set)
steal_prob /= 100
items = $data_enemies[self.id].steal_items
count = 0
for i in 0...items.size
if (items[i][0] == "B" || items[i][0] == "b") ||
self.stolen_items_flag[i]
next
end
count += 1
end
if count > 0
hit = steal_prob * 200
for i in 0...items.size
hit = [hit / 2, 1].max
next if self.stolen_items_flag[i]
item = items[i]
hit_result = (rand(100) < hit)
if hit_result
case item[0].upcase
when "B" 
self.stolen_items_flag[i] = true
next
when "I" 
steal_item = $data_items[item[1]].name
$game_party.gain_item(item[1], 1)
when "W" 
steal_item = $data_weapons[item[1]].name
$game_party.gain_weapon(item[1], 1)
when "A" 
steal_item = $data_armors[item[1]].name
$game_party.gain_armor(item[1], 1)
when "G" 
steal_item = item[1]
$game_party.gain_gold(item[1])
end
self.stolen_items_flag[i] = true
break
end
end
else
hit_result = true
end
end
if hit_result
if steal_item == nil
self.damage = "No Item"
steal_item = "No Item"
else
self.damage = KGC::STEAL_SUCCESS_DMG
end
else
self.damage = "Miss"
steal_item = "Miss"
end
return steal_item
end
end

#==============================================================================
# ■ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
attr_accessor :stolen_items_flag 
#--------------------------------------------------------------------------
alias initialize_KGC_Steal initialize
def initialize(troop_id, member_index)
initialize_KGC_Steal(troop_id, member_index)

@stolen_items_flag = []
end
end

#==============================================================================
# ■ Scene_Battle 
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
alias make_skill_action_result_KGC_Steal make_skill_action_result
def make_skill_action_result
make_skill_action_result_KGC_Steal
if @skill.element_set.include?($game_special_elements["roubo"])
target = @target_battlers[0]
@steal_item = target.steal_effect(@active_battler, @skill)
end
end
#--------------------------------------------------------------------------
alias update_phase4_step5_KGC_Steal update_phase4_step5
def update_phase4_step5
update_phase4_step5_KGC_Steal

if @steal_item != nil
case @steal_item
when "No Item"
@help_window.set_text(KGC::STEAL_EMPTY_MSG, 1)
when "Errou!"
@help_window.set_text(KGC::STEAL_FAIL_MSG, 1)
when Integer
text = KGC::STEAL_GOLD_MSG.dup
text.gsub!(/{gold}/i) {"#{@steal_item}"}
text.gsub!(/{unit}/i) {"#{$data_system.words.gold}"}
@help_window.set_text(text, 1)
else
text = KGC::STEAL_ITEM_MSG.dup
text.gsub!(/{item}/i) {"#{@steal_item}"}
@help_window.set_text(text, 1)
end
@steal_item = nil
@wait_count = 5
end
end
#--------------------------------------------------------------------------
alias update_phase4_step6_KGC_Steal update_phase4_step6
def update_phase4_step6
@help_window.visible = false
@help_window2.visible = false if @help_window2 != nil
update_phase4_step6_KGC_Steal
end
end