iPhone App Directory
RPG Maker VX
 
Gallery Members Search Calendar Help


Welcome Guest ( Log In | Register )

Collapse

>Announcement

Keep an eye out for the upcoming 3rd Quarter Contest!
2 Pages V   1 2 >  
Reply to this topicStart new topic
> Combo Timing v1.3VX - Tankentai, Legend of Dragoon-styled attacking system
Rating 5 V
wltr3565
post Mar 26 2010, 04:19 AM
Post #1


The best BAKA ever
Group Icon


Type: Undisclosed
Alignment: True Neutral




Combo Timing v1.3VX

by rusted_71 export by wltr3565


XP version: http://rpgmakerid.forumotion.net/rmxp-scri...vator-t1332.htm
It's in Indonesian. You might want to get a translator to read it.

Introduction
A friend of mine, Rusted_71, has made something that's similar to Legend of Dragoon. Unfortunately, it was for XP, and for Tankentai as well. But many of VX users want to use this. Since it's possible to export it, I exported this for VX use.

Note: I never played Legend of Dragoon in my life, so don't ask me for the detailed mechanism.

Features
- Plug and Play (maybe? You still have to set you skill animations though)
- A really cool function to time your attack! Try yourself. I don't get it. Just press the C button while the shrinked square is at the same size as the smaller one.
- Interchangeable combo attacks.

Screenshots


Trust me, it's better in VX biggrin.gif


Added an extra for the VX version.

How to Use
Adjust things in the script below. For the functions:
- Combo Learning:
To make an actor to learn a new combo, use this in the script command:
$game_system.learn_combo(actor_id, combo_id)
actor_id represents the learning actor's id, and combo_id represents the learned
combo's id. The equipped combo won't be used in an instant. It must be equipped
first.

- Combo Adjusting Screen.
To make the players adjust their actors' combo attacks, use this in the script
command:
$scene = Scene_Combo.new(actor_index)
actor index represents the actor's party index. Like this:
$scene = Scene_Combo.new(1)
Defaultly, will show Ulrika's combo menu.

If you want the skills do things like normal attacks in this demo, just set the
skill's sequence from the sequence below.

Demo
http://www.mediafire.com/?n2j2mmmvvng

Script
Spoiler:

CODE
=begin
================================================================================
                          COMBO ACTIVATOR v1.3VX
                      by Rusted_71 export by wltr3565
================================================================================
A friend of mine, Rusted_71, has made something that's similar to Legend of
Dragoon. Unfortunately, it was for XP, and for Tankentai as well. But many of
VX users want to use this. Since it's possible to export it, I exported this for
VX use.

Note: I never played Legend of Dragoon in my life, so don't ask me for the
      detailed mechanism.
================================================================================
Features:
- Plug and Play (maybe? You still have to set you skill animations though)
- A really cool function to time your attack! Try yourself. I don't get it.
  Just press the C button while the shrinked square is at the same size as the
  smaller one.
- Interchangeable combo attacks.
================================================================================
How to use:
Adjust things in the script below. For the functions:
- Combo Learning:
To make an actor to learn a new combo, use this in the script command:
   $game_system.learn_combo(actor_id, combo_id)
actor_id represents the learning actor's id, and combo_id represents the learned
combo's id. The equipped combo won't be used in an instant. It must be equipped
first.

- Combo Adjusting Screen.
To make the players adjust their actors' combo attacks, use this in the script
command:
   $scene = Scene_Combo.new(actor_index)
actor index represents the actor's party index. Like this:
   $scene = Scene_Combo.new(1)
Defaultly, will show Ulrika's combo menu.

If you want the skills do things like normal attacks in this demo, just set the
skill's sequence from the sequence below.
================================================================================
Install:
Put this below Tankentai and above main. Then adjust things below.
================================================================================
Terms of Use:
Credit Rusted_71 especially! He made this first. Crediting me, wltr3565 will be
very nice. Oh, don't ask me about commercial uses. Ask Rusted_71.
================================================================================
Thanks:
- Rusted_71: He made this first in XP.
- Trickster: Rect draw method for this script.
- Sony: Legend of Dragoon... Is it?
================================================================================
=end
#===============================================================================
#   COMMENCING COMPATIBILITY FLAG
#===============================================================================
$imported = {} if $imported == nil
$imported["Rusted_71's_Combo_Activator"] = true
#===============================================================================
#   END COMPATIBILITY FLAG
#===============================================================================

