RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
[RMVXA] Monster Breeding / Actor Fusion Script Conversion

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 87
Hello there! I'm here today looking for a script similar to SoWs Monster Breed script for VX located here: http://www.rpgmakervx.net/index.php?showtopic=51968

What this script does is that a scene opens up displaying the monsters you have in your party. You then choose 2 of these monsters (actors) and then based on their class ID's it determines what monster they breed into (outcome is also based on class id). Similar to the SoWs breeding script, I want to have the outcomes for breeding setup in arrays such as [outcome, class1, class2] etc etc. Once the monsters are finished breeding, the parents aka the original two that you had choosen leave forever.

Scripts I am currently also using: Tsukihime Custom DB (Using this to create monsters(actors) through script call ingame for purposes such as monster catching)

I attempted to port it, but all Ive gotten to is for the scene to load, and after it loads it freezes. Below is my attempt to someone edit it. Any help would be gladly appreciated.
Spoiler for:
Code: [Select]
#============================================================================
# Monster Breeding System 1.1
# by nhojyer07
# 1.1 Fixed a major bug
#============================================================================
$imported = {} if $imported == nil
$imported["SowSMonsBreedSys"] = true
#============================================================================
module SOWS_MBS
  TYPE_ARRAY = [        # [ child, type 1, type 2]
    [3, 1, 2],
    [12, 10, 11]
  ]
  SPECIFIC_ARRAY = [    # [ child, monster 1, monster 2]
    [6, 4, 5],
    [9, 7, 8]
  ]
end
#============================================================================
#============================================================================
class Window_BreedHelp < Window_Base
 
  def initialize
    super(0, 0, Graphics.width, line_height + 32)
    refresh
  end
  def refresh(text = "")
    self.contents.clear
    self.contents.draw_text(0, 0, Graphics.width - 32, line_height, text)
  end
end
#============================================================================
#============================================================================
class Window_BreedStatus < Window_Base
  def initialize
    super(Graphics.width / 2, 56, Graphics.width / 2, Graphics.height - (2 * line_height + 32) - 56)
    refresh
  end
 
  def refresh(main = "None", sub = "None", result = "None")
    self.contents.clear
    self.contents.draw_text(0, 0, Graphics.width / 2 - 32, line_height, "Main:")
    self.contents.draw_text(0, line_height, Graphics.width / 2 - 32, line_height, main, 2)
    self.contents.draw_text(0, line_height * 3, Graphics.width / 2 - 32, line_height, "Sub:")
    self.contents.draw_text(0, line_height * 4, Graphics.width / 2 - 32, line_height, sub, 2)
    self.contents.draw_text(0, line_height * 7, Graphics.width / 2 - 32, line_height, "Result:")
    self.contents.draw_text(0, line_height * 8, Graphics.width / 2 - 32, line_height, result, 2)
  end
end
#============================================================================
#============================================================================
class Window_ActorList < Window_Selectable 
  attr_accessor :i
 
  def initialize
    super(0, 56, Graphics.width / 2, Graphics.height / 2)
    @i = 0
    refresh
    self.index = 0
  end
 
  def refresh(main = -1, sub = -1)
    self.contents.clear
    @item_max = $game_party.members.size
    for actor in $game_party.members
      y = actor.index * line_height
      if sub == -1
        self.contents.font.color.alpha = main == actor.index ? 128 : 255
      elsif sub > -1
        self.contents.font.color.alpha = main == actor.index ? 128 : sub == actor.index ? 128 : 255
      end
      self.contents.draw_text(x, y, 108, line_height, actor.name)
    end
  end
end
#============================================================================
#============================================================================
class Window_ActorStat < Window_Base
  def initialize
    super(0, 56 + Graphics.height / 2, Graphics.width / 2, Graphics.height / 2 - 56)
    refresh($game_party.members[0])
  end
 
  def refresh(actor)
    self.contents.clear
    draw_actor_face(actor, 2, 2, 92)
    x = 104
    y = line_height / 2
    draw_actor_name(actor, x, y)
    draw_actor_class(actor, x, y + line_height)
  end
