About This File
ok.. i have a newer version done... there's still alot that i'm gonna do before it is finished.. i just don't feel like doin it all right now.. but anyway... here's the main part with the double weapons and two attacks.. you no longer have to do anything special.... all you have to do is just put in the script...
also of note is that you can equip a shield or a sword in either hand... you can also equip two shields... when two shields are equipped, attack is disabled... anyway.. just put this right above main... and hope that you don't have alot of stuff modded that i did.. it's not far enough along yet to where i'm gonna put in alias's.. some stuff is aliased already though.. i don't remember...
#================================= # class Game_Actor mod's... -Midge- #================================= # This is where the meat of the script takes place... # there is alot to be accounted for here too.. # i had to make sure that all the stat stuff was being # from all the right things... in fact i think most of the # original class has been modded here... not sure on that # and too lazy to check and see... let's hope that you haven't # made any forgetable changes to this before... #================================= class Game_Actor < Game_Battler attr_accessor :weapon_type attr_accessor :armor_type attr_accessor :sec_attack alias double_weapons_initialize initialize def initialize(actor_id) double_weapons_initialize(actor_id) @weapon_type = $data_weapons[@weapon_id] @armor_type = $data_armors[@armor1_id] @sec_attack = nil end def animation3_id weapon = $data_weapons[@armor1_id] return (weapon != nil ? weapon.animation1_id : 0) end def animation4_id weapon = $data_weapons[@armor1_id] return (weapon != nil ? weapon.animation2_id : 0) end def two_shields if (self.weapon_type.is_a?(RPG::Armor) and self.armor_type.is_a?(RPG::Armor)) and (self.weapon_id != 0 and self.armor1_id != 0) return true else return false end end def two_weapons if (self.weapon_type.is_a?(RPG::Weapon) and self.armor_type.is_a?(RPG::Weapon)) and (self.weapon_id != 0 and self.armor1_id != 0) return true else return false end end def equip(equip_type, id, item = RPG::Armor) case equip_type when 0 if @weapon_id == 0 if item.is_a?(RPG::Weapon) if id == 0 or $game_party.weapon_number(id) > 0 self.weapon_type = $data_weapons[id] @weapon_id = id $game_party.lose_weapon(id, 1) end elsif item.is_a?(RPG::Armor) if id == 0 or $game_party.weapon_number(id) > 0 self.weapon_type = $data_armors[id] @weapon_id = id $game_party.lose_armor(id, 1) end end end if item == nil if self.weapon_type.is_a?(RPG::Weapon) if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@weapon_id, 1) @weapon_id = id end elsif self.weapon_type.is_a?(RPG::Armor) if id == 0 or $game_party.armor_number(id) > 0 $game_party.gain_armor(@weapon_id, 1) @weapon_id = id end end end if item.is_a?(RPG::Weapon) if self.weapon_type.is_a?(RPG::Weapon) if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@weapon_id, 1) self.weapon_type = $data_weapons[id] @weapon_id = id $game_party.lose_weapon(id, 1) end elsif self.weapon_type.is_a?(RPG::Armor) if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_armor(@weapon_id, 1) self.weapon_type = $data_weapons[id] @weapon_id = id $game_party.lose_weapon(id, 1) end end elsif item.is_a?(RPG::Armor) if self.weapon_type.is_a?(RPG::Armor) if id == 0 or $game_party.armor_number(id) > 0 $game_party.gain_armor(@weapon_id, 1) self.weapon_type = $data_armors[id] @weapon_id = id $game_party.lose_armor(id, 1) end elsif self.weapon_type.is_a?(RPG::Weapon) if id == 0 or $game_party.armor_number(id) > 0 $game_party.gain_weapon(@weapon_id, 1) self.weapon_type = $data_armors[id] @weapon_id = id $game_party.lose_armor(id, 1) end end end when 1 if @armor1_id == 0 if item.is_a?(RPG::Weapon) if id == 0 or $game_party.weapon_number(id) > 0 self.armor_type = $data_weapons[id] @armor1_id = id $game_party.lose_weapon(id, 1) end elsif item.is_a?(RPG::Armor) if id == 0 or $game_party.armor_number(id) > 0 self.armor_type = $data_armors[id] @armor1_id = id $game_party.lose_armor(id, 1) end end end if item == nil if self.armor_type.is_a?(RPG::Weapon) if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@armor1_id, 1) @armor1_id = id end elsif self.armor_type.is_a?(RPG::Armor) if id == 0 or $game_party.armor_number(id) > 0 $game_party.gain_armor(@armor1_id, 1) @armor1_id = id end end end if item.is_a?(RPG::Weapon) if self.armor_type.is_a?(RPG::Weapon) if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@armor1_id, 1) self.armor_type = $data_weapons[id] @armor1_id = id $game_party.lose_weapon(id, 1) end elsif self.armor_type.is_a?(RPG::Armor) if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_armor(@armor1_id, 1) self.armor_type = $data_weapons[id] @armor1_id = id $game_party.lose_weapon(id, 1) end end elsif item.is_a?(RPG::Armor) if self.armor_type.is_a?(RPG::Armor) if id == 0 or $game_party.armor_number(id) > 0 $game_party.gain_armor(@armor1_id, 1) self.armor_type = $data_armors[id] @armor1_id = id $game_party.lose_armor(id, 1) end elsif self.armor_type.is_a?(RPG::Weapon) if id == 0 or $game_party.armor_number(id) > 0 $game_party.gain_weapon(@armor1_id, 1) self.armor_type = $data_armors[id] @armor1_id = id $game_party.lose_armor(id, 1) end end end when 2 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor2_id], $data_armors[id]) $game_party.gain_armor(@armor2_id, 1) @armor2_id = id $game_party.lose_armor(id, 1) end when 3 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor3_id], $data_armors[id]) $game_party.gain_armor(@armor3_id, 1) @armor3_id = id $game_party.lose_armor(id, 1) end when 4 if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor4_id], $data_armors[id]) $game_party.gain_armor(@armor4_id, 1) @armor4_id = id $game_party.lose_armor(id, 1) end end end def element_rate(element_id) table = [0,200,150,100,50,0,-100] result = table[$data_classes[@class_id].element_ranks[element_id]] if self.armor_type.is_a?(RPG::Weapon) for i in [@armor2_id, @armor3_id, @armor4_id] armor = $data_armors[i] if armor != nil and armor.guard_element_set.include?(element_id) result /= 2 end end else for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id] armor = $data_armors[i] if armor != nil and armor.guard_element_set.include?(element_id) result /= 2 end end end for i in @states if $data_states[i].guard_element_set.include?(element_id) result /= 2 end end return result end def state_guard?(state_id) if self.armor_type.is_a?(RPG::Weapon) for i in [@armor2_id, @armor3_id, @armor4_id] armor = $data_armors[i] if armor != nil if armor.guard_state_set.include?(state_id) return true end end end else return false for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id] armor = $data_armors[i] if armor != nil if armor.guard_state_set.include?(state_id) return true end end end return false end end def element_set n = [] unless self.weapon_type.is_a?(RPG::Armor) weapon = $data_weapons[@weapon_id] n += weapon != nil ? weapon.element_set : [] end unless self.armor_type.is_a?(RPG::Armor) weapon2 = $data_weapons[@armor1_id] n += weapon2 != nil ? weapon2.element_set : [] end n.flatten! n.uniq! return n end def plus_state_set n = [] unless self.weapon_type.is_a?(RPG::Armor) weapon = $data_weapons[@weapon_id] n += weapon != nil ? weapon.plus_state_set : [] end unless self.armor_type.is_a?(RPG::Armor) weapon2 = $data_weapons[@armor1_id] n += weapon2 != nil ? weapon2.plus_state_set : [] end n.flatten! n.uniq! return n end def minus_state_set n = [] unless self.weapon_type.is_a?(RPG::Armor) weapon = $data_weapons[@weapon_id] n += weapon != nil ? weapon.minus_state_set : [] end unless self.armor_type.is_a?(RPG::Armor) weapon2 = $data_weapons[@armor1_id] n += weapon2 != nil ? weapon2.minus_state_set : [] end n.flatten! n.uniq! return n end def base_str n = $data_actors[@actor_id].parameters[2, @level] if self.weapon_type.is_a?(RPG::Weapon) weapon = $data_weapons[@weapon_id] elsif self.weapon_type.is_a?(RPG::Armor) weapon = $data_armors[@armor1_id] end if self.armor_type.is_a?(RPG::Armor) armor1 = $data_armors[@armor1_id] elsif self.armor_type.is_a?(RPG::Weapon) armor1 = $data_weapons[@armor1_id] end armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] n += weapon != nil ? weapon.str_plus : 0 n += armor1 != nil ? armor1.str_plus : 0 n += armor2 != nil ? armor2.str_plus : 0 n += armor3 != nil ? armor3.str_plus : 0 n += armor4 != nil ? armor4.str_plus : 0 return [[n, 1].max, 999].min end def base_dex n = $data_actors[@actor_id].parameters[3, @level] if self.weapon_type.is_a?(RPG::Weapon) weapon = $data_weapons[@weapon_id] elsif self.weapon_type.is_a?(RPG::Armor) weapon = $data_armors[@armor1_id] end if self.armor_type.is_a?(RPG::Armor) armor1 = $data_armors[@armor1_id] elsif self.armor_type.is_a?(RPG::Weapon) armor1 = $data_weapons[@armor1_id] end armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] n += weapon != nil ? weapon.dex_plus : 0 n += armor1 != nil ? armor1.dex_plus : 0 n += armor2 != nil ? armor2.dex_plus : 0 n += armor3 != nil ? armor3.dex_plus : 0 n += armor4 != nil ? armor4.dex_plus : 0 return [[n, 1].max, 999].min end def base_agi n = $data_actors[@actor_id].parameters[4, @level] if self.weapon_type.is_a?(RPG::Weapon) weapon = $data_weapons[@weapon_id] elsif self.weapon_type.is_a?(RPG::Armor) weapon = $data_armors[@armor1_id] end if self.armor_type.is_a?(RPG::Armor) armor1 = $data_armors[@armor1_id] elsif self.armor_type.is_a?(RPG::Weapon) armor1 = $data_weapons[@armor1_id] end armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] n += weapon != nil ? weapon.agi_plus : 0 n += armor1 != nil ? armor1.agi_plus : 0 n += armor2 != nil ? armor2.agi_plus : 0 n += armor3 != nil ? armor3.agi_plus : 0 n += armor4 != nil ? armor4.agi_plus : 0 return [[n, 1].max, 999].min end def base_int n = $data_actors[@actor_id].parameters[5, @level] if self.weapon_type.is_a?(RPG::Weapon) weapon = $data_weapons[@weapon_id] elsif self.weapon_type.is_a?(RPG::Armor) weapon = $data_armors[@armor1_id] end if self.armor_type.is_a?(RPG::Armor) armor1 = $data_armors[@armor1_id] elsif self.armor_type.is_a?(RPG::Weapon) armor1 = $data_weapons[@armor1_id] end armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] n += weapon != nil ? weapon.int_plus : 0 n += armor1 != nil ? armor1.int_plus : 0 n += armor2 != nil ? armor2.int_plus : 0 n += armor3 != nil ? armor3.int_plus : 0 n += armor4 != nil ? armor4.int_plus : 0 return [[n, 1].max, 999].min end def base_atk n = 0 unless self.weapon_type.is_a?(RPG::Armor) weapon = $data_weapons[@weapon_id] n += weapon != nil ? weapon.atk : 0 end unless self.armor_type.is_a?(RPG::Armor) weapon2 = $data_weapons[@armor1_id] n += weapon2 != nil ? weapon2.atk : 0 end return n end def base_pdef if self.weapon_type.is_a?(RPG::Weapon) weapon = $data_weapons[@weapon_id] elsif self.weapon_type.is_a?(RPG::Armor) weapon = $data_armors[@armor1_id] end if self.armor_type.is_a?(RPG::Armor) armor1 = $data_armors[@armor1_id] elsif self.armor_type.is_a?(RPG::Weapon) armor1 = $data_weapons[@armor1_id] end armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] pdef1 = weapon != nil ? weapon.pdef : 0 pdef2 = armor1 != nil ? armor1.pdef : 0 pdef3 = armor2 != nil ? armor2.pdef : 0 pdef4 = armor3 != nil ? armor3.pdef : 0 pdef5 = armor4 != nil ? armor4.pdef : 0 return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 end def base_mdef if self.weapon_type.is_a?(RPG::Weapon) weapon = $data_weapons[@weapon_id] elsif self.weapon_type.is_a?(RPG::Armor) weapon = $data_armors[@armor1_id] end if self.armor_type.is_a?(RPG::Armor) armor1 = $data_armors[@armor1_id] elsif self.armor_type.is_a?(RPG::Weapon) armor1 = $data_weapons[@armor1_id] end armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] mdef1 = weapon != nil ? weapon.mdef : 0 mdef2 = armor1 != nil ? armor1.mdef : 0 mdef3 = armor2 != nil ? armor2.mdef : 0 mdef4 = armor3 != nil ? armor3.mdef : 0 mdef5 = armor4 != nil ? armor4.mdef : 0 return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 end def base_eva armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] eva1 = armor1 != nil ? armor1.eva : 0 eva2 = armor2 != nil ? armor2.eva : 0 eva3 = armor3 != nil ? armor3.eva : 0 eva4 = armor4 != nil ? armor4.eva : 0 return eva1 + eva2 + eva3 + eva4 end end #================================= # end -O- Game_Actor changes -Midge- #================================= #================================= # class Window_EquipRight mods... -Midge- #================================= # this is just so that it will display the right stuff that # you have equipped in the two hands... #================================= class Window_EquipRight < Window_Selectable def refresh self.contents.clear @data = [] @data.push($data_weapons[@actor.weapon_id]) @data.push($data_armors[@actor.armor1_id]) if @actor.weapon_type.is_a?(RPG::Weapon) @data[0] = $data_weapons[@actor.weapon_id] elsif @actor.weapon_type.is_a?(RPG::Armor) @data[0] = $data_armors[@actor.weapon_id] end if @actor.armor_type.is_a?(RPG::Weapon) @data[1] = $data_weapons[@actor.armor1_id] elsif @actor.armor_type.is_a?(RPG::Armor) @data[1] = $data_armors[@actor.armor1_id] end @data.push($data_armors[@actor.armor2_id]) @data.push($data_armors[@actor.armor3_id]) @data.push($data_armors[@actor.armor4_id]) @item_max = @data.size self.contents.font.color = system_color self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon) self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1) self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2) self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3) self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4) draw_item_name(@data[0], 92, 32 * 0) draw_item_name(@data[1], 92, 32 * 1) draw_item_name(@data[2], 92, 32 * 2) draw_item_name(@data[3], 92, 32 * 3) draw_item_name(@data[4], 92, 32 * 4) end end #================================= # End -O- Window_EquipRight Mods... -Midge- #================================= #================================= # class Window_EquipItem mods... -Midge- #================================= # basically i just made it so that both the weapons and # sheilds would be displayed in the weapon and shield # hands... both of them... so you can equip either in # either hand... anyway.. its all cool and stuff... #================================= class Window_EquipItem < Window_Selectable def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] if @equip_type == 0 weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) @data.push($data_weapons[i]) end end armor_set = $data_classes[@actor.class_id].armor_set for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 and armor_set.include?(i) if $data_armors[i].kind == 0 @data.push($data_armors[i]) end end end end if @equip_type != 0 if @equip_type == 1 weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) @data.push($data_weapons[i]) end end end armor_set = $data_classes[@actor.class_id].armor_set for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 and armor_set.include?(i) if $data_armors[i].kind == @equip_type-1 @data.push($data_armors[i]) end end end end @data.push(nil) @item_max = @data.size self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $defaultfonttype self.contents.font.size = $defaultfontsize for i in 0...@item_max-1 draw_item(i) end end end #================================= # End -O- Window_EquipItem mod's... -Midge- #================================= class Scene_Equip def refresh @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) item1 = @right_window.item case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 end if @right_window.active @left_window.set_new_parameters(nil, nil, nil) end if @item_window.active item2 = @item_window.item last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id, item2) new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id, item1) @actor.hp = last_hp @actor.sp = last_sp @left_window.set_new_parameters(new_atk, new_pdef, new_mdef) end end def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @right_window.active = true @item_window.active = false @item_window.index = -1 return end if Input.trigger?(Input::C) $game_system.se_play($data_system.equip_se) item = @item_window.item @actor.equip(@right_window.index, item == nil ? 0 : item.id, item) @right_window.active = true @item_window.active = false @item_window.index = -1 @right_window.refresh @item_window.refresh return end end def update @left_window.update @right_window.update @item_window.update @item_window1.refresh @item_window2.refresh refresh if @right_window.active update_right return end if @item_window.active update_item return end end end class Scene_Battle def update_phase3_basic_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) phase3_prior_actor return end if @active_battler.two_shields @actor_command_window.disable_item(0) else @actor_command_window.enable_item(0) end if Input.trigger?(Input::C) case @actor_command_window.index when 0 if @active_battler.two_shields $game_system.se_play($data_system.buzzer_se) return end if @active_battler.two_weapons == true @active_battler.current_action.kind = 0 @active_battler.current_action.basic = 4 else @active_battler.current_action.kind = 0 @active_battler.current_action.basic = 0 end $game_system.se_play($data_system.decision_se) start_enemy_select when 1 $game_system.se_play($data_system.decision_se) @active_battler.current_action.kind = 1 start_skill_select when 2 $game_system.se_play($data_system.decision_se) @active_battler.current_action.kind = 0 @active_battler.current_action.basic = 1 phase3_next_actor when 3 $game_system.se_play($data_system.decision_se) @active_battler.current_action.kind = 2 start_item_select end return end end def make_basic_action_result if @active_battler.current_action.basic == 0 @animation1_id = @active_battler.animation1_id @animation2_id = @active_battler.animation2_id if @active_battler.is_a?(Game_Enemy) if @active_battler.restriction == 3 target = $game_troop.random_target_enemy elsif @active_battler.restriction == 2 target = $game_party.random_target_actor else index = @active_battler.current_action.target_index target = $game_party.smooth_target_actor(index) end end if @active_battler.is_a?(Game_Actor) if @active_battler.armor_type.is_a?(RPG::Weapon) @animation1_id = @active_battler.animation3_id @animation2_id = @active_battler.animation4_id end if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end end @target_battlers = [target] for target in @target_battlers target.attack_effect(@active_battler) end return end if @active_battler.current_action.basic == 1 @help_window.set_text($data_system.words.guard, 1) return end if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2 @help_window.set_text("逃げる", 1) @active_battler.escape return end if @active_battler.current_action.basic == 3 $game_temp.forcing_battler = nil @phase4_step = 1 return end if @active_battler.current_action.basic == 4 @animation1_id = @active_battler.animation1_id @animation2_id = @active_battler.animation2_id @animation3_id = @active_battler.animation3_id @animation4_id = @active_battler.animation4_id if @active_battler.is_a?(Game_Actor) if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end end @target_battlers = [target] for target in @target_battlers target.attack_effect(@active_battler) end return end end def update_phase4_step4 if @active_battler.is_a?(Game_Actor) if @active_battler.two_weapons == true && @active_battler.sec_attack == 0 for target in @target_battlers target.animation_id = @animation4_id target.animation_hit = (target.damage != "Miss") @phase4_step = 5 return end end end for target in @target_battlers target.animation_id = @animation2_id target.animation_hit = (target.damage != "Miss") end @wait_count = 8 @phase4_step = 5 end def update_phase4_step5 @help_window.visible = false @status_window.refresh if @active_battler.is_a?(Game_Actor) if @active_battler.current_action.basic == 4 if @active_battler.two_weapons == true && @active_battler.sec_attack == nil @active_battler.sec_attack = 0 @phase4_step = 3 return else @active_battler.sec_attack = nil end end end for target in @target_battlers if target.damage != nil target.damage_pop = true end end @phase4_step = 6 end end class Window_Command def enable_item(index) draw_item(index, normal_color) end end
Recommended Comments
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now