module N01
  NEW_ACTION = {
#==============================================================================
# These are the sequences for the animation in Tankentai style. Write it in
# Tankentai.
  "GANBANTAIN" => ["Afterimage ON","PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                       "WAIT(FIXED)","16","TIME_N","OBJ_ANIM_WEAPON","WPN_SWING_UNDER",
                       "WPN_SWING_OVER","4","TIME_F","JUMP_FIELD_ATTACK","WPN_SWING_VL",
                       "OBJ_ANIM_WEAPON","WAIT(FIXED)","16","TIME_F","OBJ_ANIM_WEAPON",
                       "Invert","WPN_SWING_V","WPN_SWING_VL","12","TIME_F","Invert",
                       "JUMP_FIELD_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                       "JUMP_AWAY","JUMP_AWAY","WAIT(FIXED)","8", "TIME_S",
                       "OBJ_ANIM_WEAPON","DASH_ATTACK","WPN_SWING_VL","Can Collapse",
                       "Afterimage OFF","16","FLEE_RESET"],
  "DUAL_SLASH" => ["Afterimage ON","PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                       "WAIT(FIXED)","16","TIME_N","WPN_SWING_VL","OBJ_ANIM_WEAPON","4",
                       "Can Collapse","Afterimage OFF","16","FLEE_RESET"],
  "TRIPLE_SLASH" => ["Afterimage ON","PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                       "WAIT(FIXED)","16","TIME_N","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                       "WAIT(FIXED)","16","TIME_N","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                       "Can Collapse","Afterimage OFF","16","FLEE_RESET"]
  }
#==============================================================================
  ACTION.merge!(NEW_ACTION) # Don't touch
  NEW_ANIME = { # Once again, do not touch.
#==============================================================================
# This will make the ANIME for the attack timing. The format for making one is
# like this:
#
# "anime_name" => ["Timing",time_set]
#
# "nama_anime" >> To be called in the sequence. This will be the moment where
#                 You must input your timing.
# "Timing" >> Always add this for timing ANIME's
# time_set >> The delay in frames. 60 frames are the same as 1 second,
#             defaultly.
#==============================================================================
  "TIME_VF" => ["Timing", 30],
  "TIME_F" => ["Timing", 40],
  "TIME_N" => ["Timing", 60],
  "TIME_S" => ["Timing", 90]
  }
#==============================================================================
  ANIME.merge!(NEW_ANIME) # Don't touch.
  COMBOS = ["", # Don't touch, once again.
#==============================================================================
# This will make the combos (normal attack sequences) so with this, actors can
# have their individual attack animations, and changeable. The format is like
# this:
# ["combo_name",hit_modifier,sequence_name, help],
#
# "nama_combo" >> The combo name. This one will be shown in the attack command.
# hit_modifier >> The attack modifier.
#                 Make it in array and make it as the same amount as the number
#                 of hits.
#                 [2,2,2,2,2,2], << 6 hit combo and hit number 1, 2, 3, 4, 5,
#                                   and 6 will multiply the normal damage by 2.
# sequence_name >> The attack animation sequence like you adjust in skills.
# help         >> Description for the combo.
#
#==============================================================================
             # Name,  Modifier,       Sequence,           Help.
            ["Slash",      [1],      "NORMAL_ATTACK", "Slash like you normally do."], #<<< Combo ID 1
            ["Dual Slash",[0.5,0.6],"DUAL_SLASH", "Basic stuff, but twice."],#<<<< Combo ID 2 and so on.
            ["Triple Slash",[0.4,0.4,0.5],"TRIPLE_SLASH", "Now you can do threesome!"],
            ["Ganbantain",[0.3,0.2,0.2,0.2,0.2,0.5],"GANBANTAIN", "\"Gua Bantain\"? Whatever."],
            ["Link Combo", [1, 1, 1], "SKILL_90_SEQUENCE", "A link combo sample."]
#==============================================================================
  ]
#==============================================================================
# This will set the first combo for each actors to learn and use. The format
# is like this:
#
# [actor_id,combo_id],
# actor_id represents the corresponding actor's id, and combo_id represents the
# learned combo's id.
# Example:
#    DEFAULT_COMBO = [[1, 2], [2, 4]]
# Actor id number 1 will learn and use Combo id 2, and Actor id number 2 will
# learn and use Combo id 4. The others won't learn any... Better to fill it for
# each actors.
#==============================================================================
  DEFAULT_COMBO = [[1,2],[2,5],[3,2],[4,4],[5,1],[6,1],[7,1],[8,1]]
end

module WLTR
  module COMBO_SETUP
#===============================================================================
# The term for the combo. Write it in a string.
#===============================================================================
    COMBO_TERM = "Combo"
    
#===============================================================================
# This adjust the target square's horizontal position. The bigger the number,
# the more it goes to the right.
#===============================================================================
    TARGET_X = -10
    
#===============================================================================
# This adjust the target square's vertical position. The bigger the number, the
# more it goes to the bottom.
#===============================================================================
    TARGET_Y = -50
    
#===============================================================================
# The trigger for activating the combo. Write Input::(the desired button). It's
# based on gamepad buttons. If you want the activation is by pressing D, write
# Input::Z there.
#===============================================================================
    TRIGGER = Input::X
    
#===============================================================================
# The sequence if the combo fails. Please remember to put "End" at the desired
# sequence. The default is "FAILURE_ACTION". This applies for a confusion status
# aswell, for evading bugs.
#===============================================================================
    FAIL_MOVEMENT = "NORMAL_ATTACK"
  end
end
"=============================================================================="
"   BELOW IS TOO DANGEROUS TO READ WITHOUT PROPER SCRIPTING SKILLS. THEREFOR,  "
"                            EDIT AT YOUR OWN RISK!                            "
"=============================================================================="

module RPG
  class Combo
    attr_accessor :id
    attr_accessor :name
    attr_accessor :hit_array
    attr_accessor :hit_sequence
    attr_accessor :help
    def initialize
      @id = 0
      @name = ""
      @hit_array = []
      @hit_sequence = ""
      @help = ""
    end
  end
end

class Game_System
  include N01
  def learn_combo(actor_id,combo_id)
    $game_actors[actor_id].learn_combo($data_combos[combo_id])
  end
  
  def combo_update
    for combo in DEFAULT_COMBO
      $game_actors[combo[0]].learn_combo($data_combos[combo[1]])
    end
    for i in 1...$data_actors.size
      $game_actors[i].current_combo = $game_actors[i].combos[0]
    end
  end
end

class Scene_Title < Scene_Base
  include N01
  alias main_yuk start
  def start
    $data_combos = [nil]
    for i in 1...COMBOS.size
      $data_combos.push(RPG::Combo.new)
      $data_combos[i].id = i
      $data_combos[i].name = COMBOS[i][0]
      $data_combos[i].hit_array = COMBOS[i][1]
      $data_combos[i].hit_sequence = COMBOS[i][2]
      $data_combos[i].help = COMBOS[i][3]
    end
    
    main_yuk
    
    $game_system.combo_update
  end
  
  alias command_new_game_cuy command_new_game
  def command_new_game
    command_new_game_cuy
    default_combo
  end
  
  def default_combo
    for combo in N01::DEFAULT_COMBO
      $game_system.learn_combo(combo[0],combo[1])
    end
    for i in 1...$data_actors.size
      $game_actors[i].current_combo = $game_actors[i].combos[0]
    end
  end
end


#draw box  method... credit to Trickster
class Bitmap
  def draw_box(outer, color, width = 1, height = 1)
    fill_rect(outer, color)
    inner = Rect.new(outer.x + width, outer.y + height, outer.width - width * 2,
    outer.height - height * 2)
    fill_rect(inner, Color.new(0, 0, 0, 0))
  end
end

class Window_Timing < Window_Base
  attr_accessor :time
  def initialize(time,x,y)
    super(0,0, 640, 480)
    @before_start = 60
    @time = time
    @begin_time = time
    @target_x = x + WLTR::COMBO_SETUP::TARGET_X
    @target_y = y + WLTR::COMBO_SETUP::TARGET_Y
    @size = 150
    @size2 = 30
    @jarak = 0.2*@begin_time.to_f
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport1.visible = true
    @viewport1.z = 7000
    @activate_sprite = Sprite.new(@viewport1)
    @activate_sprite.bitmap = Bitmap.new(@size,@size)
    rect = Rect.new(0,0,@size,@size)
    @activate_sprite.bitmap.draw_box(rect, Color.new(150,100,100), 3, 3)
    @activate_sprite.x = @target_x - (@size/2)
    @activate_sprite.y = @target_y - (@size/2)
    self.z = 5000
    self.opacity = 0
    self.contents.dispose if self.contents != nil
    self.contents = Bitmap.new(width - 32, height - 32)
    rect = Rect.new(@target_x-@size2, @target_y-@size2, @size2, @size2)
    self.contents.draw_box(rect, Color.new(250,200,200,150), 4, 4)
  end
  def on_hit
    i = (@time.to_f/@begin_time.to_f)
    return i >=  0.05 && i <= 0.25
  end
  def refresh
    i = (@time.to_f/@begin_time.to_f)
    @activate_sprite.zoom_x = i
    @activate_sprite.zoom_y = i
    @activate_sprite.x = @target_x - ((@size*i).to_i/2)
    @activate_sprite.y = @target_y - ((@size*i).to_i/2)
  end
  def result(success)
    self.contents.dispose if self.contents != nil
    self.contents = Bitmap.new(width - 32, height - 32)
    rect = Rect.new(@target_x-@size2, @target_y-@size2, @size2, @size2)
    if success
      self.contents.fill_rect(rect, Color.new(250,200,200,150))
    else
      self.contents.fill_rect(rect, Color.new(200,200,250,150))
    end
  end
  def dispose
    super
    @activate_sprite.dispose
    @activate_sprite = nil
    @time = 0
  end
  def update
    super
    refresh
    @time -= 1
  end
end

if defined?(N02)
class Sprite_Battler < Sprite_Base
  def make_battler
    make_battler_n01
    @battler.graphics_width = @width
    @battler.graphics_height = @height
    make_atb if $game_temp.in_battle
  end  
end
end

class Scene_Battle < Scene_Base
  def playing_action
    loop do
      if defined?(N02)
        break if @judge
      end
      update_basic
      action = @active_battler.play
      next if action == 0
      @active_battler.play = 0
      if action[0] == "Individual"
        individual
      elsif action == "Timing"
        start_timing
        while $timing
          update_timing_window
        end
      elsif action == "Can Collapse"
        unimmortaling
      elsif action == "Cancel Action"
        break action_end
      elsif action == "End"
        break action_end
      elsif action[0] == "OBJ_ANIM"
        @target_battlers = @active_battler.action.make_attack_targets
        @target_battlers[0].set_modifier(@active_battler)
        damage_action(action[1])
      end
    end  
  end
  
  def start_timing
    x = @target_battlers[0].position_x
    y = @target_battlers[0].position_y
    @timing_window = Window_Timing.new(@active_battler.time_delay,x,y)
    $timing = true
    @skill_window.visible = false if @skill_window != nil
    @item_window.visible = false if @item_window != nil
  end
  
  def update_timing_window(basic = false)
    if !basic
      Graphics.update
      Input.update
    end
    @timing_window.update
    update_timing
  end
  
  def update_timing
    if @timing_window.time <= 0
      @timing_window.result(false)
      $failure = true
      end_timing_process
    end
    if Input.trigger?(WLTR::COMBO_SETUP::TRIGGER) && @timing_window != nil
      if @timing_window.on_hit
        @timing_window.result(true)
        end_timing_process
      else
        @timing_window.result(false)
        $failure = true
        end_timing_process
      end
    end
  end
  def end_timing_process
    i = 0
    loop do
      Graphics.update
      Input.update
      i += 1
      break if i == 5
    end
    $timing = false
    @timing_window.dispose
    @timing_window = nil
    @skill_window.visible = true if @skill_window != nil
    @item_window.visible = true if @item_window != nil
  end
  
  def execute_action_attack
    if @active_battler.actor?
      if @active_battler.weapon_id == 0
        action = @active_battler.current_combo.hit_sequence
        immortaling
      else
        action = @active_battler.current_combo.hit_sequence
        if $data_weapons[@active_battler.weapon_id].state_set.include?(1)
          for member in $game_party.members + $game_troop.members
            next if member.immortal
            next if member.dead?
            member.dying = true
          end
        else
          immortaling
        end
      end  
    else
      if @active_battler.weapon == 0
        action = @active_battler.base_action
        immortaling
      else
        action = $data_weapons[@active_battler.weapon].base_action
        if $data_weapons[@active_battler.weapon].plus_state_set.include?(1)
          for member in $game_party.members + $game_troop.members
            next if member.immortal
            next if member.dead?
            member.dying = true
          end
        else
          immortaling
        end
      end  
    end
    action = WLTR::COMBO_SETUP::FAIL_MOVEMENT if @active_battler.berserker? or @active_battler.confusion?
    target_decision
    @spriteset.set_action(@active_battler.actor?, @active_battler.index, action)
    playing_action
  end
end

class Sprite_Battler < Sprite_Base
  def action
    return if @active_action == nil
    action = @active_action[0]
    return cek_invert if action == "Cek Invert"
    return mirroring if action == "Invert"
    return angling if action == "angle"
    return zooming if action == "zoom"
    return mirage_on if action == "Afterimage ON"
    return mirage_off if action == "Afterimage OFF"
    return picture if action == "pic"
    return @picture.visible = false && @picture_time = 0 if action == "Clear image"
    return graphics_change if action == "change"
    return battle_anime if action == "anime"
    return balloon_anime if action == "balloon"
    return sound if action == "sound"
    return $game_switches[@active_action[1]] = @active_action[2] if action == "switch"
    return variable if action == "variable"
    return two_swords if action == "Two Wpn Only"
    return non_two_swords if action == "One Wpn Only"
    return necessary if action == "nece"
    return derivating if action == "der"
    return individual_action if action == "Process Skill"
    return individual_action_end if action == "Process Skill End"
    return non_repeat if action == "Don't Wait"
    return @battler.change_base_position(self.x, self.y) if action == "Start Pos Change"
    return @battler.base_position if action == "Start Pos Return"
    return change_target if action == "target"
    return send_action(action) if action == "Can Collapse"
    return send_action(action) if action == "Cancel Action"
    return state_on if action == "sta+"
    return state_off if action == "sta-"
    return Graphics.frame_rate = @active_action[1] if action == "fps"
    return floating if action == "float"
    return eval(@active_action[1]) if action == "script"
    return force_action if @active_action.size == 4
    return reseting if @active_action.size == 5
    return moving if @active_action.size == 7
    return battler_anime if @active_action.size == 9
    return moving_anime if @active_action.size == 11
    return anime_finish if action == "End"
    return timing_cont if action == "Timing"
  end
  
  def cek_invert
    if self.mirror
      self.mirror = false
      @weapon_R.mirroring if @anime_flug
    end
  end
  
  def next_action
    return @wait -= 1 if @wait > 0
    return if @anime_end == false
    return @unloop_wait -= 1 if @unloop_wait > 0
    if $failure and @battler.actor?
      @action = N01::ACTION[WLTR::COMBO_SETUP::FAIL_MOVEMENT].dup
      $failure = false
    end
    active = @action.shift
    @active_action = N01::ANIME[active]
    @wait = active.to_i if @active_action == nil
    action
  end
  
  def timing_cont
    @battler.play = 0
    @battler.play = "Timing" if @battler.active
    @battler.time_delay = @active_action[1] if @battler.active
  end
end

class Game_Battler
  attr_accessor :time_delay
  alias timing_initialize initialize
  def initialize
    timing_initialize
    @time_delay = 0
  end
  def set_modifier(battler)
    if battler == nil
      @modifier = nil
    else
      battler.hit_array != nil ? array = battler.hit_array : array = [1]
      @modifier = array.dup if @modifier == [] or @modifier == nil
    end
  end
  
  alias modify_damage make_attack_damage_value
  def make_attack_damage_value(attacker)
    modify_damage(attacker)
    
    i = @modifier.shift
    damage = @hp_damage
    damage *= i
    damage.round
    @hp_damage = damage                             # damage HP
  end
end

module N01
  ACTION.merge!("FAILURE_ACTION" => ["Can Collapse", "Afterimage OFF", "Cek Invert", "FLEE_RESET", "End"])
  ANIME.merge!("Cek Invert" => ["Cek Invert"])
end

class Game_Actor < Game_Battler
  attr_accessor :hit_array
  attr_accessor :hit_sequence
  attr_reader :combos
  attr_accessor :current_combo
  alias initialize_a initialize
  def initialize(actor_id)
    @combos = []
    @current_combo = nil
    initialize_a(actor_id)
  end
  
  def learn_combo(combo)
    unless @combos.include?(combo)
      @combos.push(combo)
      @combos.sort! do |a,b|
        a.id <=> b.id
      end
    end
  end
  
  alias shadow_erase shadow
  def shadow
    return "" if !$game_temp.in_battle
    return shadow_erase
  end
end

class Game_Enemy < Game_Battler
  attr_accessor :hit_array
  attr_accessor :hit_sequence
end

class Window_ActorCommand < Window_Command
  #--------------------------------------------------------------------------
  # * Setup
  #     actor : actor
  #--------------------------------------------------------------------------
  def setup(actor)
    s1 = actor.current_combo.name
    s2 = Vocab::skill
    s3 = Vocab::guard
    s4 = Vocab::item
    if actor.class.skill_name_valid     # Skill command name is valid?
      s2 = actor.class.skill_name       # Replace command name
    end
    @commands = [s1, s2, s3, s4]
    @item_max = 4
    refresh
    self.index = 0
  end
end

class Scene_Combo < Scene_Base
  def initialize(actor_index = 0)
    @actor_index = actor_index
  end
  
  def start
    super
    create_menu_background
    @actor = $game_party.members[@actor_index]
    @help_window = Window_Help.new
    @face_window = Window_Combo_Status.new(0, 24 + 32, @actor)
    @combo_list = Window_Combos.new(0, 128 + 24+32, 544, 416 - 128 - 24 - 32, @actor)
    @combo_list.help_window = @help_window
    @combo_list.active = true
  end
  
  def update
    @help_window.update
    @face_window.update
    @combo_list.update
    update_combo_selection
  end
  
  def update_combo_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::R)
      Sound.play_cursor
      next_actor
    elsif Input.trigger?(Input::L)
      Sound.play_cursor
      prev_actor
    elsif Input.trigger?(Input::C)
      Sound.play_equip
      @actor.current_combo = @actor.combos[@combo_list.index]
      @face_window.refresh
    end
  end
  
  def terminate
    super
    @help_window.dispose
    @face_window.dispose
    @combo_list.dispose
    dispose_menu_background
  end
  
  def next_actor
    @actor_index += 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Combo.new(@actor_index)
  end

  def prev_actor
    @actor_index += $game_party.members.size - 1
    @actor_index %= $game_party.members.size
    $scene = Scene_Combo.new(@actor_index)
  end
  
  def return_scene
    $scene = Scene_Menu.new
  end
