####################################################################
###################### FORGE, ALCHIMIE & REPARATION ########################
#### V 1.1.1 ###########################################################
####################################### Par: lb_guilherme #################
#### traduction par : Douk ##################################################
#### commentaires, ajout de l'alchimie et de la réparation par : Lifa ########################
####################################################################
# Pour qu'un événement déclenche la forge, mettez-lui un appel de script contenant : $scene = Scene_Refinar3.new
# Par défaut, les 10 premiers objets de votre liste d'objets serviront de matériaux.
# Vous pouvez modifier le nombre de matériaux différents de votre jeu (de 1 à 14) à la ligne 56 (Minerios_id)
# Vous pouvez à cette même ligne modifier les emplacements de ces matériaux dans votre liste d'objets.
# A la ligne 40, vous pouvez définir les différents groupes d'objets de votre forge.
# A la ligne 43, mettez le type correspondant pour chaque groupe :
# 1 = Armures (tout ce qui est dans votre liste d'armures compte, casques, accessoires, etc...)
# 2 = Armes
# 3 = Objets (il est tout à fait possible de créer des matériaux à partir d'autres matériaux ^^')
# Lignes 51 à *** : mettez autant de lignes que de groupes d'objets de votre forge !
# Mettez ensuite à droite de chaque ligne les numéros des armures/armes/objets
# que le joueur pourra créer dans ce groupe
# Enfin, lignes ~70 à ***, mettez les matériaux requis pour chaque armure/arme/objet
# (le nombre de nombres entre crochets doit correspondre au nombre de matériaux différents)
# Il doit y avoir une ligne par armure/arme/objet.
# *************** MODIFICATIONS APPORTEES PAR LA REPARATION *******************
# Minerios_id a été changé et comporte 2 lignes. La première définit toujours l'id des objets
# et la 2e définit le type d'objet 'armure,arme,item) qui servira de matériau.
# Par exemple, mettez l'arme "épée rouillée" comme matériau, ajoutez quelques trucs, et faites créer une "épée scintillante" avec, ou mettez une épée et un objet de feu, faites-en une épée de feu ^^
module Refiner3
Grupos_arms = []
Grupos_atr = []
Grupos_atr[1] = []
Grupos_atr[2] = []
Grupos_atr[3] = []
Minerios_id = []
# ----------------------------------------------------
Grupos_name = ["Potions","Runes"] #Type d'armes à forger
# Noms des groupes d'objets
# ----------------------------------------------------
Grupos_tips = [3,3]
# Type d'objets des groupes (conservez le même ordre et même nombre)
# 1 = Armures
# 2 = Armes
# 3 = Objets
# ----------------------------------------------------
# ID des équipements que contiendront chaque groupe :
# Max = 15 par groupe
Grupos_arms[0] = [1,2,3]
Grupos_arms[1] = [4,5,6]
# ----------------------------------------------------
# ID des objets qui serviront de matériaux
# Max = 14
Minerios_id[0] = [1,2,1,2,1,2]
Minerios_id[1] = [1,1,2,2,3,3]
# ----------------------------------------------------
# Quantité de matériaux requis pour chaque objet, dans l'ordre des matériaux indiqués ci-dessus
# Grupos_atr[TYPE][ID]
# TYPE:
# 1 = Armures
# 2 = Armes
# 3 = Objets
# ID:
# Id de l'armure/arme/objet
# ----------------------------------------------------
# Armures :
# Objets :
Grupos_atr[3][1] = [1,1,0,0,0,0]
Grupos_atr[3][2] = [10,15,0,0,0,0]
Grupos_atr[3][3] = [5,0,0,0,10,0]
Grupos_atr[3][4] = [5,5,5,5,5,5]
Grupos_atr[3][5] = [8,45,0,0,0,0]
Grupos_atr[3][6] = [0,0,0,0,1,0]
# ---------------------------------------------------- #
# FIN DES CONFIGURATIONS - INITIALISATION DU SCRIPT #
# ---------------------------------------------------- #
end
class Window_Minerios3 < Window_Base
def initialize(icons, x = 420, y = 5)
super(x, y, 120, WLH * Refiner3::Minerios_id[0].size + WLH + 32 + 10)
@icons = icons
self.contents.font.name = "UmePlus Gothic"
refresh
end
def refresh
self.contents.clear
y = 10
x = 5
for i in 0...Refiner3::Minerios_id[0].size
y = y + WLH
icon = @icons[i]
draw_icon(icon, x, y)
end
end
end
class Scene_Refinar3 < Scene_Base
def start
super
create_menu_background
start_vars
@min_window = Window_Minerios3.new(@icons)
@min_window.visible = false
@grupo_window = Window_Command.new(160, Refiner3::Grupos_name)
@grupo_window.x = 5
@grupo_window.y = 5
@equips_window = Window_Command.new(160, [""])
@equips_window.visible = false
@equips_window.active = false
@confirm_window = Window_Confirm.new
@confirm_window.x = 5
@confirm_window.y = 331
@confirm_op_window = Window_Command.new(75, ["Oui","Non"])
@confirm_op_window.x = 90
@confirm_op_window.y = 331
@confirm_op_window.opacity = 0
@confirm_window.visible = false
@confirm_op_window.visible = false
@confirm_op_window.active = false
@confirm_op_window.index = 1
end
def start_vars
@groups_names = []
@groups_icons = []
for a in 0...Refiner3::Grupos_name.size
@groups_names[a] = []
@groups_icons[a] = []
for i in 0...Refiner3::Grupos_arms[a].size
id = Refiner3::Grupos_arms[a][i]
if Refiner3::Grupos_tips[a] == 1
@groups_names[a][i] = $data_armors[id].name
@groups_icons[a][i] = $data_armors[id].icon_index
else
if Refiner3::Grupos_tips[a] == 2
@groups_names[a][i] = $data_weapons[id].name
@groups_icons[a][i] = $data_weapons[id].icon_index
else
@groups_names[a][i] = $data_items[id].name
@groups_icons[a][i] = $data_items[id].icon_index
end
end
end
end
@icons = []
for i in 0...Refiner3::Minerios_id[0].size
id = Refiner3::Minerios_id[0][i]
type_id = Refiner3::Minerios_id[1][i]
if type_id == 1
@icons[i] = $data_armors[id].icon_index
else
if type_id == 2
@icons[i] = $data_weapons[id].icon_index
else
@icons[i] = $data_items[id].icon_index
end
end
end
end
def terminate
super
dispose_menu_background
@equips_window.dispose
@grupo_window.dispose
@min_window.dispose
@confirm_op_window.dispose
@confirm_window.dispose
end
def update
super
update_menu_background
@equips_window.update
@min_window.update
@grupo_window.update
@confirm_op_window.update
@confirm_window.update
if @grupo_window.active == true
grupo_update
elsif @equips_window.active == true
equips_update
elsif @confirm_window.visible == true
confirm_update
end
end
def confirm_update
if @confirm_op_window.active == false
@confirm_window.contents.clear
@confirm_window.contents.draw_text(0, 0, 130, 24, "Vous n'avez pas les")
@confirm_window.contents.draw_text(0, 24, 130, 24, "items nécessaires")
end
if Input.trigger?(Input::B)
Sound.play_cancel
un_active
end
if Input.trigger?(Input::C)
case @confirm_op_window.index
when 0
Sound.play_decision
refinar
un_active
@icon_window.dispose
update_Refiner3
desactive_options
@confirm_op_window.index = 1
when 1
Sound.play_cancel
un_active
end
end
end
def refinar
v1 = Refiner3::Grupos_tips[@grupo_window.index]
v2 = Refiner3::Grupos_arms[@grupo_window.index][@equips_window.index]
for i in 0...Refiner3::Minerios_id[0].size
v = Refiner3::Grupos_atr[v1][v2][i]
if v == nil
v = 0
end
type_id = Refiner3::Minerios_id[1][i]
if type_id == 1
$game_party.lose_item($data_armors[Refiner3::Minerios_id[0][i]], v)
else
if type_id == 2
$game_party.lose_item($data_weapons[Refiner3::Minerios_id[0][i]], v)
else
$game_party.lose_item($data_items[Refiner3::Minerios_id[0][i]], v)
end
end
end
if v1 == 1
t = $data_armors[v2]
else
if v1 == 2
t = $data_weapons[v2]
else
t = $data_items[v2]
end
end
$game_party.gain_item(t,1)
end
def un_active
@confirm_window.visible = false
@confirm_op_window.visible = false
@confirm_op_window.active = false
@equips_window.active = true
@confirm_window.contents.clear
@confirm_window.contents.draw_text(0, 0, 80, 24, "Confirmer?")
end
def equips_update
if Input.trigger?(Input::B)
Sound.play_cancel
@equips_window.visible = false
@equips_window.active = false
@grupo_window.active = true
@min_window.visible = false
@icon_window.dispose
end
if Input.trigger?(Input::C)
Sound.play_decision
trocar
end
if Input.repeat?(Input::DOWN)
update_Refiner3
end
if Input.repeat?(Input::UP)
update_Refiner3
end
end
def grupo_update
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
Sound.play_decision
@equips_window.dispose
@equips_window = Window_Command2.new(245, @groups_names[@grupo_window.index])
@equips_window.x = 170
@equips_window.y = 5
@min_window.visible = true
@grupo_window.active = false
desactive_options
update_Refiner3
end
end
def troc_list
for i in
0...@troc.sizeif @troc[i] != false
@troc[i] = true
end
end
end
def update_Refiner3
v1 = Refiner3::Grupos_tips[@grupo_window.index]
v2 = Refiner3::Grupos_arms[@grupo_window.index][@equips_window.index]
@min_window.refresh
y = 10
x = 35
@min_window.contents.font.color = @min_window.normal_color
@min_window.contents.draw_text(0, 0, 100, 24, "Requis :")
for i in 0...Refiner3::Minerios_id[0].size
y = y + 24
@min_window.contents.font.color = @min_window.normal_color
@min_window.contents.draw_text(x, y, 80, 24, "→")
text = Refiner3::Grupos_atr[v1][v2][i]
if text == nil
text = 0
end
type_id = Refiner3::Minerios_id[1][i]
if type_id == 1
if $game_party.item_number($data_armors[Refiner3::Minerios_id[0][i]]) < text
@min_window.contents.font.color = @min_window.knockout_color
end
else
if type_id == 2
if $game_party.item_number($data_weapons[Refiner3::Minerios_id[0][i]]) < text
@min_window.contents.font.color = @min_window.knockout_color
end
else
if $game_party.item_number($data_items[Refiner3::Minerios_id[0][i]]) < text
@min_window.contents.font.color = @min_window.knockout_color
end
end
end
@min_window.contents.draw_text(x + 20, y, 80, 24, text.to_s)
end
end
def desactive_options
@troc = []
v1 = Refiner3::Grupos_tips[@grupo_window.index]
v2 = Refiner3::Grupos_arms[@grupo_window.index].size
for a in 0...v2
for i in 0...Refiner3::Minerios_id[0].size
v3 = Refiner3::Grupos_arms[@grupo_window.index][a]
v = Refiner3::Grupos_atr[v1][v3][i]
if v == nil
v = 0
end
type_id = Refiner3::Minerios_id[1][i]
if type_id == 1
if $game_party.item_number($data_armors[Refiner3::Minerios_id[0][i]]) < v
@equips_window.draw_item(a, false)
@troc[a] = false
end
else
if type_id == 2
if $game_party.item_number($data_weapons[Refiner3::Minerios_id[0][i]]) < v
@equips_window.draw_item(a, false)
@troc[a] = false
end
else
if $game_party.item_number($data_items[Refiner3::Minerios_id[0][i]]) < v
@equips_window.draw_item(a, false)
@troc[a] = false
end
end
end
end
end
@icon_window = Window_Icon.new
@icon_window.opacity = 0
troc_list
x = 0
y = -24
for i in 0...@groups_names[@grupo_window.index].size
y = y + 24
icon = @groups_icons[@grupo_window.index][i]
@icon_window.draw_icon(icon, x, y, @troc[i])
end
end
def trocar
if @troc[@equips_window.index] == false
Sound.play_cancel
@confirm_window.visible = true
@equips_window.active = false
else
@confirm_window.visible = true
@confirm_op_window.visible = true
@confirm_op_window.active = true
@equips_window.active = false
end
end
end
class Window_Confirm < Window_Base
def initialize
super (0, 0, 160, WLH * 2 + 32)
self.contents.draw_text(0, 0, 80, 24, "Confirmer ?")
end
end
class Window_Icon < Window_Base
def initialize
super (170, 5, 100, WLH * 14 + 32)
end
end
class Window_Command2 < Window_Selectable
attr_reader:commands
def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
if row_max == 0
row_max = (commands.size + column_max - 1) / column_max
end
super(0, 0, width, row_max * WLH + 32, spacing)
@commands = commands
@item_max = commands.size
@column_max = column_max
refresh
self.index = 0
end
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 30
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, @commands[index])
end
end