Hey, I need a Side-View Battle System. Now I know what you're all thinking, that I'm a n00b that can't use the search button. I need one that you DO need Battlers for, not one that requires NO battlers. Thanks,
*~Bloods teh Hedgie~*
THIS IS NOT BY ME, but I wish I could script...
[quote name='Guedez' date='Jan 12 2006, 03:03 PM' post='69916']
GCBS: Guedez's Custon Battle System Version: 1.5
Know Bugs:
None
Fixed Bugs:
-Command menu close when a monster attack
-You cant select a command whyle someone is attacking
Upgrade Log:
=====Version 1.0=====
-Added CT Bar
-Added a custon escape system
-Removed Defend command
-Added a test for enemy escape
-Added a easy text custumization system
=====Version 1.05=====
-Fixed a bug
=====Version 1.1=====
-Fixed a bug
-Added a new option: @less_xp
=====Version 1.5=====
-Improved Grafics
-Added Side View option
Instalation:
-Add this above Main and below all custon scripts
#----------------------------------------------------------------
#GCBS: Guedez's Custon Battle Sytem V1.5
#Thx to: Sepirothspawn511 and Minkoff
#Released in: 16 / 1 / 2006
#----------------------------------------------------------------
#===========================Usage================================
#Just add this script above Main:
#Conflicts: can happen with ANY script that modify Scene_Battle
#================================================================
#========================Customize===============================
#@less_xp: if true, before the battle end, the exp will be
#dividied by the party size before is given to each party member
#@success_escape_enemy_text: change the text that will appear in
#help window when the enemy escape
#@failed_escape_enemy_text: change the text that will appear in
#help window when the enemy fail to escape
#@failed_to_escape_text: change the text that will appear in
#help window when you fail escape
#@escape_text: change command name to trigger the escape flag
#@waiting_text: change the text that will appear in
#help window when the enemy is waiting
#@miss_text: change the text that will pop up when you miss
#================================================================
class Scene_Battle
def main_customize
@side_view = true
@less_xp = true
@success_escape_enemy_text = " escaped"
@failed_escape_enemy_text = " failed to escape"
@failed_to_escape_text = "Failed to escape"
@escape_text = "Escape"
@waiting_text = " is waiting"
@miss_text = "Miss"
end
def main_uncustomize
@escapeflag = false
@aready_ended = false
@phase4_active_battler = nil
@waiting_unitys = []
$game_temp.in_battle = true
end
def main_base
if @side_view == true
SDK.enable('Minkoffs Custom Battle System')
else
SDK.disable('Minkoffs Custom Battle System')
end
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
$game_system.battle_interpreter.setup(nil, 0)
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
$unity_by_itself = []
for enemy in $game_troop.enemies
$unity_by_itself.push(enemy)
end
for actor in $game_party.actors
$unity_by_itself.push(actor)
end
$ctunits = []
for i in 0...$unity_by_itself.size
$ctunits[i] = 0
end
end
def main_window
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.item
s4 = @escape_text
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.height = 160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
if @side_view
@atpandlimit_window = Window_Side_Ct.new
@status_window = Window_Side_BattleStatus.new
else
@atpandlimit_window = Window_Ct.new
@status_window = Window_BattleStatus.new
end
@message_window = Window_Message.new
@spriteset = Spriteset_Battle.new
@wait_count = 0
end
def main_transition
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
end
def main
main_customize
main_uncustomize
main_base
main_window
main_transition
start_phase1
loop do
Graphics.update
Input.update
main_update
if $scene != self
break
end
end
$game_map.refresh
Graphics.freeze
main_dispose
end
def main_dispose
@actor_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
@atpandlimit_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
@spriteset.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
def main_update
unless @aready_ended or @side_view
paralel_phase3_update
end
if @aready_ended and @actor_command_window.visible
@actor_command_window.active = false
@actor_command_window.visible = false
end
if $game_system.battle_interpreter.running?
$game_system.battle_interpreter.update
if $game_temp.forcing_battler == nil
unless $game_system.battle_interpreter.running?
unless judge
setup_battle_event
end
end
if @phase != 5
end
end
end
$game_system.update
$game_screen.update
if $game_system.timer_working and $game_system.timer == 0
$game_temp.battle_abort = true
end
@help_window.update
@message_window.update
@spriteset.update
if $game_temp.transition_processing
$game_temp.transition_processing = false
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
if $game_temp.message_window_showing
return
end
if @spriteset.effect?
return
end
if $game_temp.gameover
$scene = Scene_Gameover.new
return
end
if $game_temp.to_title
$scene = Scene_Title.new
return
end
if $game_temp.battle_abort
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
return
end
if @wait_count > 0
@wait_count -= 1
return
end
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
unless @aready_ended
plus_atp
search_for_enemy
get_a_new_actor
end
case @phase
when 1
update_phase1
when 2
update_phase2
when 3
update_phase3
when 4
update_phase4
when 5
update_phase5
end
end
def paralel_phase3_update
if @phase != 3
if @enemy_arrow != nil
update_phase3_enemy_select
elsif @actor_arrow != nil
update_phase3_actor_select
elsif @skill_window != nil
update_phase3_skill_select
elsif @item_window != nil
update_phase3_item_select
elsif @actor_command_window.active
update_phase3_basic_command(@actor)
end
end
end
#=========================Scene_battle2==========================
def start_phase2
@phase = 3
@actor_index = -1
@active_battler = nil
@actor_command_window.active = false
@actor_command_window.visible = false
$game_temp.battle_main_phase = false
$game_party.clear_actions
unless $game_party.inputable?
start_phase4
end
end
def escape
$game_party.clear_actions
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
success = rand(100) < 50 * actors_agi / enemies_agi
if success
$game_system.se_play($data_system.escape_se)
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
else
$game_party.clear_actions
@help_window.set_text(@failed_to_escape_text, 1)
@wait_count = 55
end
end
#============================Scene_battle3=======================
def start_phase3
@phase = 3
@actor_index = -1
@active_battler = nil
update_phase3
end
def phase3_setup_command_window
$game_system.se_play($data_system.cursor_se)
@actor_command_window.active = false
@actor_command_window.active = true
@actor_command_window.visible = true
@actor_command_window.x = 0
case @actor.index
when 0
@actor_command_window.x = 0
when 1
@actor_command_window.x = 160
when 2
@actor_command_window.x = 320
when 3
@actor_command_window.x = 480
end
#@actor_command_window.x = 320 - (@actor_command_window.width / 2)
@actor_command_window.index = 0
end
def actorcheck(actor)
if actor.is_a?(Game_Actor)
return true
end
return false
end
def search_for_actor
if @escapeflag
needed = 0
number = 0
for i in 0..$ctunits.size
for actor in $game_party.actors
if $unity_by_itself[i] == actor and
$unity_by_itself[i].inputable?
needed +=1
if $ctunits[i] == 100
number += 1
end
end
end
end
if number >= needed
escape
@escapeflag = false
for i in 0..$ctunits.size
for actor in $game_party.actors
if $unity_by_itself[i] == actor
$ctunits[i] = 0
end
end
end
end
else
for i in 0..$ctunits.size
if $ctunits[i] == 100
unless @actor_command_window.active or
actorcheck($unity_by_itself[i]) == false
@actor = $unity_by_itself[i]
phase3_setup_command_window
return
end
end
end
end
end
def research_for_actor(actor)
@last_actor = [] if @last_actor == nil
@last_actor.push(actor)
@actor_command_window.active == false
for i in 0...$ctunits.size
if $ctunits[i] == 100
if actorcheck($unity_by_itself[i])
unless @last_actor.include?($unity_by_itself[i])
@actor = $unity_by_itself[i]
phase3_setup_command_window
update_phase3_basic_command(actor)
return
end
end
end
end
@last_actor = []
end
def plus_atp
unless @enemy_arrow != nil or @actor_arrow != nil or
@skill_window != nil or @item_window != nil
if @help_window.visible == true
@help_window.visible = false
end
for i in 0...$ctunits.size
if $unity_by_itself[i] == nil
$unity_by_itself.unshift($unity_by_itself[i])
$unity_by_itself.delete($unity_by_itself[i])
$ctunits.unshift($ctunits[i])
$ctunits.delete($ctunits[i])
return
end
unless $ctunits[i] >= 100
if $unity_by_itself[i].is_a?(Game_Actor) and $unity_by_itself[i].inputable?
$ctunits[i] = 0 if $ctunits[i] == nil
$ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.25 unless
$ctunits[i] == 100
$ctunits[i] = 100 if $ctunits[i] > 100
elsif not $unity_by_itself[i].is_a?(Game_Actor)
if $unity_by_itself[i].hp > 0
$ctunits[i] = 0 if $ctunits[i] == nil
$ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.5 unless
$ctunits[i] == 100
$ctunits[i] = 100 if $ctunits[i] > 100
end
end
end
end
unless @actor_command_window.active
search_for_actor
end
end
@atpandlimit_window.refresh
end
def update_phase3
if @enemy_arrow != nil
update_phase3_enemy_select
elsif @actor_arrow != nil
update_phase3_actor_select
elsif @skill_window != nil
update_phase3_skill_select
elsif @item_window != nil
update_phase3_item_select
elsif @actor_command_window.active
update_phase3_basic_command(@actor)
end
end
def search_for_enemy
for i in 0..$ctunits.size
if $ctunits[i] != nil and $unity_by_itself[i].is_a?(Game_Enemy)
if $ctunits[i] == 100
$unity_by_itself[i].make_action
start_phase4($unity_by_itself[i])
$ctunits[i] = 0
return
end
end
end
end
def update_phase3_basic_command(actor)
@active_battler = actor
@active_battler.current_action.clear
@actor_command_window.update
if Input.trigger?(Input::B)
loop do
Input.update
if Input.repeat?(Input::B) == false
break
end
end
@actor_command_window.active = false
research_for_actor(@active_battler)
return
end
if Input.trigger?(Input::C)
case @actor_command_window.index
when 0
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
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 = 2
start_item_select
when 3
@escapeflag = true
@actor_command_window.visible = false
end
return
end
end
def update_phase3_skill_select
@skill_window.visible = true
@skill_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_skill_select
return
end
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.skill_id = @skill.id
@skill_window.visible = false
if @skill.scope == 1
start_enemy_select
elsif @skill.scope == 3 or @skill.scope == 5
start_actor_select
else
end_skill_select
end
return
end
end
def update_phase3_item_select
@item_window.visible = true
@item_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_item_select
return
end
if Input.trigger?(Input::C)
@item = @item_window.item
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.item_id = @item.id
@item_window.visible = false
if @item.scope == 1
start_enemy_select
elsif @item.scope == 3 or @item.scope == 5
start_actor_select
else
end_item_select
end
return
end
end
def update_phase3_enemy_select
@enemy_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_enemy_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @enemy_arrow.index
end_enemy_select
if @skill_window != nil
end_skill_select
end
if @item_window != nil
end_item_select
end
start_phase4(@actor)
for i in 0..$ctunits.size
if $unity_by_itself[i] == @actor
$ctunits[i] = 0
end
end
end
@actor_command_window.active = false
@actor_command_window.visible = false
end
def update_phase3_actor_select
@actor_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_actor_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @actor_arrow.index
end_actor_select
if @skill_window != nil
end_skill_select
end
if @item_window != nil
end_item_select
end
start_phase4(@actor)
for i in 0..$ctunits.size
if $unity_by_itself[i] == @actor
$ctunits[i] = 0
end
end
end
@actor_command_window.visible = false
@actor_command_window.active = false
end
def start_enemy_select
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
@enemy_arrow.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_enemy_select
@enemy_arrow.dispose
@enemy_arrow = nil
if @actor_command_window.index == 0
@actor_command_window.active = true
@actor_command_window.visible = true
@help_window.visible = false
end
end
def start_actor_select
@actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
@actor_arrow.index = @actor_index
@actor_arrow.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_actor_select
@actor_arrow.dispose
@actor_arrow = nil
end
def start_skill_select
@skill_window = Window_Skill.new(@active_battler)
@skill_window.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_skill_select
@skill_window.dispose
@skill_window = nil
@help_window.visible = false
@actor_command_window.active = true
@actor_command_window.visible = true
end
def start_item_select
@item_window = Window_Item.new
@item_window.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_item_select
@item_window.dispose
@item_window = nil
@help_window.visible = false
@actor_command_window.active = true
@actor_command_window.visible = true
end
#========================Scene_battle4===========================
def start_phase4(actor)
@phase = 4
$game_temp.battle_turn += 1
for index in 0...$data_troops[@troop_id].pages.size
page = $data_troops[@troop_id].pages[index]
if page.span == 1
$game_temp.battle_event_flags[index] = false
end
end
@actor_index = -1
@waiting_unitys.push(actor)
end
def get_a_new_actor
if @phase4_active_battler == nil
for i in 0..@waiting_unitys.size
if @waiting_unitys[i].is_a?(Game_Battler)
@phase4_active_battler = @waiting_unitys[i]
@waiting_unitys[i] = nil
$game_temp.battle_main_phase = true
@phase4_step = 1
@using_actor = true
return
end
end
@phase = 3
@waiting_unitys = []
end
end
def update_phase4
case @phase4_step
when 1
update_phase4_step1
when 2
update_phase4_step2
when 3
if @side_view
update_phase4_step3(@phase4_active_battler)
else
update_phase4_step3
end
when 4
if @side_view
update_phase4_step4(@phase4_active_battler)
else
update_phase4_step4
end
when 5
update_phase4_step5
when 6
update_phase4_step6
end
end
def update_phase4_step1
@help_window.visible = false
if judge
return
end
if $game_temp.forcing_battler == nil
setup_battle_event
if $game_system.battle_interpreter.running?
return
end
end
@animation1_id = 0
@animation2_id = 0
@common_event_id = 0
if @phase4_active_battler.index == nil
return
end
if @phase4_active_battler.hp > 0 and @phase4_active_battler.slip_damage?
@phase4_active_battler.slip_damage_effect
@phase4_active_battler.damage_pop = true
end
@phase4_active_battler.remove_states_auto
@status_window.refresh
@phase4_step = 2
end
def update_phase4_step2
unless @phase4_active_battler.current_action.forcing
if @phase4_active_battler.restriction == 2 or @phase4_active_battler.restriction == 3
@phase4_active_battler.current_action.kind = 0
@phase4_active_battler.current_action.basic = 0
end
if @phase4_active_battler.restriction == 4
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
@target_battlers = []
case @phase4_active_battler.current_action.kind
when 0
make_basic_action_result
when 1
make_skill_action_result
when 2
make_item_action_result
end
if @phase4_step == 2
@phase4_step = 3
end
end
def make_basic_action_result
if @phase4_active_battler.current_action.basic == 0
@animation1_id = @phase4_active_battler.animation1_id
@animation2_id = @phase4_active_battler.animation2_id
if @phase4_active_battler.is_a?(Game_Enemy)
if @phase4_active_battler.restriction == 3
target = $game_troop.random_target_enemy
elsif @phase4_active_battler.restriction == 2
target = $game_party.random_target_actor
else
index = @phase4_active_battler.current_action.target_index
target = $game_party.smooth_target_actor(index)
end
end
if @phase4_active_battler.is_a?(Game_Actor)
if @phase4_active_battler.restriction == 3
target = $game_party.random_target_actor
elsif @phase4_active_battler.restriction == 2
target = $game_troop.random_target_enemy
else
index = @phase4_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(@phase4_active_battler)
end
return
end
if @phase4_active_battler.current_action.basic == 1
@help_window.set_text($data_system.words.guard, 1)
return
end
if @phase4_active_battler.is_a?(Game_Enemy) and
@phase4_active_battler.current_action.basic == 2
if @phase4_active_battler.escape
@help_window.set_text(@phase4_active_battler.name + @success_escape_enemy_text, 1)
else
@help_window.set_text(@phase4_active_battler.name + @failed_escape_enemy_text, 1)
end
@wait_count = 55
@phase4_active_battler = nil
return
end
if @phase4_active_battler.current_action.basic == 3
@help_window.set_text(@phase4_active_battler.name + @waiting_text, 1)
$game_temp.forcing_battler = nil
@wait_count = 55
@phase4_active_battler.current_action.clear
@phase4_active_battler = nil
if judge
return
end
return
end
end
def update_phase4_step3
if @animation1_id == 0
@phase4_active_battler.white_flash = true
else
@phase4_active_battler.animation_id = @animation1_id
@phase4_active_battler.animation_hit = true
end
@phase4_step = 4
end
def update_phase4_step4
for target in @target_battlers
target.animation_id = @animation2_id
target.animation_hit = (target.damage != @miss_text)
end
@wait_count = 8
@phase4_step = 5
end
def update_phase4_step5
@help_window.visible = false
@status_window.refresh
for target in @target_battlers
if target.damage != nil
target.damage_pop = true
end
end
@phase4_step = 6
end
def update_phase4_step6
$game_temp.forcing_battler = nil
if @common_event_id > 0
common_event = $data_common_events[@common_event_id]
$game_system.battle_interpreter.setup(common_event.list, 0)
end
@phase4_active_battler.current_action.clear
@phase4_active_battler = nil
if judge
return
end
end
#==========================Phase_5===============================
def start_phase5
@phase = 5
$game_system.me_play($game_system.battle_end_me)
$game_system.bgm_play($game_temp.map_bgm)
exp = 0
gold = 0
treasures = []
for enemy in $game_troop.enemies
unless enemy.hidden
exp += enemy.exp
gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
if @less_xp == true
exp /= $game_party.actors.size
end
treasures = treasures[0..5]
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@status_window.level_up(i)
end
end
end
$game_party.gain_gold(gold)
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
@result_window = Window_BattleResult.new(exp, gold, treasures)
@phase5_wait_count = 100
@aready_ended = true
end
end
#======================End_of_Scene_Battle=======================
class Window_Ct < Window_Base
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
def dispose
super
end
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
for i in 0..$unity_by_itself.size
if $unity_by_itself[i] == actor
actornumber = i
end
end
atp_gaugue = $ctunits[actornumber] * 6 / 10
draw_actor_limit(actor,actor_x, 74,60)
draw_bar_beginner(actor_x + 68, 74 , atp_gaugue, 0, 60, 24,
bar_color = Color.new(0, 255, 255, 255))
end
end
def update
super
end
end
class Window_Side_Ct < Window_Base
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
def dispose
super
end
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_y = i * 32
draw_actor_limit(actor,470,actor_y,64)
for i in 0..$unity_by_itself.size
if $unity_by_itself[i] == actor
actornumber = i
end
end
atp_gaugue = $ctunits[actornumber] * 64 / 100
draw_bar_beginner(544, actor_y + 4, atp_gaugue, 0, 64, 24,
bar_color = Color.new(0, 255, 255, 255))
end
end
def update
super
end
end
class Window_BattleStatus < Window_Base
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, -8)
draw_actor_hp(actor, actor_x, 20, 120)
draw_actor_sp(actor, actor_x, 48, 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x + 30, 100, 120, 32, "Nível Acima!")
else
draw_actor_state(actor, actor_x + 30, 100)
end
end
end
end
class Window_Side_BattleStatus < Window_Base
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
def dispose
super
end
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_y = i * 32
draw_actor_name(actor, 0, actor_y)
draw_actor_hp(actor, 128, actor_y, 128)
draw_actor_sp(actor, 260, actor_y, 128)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor, 392, actor_y, 32, "Nível Acima!")
else
draw_actor_state(actor, 392 , actor_y)
end
end
end
def update
super
if $game_temp.battle_main_phase
self.contents_opacity -= 4 if self.contents_opacity > 191
else
self.contents_opacity += 4 if self.contents_opacity < 255
end
end
end
#=========================Window_Base============================
class Window_Base
def draw_actor_hp(actor, x, y, width = 144)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(x + 24, y, 48, 32, actor.hp.to_s, 2)
self.contents.font.color = normal_color
self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
self.contents.draw_text(x + 84, y, 48, 32, actor.maxhp.to_s)
end
def draw_actor_sp(actor, x, y, width = 144)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(x + 24, y, 48, 32, actor.sp.to_s, 2)
self.contents.font.color = normal_color
self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
self.contents.draw_text(x + 84, y, 48, 32, actor.maxsp.to_s)
end
def draw_actor_limit(actor, x, y, width)
midbar = x + (width/2 - width/4)
self.contents.draw_text(midbar, y, width, 32, "")
end
#--------------------------------------------------------------------------
# Draw Bar (Beginner) $By Sepirothspawn511
#--------------------------------------------------------------------------
def draw_bar_beginner(x, y, porcentage, max, width, height,
bar_color = Color.new(150, 0, 0, 255) )
# Draws Background
self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
# Draw Bar
self.contents.fill_rect(x + 1, y + 1, porcentage - 2, height - 2, bar_color)
end
#--------------------------------------------------------------------------
# Draw Bar (Intermediate) $By Sepirothspawn511
#--------------------------------------------------------------------------
def draw_bar_intermediate(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Background
self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
# Draws Bar
for i in 1..( (min / max) * width -1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + 1 + i, y + 1, 1, height - 2, Color.new(r, g, b, a))
end
end
#--------------------------------------------------------------------------
# Draw Slant Bar (Advanced) $By Sepirothspawn511
#--------------------------------------------------------------------------
def draw_slant_bar_advanced(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min / max) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
end
#============================Game_Enemy==========================
class Game_Enemy < Game_Battler
def escape
self.current_action.clear
enemies_agi = self.agi
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
success = rand(100) < 50 * enemies_agi / actors_agi
if success
@hidden = true
else
return false
end
end
end
-if you want to use side view you will need this above Main and BELOW GCBS
[attachmentid=1855]
Demo:
[attachmentid=1853]
Screens:
-Side View:
[attachmentid=1856]
-Normal Mode:
[attachmentid=1857]
Note: for side view you will need new sprites, and you will need to give the weapons EX:
[attachmentid=1852]
1: Standing Position: All the time that he is not making anything
2: Damage Position: Every time he recive damage
3: Dead Position: Not yet tested, i think when he is dead
4: Dunno Position: I think when he is afected by Status (maybe positive too)
5: Moving Position: Moving left
6: Moving Position: Moving right
7: Attacking 1 Position: When he attack
8: Attacking 2 Position: Dunno
9: Skill Using Position: Maybe itens too
10: Win Position: Will not repeat
To make your battle sprites you can go to Chara-Project (http://charas-project.net/charas2/index.php) where you can use theyr generator (need to adapt the image and add a weapon)
[/quote]
Wow, thats really great! Is there an in depth guide on how to use it somewhere? I mean...i know a entry level amount of coding...but sheezus, most of that is greek to me. For instance, how would a sprite sheet to be used for that battle system be set up, how would it know which sheet to use, what do i import them as, important things like that. Awesome script, though! thanks for putting it up!
(does guedez have a site or profile somewhere where one can contact him?)
~Django
Also, when i tried running it the first time in XP after pasting it into my scripts, it came up with this messege when the first battle occured:
????? 'Custom Battle System ???? NameError ????? uninitialized constant Scene_Battle;;SDK
...yeeeaaaah...about the only part of that i understood was "custom battle system", as thats what i named the script. Am i just doing something wrong here, or is this a bug in the script? Any advice or help would rock, as i cant wait to try out the system.
Thanks!
~Django
I have this Side View battle system, not made by me, unsure who created it :(
[code] class Bitmap
if not method_defined?('original_draw_text')
alias original_draw_text draw_text
def draw_text(*arg)
original_color = self.font.color.dup
self.font.color = Color.new(0, 0, 0, 128)
if arg[0].is_a?(Rect)
arg[0].x += 2
arg[0].y += 2
self.original_draw_text(*arg)
arg[0].x -= 2
arg[0].y -= 2
else
arg[0] += 2
arg[1] += 2
self.original_draw_text(*arg)
arg[0] -= 2
arg[1] -= 2
end
self.font.color = original_color
self.original_draw_text(*arg)
end
end
def gradation_rect(x, y, width, height, color1, color2, align = 0)
if align == 0
for i in x...x + width
red = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
green = color1.green +
(color2.green - color1.green) * (i - x) / (width - 1)
blue = color1.blue +
(color2.blue - color1.blue) * (i - x) / (width - 1)
alpha = color1.alpha +
(color2.alpha - color1.alpha) * (i - x) / (width - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(i, y, 1, height, color)
end
elsif align == 1
for i in y...y + height
red = color1.red +
(color2.red - color1.red) * (i - y) / (height - 1)
green = color1.green +
(color2.green - color1.green) * (i - y) / (height - 1)
blue = color1.blue +
(color2.blue - color1.blue) * (i - y) / (height - 1)
alpha = color1.alpha +
(color2.alpha - color1.alpha) * (i - y) / (height - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(x, i, width, 1, color)
end
elsif align == 2
for i in x...x + width
for j in y...y + height
red = color1.red + (color2.red - color1.red) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color1.green + (color2.green - color1.green) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color1.blue + (color2.blue - color1.blue) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color1.alpha + (color2.alpha - color1.alpha) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
elsif align == 3
for i in x...x + width
for j in y...y + height
red = color1.red + (color2.red - color1.red) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color1.green + (color2.green - color1.green) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color1.blue + (color2.blue - color1.blue) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color1.alpha + (color2.alpha - color1.alpha) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
end
end
end
module RPG
class Sprite < ::Sprite
def damage(value, critical)
dispose_damage
if value.is_a?(Numeric)
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
bitmap = Bitmap.new(160, 48)
bitmap.font.name = "Arial Black"
bitmap.font.size = 32
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
if value.is_a?(Numeric) and value < 0
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
if critical
bitmap.font.size = 20
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
end
@_damage_sprite = ::Sprite.new
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80 + self.viewport.ox
@_damage_sprite.oy = 20 + self.viewport.oy
@_damage_sprite.x = self.x + self.viewport.rect.x
@_damage_sprite.y = self.y - self.oy / 2 + self.viewport.rect.y
@_damage_sprite.z = 3000
@_damage_duration = 40
end
def animation(animation, hit)
dispose_animation
@_animation = animation
return if @_animation == nil
@_animation_hit = hit
@_animation_duration = @_animation.frame_max
animation_name = @_animation.animation_name
animation_hue = @_animation.animation_hue
bitmap = RPG::Cache.animation(animation_name, animation_hue)
if @@_reference_count.include?(bitmap)
@@_reference_count[bitmap] += 1
else
@@_reference_count[bitmap] = 1
end
@_animation_sprites = []
if @_animation.position != 3 or not @@_animations.include?(animation)
for i in 0..15
sprite = ::Sprite.new
sprite.bitmap = bitmap
sprite.visible = false
@_animation_sprites.push(sprite)
end
unless @@_animations.include?(animation)
@@_animations.push(animation)
end
end
update_animation
end
def loop_animation(animation)
return if animation == @_loop_animation
dispose_loop_animation
@_loop_animation = animation
return if @_loop_animation == nil
@_loop_animation_index = 0
animation_name = @_loop_animation.animation_name
animation_hue = @_loop_animation.animation_hue
bitmap = RPG::Cache.animation(animation_name, animation_hue)
if @@_reference_count.include?(bitmap)
@@_reference_count[bitmap] += 1
else
@@_reference_count[bitmap] = 1
end
@_loop_animation_sprites = []
for i in 0..15
sprite = ::Sprite.new
sprite.bitmap = bitmap
sprite.visible = false
@_loop_animation_sprites.push(sprite)
end
update_loop_animation
end
def animation_set_sprites(sprites, cell_data, position)
for i in 0..15
sprite = sprites
pattern = cell_data[i, 0]
if sprite == nil or pattern == nil or pattern == -1
sprite.visible = false if sprite != nil
next
end
sprite.visible = true
sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
if position == 3
if self.viewport != nil
sprite.x = self.viewport.rect.width / 2
sprite.y = self.viewport.rect.height - 160
else
sprite.x = 320
sprite.y = 240
end
else
sprite.x = self.x + self.viewport.rect.x -
self.ox + self.src_rect.width / 2
sprite.y = self.y + self.viewport.rect.y -
self.oy + self.src_rect.height / 2
sprite.y -= self.src_rect.height / 4 if position == 0
sprite.y += self.src_rect.height / 4 if position == 2
end
sprite.x += cell_data[i, 1]
sprite.y += cell_data[i, 2]
sprite.z = 2000
sprite.ox = 96
sprite.oy = 96
sprite.zoom_x = cell_data[i, 3] / 100.0
sprite.zoom_y = cell_data[i, 3] / 100.0
sprite.angle = cell_data[i, 4]
sprite.mirror = (cell_data[i, 5] == 1)
sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
sprite.blend_type = cell_data[i, 7]
end
end
end
end
class Game_Actor < Game_Battler
def screen_x
if self.index != nil
n_split = [($game_party.actors.length * 0.5).ceil, 4].min
case n_split
when 1
n_index = self.index * 2
when 2
if self.index < ($game_party.actors.length - 2)
n_index = 0.5 + (2 * self.index)
else
if $game_party.actors.length == 3 then
n_index = (self.index * 2) + 2
elsif $game_party.actors.length == 4 then
n_index = self.index * 2
end
end
when 3
n_index = self.index + (0.25 * (self.index + 1))
if $game_party.actors.length == 5
if self.index < 2
n_index = self.index + (0.25 * (self.index + 1))
else
n_index = self.index + (0.25 * (self.index + 2)) + 1
end
end
when 4
n_index = self.index
if $game_party.actors.length == 7
if self.index < 3
n_index = self.index
else
n_index = self.index + 1
end
end
end
return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) / 5) + 480 + ((n_index / 4).floor * 60)
else
return 0
end
end
#--------------------------------------------------------------------------
# ? ????? Y ?????
#--------------------------------------------------------------------------
def screen_y
n_split = [($game_party.actors.length * 0.5).ceil, 4].min
case n_split
when 1
n_index = self.index * 2
when 2
if self.index < ($game_party.actors.length - 2)
n_index = 0.5 + (2 * self.index)
else
if $game_party.actors.length == 3 then
n_index = (self.index * 2) + 2
elsif $game_party.actors.length == 4 then
n_index = self.index * 2
end
end
when 3
n_index = self.index + (0.25 * (self.index + 1))
if $game_party.actors.length == 5
if self.index < 2
n_index = self.index + (0.25 * (self.index + 1))
else
n_index = self.index + (0.25 * (self.index + 2)) + 1
end
end
when 4
n_index = self.index
if $game_party.actors.length == 7
if self.index < 3
n_index = self.index
else
n_index = self.index + 1
end
end
end
return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) * 1.6) + 270 - ((n_index / 4).floor * (110 - (4 * 20)))
end
#--------------------------------------------------------------------------
# ? ????? Z ?????
#--------------------------------------------------------------------------
def screen_z
# ??????????? Z ?????????
if self.index != nil
return self.index
else
return 0
end
end
end
class Game_Enemy < Game_Battler
def screen_x
n_split = [($game_troop.enemies.length * 0.5).ceil, 4].min
case n_split
when 1
n_index = self.index * 2
when 2
if self.index < ($game_troop.enemies.length - 2)
n_index = 0.5 + (2 * self.index)
else
if $game_troop.enemies.length == 3 then
n_index = (self.index * 2) + 2
elsif $game_troop.enemies.length == 4 then
n_index = self.index * 2
end
end
when 3
n_index = self.index + (0.25 * (self.index + 1))
if $game_troop.enemies.length == 5
if self.index < 2
n_index = self.index + (0.25 * (self.index + 1))
else
n_index = self.index + (0.25 * (self.index + 2)) + 2
end
end
when 4
n_index = self.index
if $game_troop.enemies.length == 7
if self.index < 3
n_index = self.index
else
n_index = self.index + 1
end
end
end
return (n_index - ((n_index / 4).floor) * 4) * ((-160 / (4)) / 5) + 160 - ((n_index / 4).floor * 60)
end
#--------------------------------------------------------------------------
# ? ????? Y ?????
#--------------------------------------------------------------------------
def screen_y
n_split = [($game_troop.enemies.length * 0.5).ceil, 4].min
case n_split
when 1
n_index = self.index * 2
when 2
if self.index < ($game_troop.enemies.length - 2)
n_index = 0.5 + (2 * self.index)
else
if $game_troop.enemies.length == 3 then
n_index = (self.index * 2) + 2
elsif $game_troop.enemies.length == 4 then
n_index = self.index * 2
end
end
when 3
n_index = self.index + (0.25 * (self.index + 1))
if $game_troop.enemies.length == 5
if self.index < 2
n_index = self.index + (0.25 * (self.index + 1))
else
n_index = self.index + (0.25 * (self.index + 2)) + 1
end
end
when 4
n_index = self.index
if $game_troop.enemies.length == 7
if self.index < 3
n_index = self.index
else
n_index = self.index + 1
end
end
end
return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) * 1.6) + 270 - ((n_index / 4).floor * (110 - (4 * 20)))
end
#--------------------------------------------------------------------------
# ? ????? Z ?????
#--------------------------------------------------------------------------
def screen_z
return @member_index + 1
end
end
#==============================================================================
# ¦ Sprite_Battler
#------------------------------------------------------------------------------
# ????????????????Game_Battler ???????????????
# ????????????????????
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :battler # ????
attr_accessor :moving # Is the sprite moving?
attr_reader :index
attr_accessor :target_index
attr_accessor :direction
attr_accessor :pattern
#--------------------------------------------------------------------------
# ? ?????????
# viewport : ??????
# battler : ???? (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
change
@old = Graphics.frame_count # For the delay method
@goingup = true # Increasing animation? (if @rm2k_mode is true)
@once = false # Is the animation only played once?
@animated = true # Used to stop animation when @once is true
self.opacity = 0
@index = 0
@pattern_b = 0
@counter_b = 0
@trans_sprite = Sprite.new
@trans_sprite.opacity = 0
@bar_hp_sprite = Sprite.new
@bar_hp_sprite.bitmap = Bitmap.new(64, 10)
@bar_sp_sprite = Sprite.new
@bar_sp_sprite.bitmap = Bitmap.new(64, 10)
@color1 = Color.new(0, 0, 0, 192)
@color2 = Color.new(255, 255, 192, 192)
@color3 = Color.new(0, 0, 0, 192)
@color4 = Color.new(64, 0, 0, 192)
@old_hp = -1
@old_sp = -1
@battler = battler
@battler_visible = false
@first = true
@pattern = 0
if $target_index == nil
$target_index = 0
end
@battler.is_a?(Game_Enemy) ? enemy_pose(0, 1) : pose(0, 1)
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
if @trans_sprite.bitmap != nil
@trans_sprite.bitmap.dispose
end
@trans_sprite.dispose
@bar_hp_sprite.bitmap.dispose
@bar_hp_sprite.dispose
@bar_sp_sprite.bitmap.dispose
@bar_sp_sprite.dispose
super
end
def change(frames = 0, delay = 0, offx = 0, offy = 0, startf = 0, once = false)
@frames = frames
@delay = delay
@offset_x, @offset_y = offx, offy
@current_frame = startf
@once = once
@goingup = true
@animated = true
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
bar_check = true if @_damage_duration == 1
super
@trans_sprite.blend_type = self.blend_type
@trans_sprite.color = self.color
if @_collapse_duration > 0
@trans_sprite.opacity = self.opacity
else
@trans_sprite.opacity = [self.opacity, 160].min
end
if (@_damage_duration == 0 and bar_check == true) or @first == true
@first = false if @first == true
bar_check = false
@bar_must_change = true
end
@bar_hp_sprite.opacity = self.opacity
@bar_sp_sprite.opacity = self.opacity
# ????? nil ???
if @battler == nil
self.bitmap = nil
@trans_sprite.bitmap = nil
loop_animation(nil)
return
end
# ????????????????????
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
# ????????????
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
if @battler.is_a?(Game_Actor)
@battler_name = @battler.character_name
@battler_hue = @battler.character_hue
@direction = 4
else
@direction = 6
end
self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
@width = bitmap.width / 4
@height = bitmap.height / 4
@frame_width = @width
@frame_height = @height
self.ox = @width / 2
self.oy = @height
@pattern = @current_frame
@direction = @offset_y
sx = @pattern * @width
sy = (@direction - 2) / 2 * @height
self.src_rect.set(sx, sy, @width, @height)
@current_frame = (@current_frame + 1) unless @frames == 0
@animated = false if @current_frame == @frames and @once
@current_frame %= @frames
@trans_sprite.bitmap = self.bitmap
@trans_sprite.ox = self.ox
@trans_sprite.oy = self.oy
@trans_sprite.src_rect.set(sx, sy, @width, @height)
# ?????????????????? 0 ???
if @battler.dead? or @battler.hidden
self.opacity = 0
@trans_sprite.opacity = 0
@bar_hp_sprite.opacity = 0
@bar_sp_sprite.opacity = 0
end
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
change_sp_bar if @old_sp != @battler.sp
if delay(@delay) and @animated
@pattern = @current_frame
@direction = @offset_y
sx = @pattern * @width
sy = (@direction - 2) / 2 * @height
self.src_rect.set(sx, sy, @width, @height)
@current_frame = (@current_frame + 1) unless @frames == 0
@animated = false if @current_frame == @frames and @once
@current_frame %= @frames
@trans_sprite.ox = self.ox
@trans_sprite.oy = self.oy
@trans_sprite.src_rect.set(sx, sy, @width, @height)
end
# ??????? ID ????????????
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
# ??????????????
#if @battler.is_a?(Game_Actor) and @battler_visible
# ???????????????????????
#if $game_temp.battle_main_phase
#self.opacity += 3 if self.opacity < 255
#else
#self.opacity -= 3 if self.opacity > 207
#end
#end
# ??
if @battler.blink
blink_on
else
blink_off
end
# ??????
unless @battler_visible
# ??
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
end
# ?????
if @battler_visible
# ??
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@trans_sprite.opacity = 0
@battler_visible = false
end
# ??????
if @battler.white_flash
whiten
@battler.white_flash = false
end
# ???????
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
# ????
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
if @bar_must_change == true
@bar_must_change = false
if @old_hp != @battler.hp
change_hp_bar
end
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
else
$game_system.se_play($data_system.actor_collapse_se)
end
collapse
@battler_visible = false
end
end
end
# ???????????
@trans_sprite.x = self.x
@trans_sprite.y = self.y
@trans_sprite.z = self.z
@bar_hp_sprite.x = @battler.screen_x - 32
@bar_hp_sprite.y = @battler.screen_y - (@height +18) if @height != nil
@bar_hp_sprite.z = 100
@bar_sp_sprite.x = @battler.screen_x - 32
@bar_sp_sprite.y = @battler.screen_y - (@height + 8) if @height != nil
@bar_sp_sprite.z = 100
end
#--------------------------------------------------------------------------
# - Move the sprite
# x : X coordinate of the destination point
# y : Y coordinate of the destination point
# speed : Speed of movement (0 = delayed, 1+ = faster)
# delay : Movement delay if speed is at 0
#--------------------------------------------------------------------------
def move(x, y, speed = 1, delay = 0)
@destx = x
@desty = y
@move_speed = speed
@move_delay = delay
@move_old = Graphics.frame_count
@moving = true
end
#--------------------------------------------------------------------------
# - Move sprite to destx and desty
#--------------------------------------------------------------------------
def update_move
return unless @moving
movinc = @move_speed == 0 ? 1 : @move_speed
if Graphics.frame_count - @move_old > @move_delay or @move_speed != 0
self.x += movinc if self.x < @destx
self.x -= movinc if self.x > @destx
self.y += movinc if self.y < @desty
self.y -= movinc if self.y > @desty
@move_old = Graphics.frame_count
end
if @move_speed > 1 # Check if sprite can't reach that point
self.x = @destx if (@destx - self.x).abs % @move_speed != 0 and
(@destx - self.x).abs <= @move_speed
self.y = @desty if (@desty - self.y).abs % @move_speed != 0 and
(@desty - self.y).abs <= @move_speed
end
if self.x == @destx and self.y == @desty
@moving = false
end
end
#--------------------------------------------------------------------------
# - Pause animation, but still updates movement
# frames : Number of frames
#--------------------------------------------------------------------------
def delay(frames)
update_move
if (Graphics.frame_count - @old >= frames)
@old = Graphics.frame_count
return true
end
return false
end
def change_hp_bar
j = false
@old_hp = @battler.hp if @old_hp == -1
i = @old_hp
loop do
i -= 10
if i < @battler.hp
i = @battler.hp
j = true
end
rate = i.to_f / @battler.maxhp
@color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
@color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
@bar_hp_sprite.bitmap.clear
@bar_hp_sprite.bitmap.fill_rect(0, 0, 64, 10, @color1)
@bar_hp_sprite.bitmap.fill_rect(1, 1, 62, 8, @color2)
@bar_hp_sprite.bitmap.gradation_rect(2, 2, 60, 6, @color3, @color4, 1)
#@bar_hp_sprite.bitmap.fill_rect(2, 2, 60, 6, @color3)
@bar_hp_sprite.bitmap.gradation_rect(2, 2, 64 * rate - 4, 6, @color5, @color6, 2)
#@bar_hp_sprite.bitmap.fill_rect(2, 2, 64 * rate - 4, 6, @color5)
@bar_hp_sprite.opacity = self.opacity
Graphics.update
if j == true
j = false
break
end
end
@old_hp = @battler.hp
end
def change_sp_bar
j = false
@old_sp = @battler.sp if @old_sp == -1
i = @old_sp
loop do
i -= 10
if i < @battler.sp
i = @battler.sp
j = true
end
rate = i.to_f / @battler.maxsp
@color7 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
@color8 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
@bar_sp_sprite.bitmap.clear
@bar_sp_sprite.bitmap.fill_rect(0, 0, 64, 10, @color1)
@bar_sp_sprite.bitmap.fill_rect(1, 1, 62, 8, @color2)
@bar_sp_sprite.bitmap.gradation_rect(2, 2, 60, 6, @color3, @color4, 1)
#@bar_hp_sprite.bitmap.fill_rect(2, 2, 60, 6, @color3)
@bar_sp_sprite.bitmap.gradation_rect(2, 2, 64 * rate - 4, 6, @color7, @color8, 0)
#@bar_hp_sprite.bitmap.fill_rect(2, 2, 64 * rate - 4, 6, @color5)
@bar_sp_sprite.opacity = self.opacity
Graphics.update
if j == true
j = false
break
end
end
@old_sp = @battler.sp
end
def enemy #
$target_index += $game_troop.enemies.size
$target_index %= $game_troop.enemies.size
return $game_troop.enemies[$target_index] #
end #
def actor #
$target_index += $game_party.actors.size
$target_index %= $game_party.actors.size
return $game_party.actors[$target_index] #
end
def index=(index)
@index = index
update
end
def pose(number, frames = 4)
case number
when 0
change(frames, 4, 0, 4, 0)
when 1
change(frames, 4, 0, 4)
when 2
change(frames, 4, 0, 6)
else
change(frames, 4, 0, 0, 0)
end
end
def enemy_pose(number ,enemy_frames = 4)
case number
when 0
change(enemy_frames, 4, 0, 6, 0)
when 1
change(enemy_frames, 4, 0, 4)
when 2
change(enemy_frames, 4, 0, 6)
else
change(enemy_frames, 4, 0, 0, 0)
end
end
def default_pose
pose(0, 1)
end
end
#==============================================================================
# ¦ Spriteset_Battle
#------------------------------------------------------------------------------
# ???????????????????????????? Scene_Battle ??
# ????????????
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader :viewport1 # ????????????
attr_reader :viewport2 # ????????????
attr_accessor :actor_sprites
attr_accessor :enemy_sprites
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
# ?????????
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
if $game_temp.battleback_name == ""
@battleback_sprite = nil
@tilemap = Tilemap.new(@viewport1)
@tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names
@tilemap.autotiles = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.data
@tilemap.priorities = $game_map.priorities
else
# ??????????????
@tilemap = nil
@battleback_sprite = Sprite.new(@viewport1)
end
# ????????????
@enemy_sprites = []
for enemy in $game_troop.enemies#.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
# ????????????
@actor_sprites = []
for j in 0..7
# ƒAƒNƒ^[ƒXƒvƒ‰ƒCƒg,ð'ljÁ
@actor_sprites.push(Sprite_Battler.new(@viewport1, $game_party.actors[j]))
end
# ?????
@weather = RPG::Weather.new(@viewport1)
# ????????????
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures))
end
# ????????????
@timer_sprite = Sprite_Timer.new
# ??????
update
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
if @tilemap != nil
# ?????????
@tilemap.tileset.dispose
for i in 0..6
@tilemap.autotiles.dispose
end
@tilemap.dispose
end
# ??????????????
if @battleback_sprite != nil
# ??????????????????????
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
@battleback_sprite.dispose
end
# ??????????????????????
for sprite in @enemy_sprites + @actor_sprites
sprite.dispose
end
# ?????
@weather.dispose
# ????????????
for sprite in @picture_sprites
sprite.dispose
end
# ????????????
@timer_sprite.dispose
# ?????????
@viewport1.dispose
@viewport2.dispose
@viewport3.dispose
@viewport4.dispose
end
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
def effect?
# ??????????????? true ???
for sprite in @enemy_sprites + @actor_sprites
return true if sprite.effect?
end
return false
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
# ???????????????????????
if @battleback_sprite != nil
if @battleback_name != $game_temp.battleback_name
@battleback_name = $game_temp.battleback_name
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
bg_bitmap = RPG::Cache.battleback(@battleback_name)
bg_bitmap_stretch = Bitmap.new(640, 480)
bg_bitmap_stretch.stretch_blt(Rect.new(0, 0, 640, 480), bg_bitmap, bg_bitmap.rect)
@battleback_sprite.bitmap = bg_bitmap_stretch
end
end
if @tilemap != nil
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
end
# ????????????
for sprite in @enemy_sprites + @actor_sprites
sprite.update
end
# ???????????
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
# ????????????
for sprite in @picture_sprites
sprite.update
end
# ????????????
@timer_sprite.update
# ???????????????
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# ????????????
@viewport4.color = $game_screen.flash_color
# ?????????
@viewport1.update
@viewport2.update
@viewport4.update
end
end
#==============================================================================
# ¦ Window_Command
#------------------------------------------------------------------------------
# ?????????????????????
#==============================================================================
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# ? ?????????
# width : ???????
# commands : ??????????
#--------------------------------------------------------------------------
def initialize(width, commands, column_max = 1, style = 0, inf_scroll = 1)
# ????????????????????
super(0, 0, width, (commands.size * 1.0 / column_max).ceil * 32 + 32)
@inf_scroll = inf_scroll
@item_max = commands.size
@commands = commands
@column_max = column_max
@style = style
self.contents = Bitmap.new(width - 32, (@item_max * 1.0 / @column_max).ceil * 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 22
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
# color : ???
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(index%@column_max * (self.width / @column_max) + 4, 32 * (index/@column_max), self.width / @column_max - 40, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], @style)
end
#--------------------------------------------------------------------------
# ? ??????
# index : ????
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
def update_help
@help_window.set_actor($game_party.actors[$scene.actor_index])
end
end
#==============================================================================
# ¦ Arrow_Enemy
#------------------------------------------------------------------------------
# ????????????????????????????? Arrow_Base ??
# ????????
#==============================================================================
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ? ?????????????????
#--------------------------------------------------------------------------
def enemy
return $game_troop.enemies[@index]
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
# ???????????????????
$game_troop.enemies.size.times do
break if self.enemy.exist?
@index += 1
@index %= $game_troop.enemies.size
end
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += ((($game_troop.enemies.length) * 0.5).ceil)
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - ((($game_troop.enemies.length) * 0.5).ceil)
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# ???????????
if self.enemy != nil
self.x = self.enemy.screen_x + 4
self.y = self.enemy.screen_y + 36
self.z = self.enemy.screen_z + 1
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_help
# ????????????????????????
@help_window.set_enemy(self.enemy)
end
end
#==============================================================================
# ¦ Arrow_Actor
#------------------------------------------------------------------------------
# ????????????????????????????? Arrow_Base ??
# ????????
#==============================================================================
class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# ? ?????????????????
#--------------------------------------------------------------------------
def actor
return $game_party.actors[@index]
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
# ?????
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# ?????
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@index += ($game_party.actors.length * 0.5).ceil
@index %= $game_party.actors.size
end
# ?????
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - (($game_party.actors.length * 0.5).ceil)
@index %= $game_party.actors.size
end
# ???????????
if self.actor != nil
self.x = self.actor.screen_x
self.y = self.actor.screen_y + 36
self.z = self.actor.screen_z + 1
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_help
# ??????????????????????
@help_window.set_actor(self.actor)
end
end
class Scene_Battle
attr_accessor :actor_index
def main
# ???????????????
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# ??????????????????
$game_system.battle_interpreter.setup(nil, 0)
# ???????
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
# ????????????????
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(640, [s1, s2, s3, s4], 4)
@actor_command_window.y = 64
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
# ????????????
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
#@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
# ???????????
@spriteset = Spriteset_Battle.new
# ????????????
@wait_count = 0
# ?????????
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
# ???????????
start_phase1
# ??????
loop do
# ????????
Graphics.update
# ???????
Input.update
# ??????
update
# ????????????????
if $scene != self
break
end
end
# ??????????
$game_map.refresh
# ?????????
Graphics.freeze
# ????????
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
#@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# ???????????
@spriteset.dispose
# ???????????????
if $scene.is_a?(Scene_Title)
# ??????????
Graphics.transition
Graphics.freeze
end
# ???????????????????????????
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
def update
# ?????????????
if $game_system.battle_interpreter.running?
# ?????????
$game_system.battle_interpreter.update
# ?????????????????????????
if $game_temp.forcing_battler == nil
# ?????????????????
unless $game_system.battle_interpreter.running?
# ??????????????????????????
unless judge
setup_battle_event
end
end
# ????????????????
if @phase != 5
# ?????????????????
#@status_window.refresh
end
end
end
# ???? (????)??????
$game_system.update
$game_screen.update
# ????? 0 ??????
if $game_system.timer_working and $game_system.timer == 0
# ?????
$game_temp.battle_abort = true
end
# ????????
@help_window.update
@party_command_window.update
@actor_command_window.update
#@status_window.update
@message_window.update
# ???????????
@spriteset.update
# ?????????????
if $game_temp.transition_processing
# ?????????????????
$game_temp.transition_processing = false
# ?????????
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# ????????????????
if $game_temp.message_window_showing
return
end
# ???????????
if @spriteset.effect?
return
end
# ??????????
if $game_temp.gameover
# ??????????????
$scene = Scene_Gameover.new
return
end
# ???????????
if $game_temp.to_title
# ???????????
$scene = Scene_Title.new
return
end
# ????????
if $game_temp.battle_abort
# ??????? BGM ???
$game_system.bgm_play($game_temp.map_bgm)
# ?????
battle_end(1)
return
end
# ????????
if @wait_count > 0
# ????????????
@wait_count -= 1
return
end
# this one holds the battle while the player moves
for actor in @spriteset.actor_sprites
if actor.moving
return
end
end
# and this one is for the enemy...
for enemy in @spriteset.enemy_sprites
if enemy.moving# and $game_system.animated_enemy
return
end
end
# ???????????????????????
# ????????????????
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
# ??????????
case @phase
when 1 # ?????????
update_phase1
when 2 # ????????????
update_phase2
when 3 # ????????????
update_phase3
when 4 # ???????
update_phase4
when 5 # ???????????
update_phase5
end
end
def start_phase2
# ???? 2 ???
@phase = 2
# ?????????????
@actor_index = -1
@active_battler = nil
# ?????????????????
@party_command_window.active = true
@party_command_window.visible = true
# ?????????????????
@actor_command_window.active = false
@actor_command_window.visible = false
@help_window.visible = false
# ??????????????
$game_temp.battle_main_phase = false
# ????????????????
$game_party.clear_actions
# ????????????
unless $game_party.inputable?
# ?????????
start_phase4
end
end
def update_phase2_escape
# ??????????????
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
# ??????????????
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
# ??????
success = rand(100) < 50 * actors_agi / enemies_agi
# ???????
if success
# ?? SE ???
$game_system.se_play($data_system.escape_se)
for actor in $game_party.actors
@spriteset.actor_sprites[actor.index].pose(2)
@spriteset.actor_sprites[actor.index].move(660, actor.screen_y, 10)
end
check = escape_move
until check == false
@spriteset.update
Graphics.update
check = escape_move
end
# ??????? BGM ???
$game_system.bgm_play($game_temp.map_bgm)
# ?????
battle_end(1)
# ???????
else
# ????????????????
$game_party.clear_actions
# ?????????
start_phase4
end
end
def escape_move
for actor in @spriteset.actor_sprites
if actor.moving
return true
end
end
return false
end
def start_phase5
# ???? 5 ???
@phase = 5
# ????? ME ???
$game_system.me_play($game_system.battle_end_me)
# ??????? BGM ???
$game_system.bgm_play($game_temp.map_bgm)
# EXP???????????????
exp = 0
gold = 0
treasures = []
# ???
for enemy in $game_troop.enemies
# ??????????????
unless enemy.hidden
# ?? EXP????????
exp += enemy.exp
gold += enemy.gold
# ?????????
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
# ???????? 6 ??????
treasures = treasures[0..5]
# EXP ??
for i in 0...$game_party.actors.size
actor = $game_party.actors
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
#@status_window.level_up(i)
end
end
end
# ??????
$game_party.gain_gold(gold)
# ???????
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
# ???????????????
@result_window = Window_BattleResult.new(exp, gold, treasures)
# ???????????
@phase5_wait_count = 100
end
#--------------------------------------------------------------------------
# ? ?????? (???????????)
#--------------------------------------------------------------------------
def update_phase5
# ????????? 0 ???????
if @phase5_wait_count > 0
# ????????????
@phase5_wait_count -= 1
# ????????? 0 ??????
if @phase
QuoteThis script is a simple script to implement side-view battles. Modification is required if you want the characters to walk up to the monsters and attack, for instance. The first block of code below should replace Game_Actor#Screen_X. The second block should replace Game_Actor#Screen_Y. The last block should replace Window_BattleStatus#Update. If you want to change the arrangement of the party members on the battle screen, play around with the return values of Game_Actor#Screen_X and Game_Actor#Screen_Y until you find something you like. Please note that the coordinates provided in this script are intended to be used with battler images the size of map sprites. If you keep the full-size battler sprites, this script will make your battles look really stupid.
def screen_x
if self.index != nil
return self.index * 40 + 360
else
return 0
end
enddef screen_y
return self.index * 20 + 220
end def update
super
if $game_temp.battle_main_phase
self.contents_opacity = 255
end
end
end
This is great! However, i'm not entirely sure what numbers to mess around with in order to move the battlers...as right now, it looks like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg.photobucket.com%2Falbums%2Fv612%2Fdjango_red%2F01rpgmakerscreencap.jpg&hash=959f230714feffe72dcb738e2cefa82677c90481)
I'd like it to look a bit more like this, if possible (photoshop edit)
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg.photobucket.com%2Falbums%2Fv612%2Fdjango_red%2F003-Forest01test.jpg&hash=07063ea7bf125485e4bd8f01a9a315904780f14d)
Would moving the monsters around, as well as adjusting the hero Battler transparency be too difficult? Either way, thanks!
Quoteplay around with the return values of Game_Actor#Screen_X and Game_Actor#Screen_Y until you find something you like. Please note that the coordinates provided in this script are intended to be used with battler images the size of map sprites. If you keep the full-size battler sprites, this script will make your battles look really stupid.
def screen_x
if self.index != nil
return self.index * 40 + 360
else
return 0
end
enddef screen_y
return self.index * 20 + 220
end
Yes....i see that...but i'm new to coding, and when i tried to change the numbers def screen_x from 40 to 60 and 360 to 380, nothing seemed to happen. Also, i'm still wondering about being able to move the monsters, and alter the battler transparency...
I'm trying to implement this script, but I think I must be doing something wrong.
It works fine for the normal char sprites but when I try to use a custom made sprite I imported into the game they just run on the spot after taking 1 step
any ideas on what's wrong?
Quote from: BanisherOfEden on December 15, 2006, 02:22:43 PM
THIS IS NOT BY ME, but I wish I could script...
[quote name='Guedez' date='Jan 12 2006, 03:03 PM' post='69916']
GCBS: Guedez's Custon Battle System Version: 1.5
Know Bugs:
None
Fixed Bugs:
-Command menu close when a monster attack
-You cant select a command whyle someone is attacking
Upgrade Log:
=====Version 1.0=====
-Added CT Bar
-Added a custon escape system
-Removed Defend command
-Added a test for enemy escape
-Added a easy text custumization system
=====Version 1.05=====
-Fixed a bug
=====Version 1.1=====
-Fixed a bug
-Added a new option: @less_xp
=====Version 1.5=====
-Improved Grafics
-Added Side View option
Instalation:
-Add this above Main and below all custon scripts
#----------------------------------------------------------------
#GCBS: Guedez's Custon Battle Sytem V1.5
#Thx to: Sepirothspawn511 and Minkoff
#Released in: 16 / 1 / 2006
#----------------------------------------------------------------
#===========================Usage================================
#Just add this script above Main:
#Conflicts: can happen with ANY script that modify Scene_Battle
#================================================================
#========================Customize===============================
#@less_xp: if true, before the battle end, the exp will be
#dividied by the party size before is given to each party member
#@success_escape_enemy_text: change the text that will appear in
#help window when the enemy escape
#@failed_escape_enemy_text: change the text that will appear in
#help window when the enemy fail to escape
#@failed_to_escape_text: change the text that will appear in
#help window when you fail escape
#@escape_text: change command name to trigger the escape flag
#@waiting_text: change the text that will appear in
#help window when the enemy is waiting
#@miss_text: change the text that will pop up when you miss
#================================================================
class Scene_Battle
def main_customize
@side_view = true
@less_xp = true
@success_escape_enemy_text = " escaped"
@failed_escape_enemy_text = " failed to escape"
@failed_to_escape_text = "Failed to escape"
@escape_text = "Escape"
@waiting_text = " is waiting"
@miss_text = "Miss"
end
def main_uncustomize
@escapeflag = false
@aready_ended = false
@phase4_active_battler = nil
@waiting_unitys = []
$game_temp.in_battle = true
end
def main_base
if @side_view == true
SDK.enable('Minkoffs Custom Battle System')
else
SDK.disable('Minkoffs Custom Battle System')
end
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
$game_system.battle_interpreter.setup(nil, 0)
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
$unity_by_itself = []
for enemy in $game_troop.enemies
$unity_by_itself.push(enemy)
end
for actor in $game_party.actors
$unity_by_itself.push(actor)
end
$ctunits = []
for i in 0...$unity_by_itself.size
$ctunits[i] = 0
end
end
def main_window
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.item
s4 = @escape_text
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 160
@actor_command_window.height = 160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
if @side_view
@atpandlimit_window = Window_Side_Ct.new
@status_window = Window_Side_BattleStatus.new
else
@atpandlimit_window = Window_Ct.new
@status_window = Window_BattleStatus.new
end
@message_window = Window_Message.new
@spriteset = Spriteset_Battle.new
@wait_count = 0
end
def main_transition
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
end
def main
main_customize
main_uncustomize
main_base
main_window
main_transition
start_phase1
loop do
Graphics.update
Input.update
main_update
if $scene != self
break
end
end
$game_map.refresh
Graphics.freeze
main_dispose
end
def main_dispose
@actor_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
@atpandlimit_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
@spriteset.dispose
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
def main_update
unless @aready_ended or @side_view
paralel_phase3_update
end
if @aready_ended and @actor_command_window.visible
@actor_command_window.active = false
@actor_command_window.visible = false
end
if $game_system.battle_interpreter.running?
$game_system.battle_interpreter.update
if $game_temp.forcing_battler == nil
unless $game_system.battle_interpreter.running?
unless judge
setup_battle_event
end
end
if @phase != 5
end
end
end
$game_system.update
$game_screen.update
if $game_system.timer_working and $game_system.timer == 0
$game_temp.battle_abort = true
end
@help_window.update
@message_window.update
@spriteset.update
if $game_temp.transition_processing
$game_temp.transition_processing = false
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
if $game_temp.message_window_showing
return
end
if @spriteset.effect?
return
end
if $game_temp.gameover
$scene = Scene_Gameover.new
return
end
if $game_temp.to_title
$scene = Scene_Title.new
return
end
if $game_temp.battle_abort
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
return
end
if @wait_count > 0
@wait_count -= 1
return
end
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
unless @aready_ended
plus_atp
search_for_enemy
get_a_new_actor
end
case @phase
when 1
update_phase1
when 2
update_phase2
when 3
update_phase3
when 4
update_phase4
when 5
update_phase5
end
end
def paralel_phase3_update
if @phase != 3
if @enemy_arrow != nil
update_phase3_enemy_select
elsif @actor_arrow != nil
update_phase3_actor_select
elsif @skill_window != nil
update_phase3_skill_select
elsif @item_window != nil
update_phase3_item_select
elsif @actor_command_window.active
update_phase3_basic_command(@actor)
end
end
end
#=========================Scene_battle2==========================
def start_phase2
@phase = 3
@actor_index = -1
@active_battler = nil
@actor_command_window.active = false
@actor_command_window.visible = false
$game_temp.battle_main_phase = false
$game_party.clear_actions
unless $game_party.inputable?
start_phase4
end
end
def escape
$game_party.clear_actions
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
success = rand(100) < 50 * actors_agi / enemies_agi
if success
$game_system.se_play($data_system.escape_se)
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
else
$game_party.clear_actions
@help_window.set_text(@failed_to_escape_text, 1)
@wait_count = 55
end
end
#============================Scene_battle3=======================
def start_phase3
@phase = 3
@actor_index = -1
@active_battler = nil
update_phase3
end
def phase3_setup_command_window
$game_system.se_play($data_system.cursor_se)
@actor_command_window.active = false
@actor_command_window.active = true
@actor_command_window.visible = true
@actor_command_window.x = 0
case @actor.index
when 0
@actor_command_window.x = 0
when 1
@actor_command_window.x = 160
when 2
@actor_command_window.x = 320
when 3
@actor_command_window.x = 480
end
#@actor_command_window.x = 320 - (@actor_command_window.width / 2)
@actor_command_window.index = 0
end
def actorcheck(actor)
if actor.is_a?(Game_Actor)
return true
end
return false
end
def search_for_actor
if @escapeflag
needed = 0
number = 0
for i in 0..$ctunits.size
for actor in $game_party.actors
if $unity_by_itself[i] == actor and
$unity_by_itself[i].inputable?
needed +=1
if $ctunits[i] == 100
number += 1
end
end
end
end
if number >= needed
escape
@escapeflag = false
for i in 0..$ctunits.size
for actor in $game_party.actors
if $unity_by_itself[i] == actor
$ctunits[i] = 0
end
end
end
end
else
for i in 0..$ctunits.size
if $ctunits[i] == 100
unless @actor_command_window.active or
actorcheck($unity_by_itself[i]) == false
@actor = $unity_by_itself[i]
phase3_setup_command_window
return
end
end
end
end
end
def research_for_actor(actor)
@last_actor = [] if @last_actor == nil
@last_actor.push(actor)
@actor_command_window.active == false
for i in 0...$ctunits.size
if $ctunits[i] == 100
if actorcheck($unity_by_itself[i])
unless @last_actor.include?($unity_by_itself[i])
@actor = $unity_by_itself[i]
phase3_setup_command_window
update_phase3_basic_command(actor)
return
end
end
end
end
@last_actor = []
end
def plus_atp
unless @enemy_arrow != nil or @actor_arrow != nil or
@skill_window != nil or @item_window != nil
if @help_window.visible == true
@help_window.visible = false
end
for i in 0...$ctunits.size
if $unity_by_itself[i] == nil
$unity_by_itself.unshift($unity_by_itself[i])
$unity_by_itself.delete($unity_by_itself[i])
$ctunits.unshift($ctunits[i])
$ctunits.delete($ctunits[i])
return
end
unless $ctunits[i] >= 100
if $unity_by_itself[i].is_a?(Game_Actor) and $unity_by_itself[i].inputable?
$ctunits[i] = 0 if $ctunits[i] == nil
$ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.25 unless
$ctunits[i] == 100
$ctunits[i] = 100 if $ctunits[i] > 100
elsif not $unity_by_itself[i].is_a?(Game_Actor)
if $unity_by_itself[i].hp > 0
$ctunits[i] = 0 if $ctunits[i] == nil
$ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.5 unless
$ctunits[i] == 100
$ctunits[i] = 100 if $ctunits[i] > 100
end
end
end
end
unless @actor_command_window.active
search_for_actor
end
end
@atpandlimit_window.refresh
end
def update_phase3
if @enemy_arrow != nil
update_phase3_enemy_select
elsif @actor_arrow != nil
update_phase3_actor_select
elsif @skill_window != nil
update_phase3_skill_select
elsif @item_window != nil
update_phase3_item_select
elsif @actor_command_window.active
update_phase3_basic_command(@actor)
end
end
def search_for_enemy
for i in 0..$ctunits.size
if $ctunits[i] != nil and $unity_by_itself[i].is_a?(Game_Enemy)
if $ctunits[i] == 100
$unity_by_itself[i].make_action
start_phase4($unity_by_itself[i])
$ctunits[i] = 0
return
end
end
end
end
def update_phase3_basic_command(actor)
@active_battler = actor
@active_battler.current_action.clear
@actor_command_window.update
if Input.trigger?(Input::B)
loop do
Input.update
if Input.repeat?(Input::B) == false
break
end
end
@actor_command_window.active = false
research_for_actor(@active_battler)
return
end
if Input.trigger?(Input::C)
case @actor_command_window.index
when 0
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
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 = 2
start_item_select
when 3
@escapeflag = true
@actor_command_window.visible = false
end
return
end
end
def update_phase3_skill_select
@skill_window.visible = true
@skill_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_skill_select
return
end
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.skill_id = @skill.id
@skill_window.visible = false
if @skill.scope == 1
start_enemy_select
elsif @skill.scope == 3 or @skill.scope == 5
start_actor_select
else
end_skill_select
end
return
end
end
def update_phase3_item_select
@item_window.visible = true
@item_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_item_select
return
end
if Input.trigger?(Input::C)
@item = @item_window.item
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.item_id = @item.id
@item_window.visible = false
if @item.scope == 1
start_enemy_select
elsif @item.scope == 3 or @item.scope == 5
start_actor_select
else
end_item_select
end
return
end
end
def update_phase3_enemy_select
@enemy_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_enemy_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @enemy_arrow.index
end_enemy_select
if @skill_window != nil
end_skill_select
end
if @item_window != nil
end_item_select
end
start_phase4(@actor)
for i in 0..$ctunits.size
if $unity_by_itself[i] == @actor
$ctunits[i] = 0
end
end
end
@actor_command_window.active = false
@actor_command_window.visible = false
end
def update_phase3_actor_select
@actor_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_actor_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @actor_arrow.index
end_actor_select
if @skill_window != nil
end_skill_select
end
if @item_window != nil
end_item_select
end
start_phase4(@actor)
for i in 0..$ctunits.size
if $unity_by_itself[i] == @actor
$ctunits[i] = 0
end
end
end
@actor_command_window.visible = false
@actor_command_window.active = false
end
def start_enemy_select
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
@enemy_arrow.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_enemy_select
@enemy_arrow.dispose
@enemy_arrow = nil
if @actor_command_window.index == 0
@actor_command_window.active = true
@actor_command_window.visible = true
@help_window.visible = false
end
end
def start_actor_select
@actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
@actor_arrow.index = @actor_index
@actor_arrow.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_actor_select
@actor_arrow.dispose
@actor_arrow = nil
end
def start_skill_select
@skill_window = Window_Skill.new(@active_battler)
@skill_window.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_skill_select
@skill_window.dispose
@skill_window = nil
@help_window.visible = false
@actor_command_window.active = true
@actor_command_window.visible = true
end
def start_item_select
@item_window = Window_Item.new
@item_window.help_window = @help_window
@actor_command_window.active = false
@actor_command_window.visible = false
end
def end_item_select
@item_window.dispose
@item_window = nil
@help_window.visible = false
@actor_command_window.active = true
@actor_command_window.visible = true
end
#========================Scene_battle4===========================
def start_phase4(actor)
@phase = 4
$game_temp.battle_turn += 1
for index in 0...$data_troops[@troop_id].pages.size
page = $data_troops[@troop_id].pages[index]
if page.span == 1
$game_temp.battle_event_flags[index] = false
end
end
@actor_index = -1
@waiting_unitys.push(actor)
end
def get_a_new_actor
if @phase4_active_battler == nil
for i in 0..@waiting_unitys.size
if @waiting_unitys[i].is_a?(Game_Battler)
@phase4_active_battler = @waiting_unitys[i]
@waiting_unitys[i] = nil
$game_temp.battle_main_phase = true
@phase4_step = 1
@using_actor = true
return
end
end
@phase = 3
@waiting_unitys = []
end
end
def update_phase4
case @phase4_step
when 1
update_phase4_step1
when 2
update_phase4_step2
when 3
if @side_view
update_phase4_step3(@phase4_active_battler)
else
update_phase4_step3
end
when 4
if @side_view
update_phase4_step4(@phase4_active_battler)
else
update_phase4_step4
end
when 5
update_phase4_step5
when 6
update_phase4_step6
end
end
def update_phase4_step1
@help_window.visible = false
if judge
return
end
if $game_temp.forcing_battler == nil
setup_battle_event
if $game_system.battle_interpreter.running?
return
end
end
@animation1_id = 0
@animation2_id = 0
@common_event_id = 0
if @phase4_active_battler.index == nil
return
end
if @phase4_active_battler.hp > 0 and @phase4_active_battler.slip_damage?
@phase4_active_battler.slip_damage_effect
@phase4_active_battler.damage_pop = true
end
@phase4_active_battler.remove_states_auto
@status_window.refresh
@phase4_step = 2
end
def update_phase4_step2
unless @phase4_active_battler.current_action.forcing
if @phase4_active_battler.restriction == 2 or @phase4_active_battler.restriction == 3
@phase4_active_battler.current_action.kind = 0
@phase4_active_battler.current_action.basic = 0
end
if @phase4_active_battler.restriction == 4
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
@target_battlers = []
case @phase4_active_battler.current_action.kind
when 0
make_basic_action_result
when 1
make_skill_action_result
when 2
make_item_action_result
end
if @phase4_step == 2
@phase4_step = 3
end
end
def make_basic_action_result
if @phase4_active_battler.current_action.basic == 0
@animation1_id = @phase4_active_battler.animation1_id
@animation2_id = @phase4_active_battler.animation2_id
if @phase4_active_battler.is_a?(Game_Enemy)
if @phase4_active_battler.restriction == 3
target = $game_troop.random_target_enemy
elsif @phase4_active_battler.restriction == 2
target = $game_party.random_target_actor
else
index = @phase4_active_battler.current_action.target_index
target = $game_party.smooth_target_actor(index)
end
end
if @phase4_active_battler.is_a?(Game_Actor)
if @phase4_active_battler.restriction == 3
target = $game_party.random_target_actor
elsif @phase4_active_battler.restriction == 2
target = $game_troop.random_target_enemy
else
index = @phase4_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(@phase4_active_battler)
end
return
end
if @phase4_active_battler.current_action.basic == 1
@help_window.set_text($data_system.words.guard, 1)
return
end
if @phase4_active_battler.is_a?(Game_Enemy) and
@phase4_active_battler.current_action.basic == 2
if @phase4_active_battler.escape
@help_window.set_text(@phase4_active_battler.name + @success_escape_enemy_text, 1)
else
@help_window.set_text(@phase4_active_battler.name + @failed_escape_enemy_text, 1)
end
@wait_count = 55
@phase4_active_battler = nil
return
end
if @phase4_active_battler.current_action.basic == 3
@help_window.set_text(@phase4_active_battler.name + @waiting_text, 1)
$game_temp.forcing_battler = nil
@wait_count = 55
@phase4_active_battler.current_action.clear
@phase4_active_battler = nil
if judge
return
end
return
end
end
def update_phase4_step3
if @animation1_id == 0
@phase4_active_battler.white_flash = true
else
@phase4_active_battler.animation_id = @animation1_id
@phase4_active_battler.animation_hit = true
end
@phase4_step = 4
end
def update_phase4_step4
for target in @target_battlers
target.animation_id = @animation2_id
target.animation_hit = (target.damage != @miss_text)
end
@wait_count = 8
@phase4_step = 5
end
def update_phase4_step5
@help_window.visible = false
@status_window.refresh
for target in @target_battlers
if target.damage != nil
target.damage_pop = true
end
end
@phase4_step = 6
end
def update_phase4_step6
$game_temp.forcing_battler = nil
if @common_event_id > 0
common_event = $data_common_events[@common_event_id]
$game_system.battle_interpreter.setup(common_event.list, 0)
end
@phase4_active_battler.current_action.clear
@phase4_active_battler = nil
if judge
return
end
end
#==========================Phase_5===============================
def start_phase5
@phase = 5
$game_system.me_play($game_system.battle_end_me)
$game_system.bgm_play($game_temp.map_bgm)
exp = 0
gold = 0
treasures = []
for enemy in $game_troop.enemies
unless enemy.hidden
exp += enemy.exp
gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
if @less_xp == true
exp /= $game_party.actors.size
end
treasures = treasures[0..5]
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@status_window.level_up(i)
end
end
end
$game_party.gain_gold(gold)
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
@result_window = Window_BattleResult.new(exp, gold, treasures)
@phase5_wait_count = 100
@aready_ended = true
end
end
#======================End_of_Scene_Battle=======================
class Window_Ct < Window_Base
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
def dispose
super
end
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
for i in 0..$unity_by_itself.size
if $unity_by_itself[i] == actor
actornumber = i
end
end
atp_gaugue = $ctunits[actornumber] * 6 / 10
draw_actor_limit(actor,actor_x, 74,60)
draw_bar_beginner(actor_x + 68, 74 , atp_gaugue, 0, 60, 24,
bar_color = Color.new(0, 255, 255, 255))
end
end
def update
super
end
end
class Window_Side_Ct < Window_Base
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
def dispose
super
end
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_y = i * 32
draw_actor_limit(actor,470,actor_y,64)
for i in 0..$unity_by_itself.size
if $unity_by_itself[i] == actor
actornumber = i
end
end
atp_gaugue = $ctunits[actornumber] * 64 / 100
draw_bar_beginner(544, actor_y + 4, atp_gaugue, 0, 64, 24,
bar_color = Color.new(0, 255, 255, 255))
end
end
def update
super
end
end
class Window_BattleStatus < Window_Base
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, -8)
draw_actor_hp(actor, actor_x, 20, 120)
draw_actor_sp(actor, actor_x, 48, 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x + 30, 100, 120, 32, "Nível Acima!")
else
draw_actor_state(actor, actor_x + 30, 100)
end
end
end
end
class Window_Side_BattleStatus < Window_Base
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@level_up_flags = [false, false, false, false]
refresh
end
def dispose
super
end
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_y = i * 32
draw_actor_name(actor, 0, actor_y)
draw_actor_hp(actor, 128, actor_y, 128)
draw_actor_sp(actor, 260, actor_y, 128)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor, 392, actor_y, 32, "Nível Acima!")
else
draw_actor_state(actor, 392 , actor_y)
end
end
end
def update
super
if $game_temp.battle_main_phase
self.contents_opacity -= 4 if self.contents_opacity > 191
else
self.contents_opacity += 4 if self.contents_opacity < 255
end
end
end
#=========================Window_Base============================
class Window_Base
def draw_actor_hp(actor, x, y, width = 144)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(x + 24, y, 48, 32, actor.hp.to_s, 2)
self.contents.font.color = normal_color
self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
self.contents.draw_text(x + 84, y, 48, 32, actor.maxhp.to_s)
end
def draw_actor_sp(actor, x, y, width = 144)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(x + 24, y, 48, 32, actor.sp.to_s, 2)
self.contents.font.color = normal_color
self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
self.contents.draw_text(x + 84, y, 48, 32, actor.maxsp.to_s)
end
def draw_actor_limit(actor, x, y, width)
midbar = x + (width/2 - width/4)
self.contents.draw_text(midbar, y, width, 32, "")
end
#--------------------------------------------------------------------------
# Draw Bar (Beginner) $By Sepirothspawn511
#--------------------------------------------------------------------------
def draw_bar_beginner(x, y, porcentage, max, width, height,
bar_color = Color.new(150, 0, 0, 255) )
# Draws Background
self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
# Draw Bar
self.contents.fill_rect(x + 1, y + 1, porcentage - 2, height - 2, bar_color)
end
#--------------------------------------------------------------------------
# Draw Bar (Intermediate) $By Sepirothspawn511
#--------------------------------------------------------------------------
def draw_bar_intermediate(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Background
self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
# Draws Bar
for i in 1..( (min / max) * width -1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + 1 + i, y + 1, 1, height - 2, Color.new(r, g, b, a))
end
end
#--------------------------------------------------------------------------
# Draw Slant Bar (Advanced) $By Sepirothspawn511
#--------------------------------------------------------------------------
def draw_slant_bar_advanced(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min / max) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
end
#============================Game_Enemy==========================
class Game_Enemy < Game_Battler
def escape
self.current_action.clear
enemies_agi = self.agi
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
success = rand(100) < 50 * enemies_agi / actors_agi
if success
@hidden = true
else
return false
end
end
end
-if you want to use side view you will need this above Main and BELOW GCBS
[attachmentid=1855]
Demo:
[attachmentid=1853]
Screens:
-Side View:
[attachmentid=1856]
-Normal Mode:
[attachmentid=1857]
Note: for side view you will need new sprites, and you will need to give the weapons EX:
[attachmentid=1852]
1: Standing Position: All the time that he is not making anything
2: Damage Position: Every time he recive damage
3: Dead Position: Not yet tested, i think when he is dead
4: Dunno Position: I think when he is afected by Status (maybe positive too)
5: Moving Position: Moving left
6: Moving Position: Moving right
7: Attacking 1 Position: When he attack
8: Attacking 2 Position: Dunno
9: Skill Using Position: Maybe itens too
10: Win Position: Will not repeat
To make your battle sprites you can go to Chara-Project (http://charas-project.net/charas2/index.php) where you can use theyr generator (need to adapt the image and add a weapon)
[/quote]
Ok, cool...one thing, can you repost the demo of this? The attachment doesnt work for me, and i really want to see this in action before i go ahead and impliment it. Thanks!