end

class Window_Combos < Window_Selectable
  def initialize(x, y, width, height, actor)
    super(x, y, width, height)
    @actor = actor
    @column_max = 2
    self.index = 0
    refresh
  end
  
  def item
    return @data[self.index]
  end

  def refresh
    @data = []
    for item in @actor.combos
      @data.push(item)
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end

  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      rect.width -= 4
      self.contents.draw_text(rect, item.name, 1)
    end
  end
  
  def update_help
    @help_window.set_text(item == nil ? "" : item.help)
  end
end

class Window_Combo_Status < Window_Base
  def initialize(x, y, actor)
    super(x, y, 544, 128)
    @actor = actor
    refresh
  end
  
  def refresh
    self.contents.clear
    @battler_sprite.dispose unless @battler_sprite == nil
    @battler_sprite = Sprite_Battler.new(Viewport.new(x, y - 40, 544, 416), @actor)
    @battler_sprite.make_battler
    @battler_sprite.first_action
    @battler_sprite.stand_by
    @battler_sprite.x = 0
    @battler_sprite.y = 0
    self.z = 0
    @battler_sprite.z = 11
    draw_actor_face(@actor, self.width - 144, 0)
    draw_actor_name(@actor, 0, 0)
    draw_actor_class(@actor, 0, 0 + 18)
    draw_actor_level(@actor, 0, 0 + 36)
    draw_actor_hp(@actor, 0, 0 + 54, 120)
    draw_actor_mp(@actor, 0, 0 + 72, 120)
    self.contents.draw_text(272 - 100, 0, 200, 20, "Current " + WLTR::COMBO_SETUP::COMBO_TERM, 1)
    self.contents.draw_text(272 - 100, 22, 200, 20, @actor.current_combo.name, 1)
  end
  
  def update
    super
    @battler_sprite.update
    @battler_sprite.x = 16 + 180
    @battler_sprite.y = 16 + 72 + 40
    @battler_sprite.z = 100
  end
  
  def dispose
    super
    @battler_sprite.dispose
  end
