[VX] Breath of Fire 3 - Dragon Gene System

Started by TywinLannister, March 28, 2008, 08:41:50 am

Previous topic - Next topic

TywinLannister

March 28, 2008, 08:41:50 am Last Edit: February 21, 2009, 05:46:25 am by shdwlink1993
Breath of Fire 3 - Dragon Gene System
Authors: TywinLannister
Version: 1.2
Type: Battle Customization
Key Term: Battle Add-on



Introduction

This script emulates the gene splicing system in Breath of Fire 3. That is, you can choose to transform into a dragon in battle. You can splice up to three genes together in order to make dragons. Only one sprite is included for dragons as I am not a spriter  :lol:


Features


  • Version 1    - initial release
  • Version 1.1 - All genes now have combinations. If a specific combination doesn't exist, the dragon gains abilities based on the genes selected.
  •                 - Gene descriptions are now displayed when selected.
  •                 - Fusion gene has been added (gain abilities based on what characters are in your party)
  • Version 1.2 - Fixed a bug where if you exit the dragon gene selection scene you lose the MP



Screenshots

Spoiler: ShowHide

Spoiler: ShowHide



Demo

http://www.sendspace.com/file/mczeau



Instructions

See the Tywin_Dragon_Genes script header


Compatibility

None that I know of as yet


Credits and Thanks


  • ElementalCrisis for a simple yet effective side view battle system!



Author's Notes

Keep an eye for later versions where icons will be used instead of text for splicing, animations when transforming and more user friendly and customizable code.


nathmatt

Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


Dils

Can you send me the Script please, since your demo doesn't work. Thanx.

M3T41 AG3

does any1 have a script or demo for this?

Jragyn

This forum is pretty inactive in regards to RMVX...
I doubt the user that made this thread even visits here anymore, or has in like, years.

:(


--J
A bright light can either illuminate or blind, but how will you know which until you open your eyes?


willee02

This script is awesome !! but can someone please tell me on how to make this work on tanketai side script... it always give me an error at ATB 1.2c ...
  Thanks in advance

#--------------------------------------------------------------------------
  # ● 合体攻撃判定
  #--------------------------------------------------------------------------
  def union_skill?(member)
    # スキルに合体攻撃設定があるかチェック
    for union_action in member.action.skill.union_action
      union_skills = union_action if union_action.size != 0 && union_action.include?(member.action.skill_id)
    end
    return if union_skills == nil
    @partners = []
    @union_targets = union_target_decision(member, member.action.skill)
    @union_target_index = member.action.target_index
    # 合体攻撃メンバーが使用可能かチェック
    for skill_id in union_skills
      for actor in $game_party.members
        if actor.skill_can_use?($data_skills[skill_id]) && actor.skill_id_learn?(skill_id)
          @partners.push(actor)
          actor.union_skill_id = skill_id
        end
      end
    end
    # 合体攻撃使用不可
    if @partners.size != union_skills.size
      for actor in @partners do actor.union_skill_id = 0 end
      @partners = nil
      member.action.clear if !member.action.guard?
      return
    end
    # 合体攻撃使用可
    for actor in @partners
      # パートナーアクション決定
      actor.action.kind = 1
      actor.action.skill_id = actor.union_skill_id
      actor.action.target_index = member.action.target_index
      # コマンド強制キャンセル
      if @command_members.include?(actor)
        force_action_command_cansel(actor)
        start_auto_action(member)
      end
    end
    $in_union_action = true
    @union_size = 0
  end 
  #--------------------------------------------------------------------------
  # ● 合体攻撃可能か
  #--------------------------------------------------------------------------
  def union_possibility?
    return if @partners == nil
    for member in @partners
      union_cansel = true unless member.inputable?
    end
    return if !union_cansel
    end_union_skill
    @active_battler.action.clear if !@active_battler.action.guard?
  end
  #--------------------------------------------------------------------------
  # ● 合体攻撃ターゲット決定
  #--------------------------------------------------------------------------
  def union_target_decision(member, obj)
    targets = member.action.make_targets
    # デフォルトの複数回攻撃が設定されていれば単体ターゲットに変換
    targets = [targets[0]] if obj.for_two? or obj.for_three? or obj.dual?
    # ランダムターゲットの場合、一体を選択しランダム範囲を保持
    if obj.extension.include?("RANDOMTARGET")
      randum_targets = targets.dup
      targets = [randum_targets[rand(randum_targets.size)]]
    end
    # ターゲット情報をバトラースプライトに送る
    @spriteset.set_target(member.actor?, member.index, targets)
    return targets
  end   
  #--------------------------------------------------------------------------
  # ● 合体攻撃処理
  #--------------------------------------------------------------------------
  def process_union_skill
    @union_size += 1
    if @union_size != @partners.size
      return @active_battler.union_battler = true
    end
    # 合体攻撃スタート
    @action_battlers.delete(@active_battler)
    @active_battler.active = false
    @active_battler = @partners.shift
    @active_battler.act_active = true
    @active_battler.active = true
    @active_battler.union_battler = false
    @active_battler.action.kind = 1
    @active_battler.action.skill_id = @active_battler.union_skill_id
    @active_battler.action.target_index = @union_target_index
    for member in @partners
      member.action.kind = 1
      member.action.skill_id = member.union_skill_id
      member.action.target_index = @union_target_index
      member.mp -= member.calc_mp_cost($data_skills[member.action.skill_id]) if member != @active_battler # 3.4a
      member.force_target = ["N01target_change", @union_targets]
      @spriteset.update_target(true, member.index)
      # アクション実行
      @spriteset.set_action(true, member.index, member.action.skill.base_action)
    end
    @status_window.refresh # 3.4a
  end 
  #--------------------------------------------------------------------------
  # ● 合体攻撃終了処理
  #--------------------------------------------------------------------------
  def end_union_skill
    @active_battler.union_skill_id = 0
    @active_battler.union_battler = false
    for member in @partners
      member.union_skill_id = 0
      member.union_battler = false
      member.action.clear
      @action_battlers.delete(member)
      turn_end(member)
    end
    @union_size = 0
    @partners = nil
    $in_union_action = false
  end