Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Fullmetal Alchemist (Working Title)

I like the hair antenna you sprited on that, Vivi. :p I didn't know how to get it to look right, also on another sprite I was told an antenna wasn't that important. (remember Wrath, Giarc?)

Also I recall ed being in the outfit I sprited, and was told to sprite that specific outfit. Thank you for your input, it is wholeheartedly welcomed.
 
I could Help out If you wanted, I have some spriting experience (thinks back to the Female Ninja HK and Sigh's)
PM me If you need anything.

~High Mage Vivi
 
Ah, now I see your image... Oh, and he wears two outfits. The one that you sprited one frame of is when he is younger. If you'd like, you can finish the sprite sheet if you'd like to lend a hand. It's always appreciated. :)

Atnas, he has two outfits which I didn't explain enough. Sorry! ':|
Oh, and about the antenna, I suppose it is important. My bad...

Thanks for the sprite reference Itansha. I'm sure it will help Atans a lot.

Thanks
 
Gah, can't see it now... I hate school computers. Just letting you know I won't be able to work on it tonight, getting home really late and need sleep. :x
 

OS

Sponsor

Hey, Giarc! The script is almost done (only a few more days).
I'm designing it so that you should only need to edit a little bit of the script. Matter Types are the elements from the database, and I have a few screen shots to show you (finally):

http://i64.photobucket.com/albums/h163/akahi_theflame/Alchemy2Screen1.jpg[/IMG]

http://i64.photobucket.com/albums/h163/ ... creen2.jpg[/IMG]

May not look like much, and I haven't finished the next step in the menus, but I hope they make you people happy!

Peace Out!
~Broken Alchemist

EDIT: I made a discovery while writing the code, and I think it might be a little while longer before it's done. Unless you want about six or seven seperate pages of code in the Editor, that is. I'll get started right away!
 
Gah, can't see it now... I hate school computers. Just letting you know I won't be able to work on it tonight, getting home really late and need sleep. :x
That's cool.

EDIT: I made a discovery while writing the code, and I think it might be a little while longer before it's done. Unless you want about six or seven seperate pages of code in the Editor, that is. I'll get started right away!

I don't really understand scripting, so whatever you choose to do is fine. :)
 

OS

Sponsor

Here is what I have so far. You can test this in a new project to see what it is like so far. Please note that there are a few bugs (listed below spoilers).

Here is the key to it all:
Place above Main:
Code:
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
Place above Main:
Code:
class Scene_Alchemy
  ITM = Game_Alchemy::ITM #=>0
  WPN = Game_Alchemy::WPN #=>1
  ARM = Game_Alchemy::ARM #=>2
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    $spriteset = Spriteset_Map.new
    # Make command window
    s1 = "Transmute"
    s2 = "Exit"
    # Make Choice Window
    c1 = "Create Item"
    c2 = "Create Weapon"
    c3 = "Create Armor"
    c4 = "Fusion Alchemy"
    c5 = "Back"
    @command_window = Window_Command.new(160, [s1, s2])
    @command_window.index = @menu_index
    @choice_window = Window_Command.new(200, [c1, c2, c3, c4, c5])
    @choice_window.active = false
    @choice_window.visible = false
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    $spriteset.dispose
    @command_window.dispose
    @choice_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    $spriteset.update
    @command_window.update
    @choice_window.update
    # If command window is active: call update_command
    if @command_window.active
      @choice_window.visible = false
      @command_window.visible = true
      update_command
      return
    end
    # If choice window is active: call update_choice
    if @choice_window.active
      @command_window.visible = false
      @choice_window.visible = true
      update_choice
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when command window is active)
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 0  # Transmute
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @choice_window.active = true
        @choice_window.index = 0
      when 1  # Exit
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Map.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when choice window is active)
  #--------------------------------------------------------------------------
  def update_choice
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to Scene_Transmute.command_window.active = true
      @choice_window.active = false
      @command_window.active = true
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @choice_window.index
      when 0  # Create Item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Transmute.new(ITM)
      when 1  # Create Weapon
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Transmute.new(WPN)
      when 2 #Create Armour
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Transmute.new(ARM)
      when 3 # Fusion Alchemy
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_FuseAlchemy.new
      when 4 # Back
        @choice_window.active = false
        @command_window.active = true
      end
      return
    end
  end