end
#===============================================================================
#
# END OF SCRIPT
#
#===============================================================================


Terms of Use
Credit Rusted_71 especially! He made this first. Crediting me, wltr3565 will be very nice. Oh, don't ask me about commercial uses. Ask Rusted_71.

Thanks
- Rusted_71: He made this first in XP.
- Trickster: Rect draw method for this script.
- Sony: Legend of Dragoon... Is it? All hail to the blu-ray king! laugh.gif

This post has been edited by wltr3565: Apr 30 2010, 07:33 AM


--------------------
This place is empty, just like I restarted myself.
Go to the top of the page
 
+Quote Post
   
Mr. Bubble
post Mar 26 2010, 05:27 AM
Post #2



Group Icon


Type: Undisclosed
Alignment: Unaligned




Never played Legend of Dragoon either, but timing those hits correctly was surprisingly rewarding.

It does overwrite some SBS-created methods which the ATB overwrites as well so I'm unsure if it's completely compatible with the ATB installed. Will need to do some testing.

Thanks for sharing, wltr! And thanks to Rusted as well.


--------------------
I no longer support Tankentai.
Go to the top of the page
 
+Quote Post
   
Snipah
post Mar 26 2010, 05:31 AM
Post #3



Group Icon


Type: Designer
Alignment: Chaotic Evil