end
#============================================================================
#============================================================================
class Scene_Breed < Scene_Base
  include SOWS_MBS
 
  def start
    super
    @background_sprite = Sprite.new
    @background_sprite.bitmap = SceneManager.background_bitmap
    @background_sprite.color.set(16, 16, 16, 128)
   
    @help = Window_BreedHelp.new
    @help.refresh("Choose the first monster.")
    @actorlist = Window_ActorList.new
    @actorstat = Window_ActorStat.new
    @breedstat = Window_BreedStatus.new
    @breedcomm = Window_Command.new(Graphics.width / 2, Graphics.height)#, ["Combine","Cancel"])
    @breedcomm.x = Graphics.width / 2
    @breedcomm.y = Graphics.height - @breedcomm.height
    @breedcomm.active = false
    @index = @actorlist.index
    @main = -1
    @sub = -1
    @counter = 0
  end
 
  def update
    super
    @background_sprite.update
    @help.update
    @actorlist.update
    @actorstat.update
    @breedstat.update
    @breedcomm.update
    @win_msg.update if !@win_msg.nil?
    if @actorlist.active
      update_actor_selection
    elsif @breedcomm.active
      update_command_selection
    end
    if !@win_msg.nil?
      if @counter == 180 # 3 secs
        @win_msg.visible = false
        @win_msg = nil
        @actorlist.active = true
        @help.refresh("Choose the first monster.")
        @counter = 0
      else
        @counter += 1
      end
    end
  end
 
  def terminate
    super
    @background_sprite.dispose
    @help.dispose
    @actorlist.dispose
    @actorstat.dispose
    @breedstat.dispose
    @breedcomm.dispose
    @win_msg.dispose if !@win_msg.nil?
  end
 
  def return_scene
    $scene = Scene_Map.new
  end
 
  def update_actor_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      if @main == -1 and @sub == -1
        return_scene
      elsif @main > -1 and @sub > -1
        @sub = -1
        @breedstat.refresh($game_party.members[@main].name)
        @actorlist.refresh(@main)
        @help.refresh("Choose the second monster.")
      elsif @main > -1 and @sub == -1
        @main = -1
        @breedstat.refresh
        @actorlist.refresh
        @help.refresh("Choose the first monster.")
      end
    elsif Input.trigger?(Input::C)
      if @main == -1 and @sub == -1
        Sound.play_decision
        @main = @actorlist.index
        @breedstat.refresh($game_party.members[@main].name)
        @actorlist.refresh(@main)
        @help.refresh("Choose the second monster.")
      elsif @main > -1 and @sub == -1
        if @main == @actorlist.index
          Sound.play_buzzer
        else
          Sound.play_decision
          @sub = @actorlist.index
          @actorlist.refresh(@main, @sub)
          @breedstat.refresh($game_party.members[@main].name, $game_party.members[@sub].name)
          spec = false
          for i in 0...SPECIFIC_ARRAY.length - 1
            if $game_party.members[@main].id == SPECIFIC_ARRAY[i][1] and $game_party.members[@sub].id == SPECIFIC_ARRAY[i][2]
              @breedstat.refresh($game_party.members[@main].name, $game_party.members[@sub].name, $data_actors[SPECIFIC_ARRAY[i][0]].name)
              spec = true
              break
            end
          end
          if !spec
            for i in 0...TYPE_ARRAY.length - 1
              if $game_party.members[@main].class.id == TYPE_ARRAY[i][1] and $game_party.members[@sub].class.id == TYPE_ARRAY[i][2]
                @breedstat.refresh($game_party.members[@main].name, $game_party.members[@sub].name, $data_actors[TYPE_ARRAY[i][0]].name)
                p "meron"
                break
              end
            end
          end
          @help.refresh("Proceed?")
          @actorlist.active = false
          @breedcomm.active = true
        end
      end
    end
    if @index != @actorlist.index
      @actorstat.refresh($game_party.members[@actorlist.index])
      @index = @actorlist.index
    end
  end
 
  def update_command_selection
    if Input.trigger?(Input::B)
      comm_cancel
    elsif Input.trigger?(Input::C)
      if @breedcomm.index == 0
        @breedcomm.active = false
        check_breedlist
      else
        comm_cancel
      end
    end
  end
 
  def comm_cancel
    Sound.play_cancel
    @breedcomm.index = 0
    @breedcomm.active = false
    @actorlist.active = true
    @sub = -1
    @actorlist.refresh(@main)
    @breedstat.refresh($game_party.members[@main].name)
    @help.refresh("Choose the second monster.")
  end
 
  def check_breedlist
    child_found = false
    for i in 0...SPECIFIC_ARRAY.length - 1
      if $game_party.members[@main].id == SPECIFIC_ARRAY[i][1] and $game_party.members[@sub].id == SPECIFIC_ARRAY[i][2]
        @result = SPECIFIC_ARRAY[i][0]
        string = "Breeding completed!"
        @win_msg = Window_Base.new((Graphics.width - Graphics.width / 3 * 2) / 2, (Graphics.height - 24) / 2, Graphics.width / 3 * 2, 56)
        @win_msg.contents.draw_text(0, 0, @win_msg.contents.width, 24, string, 1)
       
        $game_party.remove_actor(SPECIFIC_ARRAY[i][1])
        $game_party.remove_actor(SPECIFIC_ARRAY[i][2])
        $game_party.remove_actor(@result)
        @actorlist.refresh
        @actorlist.index = 0
        @actorlist.active = false
        @actorstat.refresh($game_party.members[0])
        @breedstat.refresh
        @main = @sub = -1
        child_found = true
        break
      end
    end
    if !child_found
      for i in 0...TYPE_ARRAY.length - 1
        if $game_party.members[@main].class == $data_classes[TYPE_ARRAY[i][1]] and $game_party.members[@sub].class == $data_classes[TYPE_ARRAY[i][2]]
          @result = TYPE_ARRAY[i][0]
          string = "Breeding completed!"
          @win_msg = Window_Base.new((Graphics.width - Graphics.width / 3 * 2) / 2, (Graphics.height - 24) / 2, Graphics.width / 3 * 2, 56)
          @win_msg.contents.draw_text(0, 0, @win_msg.contents.width, 24, string, 1)
         
          $game_party.remove_actor(TYPE_ARRAY[i][1])
          $game_party.remove_actor(TYPE_ARRAY[i][2])
          $game_party.add_actor(@result)
          @actorlist.refresh
          @actorlist.index = 0
          @actorlist.active = false
          @actorstat.refresh($game_party.members[0])
          @breedstat.refresh
          @main = @sub = -1
          child_found = true
          break
        end
      end
    end
    if !child_found
        string = "Breeding failed!"
        @win_msg = Window_Base.new((Graphics.width - Graphics.width / 3 * 2) / 2, (Graphics.height - 24) / 2, Graphics.width / 3 * 2, 56)
        @win_msg.contents.draw_text(0, 0, @win_msg.contents.width, 24, string, 1)
        @actorlist.refresh
        @actorlist.index = 0
        @actorlist.active = false
        @actorstat.refresh($game_party.members[0])
        @breedstat.refresh
        @main = @sub = -1
 
    end
  end
end

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Most Mature Member2010 Favourite Staff Member
That looks like an interesting script. Unfortunately, I don't think I will have time to port/write such a script, but I wish you luck.

**
Rep: +0/-0Level 87
thanks, been trying to find some version of this script out there for a while now, but no luck.