end

class Scene_Transmute
  ITM = Game_Alchemy::ITM
  WPN = Game_Alchemy::WPN
  ARM = Game_Alchemy::ARM
  def initialize(type)
    @type = type
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make help window, item window
    @help_window = Window_Help.new
    @item_window = Window_ItemEdit.new
    # Associate help window
    @item_window.help_window = @help_window
    if @type == 0 #Item
      @next_window = Window_Transmute.new(0)
    elsif @type == 1 #Weapon
      @next_window = Window_Transmute.new(1)
    elsif @type == 2 #Armour
      @next_window = Window_Transmute.new(2)
    end
    @next_window.help_window = @help_window
    @next_window.active = false
    @next_window.visible = false
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @help_window.dispose
    @item_window.dispose
    @next_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @help_window.update
    @item_window.update
    @next_window.update
    # If item window is active: call update_item
    if @item_window.active
      @next_window.visible = false
      @item_window.visible = true
      update_item
      return
    end
    # If target window is active: call update_target
    if @next_window.active
      @item_window.visible = false
      @next_window.visible = true
      update_next
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_item
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Alchemy.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @item = @item_window.item
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Switch to @next_window
      @item_window.active = false
      @next_window.active = true
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when next window is active)
  #--------------------------------------------------------------------------
  def update_next
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @next_window.active = false
      @item_window.active = true
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @next_i = @next_window.item
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      #Take away the first item, and test for Transmutability.
      case @next_i
      when RPG::Item
        type1 = ITM
      when RPG::Weapon
        type1 = WPN
      when RPG::Armor
        type1 = ARM
      end
      a = $game_alchemy.transmute?(type1, @item.id, @type, @next_i.id)
      if a == true
        $game_party.lose_item(@item.id, 1)
        $game_party.gain_item(@next_i.id, 1)
      else
        $game_party.lose_item(@item.id, 1)
      end
      $scene = Scene_Alchemy.new
      return
    end
  end
end

class Scene_FuseAlchemy
  ITM = Game_Alchemy::ITM
  WPN = Game_Alchemy::WPN
  ARM = Game_Alchemy::ARM
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make help window, item window
    @help_window = Window_Help.new
    @item_window = Window_ItemEdit.new
    # Associate help window
    @item_window.help_window = @help_window
    @item1 = Fuse.new(nil, nil)
    @item2 = Fuse.new(nil, nil)
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @help_window.dispose
    @item_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @help_window.update
    @item_window.update
    # If item window is active: call update_item
    if @item_window.active
      update_item
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when item window is active)
  #--------------------------------------------------------------------------
  def update_item
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Alchemy.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      if @item1.data == nil
        @item1.data = @item_window.item
        case @item1.data
        when RPG::Item
          @item1.type = ITM
        when RPG::Weapon
          @item1.type = WPN
        when RPG::Armor
          @item1.type = ARM
        end
      elsif @item1.data != nil && @item2.data == nil
        @item2.data = @item_window.item
        case @item2.data
        when RPG::Item
          @item2.type = ITM
        when RPG::Weapon
          @item2.type = WPN
        when RPG::Armor
          @item2.type = ARM
        end
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      #Alchemical Fusion Here:
      if @item1.data != nil and @item2.data != nil
        $game_alchemy.fuse(@item1.type, @item1.data.id, @item2.type, @item2.data.id)
        $scene = Scene_Map.new
      end
      return
    end
  end