kinda same system like the one the xbox360 game Infinite Undiscovery uses... but they use a big circle instead of the square ^^

http://blogs.the217.com/anothercastle/file...undiscovery.jpg

nice script, gotta try it out some time


--------------------

Title: The Hydra Scrolls III - Throne of Arne - Game Type: SBS Rpg [100% Complete]
Title: The Hydra Scrolls IV - The Return Of Arne - Game Type: ABS Rpg [50% Complete]


Go to the top of the page
 
+Quote Post
   
wltr3565
post Mar 26 2010, 07:38 AM
Post #4


The best BAKA ever
Group Icon


Type: Undisclosed
Alignment: True Neutral




@Mr.Bubbles:
Oh yeah, the playing_action method... I need to update it (and tell rusted so he can do something with the XP version's ATB). I can't upload for a while, so I'll update the script that's posted here.

Now this can be used in ATB as well without any future problems.


--------------------
This place is empty, just like I restarted myself.
Go to the top of the page
 
+Quote Post
   
Kovu
post Mar 26 2010, 10:45 AM
Post #5


Newb Hunter
Group Icon


Type: Writer
Alignment: Neutral Good




Noticed its kinda hard to successfully combo when you hit them and theres that flash covering the timing button.

Hmm i asked for something like this before and no one tried to help sleep.gif. Well it works like a charm, no bugs or any bad things yet.


--------------------
QUOTE
Grand Moff Lyonn
two wrongs don't make a right
har har har.


BUT! Two Negatives make a Positive :). And thats Math.
Har Har Har, HAR.


