class Game_Alchemy
#=============================================================================
#-----------------------------------------------------------------------------
#DO NOT EDIT:
#-----------------------------------------------------------------------------
#=============================================================================
ITM = 0
WPN = 1
ARM = 2
#=============================================================================
#-----------------------------------------------------------------------------
#EDIT HERE WHEN NEEDED: Sizes
#-----------------------------------------------------------------------------
#=============================================================================
SMALL = 1 #Potions, Daggers, Rings, Gloves, Cards, etc.
MEDIUM = 2 #Short Swords, Axes, Bows, Long Swords, Clothes
LARGE = 3 #Claymores, Battle Hammers, Heavy Armours, etc.
GIANT = 4 #Heavy Axes, Boxes, Cannons, etc.
ITEMS = { #item_id => size
1 => SMALL, 2 => SMALL, 3 => SMALL
}
WEAPONS = { #weapon_id => size
1 => MEDIUM, 2 => MEDIUM, 3 => MEDIUM
}
ARMOURS = { #armor_id => size
1 => MEDIUM, 2 => MEDIUM, 3 => MEDIUM
}
#=============================================================================
#-----------------------------------------------------------------------------
#EDIT HERE WHEN NEEDED: Fusion Data
#-----------------------------------------------------------------------------
#=============================================================================
FUSE_I = {
3 => [ITM, 1, ITM, 2]
}
FUSE_W = {
3 => [ITM, 13, WPN, 1]
}
FUSE_A = {
3 => [ITM, 14, WPN, 2]
}
def initialize
@items = []
@weapons = []
@armours = []
@fuse_i = {}
@fuse_w = {}
@fuse_a = {}
#Items
for i in ITEMS.keys
for a in ITEMS.values
if $data_items[i] != nil
#@array[index] << [size, elements_array]
#@items << [i]
@items[i] = [a, $data_items[i].element_names]
end
end
end
#Weapons
for i in WEAPONS.keys
for a in WEAPONS.values
if $data_weapons[i] != nil
#@array[index] << [size, elements_array]
#@weapons << [i]
@weapons[i] = [a, $data_weapons[i].element_names]
end
end
end
#Armours
for i in ARMOURS.keys
for a in ARMOURS.values
if $data_armors[i] != nil
#@array[index] = [size, elements_array]
#@armours << [i]
@armours[i] = [a, $data_armors[i].element_names]
end
end
end
#Fusable Datas
#Items
for i in FUSE_I.keys
for a in FUSE_I.values
#@fuse_i << [i]
@fuse_i[i] = a
end
end
#Weapons
for i in FUSE_W.keys
for a in FUSE_W.values
#@fuse_w << [i]
@fuse_w[i] = a
end
end
#Armours
for i in FUSE_A.keys
for a in FUSE_A.values
#@fuse_a << [i]
@fuse_a[i] = a
end
end
end
def matter_types?(type, id)
@type = type
@id = id
if @type == ITM # Item
return $data_items[@id].element_names
elsif @type == WPN # Weapon
return $data_weapons[@id].element_names
elsif @type == ARM # Armours
return $data_armors[@id].element_names
end
end
def transmute?(tp1, id1, tp2, id2) #Will it Transmute?
st = tp1 #Start Item Type
si = id1 #Start Item ID
pt = tp2 #Product Item Type
pi = id2 #Product Item ID
#Start Item
if st == ITM
if $data_items[si] != nil
elements1 = matter_types?(ITM, si)
size1 = ITEMS[si]
end
elsif st == WPN
if $data_weapons[si] != nil
elements1 = matter_types?(WPN, si)
size1 = WEAPONS[si]
end
elsif st == ARM
if $data_armors[si] != nil
elements1 = matter_types?(ARM, si)
size1 = ARMOURS[si]
end
end
#Potential End Item
if pt == ITM
if $data_items[pi] != nil
elements2 = matter_types?(ITM, pi)
size2 = ITEMS[pi]
end
elsif pt == WPN
if $data_weapons[pi] != nil
elements2 = matter_types?(WPN, pi)
size2 = WEAPONS[pi]
end
elsif pt == ARM
if $data_armors[pi] != nil
elements2 = matter_types?(ARM, pi)
size2 = ARMOURS[pi]
end
end
#Check Follows Laws?
if elements1 == elements2
if size1 == size2
return true
else
return false
end
else
return false
end
end
def transmute!(tp1, id1, tp2, id2) #Replacement Transmute!
st = tp1
si = id1
pt = tp2
pi = id2
a = transmute?(st, si, pt, pi)
if a == true
#Lose the Item you have:
if st == ITM
$game_party.lose_item(si, 1)
elsif st == WPN
$game_party.lose_weapon(si, 1)
elsif st == ARM
$game_party.lose_armor(si, 1)
end
#Gain the Item you want:
if pt == ITM
$game_party.gain_item(pi, 1)
elsif pt == WPN
$game_party.gain_weapon(pi, 1)
elsif pt == ARM
$game_party.gain_armor(pi, 1)
end
end
return
end
def fuse(type1, id1, type2, id2)
#Item 1
if type1 == ITM
if @fuse_i[id1] != nil
a1 = ITM
a2 = id1
end
elsif type1 == WPN
if @fuse_w[id1] != nil
a1 = WPN
a2 = id1
end
elsif type1 == ARM
if @fuse_a[id1] != nil
a1 = ARM
a2 = id1
end
end
#Item 2
if type2 == ITM
if @fuse_i[id2] != nil
b1 = ITM
b2 = id2
end
elsif type2 == WPN
if @fuse_w[id2] != nil
b1 = WPN
b2 = id2
end
elsif type2 == ARM
if @fuse_a[id2] != nil
b1 = ARM
b2 = id2
end
end
#Lose first Item
if a1 == ITM
$game_party.lose_item(a2, 1)
elsif a1 == WPN
$game_party.lose_weapon(a2, 1)
elsif a1 == ARM
$game_party.lose_armor(a2, 1)
end
#Lose second Item
if b1 == ITM
$game_party.lose_item(b2, 1)
elsif b1 == WPN
$game_party.lose_weapon(b2, 1)
elsif b1 == ARM
$game_party.lose_armor(b2, 1)
end
#Gain fused Product
p = find_product(a1, a2, b1, b2)
if p != nil
$game_party.gain_item(p, 1)
else
return nil
end
return
end
def find_product(type1, id1, type2, id2)
#Item Products
for i in @fuse_i.values
if [type1, id1, type2, id2] == @fuse_i[i]
return i
end
end
#Weapon Products
for i in @fuse_w.values
if [type1, id1, type2, id2] == @fuse_w[i]
return i
end
end
#Armour Products
for i in @fuse_a.values
if [type1, id1, type2, id2] == @fuse_a[i]
return i
end
end
return nil
end
end