end
Place above Main:
Code:
class Window_Transmute < Window_Selectable
  ITM = Game_Alchemy::ITM
  WPN = Game_Alchemy::WPN
  ARM = Game_Alchemy::ARM
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(type)
    super(0, 64, 640, 416)
    @type = type
    @column_max = 2
    refresh
    self.index = 0
    # If in battle, move window to center of screen
    # and make it semi-transparent
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if @type = ITM #Item
      # Add item
      for i in 1...$data_items.size
        #if $game_party.item_number(i) > 0
          @data.push($data_items[i])
        #end
      end
    elsif @type = WPN #Weapon
      # Add Weapon
      for i in 1...$data_weapons.size
        #if $game_party.weapon_number(i) > 0
          @data.push($data_weapons[i])
        #end
      end
    elsif @type = ARM #Armour
      # Add Armour
      for i in 1...$data_armors.size
        #if $game_party.armor_number(i) > 0
          @data.push($data_armors[i])
        #end
      end
    end
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    self.contents.font.color = normal_color
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end

#==============================================================================
# ** Window_Item
#------------------------------------------------------------------------------
#  This window displays items in possession on the item and battle screens.
#==============================================================================

class Window_ItemEdit < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 416)
    @column_max = 2
    refresh
    self.index = 0
    # If in battle, move window to center of screen
    # and make it semi-transparent
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    # Add item
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    for i in 1...$data_weapons.size
      if $game_party.weapon_number(i) > 0
        @data.push($data_weapons[i])
      end
    end
    for i in 1...$data_armors.size
      if $game_party.armor_number(i) > 0
        @data.push($data_armors[i])
      end
    end
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    self.contents.font.color = normal_color
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end
Place above Game_Temp:
Code:
#CREDIT: SephirothSpawn
class RPG::Item
  def element_names
    names = []
    for id in @element_set
      names << $data_system.elements[id]
    end
    return names
  end
end

class RPG::Weapon
  def element_names
    names = []
    for id in @element_set
      names << $data_system.elements[id]
    end
    return names
  end
end

class RPG::Armor
  def element_names
    names = []
    for id in @guard_element_set
      names << $data_system.elements[id]
    end
    return names
  end
end
Place above main, or copy paste it into the bottom of Game_Alchemy:
Code:
class Fuse #This is just a small class used in fusing. Do not alter it!
  attr_accessor :data
  attr_accessor :type
  def initialize(data, type)
    @data = data
    @type = type
  end
  
  def data=(variable)
    @data = variable
  end
  
  def type=(variable)
    @type = variable
  end
end
And now for the (known) bugs;
  1. Items don't Transmute correctly, yet.
  2. Fusing Items doesn't work at all, yet.
  3. The menus that should show Weapons and Armour show only Items.

If you test this, please tell me any other bugs there may be so i know what to fix. I would post some more screens, but they look like the in game Item Windows. Also note that I am adding two more windows, Alchemy Success, and Alchemy Fail, whcih show the outcome of an attampt to Transmute.

Peace Out!

~Broken
 

OS

Sponsor

Sorry 'bout that. In Window_Alchemy, find these lines:
Code:
  ITM = Game_Alchemy::ITM
  WPN = Game_Alchemy::WPN
  ARM = Game_Alchemy::ARM

and replace each Game_Alchemy with $game_alchemy. If that doesn't work, lemme know, and I'll do some quick editing. Peace Out!

~Broken
 

OS

Sponsor

Hey, Giarc. I was looking through the Submitted Scripts, and I found one that may interest you; Prexus's PrexCraft Script. After looking at it for a few minutes, I discovered it is pretty much what I was writing, but it actually works! So I think you should use his script instead of mine. If need be I'll make edits, but I don't think you'll need them...

Peace Out!

~Broken
 
Looks like a cool project am a huge fan of FMA (sure a lot of people are), its been set up great and I'll be keeping an eye on this.
 
Alright thanks. :)

@Broken: Yes, I've checked out his script. Would you like me to use that, or... I'd like to leave it up to you only because you were scripting one similar.
 

OS

Sponsor

@Giarc: just us ethat one. Mine has too many bugs, anyways. It was good practice, and to learn that I was writing something similarly to a great scriptor makes me feel really good. So just use PrexCraft.

Peace Out!
~Broken
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top