If we burn, you burn with us.

ORIGIN OF PURE EVIL (Read my posts to know)

-Current Projects-


Go to the top of the page
 
+Quote Post
   
Rixis
post Mar 26 2010, 10:48 AM
Post #6



Group Icon


Type: Writer
Alignment: True Neutral




Great script wltrrr:D!

Its funny you would make thisk ind of script and Ive jsut started playing LOD for the first time in years recently biggrin.gif!.


I will try it out when I have time. I think its a nice script happy.gif


--------------------
---------------------------------------------------------------------------------------------------------
If I am your Goddess and you worship me then put this userbar in your sig :D!
-------------You must obey! @_@------------



Other stuff you SHOULD look at :].....Obey @_@!!!!!

Spoiler:
------------My current project-----------------

--------------Projects I'm looking forward to----------


Go to the top of the page
 
+Quote Post
   
Dairu
post Mar 26 2010, 11:43 PM
Post #7


your RGSS kitteh!
Group Icon


Type: Coder
Alignment: Chaotic Evil




Uhm, I kinda need help on this one...
After I installed and configured the script,
I get an error saying "Line 203: SystemStackError occured. stack level too deep."

Then I went to line 203. I changed the $data_combo creation method from start to initialize, and I tested again. Still the same error, but instead of Line 203, it became Line 542.

Am I using too much scripts?
Please help.


--------------------

Look here for the scripts I've made: だいるのぶろぐ: RPG Maker VX Corner

I am...
Spoiler:

(got this from Cy, but it's actually from Chiaki xD)

I support the following...
Spoiler:







Currently working for:
Makryu
Go to the top of the page
 
+Quote Post
   
flipsomel
post Mar 27 2010, 04:41 PM
Post #8


L. Khaos
Group Icon


Type: Undisclosed




Tried the demo... this is awesome!


Easy to implement too! Good work^^



EDIT: due to profane words <.< got too carried away, ma bad.

This post has been edited by flipsomel: Apr 2 2010, 01:09 PM


--------------------
Go to the top of the page
 
+Quote Post
   
Dairu
post Apr 2 2010, 09:55 AM
Post #9


your RGSS kitteh!
Group Icon


Type: Coder
Alignment: Chaotic Evil




I was able to use this script properly now xD
But there's something wrong... sad.gif
Damage calculations aren't working too well.

The script still calculates like the default damage for every hit.

Oh, and I tried to remove one thing:
set_attack_damage_value (method) ;3 nothing happened after I removed it.


--------------------

Look here for the scripts I've made: だいるのぶろぐ: RPG Maker VX Corner

I am...
Spoiler:

(got this from Cy, but it's actually from Chiaki xD)

I support the following...
Spoiler:







Currently working for:
Makryu
Go to the top of the page
 
+Quote Post
   
wltr3565
post Apr 2 2010, 10:41 AM
Post #10


The best BAKA ever
Group Icon


Type: Undisclosed
Alignment: True Neutral




QUOTE
Oh, and I tried to remove one thing:
set_attack_damage_value (method) ;3 nothing happened after I removed it.

@dairu:
Damage calculations? I don't see the script to overwrite the damage calculation for both normal attacks and skills... Maybe another script override it...

QUOTE
Tried the demo... this is fuckin awesome!

@flip:
A bad word note... dry.gif


--------------------
This place is empty, just like I restarted myself.
Go to the top of the page
 
+Quote Post
   
Mr. Bubble
post Apr 2 2010, 11:10 AM
Post #11



Group Icon


Type: Undisclosed
Alignment: Unaligned




Played around with this a little more with the ATB. I was a bit surprised when I saw that the item/skill windows already hide themselves while an actor does timed hits while you are selecting a command for another actor. It does look a little weird though when the skill/item window quickly blinks in and out multiple times if the sequence has a lot of timed hits. But it's still good since it prevents any potential errors.

Nice job with the errorproofing. smile.gif


--------------------
I no longer support Tankentai.
Go to the top of the page
 
+Quote Post
   
Kovu
post Apr 3 2010, 02:36 AM
Post #12


Newb Hunter
Group Icon


Type: Writer
Alignment: Neutral Good




How would i move the Combo Button(the one that appears after the first hit) so it wont be infront of the flashing enemy. Or atleast make the Square Darker.


--------------------
QUOTE
Grand Moff Lyonn
two wrongs don't make a right
har har har.


BUT! Two Negatives make a Positive :). And thats Math.
Har Har Har, HAR.


If we burn, you burn with us.

ORIGIN OF PURE EVIL (Read my posts to know)

-Current Projects-


Go to the top of the page
 
+Quote Post
   
Mr. Bubble
post Apr 3 2010, 02:43 AM
Post #13



Group Icon


Type: Undisclosed
Alignment: Unaligned




Noticed something you might want to take a look at:

Spoiler:
CODE
  def set_attack_damage_value(attacker)
    case DAMAGE_ALGORITHM_TYPE
    when 0
      atk = [attacker.atk - (self.pdef / 2), 0].max
      str = [20 + attacker.str, 0].max
    when 1
      atk = [attacker.atk - ((attacker.atk * self.pdef) / 1000), 0].max
      str = [20 + attacker.str, 0].max
    when 2
      atk = 20
      str = [(attacker.str * 4) - (self.dex * 2) , 0].max
    when 3
      atk = [(10 + attacker.atk) - (self.pdef / 2), 0].max
      str = [(20 + attacker.str) - (self.dex / 2), 0].max
    end
    i = @modifier.shift
    self.damage = (atk * str / 20 * i).to_i
    self.damage = 1 if self.damage == 0 and (rand(100) > 40)
    self.damage *= elements_correct(attacker.element_set)
    self.damage /= 100
  end


There are no PDEF, STR, and DEX stats in VX, only in XP. The elements_correct(attacker.element_set) method doesn't exist. It's been changed to elements_max_rate(obj.element_set) in VX. The reason why this isn't popping up as an error is because set_attack_damage_value(attacker) isn't even used in another method.


--------------------
I no longer support Tankentai.
Go to the top of the page
 
+Quote Post
   
Bunchies
post Apr 3 2010, 07:21 PM
Post #14



Group Icon


Type: Undisclosed




Is there any way to change the button so that the user has to press like Z the first time, then like A (example), then Z again?
Or is it always going to be the default button?

zomg first post. :]
Go to the top of the page
 
+Quote Post
   
Richter II
post Apr 5 2010, 10:26 AM
Post #15


Yeah, that girl above is Stella.
Group Icon


Type: Undisclosed
Alignment: Chaotic Neutral




btw nice script...
but how to replace the default "FAILURE_ATTACK" sequence which cancels the combo with ONE more hit that only deals half of exact damage of his/her(the character's) weapon?

can't get it? consider Mario in Gameboy or DS.


--------------------
YaY! Long time lurking around and I have such an account!

Developer of:



Supports:
Go to the top of the page
 
+Quote Post
   
wltr3565
post Apr 7 2010, 02:38 AM
Post #16


The best BAKA ever
Group Icon


Type: Undisclosed
Alignment: True Neutral




@mr.bubble:
Now that you mention it, the battle formula... I'll fix it if I can.

@richter:
You... So Rusted's way doesn't work? I can't help you for now.

@Bunchies:
There's a way. Search for Input.trigger?(Input::C). Changes the alphabet at the end of it (in this case, C, which means it's Z button keyboard and spacebar) to the desired button like Input::B or Input::X.

@Kovu:
Find the method that configures the window position, or search for these:
CODE
@target_x = x
@target_y = y

As you already know, the x one configures the horizontal position, and y configures the vertical position. Change it to your liking by giving it some + or - for the value.

Seems that I have to add some more configurations for the next update dry.gif


--------------------
This place is empty, just like I restarted myself.
Go to the top of the page
 
+Quote Post
   
sbethune81
post Apr 8 2010, 06:56 PM
Post #17



Group Icon


Type: Undisclosed




This is a great script...do EVA, HIT, and CRI factor in to the combo attacks/regular attack when using this? I answered my first question (they do factor in), but
I found an issue when tinkering with the damage values. I was hoping to use both the double and triple slash combos in my game, but found when you modify
the damage multipliers (1, 0.5, 0.1) or (0.5, 0.6), they all do 1x damage. The same thing happens for both combo types.


EDIT: Looking through the code, I found that the above error is caused by the same problem that Mr. Bubble mentioned about
set_attack_damage_value(attacker) never being called in the script. Could you or someone make the change so that damage
modifiers array has an effect on each of the attacks in the combo? I would love to use this script. Thank you very much.

This post has been edited by sbethune81: Apr 12 2010, 12:04 AM


--------------------
Manifest - A complete 30 hour rpg, 4 years in the making:http://www.filefactory.com/file/c028461/n/Manifest.rar


Check out Manifest on Facebook: http://www.facebook.com/pages/Manifest/163...ll&filter=1
Go to the top of the page
 
+Quote Post
   
Xx_Ren_xX
post Apr 15 2010, 12:36 AM
Post #18



Group Icon


Type: Undisclosed




laugh.gif Being a huge fan of Legend of Dragoon I can't express how awesome this is! it also adds more interactivity with the battle biggrin.gif
but I have to ask i've run into a problem and must ask how to properly create a new move because I believe i must be doing something wrong since I get the error Attached File  error.jpg ( 27.7K ) Number of downloads: 45
I believe its a problem on my part as I have added this technique to your script and the sbs configuration under skill sequence Attached File  error_2.jpg ( 82.39K ) Number of downloads: 47
If You need me to show more information i'd be glad too if you just let me know what it is I should show unsure.gif
Go to the top of the page
 
+Quote Post
   
ShadowXzygon
post Apr 15 2010, 12:40 AM
Post #19


The Interloper
Group Icon


Type: Writer
Alignment: Chaotic Evil




Try putting a comma after the end of the 'Flee Reset"] thing.


--------------------


QUOTE
"You die a lot. That's not healthy."


QUOTE
Real life contains glitches, what the %&$@?
Go to the top of the page
 
+Quote Post
   
Xx_Ren_xX
post Apr 15 2010, 07:08 PM
Post #20



Group Icon


Type: Undisclosed




QUOTE (ShadowXzygon @ Apr 14 2010, 05:40 PM) *
Try putting a comma after the end of the 'Flee Reset"] thing.

OMG Yes thank you so much it worked like a charm it seems that was the problem! *hugz* THANK YOU SO MUCH! biggrin.gif
Go to the top of the page
 
+Quote Post
   

2 Pages V   1 2 >
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 30th August 2014 - 07:18 AM

RPGMakerVX.net is an Privacy Policy, Legal.